- Primary Key
- Foreign Key
- Foreign Key 예제
- exercises
기본 키. 테이블의 각 레코드를 식별하기 위해
중복되지 않은 고유값을 포함하는 키이다.
Null값을 포함할 수 없으며,
테이블 당 하나의 기본키를 가진다.
CREATE TABLE tablename
(
column1 datatype NOT NULL,
column2 datatype NOT NULL,
...
CONSTRAINT constraint_name
PRIMARY KEY (column1, column2, ...)
);
하나의 컬럼을 기본키로 설정하는 경우:
Key <- PRI로 표시됨을 확인하였다.
여러 개의 컬럼을 기본키로 설정하는 경우:
테이블당 기본키는 하나이기 때문에,
이 두개가 다 각자 PRI라는 게 아니라
이 두개를 묶어서, PRI라는 것이다.
ALTER TABLE tablename
DROP PRIMARY KEY;
ALTER TABLE tablename
ADD PRIMARY KEY (column1, column2, ...);
ALTER TABLE tablename
ADD CONSTRAINT constraint_name PRIMARY KEY (column1, column2, ...);
constraint <-생략 가능.
constraint <-생략 가능.
외래키. 한 테이블을 다른 테이블과 연결해주는 역할이며,
참조되는 테이블은 그 테이블의 기본키(혹은 단일값)이다.
CREATE TABLE tablename
(
column1 datatype NOT NULL,
column2 datatype NOT NULL,
...
CONSTRAINT constraint_name
PRIMARY KEY (column1, column2, ...),
CONSTRAINT constraint_name
FOREIGN KEY (column3, column4, ...)
REFERENCES REF_tablename(REF_column)
);
CREATE TABLE에서 FK를 지정하는 경우:
orders테이블의 pk는 oid고,
fk는 person 테이블의 pid를 참조할 때!
CREATE TABLE에서 FK를 지정하는 경우,
constraint를 생략할 수 있다.
FK는 여러개를 생성할 수 있고,
constraint를 생략하면 자동 생성된다.
자동 생성된 constraint를 확인하는 방법:
SHOW CREATE TABLE tablename;
job_ibfk_1라고 자동으로 생성됨이 보인다.
ALTER TABLE tablename
DROP FOREIGN KEY FK_constraint;
ALTER TABLE tablename
ADD FOREIGN KEY (column) REFERENCES REF_tablename(REF_column);
police_station과 crime_status 테이블 사이에 관계 (Foreign Key)를 설정해 봅시다.
AWS RDS(database-1)의 zerobase에서 작업합니다.
police_station.name과, crime_status.police_station을 매칭하여 관계를 맺을 수 있다.
경찰서 이름이 각 테이블에서 표시되는 형식이 다르다.
-> "서울"과 "경찰서"를 붙여 일치할 것 같다. 확인하기:
police_station.name을 pk로 설정하고,
crime_status 테이블에 fk로 사용할 컬럼(reference)을 추가하고...
police_station.name을 참조하는
fk를 생성해주고
fk값 update
crime_status의 reference를
police_station의 name으로 업데이트 할래
concat을 이용해서 서울 + ... + 경찰서 형태로~
select해서 보면 , 잘 들어갔다.
이제 둘은 참조하는 관계이다.
-> FK 기준으로 조인할 수 있다!!
경찰서별 주소를 가져왔다~~