일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- dp
- Image Generation
- ddim
- 포스코 채용
- DDPM
- Generative Models
- manganinja
- KT
- stable diffusion
- controlNet
- classifier-free guidance
- kt인적성
- ip-adapter
- 포스코 코딩테스트
- posco 채용
- 논문 리뷰
- 프로그래머스
- diffusion models
- 과제형 코딩테스트
- 코딩테스트
- colorization
- Today
- Total
Paul's Grit
[SQL] PRIMARY KEY, FOREIGN KEY 본문
1. PRIMARY KEY
1-1. PRIMARY KEY 생성
• 테이블의 각 레코드를 식별
• 중복되지 않는 고유값을 포함
• NULL 값을 포함할 수 없음
• 테이블 당 하나의 기본키를 가짐
하나의 칼럼을 기본키로 설정하는 경우
CREATE TABLE person
(
pid int NOT NULL,
name varchar(16),
age int,
sex char,
PRIMARY KEY (pid)
);
여러개의 칼럼을 기본키로 설정하는 경우
CREATE TABLE animal
(
name varchar(16) NOT NULL,
type varchar(16) NOT NULL,
age int,
PRIMARY KEY (name, type)
);
2-2. PRIMARY KEY 삭제
하나의 칼럼이 기본키로 설정된 경우
ALTER TABLE person
DROP PRIMARY KEY;
여러개의 칼럼이 기본키로 설정된 경우:
여러 개의 컬럼이 묶여 하나의 PK를 이루고 있기 때문에 하나의 컬럼을 삭제하는 경우와 동일하다
ALTER TABLE animal
DROP PRIMARY KEY;
2-3. PRIMARY KEY 생성 - 2
하나의 칼럼을 기본키로 지정하는 경우
ALTER TABLE person
ADD PRIMARY KEY (pid);
여러개의 칼럼을 기본키로 지정하는 경우
ALTER TABLE animal
ADD CONSTRAINT PK_animal PRIMARY KEY (name, type);
2. FOREIGN KEY
한 테이블을 다른 테이블과 연결해주는 역할이며, 참조되는 테이블의 항목은 그 테이블의 기본키 (혹은 단일값)
2-1. FOREIGN KEY 생성
CREATE TABLE 에서 FOREIGN KEY 를 지정하는 경우
- pid 컬럼을 Foreign key로 지정
- 'FK_person'이라는 이름의 CONSTRAINT로 생성
- person 테이블의 pid 컬럼을 참조
- MySQL에서는 'MUL'로 표기된다.
CREATE TABLE orders
(
oid int not null,
order_no varchar(16),
pid int,
PRIMARY KEY (oid),
CONSTRAINT FK_person FOREIGN KEY (pid) REFERENCES person(pid)
);
CREATE TABLE 에서 FOREIGN KEY 를 지정하는 경우, CONSTRAINT 를 생략할 수 있고,
CONSTRAINT가 자동 생성된다.
CREATE TABLE job
(
jid int not null,
name varchar(16),
pid int,
PRIMARY KEY (jid),
FOREIGN KEY (pid) REFERENCES person(pid)
);
자동 생성된 CONSTRAINT 를 확인하는 방법
SHOW CREATE TABLE job;
'job_ibfk_1'이라는 이름의 CONSTRAINT가 자동 생성됨
2-2. FOREIGN KEY 삭제
CONSTRAINT 이름으로 삭제
ALTER TABLE orders
DROP FOREIGN KEY FK_person;
SHOW CREATE TABLES orders;
Constraint라는 속성은 사라지지만, MySQL에서는 Foreign Key를 삭제해도 Key라는 속성이 유지된다.
아래의 코드를 실행하면 Key 속성도 완전히 사라지게 된다.
ALTER TABLE orders
DROP KEY FK_person;
2-3. FOREIGN KEY 생성 - 2
ALTER TABLE orders
ADD FOREIGN KEY (pid) REFERENCES person(pid);
4. 연습
1. 다음과 같이 study_id 가 PRIMARY KEY, patient_id 가 person 테이블의 pid 와 연결된 FOREIGN KEY 로 지정된
study 테이블을 생성하세요.
create table study
(
study_id int not null,
study_date date,
study_time time,
patient_id int,
primary key (study_id),
constraint FK_study foreign key (patient_id) references person (pid)
);
2. 생성한 테이블의 PRIMARY KEY 를 삭제하세요.
alter table study drop primary key;
3. 생성한 테이블의 FOREIGN KEY 를 삭제하세요.
alter table study drop foreign key FK_study;
4. study 테이블의 patient_id 를 person 테이블의 pid 와 연결된 FOREIGN KEY 로 등록하세요.
alter table study add foreign key (patient_id) references person (pid);
5. study 테이블의 study_id 를 PRIMARY KEY로 등록하세요.
alter table study add primary key (study_id);
'Data Analysis > SQL' 카테고리의 다른 글
[SQL] SQL Scalar Functions (0) | 2023.09.04 |
---|---|
[SQL] Aggregate Functions : COUNT, SUM, AVG, MIN, MAX, GROUP BY, HAVING (0) | 2023.08.31 |
[SQL] 크롤링 데이터를 DB에 저장하기 (0) | 2023.08.30 |
[SQL] Python with MySQL (0) | 2023.08.30 |
[SQL] SQL Backup & Restore (0) | 2023.08.28 |