[DB] DDL: CREATE, ALTER, DROP, RENAME

젠니·2023년 5월 26일
0

데이터베이스

목록 보기
2/21

1. CREATE SCHEMA

생성하려는 스키마의 명칭을 정의한다.

Format

CREATE {SCHEMA|DATABASE} 스키마명;

Example

CREATE SCHEMA UNIVERSITY;

2. DROP SCHEMA

생성한 스키마를 제거한다.

Format

DROP {SCHEMA|DATABASE} 스키마명;

Example

DROP SCHEMA UNIVERSITY;

3. CREATE TABLE

테이블의 구조와 제약조건을 명세한다.

컬럼의 제약조건

– NOT NULL: NULL 값을 허용하지 않는다.
– UNIQUE [KEY]: 고유한 값을 갖거나, NULL 값도 허용한다.
– PRIMARY KEY: UNIQUE ^(&) NOT NULL 제약조건
– FOREIGN KEY: 부모 테이블의 PK 값 v(or) NULL 값을 가진다.
– CHECK: 입력/수정 가능한 값의 범위를 제한하는 논리식을 서술한다.

컬럼 레벨 정의

테이블 레벨 정의

DESCRIBE

생성된 테이블의 구조를 확인하려면 DESCRIBE를 사용한다.

DESCRIBE PLAYER;

CTAS: CREATE TABLE AS SELECT

기본 제약조건 중 NOT NULL만 적용되고, 나머지 제약 조건은 없어진다.

CREATE TABLE TEAM_TEMP [AS]
SELECT *
FROM TEAM;
DESCRIBE TEAM_TEMP;

4. DROP TABLE

테이블 자체를 다 삭제한다.

Format

DROP TABLE 테이블명 [RESTRICT|CASCADE];

RESTRICT가 디폴트 옵션이다.

Example

DROP TABLE 과목 RESTRICT;

여기서 과목 테이블 삭제를 시도하면 삭제가 거부된다.
-> 삭제할 테이블의 튜플을 참조하는 튜플이 자식 테이블에 하나라도 존재하면 거부하기 때문이다.

DROP TABLE 과목 CASCADE;

그래서 CASCADE는 같은 경우에 자식 테이블의 참조하는 튜플들도 모두 제거해버린다.

5. ALTER TABLE

컬럼의 추가/삭제/수정이나 제약조건의 추가/삭제가 가능하다.

ADD COLUME

Format

ALTER TABLE 		테이블명
ADD [COLUMN] 		컬럼명 데이터타입 [NOT NULL] [DEFAULT 묵시값]
					[FIRST|AFTER 컬럼명];

FIRST/AFTER 절로 어느 위치에 넣을지 결정한다.
FIRST/AFTER 절이 없으면, 디폴트는 'AFTER 마지막 컬럼명' 이다.

Example

ALTER 				TABLE PLAYER
ADD 				ADDRESS VARCHAR(80);

맨 마지막 컬럼에 ADDRESS가 추가됐다.

DROP COLUMN

Format

ALTER TABLE 		테이블명
DROP [COLUMN] 		컬럼명;

Example

ALTER TABLE 		PLAYER
DROP COLUMN 		ADDRESS;

마지막 컬럼이었던 ADDRESS 컬럼이 삭제된걸 볼 수 있다.

MODIFY COLUMN

기존 데이터가 있는 경우를 고려해야한다.

Format

ALTER TABLE 		테이블명
MODIFY [COLUMN] 	{컬럼명 데이터타입 [NOT NULL] [DEFAULT 값],}⁺;

Example

ALTER TABLE 		TEAM
MODIFY 				ORIG_YYYY CHAR(8) NOT NULL DEFAULT '2002';

< 제약 조건 >

– 해당 칼럼의 크기를 늘릴 수는 있지만 줄이지는 못한다. -> 기존 데이터가 훼손될 수 있기 때문이다.
– 해당 칼럼이 NULL 값만 가지고 있거나 테이블에 아무 행도 없으면 칼럼의 크기를 줄일 수 있다.
– 해당 칼럼이 NULL 값만 가지고 있으면, 데이터 타입을 변경할 수 있다.
– 해당 칼럼의 DEFAULT 값을 바꾸면, 변경 이후 발생하는 행 삽입에만 영향을 미친다.
– 해당 칼럼에 NULL 값이 없을 경우에만, NOT NULL 제약조건을
추가할 수 있다.

RENAME COLUMN

Format

ALTER TABLE 		테이블명
RENAME COLUMN 		컬럼명 TO 컬럼명;

Example

ALTER TABLE 		PLAYER
RENAME COLUMN 		E_PLAYER_NAME TO ENGLISH_PLAYER_NAME;

ADD CONSTRAINT

Format

ALTER TABLE 		테이블명
ADD CONSTRAINT 		조건명 제약조건;

Example

ALTER TABLE 		PLAYER
ADD CONSTRAINT 		FK_PLAYER_TEAM
					FOREIGN KEY (TEAM_ID) REFERENCES TEAM(TEAM_ID);

위 예시는 테이블에 새로운 필드를 추가할 때 해당 필드를 외래 키로 설정한다.

PLAYER 테이블의 TEAM_ID 필드에 TEAM 테이블의 TEAM_ID 필드를 참조하는 FOREIGN KEY 제약 조건을 설정한다.

DROP PRIMARY KEY/FOREIGN KEY/CHECK

PK/FK/CHECK 를 삭제한다.

Format

ALTER TABLE 				테이블명
[DROP PRIMARY KEY],
[DROP FOREIGN KEY 			조건명],
[DROP CHECK 				조건명];

Example

ALTER TABLE 				PLAYER
DROP FOREIGN KEY 			FK_PLAYER_TEAM;

6. RENAME TABLE

Format

RENAME TABLE 테이블명 TO 테이블명;

Example

RENAME TABLE TEAM TO TEAM_BACKUP;

7. TRUNCATE TABLE

TRUNCATE TABLE

Format

TRUNCATE TABLE  테이블명;
  • 테이블은 남기고, 데이터(모든 튜플)만 삭제한다.
  • 복구가 불가능하다.

자식 테이블이 있으면, 실행이 거부된다.

DROP TABLE

  • 테이블 + 데이터(모든 튜플) 모두 삭제한다.
  • 복구가 불가능하다.

DELETE FROM

  • 테이블은 남기고, 데이터(모든 튜플)만 삭제한다.
  • 복구가 가능하다.
profile
젠니의 개발 라이푸우

0개의 댓글