본문 바로가기
DB

DDL - 테이블 관련 SQL

by 도쿠니 2022. 5. 16.

CREATE TABLE

create table 테이블이름(
	컬럼명 데이터타입 제약조건,
    컬럼명 데이터타입 제약조건,
    ...
    컬럼명 데이터타입 제약조건
);

 

자주 쓰는 데이터 타입

  • / 는 MySql / Oracle 이 서로 다른 경우이다.
  • 자세한 데이터 타입은 검색하거나 올려둔 DBMS별 데이터타입 게시글을 확인할 것
데이터 타입 설명
CHAR 고정길이 문자열
입력값이 할당값보다 작은 경우 빈칸으로 채운다.
VARCHAR / VARCHAR2 가변 길이 문자열
최대 저장 가능한 길이만을 지정, 빈칸으로 채우지 않는다.
INT / NUMBER 숫자 타입의 데이터 저장에 사용
DATE 날짜 타입

 

제약 조건

제약조건 설명
NOT NULL NULL을 허용하지 않음, 기본값은 NULL 허용
PRIMARY KEY 기본키 지정
중복값 및 NULL 허용 X
FOREGIN KEY 외래키 지정
FOREGIN KEY 외래키명 REFERECES 참조테이블(참조테이블 기본키)
UNIQUE 유니크 키 지정
중복값 허용 X
CHECK 입력되는 데이터를 체크해서 조건에 맞는 데이터만 입력 가능
INDEX 인덱스 지정
  • 외래키 같은 경우, 추가 조건으로 ON DELETE / ON UPDATE 옵션을 추가할 수 있다.
    • ON [DELETE/UPDATE] [CASCADE / SET NULL / RESTRICT / NO ACTION] 
      • CASCADE : 참조 테이블의 데이터가 변경/삭제 될 경우 자식도 함께 변경/삭제 된다. 
      • RESTRICT : 다른 테이블로부터 참조되고 있는 경우 변경/삭제를 할 수 없다.
      • SET : 참조 테이블의 데이터가 변경/삭제 시 SET 뒤의 값으로 변경된다.
      • MySQL에서는 NO ACTION이 RESTRICT 와 동일하다.

예시

CREATE TABLE PLAYER(

# 아래의 기본키 설정과 CONSTRAINT PLAYER_PK PRIMARY KEY (PLAYER_ID)와 동일
PLAYER_ID CHAR(7) PRIMARY KEY,
PLAYER_NAME VARCHAR(20) NOT NULL,
TEAM_ID CHAR(3) NOT NULL,
CONSTRAINT PLAYER_FK FOREIGN KEY (TEAM_ID) REFERENCES TEAM(TEAM_ID) 
);

 

테이블 구조 확인

DESC 테이블명;

 

테이블 생성 시 주의사항

  • 테이블명은 반드시 문자로 시작해야한다.
  • A-Z , a-z , 0-9 , _ , $ , # 문자만 허용한다. 

 


ALTER TABLE

# 컬럼 추가
# MySQL
ALTER TABLE 테이블명 ADD COLUMN 컬럼명 데이터타입;
# Oracle
ALTER TABLE 테이블명 ADD (컬럼명 데이터타입);

# 컬럼 수정
# MySQL
ALTER TABLE 테이블명 MODIFY COLUMN 컬럼명 데이터타입;
# Oracle
ALTER TABLE 테이블명 MODIFY (컬럼명 데이터타입);

# 컬럼 이름 변경
# MySQL (속성까지도 변경가능)
ALTER TABLE 테이블명 CHANGE COLUMN 기존컬럼명 바꿀컬럼명 데이터타입;
# Oracle
ALTER TABLE 테이블명 RENAME COLUMN 기존컬럼명 TO 바꿀컬럼명;

# 제약조건 추가/삭제
ALTER TABLE 테이블명 ADD CONSTRAINT 제약조건명 제약조건(컬럼명);
ALTER TABLE 테이블명 DROP CONSTRAINT 제약조건명;

# 테이블명 변경
RENAME 변경 전 테이블명 TO 변경 후 테이블명;

DROP TABLE

# 테이블 삭제
DROP TABLE 테이블명;

# 테이블 데이터만 삭제, 테이블은 삭제되지않음 , 로그 안남김
TRUNCATE TABLE 테이블명;

 

'DB' 카테고리의 다른 글

함수(FUNCTION), 프로시저(PROCEDURE), 트리거(TRIGGER)  (0) 2022.05.17
JOIN  (0) 2022.05.17
DBMS별 데이터 타입  (0) 2022.05.16

댓글