SQL 문법정리 : 테이블생성
테이블 생성 시 컬럼의 제약 조건
. NOT NULL
해당 제약 조건이 있는 컬럼은 NULL이 저장될수 없다.
. UNIQUE
해당 제약 조건이 있는 컬럼의 값은 테이블 내에서 유일해야 한다.
. PRIMARY KEY
해당 제약 조건이 있는 컬럼의 값은 테이블내에서 유일해야 하고 반드시 NOT NULL이어야 한다.
. CHECK
해당 제약 조건이 있는 컬럼은 지정하는 조건에 맞는 값이 들어가야 한다.
.REFERENCES
해당 제약 조건이 있는 컬럼의 값은 참조하는 테이블의 특정 컬럼에 값이 존재해야 한다.
CREATE TABLE ACCOUNT
(
USER_ID SERIAL PRIMARY KEY
,USERNAME VARCHAR (50) UNIQUE NOT NULL
,PASSWORD VARCHAR(50) NOT NULL
,EMAIL VARCHAR(355) UNIQUE NOT NULL
,CREATED_ON TIMESTAMP NOT NULL
,LAST_LOGIN TIMESTAMP
);
CREATE TABLE ROLE
(
ROLE_ID SERIAL PRIMARY KEY
,ROLE_NAME VARCHAR (255) UNIQUE NOT NULL
)
;
CREATE TABLE ACCOUNT_ROLE
(
USER_ID INTEGER NOT NULL
,ROLE_ID INTEGER NOT NULL
,GRANT_DATE TIMESTAMP WITHOUT TIME ZONE
,PRIMARY KEY(USER_ID, ROLE_ID)
,CONSTRAINT ACCOUNT_ROLE_ROLE_ID_FKEY FOREIGN KEY (ROLE_ID)
REFERENCES ROLE (ROLE_ID) MATCH SIMPLE
ON UPDATE NO ACTIONN ON DELETE NO ACTION
,COSTRAIN ACCOUNT_ROLE_USER_ID_FKEY FOREIGN KEY(USER_ID)
REFERENCES ACCOUNT(USER_ID) MATCH SMIPLE ON
UPDATE NO ACTION ON DELETE NO ACTION
);
#USER_ID는 NOT NULL이여야 한다.
#ROLE_ID는 NOT NULL이여야 한다.
#GRANT_DATE는 NULL이여도 상관없다.
#기본키는 USER_ID+ROLE_ID로 한다.
#ROLE_ID 컬럼은 ROLE테이블의 ROLE_ID컬럼을 참조한다.
#ROLE_ID 컬럼은 ROLL테이블의 ROLE_ID컬럼에 대한 삭제 혹은 변경시 아무것도 하지 않는다.
#USER_ID 컬럼은 ACCOUNT테이블의 USER_ID컬럼을 참조한다.
#USER_ID 컬럼은 ACCOUNT테이블의 USER_ID컬럼에 대한 삭제 혹은 변경시 아무것도 하지 않는다.
INSERT INTO ACCOUNT VALUES
(1, '홍길동','1234','ABCEDF@naver.com',CURRENT_TIMESTAMP, null);
'SQL' 카테고리의 다른 글
SQL 문법 정리 : 기본키,외래키,체크제약조건 (0) | 2021.02.25 |
---|---|
SQL 문법 정리 : 데이블관리(CTAS,테이블구조 &이름 변경,컬럼추가,컬럼제거,컬럼 테이터 타입변경,테이블제거,임시테이블,TRUNCATE) (0) | 2021.02.24 |
SQL 문법정리 : 데이터타입Boolean,Character,Numeric,Time, Arrays, JSON (0) | 2021.02.22 |
SQL 문법 정리 : 데이터조작 (0) | 2021.02.22 |
SQL 문법 정리 : SQL의 종류(DDL,DML,DCL,TCL) (0) | 2021.02.19 |