CREATE SCHEMA 스키마명 AUTHORIZATION 사용자ID;
CREATE DOMAIN 도메인명 DataType
[DEFAULT 기본값] --DEFAULT 'MALE'
[CONSTRAINT 제약조건명 CHECK(범위값)]; --CONSTRAINT VALID-SEX CHECK(VALUE IN('MALE', 'FEMALE'));
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 복제할테이블
CREATE VIEW 뷰명[(속성명[, 속성명, ...])] --속성명을 기술하지 않으면 SELECT문의 속성명을 자동 사용
AS SELECT문; --VIEW의 Sub Query에서는 UNION, ORDER BY 사용 불가.
CREATE [UNIQUE] INDEX 인덱스명
ON 테이블명({속성명 [ASC|DESC][, 속성명 [ASC|DESC]]})
[CLUSTER] --지정된 Key에 따라 Tuple들을 Group으로 지정하기 위해 사용
CREATE TRIGGER 트리거명[BEFORE|AFTER][INSERT|DELETE|UPDATE] ON 테이블명 --[동작시기 옵션][동작 옵션]
REFERENCING [NEW|OLD] TABLE AS 테이블명
FOR EACH ROW
WHEN 조건식
BEGIN
SQL문;
END;
ALTER TABLE 테이블명
/*(Column 추가)*/ ADD 속성명 데이터타입 [DEFAULT '기본값'] [, ...];
/*(Column 변경)*/ MODIFY 속성명 변경할_데이터타입 [DEFAULT '기본값'] [NOT NULL] [, ...]; --SQL Server는 "ALTER"
/*(Column 삭제)*/ DROP COLUMN 속성명 [CASCADE] [, ...];
/*(COLUMN 이름 변경)*/ 속성명 TO 새속성명
--제약조건 관련
/*(제약조건 삭제)*/ DROP CONSTRAINT 제약조건명;
/*(제약조건 추가)*/ ADD CONSTRAINT 제약조건명 제약조건(속성명);