23_SQL 기초 3

김정연·2023년 7월 7일
0

데이터스쿨

목록 보기
24/30

✅ 먼저 test1, test2 테이블 생성


📌 UNION & UNION ALL

  • UNION : 중복된 값을 제거하여 알려준다.
  • UNION ALL : 중복된 값도 모두 보여준다.
SELECT col1, col2, ... FROM tableA
UNION | UNION ALL
SELECT col1, col2, ... FROM tableB
  • test1 의 모든 데이터와 test2 의 모든 데이터를 중복된 값을 제거하여 검색
  • test1 의 모든 데이터와 test2 의 모든 데이터를 중복된 값을 포함하여 검색

✅ celeb, snl_show table 활용

  • celeb table
  • snl_show table

📌 JOIN

1) inner-join

SELECT col1, col2, ...
FROM tableA
INNER JOIN tableB
ON tableA.column = tableB.column
WHERE condition;
  • snl_show 에 호스트로 출연한 celeb 을 기준으로 celeb 테이블과 snl_show 테이블을 INNER JOIN

2) left-join

SELECT col1, col2, ...
FROM tableA
LEFT JOIN tableB
ON tableA.column = tableB.column
WHERE condition;
  • snl_show 에 호스트로 출연한 celeb 을 기준으로 celeb 테이블과 snl_show 테이블을 LEFT JOIN

3) right-join

SELECT col1, col2, ...
FROM tableA
RIGHT JOIN tableB
ON tableA.column = tableB.column
WHERE condition;
  • snl_show 에 호스트로 출연한 celeb 을 기준으로 celeb 테이블과 snl_show 테이블을 RIGHT JOIN

4) full outer-join

SELECT col1, col2, ...
FROM tableA
FULL OUTER JOIN tableB
ON tableA.column = tableB.column
WHERE condition;
  • snl_show 에 호스트로 출연한 celeb 을 기준으로
    celeb 테이블과 snl_show 테이블을 FULL OUTER JOIN
  • BUT! mysql에서는 full outer join을 지원하지 않는다. 그래서 UNION을 이용해야 한다.

4) self- join

SELECT col1, col2, ...
FROM tableA, tableB
WHERE condition;
  • snl_show 에 호스트로 출연한 celeb 을 기준으로 celeb 테이블과 snl_show 테이블을 SELF JOIN
  • celeb 테이블의 연예인 중, snl_show 에 host 로 출연했고 소속사가 안테나인 사람의 이름과 직업을 검색
  • celeb 테이블의 연예인 중, snl_show 에 host 로 출연했고,영화배우는 아니면서 YG 엔터테이먼트 소속이거나 40세 이상이면서 YG 엔터테이먼트 소속이 아닌 연예인의 이름과 나이, 직업, 소속사 정보, 시즌, 에피소드를 검색
  • snl_show 에 출연한 celeb 중, 에피소드 7, 9, 10 중에 출연했거나 소속사가 YG로 시작하고 뒤에 6글자로 끝나는 사람 중 작년 9월 15일 이후에 출연했던 사람을 검색

    ! 컬럼명이 다를 경우, 컬럼명만 적재해도 된다.
    그러나, 'id'처럼 컬럼명이 같을 경우에는 컬럼명을 적재해줘야 한다.

📌 CONCAT

SELECT CONCAT(string1, string2, ...);


📌 ALIAS

칼럼이나 테이블 이름에 별칭 생성

# 칼럼에 별칭 생성
SELECT column AS alias
FROM tablename;


# 테이블 이름에 별칭 생성
SELECT col1, col2, ...
FROM tablename AS alias;

as 생략 가능!!

  • name 은 이름으로, agency 는 소속사로 별칭을 만들어서 검색
  • name 과 job_title 을 합쳐서 profile 이라는 별칭을 만들어서 검색
  • snl_korea 에 출연한 celeb 을 기준으로 두 테이블을 조인하여 다음과 같이 각 데이터의 별칭을 사용하여 검색
    • 시즌, 에피소드, 방송일을 합쳐서 ‘방송정보’
    • 이름, 직업을 합쳐서 ‘출연자정보’

📌 DISTINCT

검색한 결과의 중복 제거

SELECT DISTINCT col1, col2, ...
FROM tablename;
  • 연예인 소속사 종류를 검색 - 중복 제외

📌 LIMIT

검색결과를 정렬된 순으로 주어진 숫자만큼만 조회

SELECT col1, col2, ...
FROM tablename
WHERE condition
LIMIT number;
  • 나이가 가장 적은 연예인 4명을 검색

출처: 제로베이스

0개의 댓글