1. 기본키(Primary Key) 더 알기
- 중복되지 않는 고유값만 허용
- NULL 값 허용하지 않음
- 테이블당 하나의 기본키만 지정 가능
-- 기본키 넣는 방법 1
CREATE TABLE people (
first_name CHAR(2) PRIMARY KEY,
last_name CHAR(3),
nickname VARCHAR(10)
);
-- 기본키 넣는 방법 2
CREATE TABLE people (
first_name CHAR(2),
last_name CHAR(3),
nickname VARCHAR(10),
PRIMARY KEY (first_name)
);
기본 키 변경하기
-- 기본키는 테이블당 하나만 있어서 따로 지정할 것이 없다.
ALTER TABLE people DROP PRIMARY KEY;
ALTER TABLE people ADD PRIMARY KEY (last_name);
다중 기본키
-- 기본키 하나에 컬럼이 여러 개 들어갈 수 있다.
-- 아래는 first_name과 last_name의 조합이 겹치지 않으면 행들이 구분된다.
-- 조합이 같다면 INSERT할 때 기본키 중복 에러가 뜬다.
CREATE TABLE people (
first_name CHAR(2),
last_name CHAR(3),
nickname VARCHAR(10),
PRIMARY KEY (first_name, last_name)
);
2. 고유키(Unique) 더 알기
- 중복 제한, NULL 값 가능
-- 고유키 넣는 방법 1
CREATE TABLE people (
person_id INT AUTO_INCREMENT PRIMARY KEY,
first_name CHAR(2) UNIQUE,
last_name CHAR(3)
);
-- 고유키 넣는 방법 2
CREATE TABLE people (
person_id INT AUTO_INCREMENT PRIMARY KEY,
first_name CHAR(2),
last_name CHAR(3),
UNIQUE (first_name)
);
-- 다중 고유키
CREATE TABLE people (
person_id INT AUTO_INCREMENT PRIMARY KEY,
first_name CHAR(2),
last_name CHAR(3),
UNIQUE (first_name, last_name)
);
3. 외래키
외래 키 추가하기
ALTER TABLE _자식테이블명
ADD CONSTRAINT _제약명
FOREIGN KEY ( _자식테이블외래키 )
REFERENCES 부모테이블명 ( _부모테이블기본키 )
-- ON DELETE _삭제시제약
-- ON UPDATE _수정시제약
외래 키 삭제하기
ALTER TABLE _자식테이블명 DROP FOREIGN KEY _자식테이블외래키
- 💡 외래키는 NULL값이거나 또는 부모 테이블의 기본 키값과 같아야 한다.
businesses에 sections에 대한 외래키를 설정한 뒤 실행.
-- 에러 발생
-- sections의 자식 테이블이라는 제약이 있어 테이블에 없는 fk_section_id 값을 INSERT 할 수 없다.
-- JOIN되어야할 테이블에 실수로 없는 값을 넣는 것을 방지해준다.
INSERT INTO businesses
(fk_section_id, business_name, status, can_takeout)
VALUES ('8', '섹션에없는식당', 'OPN', '1');
외래 키 제약
제약 | 설명 | 비고 |
NO ACTION, RESTRICT | 자식 테이블에 해당 외래키가 있을 때 수정/삭제되지 않음 | |
CASCADE | 자식 테이블의 해당 행도 수정/삭제 | |
SET NULL | 자식 테이블의 외래키를 NULL로 | 자식 외래키가 NOT NULL일 시 설정 불가 |
SET DEFAULT | 자식 테이블의 외래키를 기본값으로 | InnoDB 엔진에서 사용 불가 |
'프로그래밍 강의 메모 > 갖고노는 MySQL 데이터베이스 by 얄코' 카테고리의 다른 글
MySQL 더 깊이 알아가기 > 인덱스 - 검색을 빠르게! (0) | 2022.05.04 |
---|---|
MySQL 더 깊이 알아가기 > 뷰 - 가상의 테이블 (0) | 2022.05.04 |
데이터 조작하기 > 데이터 변경, 삭제하기 (0) | 2022.05.04 |
데이터 조작하기 > 테이블 만들고 데이터 입력하기 (0) | 2022.05.04 |
SELECT 더 깊이 파보기 > JOIN - 여러 테이블 조립하기 (0) | 2022.05.04 |