[SQL] 14. PRIMARY KEY, FOREIGN KEY

JONGYOON JEON·2024년 2월 9일
0

SQL

목록 보기
8/13

CREATE TABLE + PRIMARY KEY

CREATE TABLE test01(
   id int, 
   name varchar(5), 
   primary key(id)
)

PRIMARY KEY 만들기

ALTER TABLE tablenmame
ADD PRIMARY KEY(id);

PRIMARY KEY 삭제 문법

ALTER TABLE tablename
DROP PRIMARY KEY

FOREIGN KEY 생성

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)

constraint 에 대한 추가 자료

CONSTRAINT는 데이터베이스 테이블에 적용되는 규칙을 말합니다.
이는 테이블의 데이터 무결성을 보장하는 데 중요한 역할을 합니다.

FOREIGN KEY를 생성할 때 사용하는 CONSTRAINT는 외래 키 제약 조건을 지정하는 데 사용됩니다. 외래 키는 한 테이블의 필드가 다른 테이블의 기본 키를 참조하는 것을 말하는데, 이 CONSTRAINT를 통해 테이블 간의 관계를 정의하고 데이터 무결성을 보장합니다.

예를 들어, 'Orders' 테이블에 'CustomerID'라는 외래 키가 있고, 이는 'Customers' 테이블의 'CustomerID'라는 기본 키를 참조한다고 해봅시다. 이 경우, CONSTRAINT를 사용하여 'Orders' 테이블의 'CustomerID' 필드에 입력되는 모든 값이 'Customers' 테이블의 'CustomerID' 필드에 존재하는 값이어야 한다는 규칙을 설정할 수 있습니다.

이처럼, CONSTRAINT는 데이터가 올바르게 입력되고 업데이트되는 것을 보장하며, 잘못된 데이터가 데이터베이스에 저장되는 것을 방지합니다.

명명 관례 : 외래 키 제약 조건의 이름 앞에 FK_를 붙이는 것이 관례

FOREIGN KEY 만들기

alter table tablename
add foreign key (pid) references person(key)

FOREIGN KEY 삭제

alter table tablename
drop foreign key

실습1

police_station primary key 지정

mysql> alter table police_station
-> add primary key(name);
Query OK, 31 rows affected (0.20 sec)

crime_status reference 열 생성, foreign key 지정

alter table crime_status
-> add column reference varchar(16);

alter table crime_status
-> add foreign key(reference) references police_station(name);

reference 열 데이터 채우기

UPDATE crime_status c, police_station p
-> SET c.reference = p.name
-> where p.name like concat('서울', c.police_station,'경찰서');

실습2

  1. study 만들어봐라
    create table study(
    -> study_id int,
    -> study_date date,
    -> study_time time,
    -> patient_id int,
    -> primary key(study_id),
    -> foreign key (patient_id) references person (pid)
    );

마지막 괄호 안넣어서 게속 오류 생김..
constraint 일부러 안넣어봄.

  1. primary key 삭제
    lter table study
    -> drop primary key;
  2. foreign key 삭제
    alter table study
    -> drop foreign key;
    ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 2

alter table study
-> drop foreign key study_ibfk_1;

constraint 지정해줘야함
  1. 다시 primary key
    alter table study
    -> add primary key(study_id);
  2. 다시 foreign key
    alter table study
    -> add constraint FK_study foreign key (patient_id) references person (pid);
profile
효율적인 걸 좋아해요

0개의 댓글