SQL(Primary Key, Foreign Key, 집계 함수)

박재현·2024년 9월 5일

Primary Key

테이블 생성시 primary key 설정

  • 단일 primary key 만들기

  • 여러 개의 컬럼을 primary key로 만들기

Primary Key 삭제

  • alter table 테이블명 drop primary key;

이미 생성된 테이블에 Primary Key 추가하기

  • alter table 테이블명 add primary key (컬럼명1, 컬럼명2...);

  • 테이블 지정해서 추가하기

    • alter table 테이블명 add constraint PK_테이블명 primary key (컬럼명1, 컬럼명2...);
    • constraint 생략시 자동 선택

Foreign Key

테이블 생성시 foreign key 설정

  • 단일 foreign key 설정

    • constraint 이름지정 foreign key (컬럼명) references person(컬럼명)
    • foreign key 는 MUL로 표시
  • constarint 생략가능

    • show create table 테이블명;
    • 자동설정된 constraint 이름 -> 'job_ibfk_1'

foreign key 삭제

  • alter table 테이블명 drop foreign key 지정된이름;

    • MUL이 남아있어 삭제가 안된것 처럼 보인다.
  • show create table 테이블명; 을 통해서 확인해 보면 삭제된 것을 확인할 수 있다.

foreign key 추가

  • alter table 테이블명 add foreign key (컬럼명) references person(컬럼명);

  • foreign key가 추가된 것을 확인

foreign key 예제

  • AWS RDS database-1 서버로 접속

  • crime_status 테이블의 police_station 컬럼과 police_station 테이블의 name 컬럼확인

    • 갯수 확인
    • select count(distinct 컬럼) from 데이터베이스;
  • 내용 확인

  • crime_status의 police_station과 police_station의 name이 매칭이 되는 것을 확인

  • police_station의 name 컬럼을 primary key로 설정하기

  • crime_status에 reference라는 컬럼을 만든 후 foreign key로 설정하기

집계 함수

count, sum

count

  • select count(컬럼) from 테이블명;

  • 중복되지 않는 crime_type의 수 구하기

sum

  • sum을 이용하여 2020년에 발생한 범죄 수 구하기
    • select sum(컬럼) from 테이블명;

Avg, min, max

avg

  • select avg(컬럼) from 테이블명;

min

  • select min(컬럼) from 테이블명;

max

  • select max(컬럼) from 테이블명;

Group by, having

group by

  • 중복을 제거

    • distinct 도 중복을 제거하지만 정렬(order by)을 사용할 수 없음
  • select 컬럼 from 테이블명 where 조건 group by 컬럼 order by 컬럼

  • 경찰서별 총 발생건수 검색

having

  • where 절에서는 집계함수를 사용할 수 없기 때문에 where 대신 having 사용

  • select 컬럼 from 테이블명 where 조건 group by 컬럼 having 조건

  • 경찰서별 범죄 발생건수 중 4000건을 초과하는 건수 검색


이 글은 제로베이스 데이터 취업 스쿨 강의 자료를 발췌하여 작성되었습니다.

0개의 댓글