Data Definition Language

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;

relational_database/data_definition_language.txt · Last modified: 2021/02/07 04:15 by ledyx