SQL 심화(5)_Primaty key & Foriegn key

Jio.B·2023년 7월 18일
0

PRIMARY KEY

  • 기본키
  • 테이블의 각 레코드를 식별
  • 중복되지 않은 고유값을 포함
  • NULL 값을 포함할 수 없음
    (= primary key는 NOT NULL 설정해주는 경우가 다수)
  • 테이블 당 하나의 기본 키를 가짐
    (= 동시에 여러 개의 칼럼을 기본키로 지정할 수도 있음)

PRIMARY KEY 생성

  • CONSTRAINT 생략 시 자동생성됨
  • 지정한 Primary Key는 PRI로 표시됨

PRIMARY KEY 삭제

  • primary key의 칼럼명을 별도로 지정할 필요 없음
  • primary key가 한 개, 한개 이상일 때 삭제하는 방법은 동일함

(기존 테이블에) PRI 속성 추가


FOREIGN KEY

  • 외래키
  • 한 테이블을 다른 테이블과 연결해주는 역할
    단, 참조되는 테이블의 항목은 그 테이블의 기본키(혹은 단일값)

FOREIGN KEY 생성

(예제 1) create table에서 foreign key 지정

  • 지정한 Foreign Key는 MUL로 표시됨

    # CONSTRAINT 확인 #

(자동 생성된) CONSTRAINT

FOREIGN KEY 삭제

  • Foreign key는 한 테이블에 여러개 존재할 수 있으므로 삭제 대상이 되는 컬럼명을 명시해야 함

(기존 테이블에) MUL 속성


(예제 1)

(예제 2) police_station과 crime_status 테이블 사이에 관계(Foriegn key)를 설정하기 (with AWS RDS)

    1. AWS RDS database-1 켜기
    1. [in 터미널] AWS RDS연결(sql_ws 폴더 확인)
  • 분석 1 : police_station.name과 crime_status.police_station을 distinct 하여 count한 결과 동일한 개수임을 확인

  • 분석 2 : 그러나 각 테이블마다 경찰서 이름을 표시하는 형식이 상이함

  • 분석 3 : crime_status.police_station을 police_station.name과 같은 형식으로 변형 가능한지 검토

(3-1) 경찰서 명칭을 약식으로 표기한 crime_status 방식의 표기 앞뒤에 '서울'과 '경찰서'를 concat으로 묶어주기 / 동일한 형태가 되는지 확인
(3-2) group by로 묶어서 나란히 비교

  • 분석 4 : poice_station.name을 primary key로 설정

  • 분석 5 : crime_status 테이블에 Foriegn key로 사용할 칼럼을 새로 추가

  • 분석 6 : Foriegn key 생성

  • 분석 7 : Foriegn key 값 update

  • 분석 8 : Foriegn key 기준으로 두 테이블 JOIN하여 검색
    [!! 중요 !!] 두 개의 테이블을 JOIN할 때 Foriegn key를 사용하는 것이 핵심

0개의 댓글