두 개 이상의 테이블을 결합하는 것 (수평결합)
두 개의 테이블에서 공통된 요소들을 통해 결합하는 조인방식(교집합)
SELECT celeb.id, celeb.name, snl_show.id, snl_show.host
FROM celeb
INNER JOIN snl_show
ON celeb.name = snl_show.host;
두 개의 테이블에서 공통영역을 포함해 왼쪽 테이블의 나머지 데이터를 포함하는 조인방식
SELECT celeb.id, celeb.name, snl_show.id, snl_show.host
FROM celeb
LEFT JOIN snl_show
ON celeb.name = snl_show.host;
두 개의 테이블에서 공통영역을 포함해 오른쪽 테이블의 나머지 데이터를 포함하는 조인방식
SELECT celeb.id, celeb.name, snl_show.id, snl_show.host
FROM celeb
RIGHT JOIN snl_show
ON celeb.name = snl_show.host;
두 개의 테이블에서 공통영역을 포함해 양쪽 테이블의 나머지 데이터를 포함하는 조인방식(합집합)
# 에러 Mysql에서 지원하지 않음
SELECT celeb.id, celeb.name, snl_show.id, snl_show.host
FROM celeb
FULL OUTER JOIN snl_show
ON celeb.name = snl_show.host;
SELECT celeb.id, celeb.name, snl_show.id, snl_show.host
FROM celeb
LEFT JOIN snl_show
ON celeb.name = snl_show.host
UNION
SELECT celeb.id, celeb.name, snl_show.id, snl_show.host
FROM celeb
RIGHT JOIN snl_show
ON celeb.name = snl_show.host;
1개의 테이블(X)에 가상으로 x1, x2라는 별칭을 부여하여 2개의 테이블인 것처럼 간주한 뒤 JOIN하는 것
SELECT name, job_title
FROM celeb, snl_show
WHERE name=host AND agency='안테나';
SELECT name, age, job_title, agency, season, episode
FROM celeb, snl_show
WHERE name = host
AND ((NOT job_title LIKE '%영화배우%' AND agency='YG엔터테이먼트')
OR (age >= 40 AND agency != 'YG엔터테이먼트'));
여러 문자열을 하나로 합치거나 연결
SELECT CONCAT('이름 : ' , name) FROM celeb;
칼럼이나 테이블 이름에 별칭 생성 (생략가능)
SELECT name as '이름', agency as '소속사' FROM celeb;
검색한 결과의 중복 제거
SELECT DISTINCT agency FROM celeb;
검색결과를 정렬된 순으로 주어진 숫자만큼만 조회 (맨밑에 작성)
SELECT * FROM celeb ORDER BY age LIMIT 4;
이글은 제로베이스 데이터 취업스쿨의 강의자료 일부를 발췌하여 작성되었습니다.