DataBase

테이블 생성시 외래키와 제약조건 설정 방법 (FOREIGN KEY, REFERENCES, CONSTRAINT)

유혁스쿨 2022. 4. 24. 00:36
728x90
반응형

기사시험을 보면서 햇갈리는 부분이 생겨 다시금 정리해본다.

CREATE TABLE table_1 (
column1 char(1)
);
CREATE TABLE table_2(
column1 char(1)
FOREIGN KEY (column1) REFERENCES table_1(column1)
);

컬럼명을 선언해 준 뒤 FOREIGN KEY 키워드를 통해 새로운 구문을 선언해주는 방식이 있다.

CREATE TABLE table_2(
column1 char(1) REFERENCES table_1(column1)
);

위와 같이 컬럼을 선언함과 동시에 한번에 설정이 가능하다.

 

만약 참조하는 테이블의 컬럼명과 일치한다면 다음과 같이도 선언할 수 있다.

CREATE TABLE table_2(
column1 char(1) FOREIGN KEY REFERENCES table_1
);

 

만약 제약조건에 대한 이름을 지정하고 싶다면 CONSTRAINT 키워드를 선언하여 다음과같이 선언한다.

CREATE TABLE ex_table2(
column2 char(1)
CONSTRAINT fx_column1 FOREIGN KEY(column2) REFERENCES ex_table1(column1)
);

이로써 ex_table2 테이블의 column1 컬럼은 ex_table 테이블에 있는 column1 컬럼을 참조하는 외래키로 지정하며

지정된 외래키 제약조건 명칭은 fk_column1로 지정한다.


CREATE TABLE table_1(
column1 char(1)
);

 -- 컬럼 선언과 동시에 외래키 제약조건 설정
CREATE TABLE table_2(
column1 char(1) REFERENCES table_1(column1)
);

-- 참조하려는 테이블의 컬럼명과 일치할때 
-- 컬럼 선언과 동시에 외래키 제약조건 설정
CREATE TABLE table_3( 
column2 char(1) FOREIGN KEY REFERENCES table_1
);

-- 컬럼 선언과 동시에 사용자정의 제약조건명 지정과 함께 외래키 제약조건 설정
CREATE TABLE table_2( 
column1 char(1) CONSOTRAINT fk_column REFERENCES table_1(column1)
);

-- 참조하려는 테이블의 컬럼명과 일치할때 
-- 컬럼 선언과 동시에 사용자정의 제약조건명 지정과 함께 외래키 제약조건 설정
CREATE TABLE table_2( 
column1 char(1) CONSOTRAINT fk_column FOREIGN KEY REFERENCES table_1
);

 -- 컬럼명 선언 이후 FOREIGN KEY 구문 선언을 통해 외래키 제약조건 설정
CREATE TABLE table_4(
column1 char(1)
FOREIGN KEY (column1) REFERENCES table_1(column1)
);

 -- 컬럼명 선언 이후 사용자정의 제약조건명 지정과 함께 FOREIGN KEY 구문 선언으로 제약조건 설정
CREATE TABLE table_5(
column1 char(1)
CONSTRAINT fx_column1 FOREIGN KEY column1 REFERENCES table_1(column1)
);

 -- 컬럼명 선언 이후 참조할 테이블의 컬럼명과 일치하는 경우
 -- 사용자정의 제약조건명 지정과 함께 FOREIGN KEY 구문 선언으로 제약조건 설정
CREATE TABLE table_6(
column1 char(1)
CONSTRAINT fx_column1 FOREIGN KEY REFERENCES table_1
);

기억해 두자!

외래키는 컬럼을 선언함과 동시에 지정할 수 있으며,

컬럼을 선언한 후 FOREIGN KEY 구문을 통해 이미 선언된 컬럼에 외래키 제약조건을 걸 수 있고,

CONSTRAINT 구문을 함께 선언하면 제약조건의 명칭까지 선언할 수 있다는것을!

 

728x90
반응형

'DataBase' 카테고리의 다른 글

INNER JOIN / LEFT OUTER JOIN 차이와 활용 예시  (0) 2022.04.28