제로베이스 데이터 취업 파트타임/100일 챌린지_일일 학습 일지

제로베이스 데이터 파트타임 스쿨 학습 일지 [25.06.03]

김뚱입니다 2025. 6. 3. 14:02

[강의 요약]

[Part 05. SQL_ Ch 14. PRIMARY KEY, FOREIGN KEY] 강의 수강

챕터 14 클립 전체 수강하였음

🐢 100일 챌린지 🔥 : [▰▰▰▰▰▰▰▰▰▰▰▰▰▰▰▰▰▰▰▰▰▰▰▰▰▰▰▰▰▰▰▰▰▰▰▰▰▰▰░                               ] 79/100일 (79%)

79일... 100일이 보인다.

 

 

 

[실습 환경]

  • 실습용 데이터베이스 : zerobase
  • 실습 테이블 : police_station, crime_status

 

 

 

[PRIMARY KEY (기본키)]

기본 개념

  • 역할 : 테이블 내 각 레코드를 유일하게 식별
  • 특징 : 중복 불가, NULL 불가
  • 개수 : 테이블당 하나만 지정 가능

 

▶ PRIMARY KEY 생성 문법

* CREATE TABLE에서 지정

CREATE TABLE tablename (
  column_name datatype PRIMARY KEY
);
  • 단일 칼럼을 기본키로 지정

 

*여러 칼럼을 묶어서 지정

CREATE TABLE tablename (
  col1 datatype,
  col2 datatype,
  PRIMARY KEY (col1, col2)
);

 

▶ PRIMARY KEY 삭제 문법

ALTER TABLE tablename
DROP PRIMARY KEY;
  • 복합키든 단일키든 동일하게 사용

 

 

 

[FOREIGN KEY (외래키)]

▶ 기본 개념

  • 역할 : 다른 테이블의 기본키와 연결하여 참조 무결성 유지
  • 제약 : 참조 대상은 반드시 기본키 or 유일한 값

 

FOREIGN KEY 생성 문법

*CREATE TABLE에서 바로 지정

CREATE TABLE tablename (
  col datatype,
  FOREIGN KEY (col) REFERENCES referenced_table(referenced_col)
);
  • CONSTRAINT 생략 가능

 

*ALTER TABLE로 나중에 지정

ALTER TABLE tablename
ADD FOREIGN KEY (col) REFERENCES referenced_table(referenced_col);

 

 FOREIGN KEY 삭제 문법

* 제약조건 이름 확인 (MySQL 기준)

SELECT CONSTRAINT_NAME
FROM information_schema.KEY_COLUMN_USAGE
WHERE TABLE_NAME = 'tablename';

 

*삭제

ALTER TABLE tablename
DROP FOREIGN KEY constraint_name;

 

 

 

[실전 예제: police_station & crime_status]

 목적

police_station.name ↔ crime_status.police_station을 연결

 

문제: 두 테이블의 경찰서 이름 형식이 다름

  • police_station.name: ex) '서울중부경찰서'
  • crime_status.police_station: ex) '중부'

 

문자열 처리로 일치시키기 필요함

 

PRIMARY KEY 지정

ALTER TABLE police_station
ADD PRIMARY KEY (name);
  • 경찰서 이름을 고유하게 식별

 

FOREIGN KEY 추가 전 전처리

  • crime_status 테이블에 새로운 컬럼 police_station_name 추가
  • 값을 정제하여 police_station.name과 일치하게 업데이트
ALTER TABLE crime_status
ADD COLUMN police_station_name VARCHAR(255);
UPDATE crime_status
SET police_station_name = CONCAT('서울', police_station, '경찰서');

 

 FOREIGN KEY 지정

ALTER TABLE crime_status
ADD FOREIGN KEY (police_station_name)
REFERENCES police_station(name);

 

 

 

[FOREIGN KEY와 JOIN 활용]

외래키 설정이 완료되면 두 테이블을 쉽게 JOIN 가능함

SELECT *
FROM police_station ps
JOIN crime_status cs
ON ps.name = cs.police_station_name;
  • 데이터의 연결성과 의미 해석이 수월해짐

 

 

 

[요약 정리]

항목 문법 설명
기본키 생성 PRIMARY KEY (col) 유일하고 NULL 안 됨
기본키 삭제 ALTER TABLE DROP PRIMARY KEY 기본키 제거
외래키 생성 FOREIGN KEY (...) REFERENCES ... 참조 관계 설정
외래키 삭제 ALTER TABLE DROP FOREIGN KEY ... 제약조건 이름 필요
외래키 조회 information_schema.KEY_COLUMN_USAGE 제약조건 정보 확인
실습 핵심 police_station ↔ crime_status 연결 JOIN 사용 가능

 

 

 

[나의 생각 정리]

PRIMARY KEY는 테이블 내 데이터 무결성을 위한 핵심이다.

FOREIGN KEY는 테이블 간 연결성을 강화하여 복잡한 관계형 데이터베이스 구현 가능하다.

FOREIGN KEY와 JOIN을 함께 사용하면 데이터 분석에 유용하다.

실제 분석 실무에서도 테이블 간 구조 설계 시 매우 자주 사용된다.

 

 

 

[적용점]

위에 생각 정리에 작성한 대로 적용하면 좋을 것 같다.

 

 

 

“이 글은 제로베이스 데이터 스쿨 주 3일반 강의 자료 일부를 발췌하여 작성되었습니다.”