본문 바로가기
SQL

sql 심화 FOREIGN KEY, CASCADE, Constraint, CHECK

by Antonio Bae 2023. 9. 4.

1.FOREIGN KEY

2.CASCADE

3.Constraint

4.CHECK

 

 

1.FOREIGN KEY

외래키는 두 테이블을 서로 연결하는 데 사용되는 키

외래키가 포함된 테이블을 자식 테이블이라고 하고 외래키 값을 제공하는 테이블을 부모 테이블

 

외래키 사용시 주의 사항

1) 외래키 값은 NULL이거나 부모 테이블의 기본키 값과 동일해야한다. (참조 무결성 제약조건)

2) 부모 테이블의 기본키, 고유키를 외래키로 지정할 수 있습니다.

3) 부모 테이블의 기본키, 고유키가 여러개의 컬럼으로 이루어져 있다면 부모가 가진 기본키, 고유키 컬럼을 원하는 개수만큼 묶어서 외래키로 지정할 수 있습니다.

 

FOREIGN 키는 반드시 다른 테이블의 PRIMARY 키와 연결해야 합니다

예시

DROP TABLE IF EXISTS buy, member;
CREATE TABLE member
( mem_id	CHAR(8) NOT NULL PRIMARY KEY,
  mem_name	VARCHAR(10) NOT NULL,
  height	INT UNSIGNED NULL
);
CREATE TABLE buy
(num		INT AUTO_INCREMENT NOT NULL PRIMARY KEY,
 mem_id		CHAR(8) NOT NULL,
 prod_name	CHAR(6) NOT NULL,
 FOREIGN KEY(user_id) REFERENCES member(mem_id)
 );

242P PRIMARY 키 FOREIGN키 연결 / CONSTRAINT 제약
CONSTRAINT:	제약 조건을 사용하여 적절하지 않은 데이터 입력하는 일을 방지

ALTER TABLE buy
	ADD CONSTRAINT 
	FOREIGN KEY(mem_id)
	REFERENCES member(mem_id);
 

2.CASCADE

참조 테이블 자동으로 변경하고 싶을때

=> 데이터의 무결성을 보장함

VARCHAR에는 키를 못때립니다.

예시

DROP TABLE IF EXISTS buy;
CREATE TALBE buy
( num 	INT AUTO_CINCREMENT NOT NULL PRIMARY KEY,
  mem_id CHAR(8) NOT NULL,
  prod_name CHAR(6) NOT NULL
);


ALTER TABLE buy
	ADD CONSTRAINT
	FOREIGN KEY(mem_id) REFERENCES member(mem_id)
	ON UPDATE CASCADE
	ON DELETE CASCADE;
	
INSERT INTO buy VALUES(NULL, 'BLK', '지갑');
INSERT INTO buy VALUES(NULL, 'BLK', '맥북');

UPDATE member SET mem_id = 'PINK' WHERE mem_id='BLK';
 

 

 

3.Constraint

적절하지 않은 데이터를 입력하는 일을 방지

 

 

예시

ALTER TABLE member
	ADD CONSTRAINT
	CHECK(phone1 IN('02','031','032','054','055','061'));
 

 

 

4.check

조건으로 지정된 Data 외에 다른 Data의 입력을 맞는 제약

예시

DROP TABLE IF EXISTS member;
CREATE TABLE member
( mem_id	CHAR(8) NOT NULL PRIMARY KEY,
  mem_name	VARCHAR(10) NOT NULL,
  height	INT UNSIGNED NULL DEFAULT 160,
  phone1	CHAR(3) NULL
);

ALTER TABLE member
	ALTER COLUMN phone1 SET DEFAULT '02';
	
INSERT INTO `member` VALUES ('RED', '레드벨벳', 161, '054');
INSERT INTO `member` VALUES ('SPC', '우주소녀', default, default);
 

 

요약

 

사진 설명을 입력하세요.

 

 

 

감사합니다.

 

 

 

 

'SQL' 카테고리의 다른 글

SQL 계층형 쿼리 사용법  (0) 2024.04.30
MSSQL SQL Server / SSMS / 쿼리 만들고 실행하는 방법  (0) 2024.03.11
파이썬과 Pymysql 연동 방법  (0) 2023.08.23
리눅스 환경 sql  (0) 2023.08.22