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 |