= Data Definition Language = {{tag>SQL Database}} = CREATE = * SCHEMA CREATE SCHEMA 스키마명 AUTHORIZATION 사용자ID; * DOMAIN CREATE DOMAIN 도메인명 DataType [DEFAULT 기본값] --DEFAULT 'MALE' [CONSTRAINT 제약조건명 CHECK(범위값)]; --CONSTRAINT VALID-SEX CHECK(VALUE IN('MALE', 'FEMALE')); * TABLE CREATE TABLE 테이블명 ( 속성명 DataType [NOT NULL], ... [, PRIMARY KEY(PK명, ...)] [, UNIQUE (AK명, ...)] [, FOREIGN KEY(FK명, ...) REFERENCES 참조테이블명(PK명, ...)] [ON DELETE 옵션] [ON UPDATE 옵션] --옵션 : 참조 테이블의 변화에 따라... NO ACTION, CASCADE, SET NULL, SET DEFAULT [, CONSTRAINT 제약조건명] [제약조건] -- 제약조건 : CHECK(T/F 판별 논리식), PK, FK, UNIQUE KEY, NOT NULL ); --CTAS(CREATE TABLE ~ AS SELECT ~) : Sub Query를 이용한 테이블 복제 생성 --제약조건 중 "NOT NULL"만 복사된다! --ORACLE CREATE TABLE 테이블명 AS SELECT문; --SQL Server --* 컬럼 속성에 IDENTITY를 사용했다면, 같이 적용됨! SELECT * INTO 테이블명 FROM 복제할테이블 * VIEW CREATE VIEW 뷰명[(속성명[, 속성명, ...])] --속성명을 기술하지 않으면 SELECT문의 속성명을 자동 사용 AS SELECT문; --VIEW의 Sub Query에서는 UNION, ORDER BY 사용 불가. * INDEX CREATE [UNIQUE] INDEX 인덱스명 ON 테이블명({속성명 [ASC|DESC][, 속성명 [ASC|DESC]]}) [CLUSTER] --지정된 Key에 따라 Tuple들을 Group으로 지정하기 위해 사용 * Trigger CREATE TRIGGER 트리거명[BEFORE|AFTER][INSERT|DELETE|UPDATE] ON 테이블명 --[동작시기 옵션][동작 옵션] REFERENCING [NEW|OLD] TABLE AS 테이블명 FOR EACH ROW WHEN 조건식 BEGIN SQL문; END; = ALTER TABLE = ALTER TABLE 테이블명 /*(Column 추가)*/ ADD 속성명 데이터타입 [DEFAULT '기본값'] [, ...]; /*(Column 변경)*/ MODIFY 속성명 변경할_데이터타입 [DEFAULT '기본값'] [NOT NULL] [, ...]; --SQL Server는 "ALTER" /*(Column 삭제)*/ DROP COLUMN 속성명 [CASCADE] [, ...]; /*(COLUMN 이름 변경)*/ 속성명 TO 새속성명 --제약조건 관련 /*(제약조건 삭제)*/ DROP CONSTRAINT 제약조건명; /*(제약조건 추가)*/ ADD CONSTRAINT 제약조건명 제약조건(속성명); = DROP = DROP SCHEMA|DOMAIN|TABLE|VIEW|INDEX|TRIGGER 이름 [CASCADE|RESTRICT CONSTRAINT]; --RESTRICT : 다른 개체가 제거할 개체를 참조중인 경우 제거 취소, SQL Server에서는 CASCADE 옵션 없음! DROP CONSTRAINT 제약조건명 = TRUNCATE TABLE = TRUNCATE TABLE 테이블명; --데이터만 삭제 = RENAME TABLE = RENAME 테이블명 TO 새테이블명; -- sp_rename 테이블명, 새테이블명; --SQL Server;