Primary key
하나의 기본키 추가
여러개의 기본키 추가
혹은 아래와 같은 양식을 따른다.
ALTER TABLE TABLENAME
ADD CONSTRAINT PK_TABLENAME PRIMARY KEY (COLUMN1, COLUMN2);
기본키 삭제
alter table tablename drop primary key;
기본키가 여러개라도 모두 삭제된다.
기본키 추가
alter table tablename add primary key (columname);
외래키
Constraint를 사용한 외래키 생성
foreign key로 바로 생성
'''
foreign key (column) referencess OtherTableName(column)
'''
외래키 삭제/추가
추가
alter table tablename
add foreign key (column) references OtherTable(column);
삭제
alter table tablename
drop foreign key (foreign key name)
Group by, having
crime_status에서 경찰서별로 그룹화하여 경찰서 이름을 조회
select police_station
from crime_status
group by police_station
Having
Group by 하위에 조건을 나타날 때 사용한다.
경찰서 별로 발생한 범죄 건수의 합이 4000건보다 큰 경우를 검색
SELECT police_station, sum(case_number) count from crime_status
where status_type like '발생' group by police_station having count > 4000;
Scalar Functions
MID 함수
FORMAT
FORMAT을 사용하여 천원 단위로 끊기
소수점 자릿수 끊기
SQL Subquery
하나의 SQL 문 안에 포함되어 있는 또 다른 SQL 문을 말한다.
서브쿼리 안에서 order by를 사용할 수 없다.
- Scalar Subquery - SELECT 절에 사용, 결과는 하나의 Column이어야 한다.
- Inline View - FROM 절에 사용, 메인쿼리에서는 inline view에서 조회한 column만 사용이 가능
- Nested Subquery - WHERE 절에 사용
- single row : 하나 행을 검색하는 서브쿼리
- 서브쿼리가 비교연산자와 사용되는 경우, 서브쿼리의 검색 결과는 한 개 행의 결과값을 가진다.
- multiple row : 하나 이상의 행을 검색하는 서브쿼리
- multiple column : 하나 이상의 열을 검색하는 서브쿼리
- 서브쿼리가 비교연산자와 사용되는 경우, 서브쿼리의 검색 결과는 한 개 행의 결과값을 가진다.
- single row : 하나 행을 검색하는 서브쿼리
select name from celab where name = (select host from snl_show where id =1);
Scalar Subquery
예제1. 서울은평경찰서의 강도 검거 건수와 서울시 경찰서 전체의 강도 건 조회
두 가지 쿼리를 한 쿼리로 나타내려고 한다.
실습
😊실습환경 구축 할 때, 스키마 짤 때 테이블명 제대로 짜야지 시간 낭비 하지 않는다.😊
예제 1
경찰서 별로 가장 많이 발생한 범죄 건수와 범죄 유형을 조회
nested subquery
single row subquery
select name from celab where name = (select host from snl_show where id =1);
name
강동원
행이 하나만 출력된다.
multiple row - IN
SNL에 출연한 영화배우 검색
SELECT HOST
FROM SNL_SHOW
WHERE HOST IN (SELECT NAME FROM CELAB WHERE JOB_TITLE LIKE '%영화배우%');
host
강동원
차승원
Multiple row - EXITS (존재하면 출력한다.)
범죄 검거 혹은 발생 건수가 2000건 보다 큰 경찰서 조회
SELECT NAME
FROM POLICE_STATION P
WHERE EXITS (SELECT POLICE_STATION FROM CRIME_STATUS C WHERE P.NAME = C.REFERENCE AND CASE_NUBER > 2000);
Multiple row - ANY
SNL에 출연한 적이 있는 연예인 이름 조회
SELECT NAME
FROM CELAB
WHERE NAME = ANY (SELECT HOST FROM SNL_SHOW);
Multiple row - ALL
서브쿼리 결과를 모두 만족하면 출력 (비교 연산자 사용)
SELECT NAME
FROM CELAB
WHERE NAME = ALL(SELECT HOST FROM SNL_SHOW WHERE ID = 1);
'제로베이스 데이터 분석 취업 스쿨 2기 > SQL' 카테고리의 다른 글
[제로베이스 데이터 분석 취업 스쿨]Day13 SQL (0) | 2024.01.29 |
---|---|
[제로베이스 데이터 분석 취업 스쿨]Day12 SQL (0) | 2024.01.27 |
[제로베이스 데이터 분석 취업 스쿨]Day11 SQL (0) | 2024.01.24 |
[제로베이스 데이터 분석 취업 스쿨]Day10 SQL (1) | 2024.01.21 |