[데이터 취업 스쿨 스터디 노트] 10. SQL 기초 (UNION, JOIN, CONCAT, ALIAS, DISTINCT, LIMIT)

WHIT·2024년 6월 3일
0

Data Scientist

목록 보기
12/18

< 수강분량 : SQL CH.8 ~ 10>

✅ UNION

실습환경 만들기

테스트용 테이블 만들기

CREATE TABLE test1
(
    no int
);
CREATE TABLE test2
(
    no int
);

테스트용 데이터 추가

INSERT INTO test1 VALUES (1);
INSERT INTO test1 VALUES (2);
INSERT INTO test1 VALUES (3);

INSERT INTO test2 VALUES (5);
INSERT INTO test2 VALUES (6);
INSERT INTO test2 VALUES (3);

UNION 이란?

  • 여러 개의 SQL문을 합쳐서 하나의 SQL 문으로 만들어주는 방법 (주의. 칼럼의 개수가 같아야함)
# UNION : 중복된 값을 제거하여 알려준다
# UNION ALL : 중복된 값도 모두 보여준다

SELECT column1, column2, ... FROM tableA
UNION | UNION ALL
SELECT column1, column2, ... FROM tableB;
SELECT * FROM test1
UNION ALL
SELECT * FROM test2;

SELECT * FROM test1
UNION
SELECT * FROM test2;

✅ JOIN

실습환경 만들기

테스트용 테이블 만들기

CREATE TABLE snl_show
    ID int NOT NULL AUTO_INCREMENT PRIMARY KEY,
    SEASON int NOT NULL,
    EPISODE int NOT NULL,
    BROADCAST_DATE date,
    HOST varchar(32) NOT NULL
);

테스트용 데이터 추가

INSERT INTO snl_show VALUES (1, 8, 7, '2020-09-05', '강동원');
INSERT INTO snl_show VALUES (2, 8, 8, '2020-09-12', '유재석');
INSERT INTO snl_show VALUES (3, 8, 9, '2020-09-19', '차승원');
INSERT INTO snl_show VALUES (4, 8, 10, '2020-09-26', '이수현');
INSERT INTO snl_show VALUES (5, 9, 1, '2021-09-04', '이병헌');
INSERT INTO snl_show VALUES (6, 9, 2, '2021-09-11', '하지원');
INSERT INTO snl_show VALUES (7, 9, 3, '2021-09-18', '제시');
INSERT INTO snl_show VALUES (8, 9, 4, '2021-09-25', '조정석');
INSERT INTO snl_show VALUES (9, 9, 5, '2021-10-02', '조여정');
INSERT INTO snl_show VALUES (10, 9, 6, '2021-10-09', '옥주현');

JOIN 종류

INNER JOIN

  • 두 개의 테이블에서 공통된 요소들을 통해 결합하는 조인방식
SELECT column1, column2, ...
FROM tableA
INNER JOIN tableB
ON tableA.column = tableB.column
WHERE condition;

LEFT JOIN

  • 두 개의 테이블에서 공통영역을 포함해 왼쪽 테이블의 다른 데이터를 포함하는 조인방식
SELECT column1, column2, ...
FROM tableA
LEFT JOIN tableB
ON tableA.column = tableB.column
WHERE condition;

RIGHT JOIN

  • 두 개의 테이블에서 공통영역을 포함해 오른쪽 테이블의 다른 데이터를 포함하는 조인방식
SELECT column1, column2, ...
FROM tableA
RIGHT JOIN tableB
ON tableA.column = tableB.column
WHERE condition;

FULL OUTER JOIN

  • 두 개의 테이블에서 공통영역을 포함해 양쪽 테이블의 다른 데이터를 포함하는 조인방식
SELECT column1, column2, ...
FROM tableA
FULL OUTER JOIN tableB
ON tableA.column = tableB.column
WHERE condition;
  • MySQL 에서는 FULL JOIN 을 지원하지 않으므로 다음의 쿼리 활용
SELECT column1, column2, ...
FROM tableA
LEFT JOIN tableB ON tableA.column = tableB.column
UNION
SELECT column1, column2, ...
FROM tableA
RIGHT JOIN tableB ON tableA.column = tableB.column
WHERE condition;

SELF JOIN

  • INNER JOIN 과 같은 효과
  • 동일한 컬럼명이 존재하는 경우 테이블명을 명시
SELECT column1, column2, ...
FROM tableA, tableB, ...
WHERE condition;

✅ CONCAT

  • 여러 문자열을 하나로 합치거나 연결
SELECT CONCAT('string1', 'string2', ..);

✅ ALIAS

  • 칼럼이나 테이블 이름에 별칭 생성
SELECT column as alias
FROM tablename;

✅ DISTINCT

  • 검색한 결과의 중복 제거
SELECT DISTINCT column1, column2, ...
FROM tablename;

✅ LIMIT

  • 검색결과를 정렬된 순으로 주어진 숫자만큼만 조회
SELECT column1, column2, ...
FROM tablename
WHERE condition
LIMIT number;

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

0개의 댓글