CREATE TABLE 테이블명 (
컬럼명1 데이터타입 [규칙],
컬럼명2 데이터타입 [규칙],
...
);
규칙은 입력 값에 적용할 제약조건이나 속성
PRIMARY KEY
FOREIGN KEY
NOT NULL ONLY INLINE
UNIQUE
CHECK
DEFAULT ONLY INLINE
CREATE TABLE 학생 (
학번 INT PRIMARY KEY, -- INT: 정수형 숫자
이름 VARCHAR(50) NOT NULL, -- VARCHAR(50): 최대 50자 문자열
학년 INT CHECK(학년 BETWEEN 1 AND 4), -- BETWEEN: 범위 조건 (1 이상 4 이하)
과목 VARCHAR(20),
이메일 VARCHAR(50) UNIQUE
);
줄을 따로 만들어 제약조건을 선언하며, 제약조건에 이름 붙이기: Named Constraints
CREATE TABLE 회원 (
회원ID CHAR(8),
이메일 VARCHAR(100),
등급 VARCHAR(10),
CONSTRAINT PK_회원 PRIMARY KEY (회원ID),
CONSTRAINT UQ_이메일 UNIQUE (이메일),
CONSTRAINT CHK_등급 CHECK (등급 IN ('일반', 'VIP', 'VVIP')),
CONSTRAINT CHK_나이 CHECK (나이 >= 18),
CONSTRAINT FK_컬럼 FOREIGN KEY (컬럼) REFERENCES 부모테이블 (컬럼) -- 제일 어려운데 26-1에 나옴
);
CONSTRAINT NN_나이 NOT NULL (나이) -- 에러
나이 INT NOT NULL -- 동작
DEFAULT는 named constaint로 쓸 수 없다. 사실, DEFAULT는 엄밀히 말하면 제약constraint이 아니라 컬럼의 속성property이다.
CONSTRAINT def_등급 DEFAULT '일반' -- 표준 SQL에서 안됨
등급 VARCHAR(10) DEFAULT '일반' -- 동작
FOREIGN KEY (컬럼) 쓰면 에러!회원ID CHAR(8) FOREIGN KEY (회원ID) REFERENCES 회원(회원ID) -- 에러
회원ID CHAR(8) REFERENCES 회원(회원ID) -- 동작