※ DDL
1. DDL이란? - Data Definition Language란 의미로 데이터를 정의하고 테이블 안에 들어갈 데이터의 유형도 같이 정의한다. 묵시적으로 동시에 COMMIT이 사용된다.
2. 데이터 유형
① 문자
• CHAR - 크기가 정의된 만큼 고정이고 빈 공간을 문자로 인식하지 않는다.
• VARCHAR - 크기가 정의된 것보다 작을 수 있고 빈 공간을 문자로 인식한다.
• CLOB
② 숫자 - NUMBER
③ 날짜 - DATE
3. DDL 종류
① CREATE - 테이블을 생성하는 명령어
• CREATE TABLE 테이블명 (컬럼명1 데이터 타입(DEFAULT / NULL / NOT NULL), ...);
• CREATE TABLE 테이블명 AS SELECT * FROM 복사할 테이블명 (테이블 복사해서 생성)
* 테이블 생성 규칙
㉮ 테이블명은 고유해야 하고 테이블의 정체성을 나타낼 수 있어야 한다.
㉯ 한 테이블 내에서 컬럼명은 고유해야 한다.
㉰ 컬럼명 뒤에 데이터 유형과 크기가 명시되어야 한다.
㉱ 테이블명과 컬럼명은 숫자로 시작할 수 없다.
㉲ 컬럼명을 정의할 때 다른 테이블과 통일성이 있어야 한다.
* 테이블 제약 조건(CONSTRAINT)의 종류 - 테이블에 저장될 데이터의 무결성을 유지하기 위한 것
㉮ PRIMARY KEY(PK) - 테이블에 하나씩만 정의할 수 있으며 PK로 지정된 컬럼에는 NULL값을 입력할 수 없고 UNIQUE 인덱스로 생성된다.
㉯ FOREIGN KEY(FK) - 하나의 테이블이 다른 테이블을 참조하고자 할 때 FK를 정의한다.
㉰ UNIQUE KEY - PK와 유사하지만 NULL값을 입력할 수 있다.
㉱ NOT NULL - 해당 컬럼에 NULL값을 입력할 수 없다.
㉲ CHECK - 컬럼에 저장될 수 있는 값의 범위를 제한한다.
② ALTER - 테이블의 구조를 변경할 때 사용한다.
㉮ ADD COLUMN - 새로운 컬럼을 추가할 때 사용되며 추가되는 위치는 맨 끝이며 추가될 위치를 바꿀 수 없다.
• ALTER TABLE 테이블명 ADD 컬럼명 데이터 유형;
㉯ DROP COLUMN - 기존에 있는 컬럼을 삭제하는 명령어로 한 번 삭제하면 복구할 수 없다.
• ALTER TABLE 테이블명 DROP COLUMN 컬럼명;
㉰ MODIFY COLUMN - 컬럼을 변경할 때 사용되며 컬럼의 데이터 유형, DEFAULT값, NOT NULL 제약조건도 변경 가능하다. 컬럼의 크기를 줄일 때는 컬럼의 모든 데이터가 줄어든 컬럼의 크기보다 작아야 한다. 컬럼에 저장된 데이터가 없을 때만 변경 가능하고 현재 NULL값이 저장되어 있지 않은 컬럼에만 NOT NULL 제약조건 추가가 가능하다. DEFAULT 변경 시 변경 이후 저장되는 데이터에만 적용된다.
• ALTER TABLE 테이블명 MODIFY (컬럼명1 데이터 유형 [DEFAULT 값][NOT NULL], ...);
㉱ RENAME COLUMN - 기존의 컬럼 이름 변경
• ALTER TABLE 테이블명 RENAME COLUMN 변경할 컬럼명 TO 변경할 이름;
㉲ ADD CONSTRAINT - 제약조건 추가
• ALTER TABLE 테이블명 ADD CONSTRAINT 제약조건명 제약조건(컬럼명);
㉳ DROP TABLE - 테이블을 삭제할 때 사용하며 만약 다른 테이블이 해당 테이블을 참조하고 있을 경우 CASCADE CONSTRAINT를 사용해야만 삭제가 된다
• DROP TABLE 테이블명 [CASCADE CONSTRAINT];
㉴ TRUNCATE TABLE - 테이블의 모든 데이터를 제거하고 ROLLBACK이 불가능하다. 사용 공간이 재사용되도록 초기화된다. 테이블을 삭제하지는 않는다.
• TRUNCATE TABLE 테이블명;