euny!
errorlog
euny!
전체 방문자
오늘
어제
  • 분류 전체보기 (22)
    • Python (13)
    • 데이터분석 (3)
    • WIL (4)
    • SQL (2)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 웹스크래핑
  • 크롤링
  • ㅗ
  • SQL
  • BeautifulSoup
  • 웹크롤링

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
euny!

errorlog

SQL

[SQL] JOIN, UNION, WITH, 서브쿼리

2023. 1. 27. 18:22

JOIN

- 특정 조건으로 테이블을 합친다.

- INNER JOIN : 두 테이블에서 일치하는 값이 있는 행을 반환

SELECT table1.id, table2.id
FROM table1
[INNER] JOIN table2 
	ON table2.id=table1.id

- LEFT JOIN : 왼쪽 테이블을 기준으로 오른쪽 테이블에서 조인조건에 해당하는 값이 있다면 그 값을 가져오고 없다면 NULL 값을 가져온다. 

SELECT table1.id, table2.id
FROM table1
LEFT [OUTER] JOIN table2
ON table2.id = table1.id

- FULL JOIN : 양쪽 테이블 모두가 기준이 되어 LEFT JOIN과 RIGHT JOIN을 합친 결과와 동일하다.

SELECT table1.id,table2.id
FROM table1
FULL [OUTER] JOIN table2
ON table2.id=table1.id

집합

- 둘 이상의 쿼리 결과를 단일 결과로 결합한다.

 

ALL : 모든 결과를 나타낸다 (INTERSECT는 불가)

DISTINCT : 중복된 결과를 제외한 결과를 나타낸다. 

 

UNION : 합집합

SELECT ID, NAME FROM TABLE1 ;
UNION ALL
SELECT ID, NAME FROM TABLE2 ;

INTERSECT : 교집합

SELECT ID, NAME FROM TABLE1 ;
INTERSECT DISTINCT
SELECT ID, NAME FROM TABLE2 ;

EXCEPT : 차집합

SELECT ID, NAME FROM TABLE1 ;
EXCEPT DISTINCT
SELECT ID, NAME FROM TABLE2 ;

JOIN과의 차이점 

: JOIN은 가로로 테이블을 합치지면, 집합은 세로로 테이블을 합친다 .

서브쿼리 / WITH

서브쿼리 : 하나의 SQL 문 안에 또 다른 SQL이 포함되어 있는 경우

 

- FROM 절에서의 사용

인라인 뷰라고도 하며, 동적으로 생성된 테이블인것 처럼 사용이 가능하다.

SELECT A.b1,B.b2
FROM A
    ,(SELECT b1, b2 FROM TEMP) B
WHERE A.b1 = B.b1;

- WHERE 절에서의 사용

<, <=, >, >=, <> 등의 단일행 연산자와 사용될 때는 반드시 서브쿼리의 결과가 1건이여야 한다

SELECT a, b, c
FROM A
WHERE c <= (SELECT AVG(c) FROM B WHERE c = '바보')

IN, ALL, ANY 등을 사용하여 서브쿼리의 결과가 2건이상일 경우 사용 가능하다.

SELECT a, b, c
FROM A
WHERE a IN (SELECT a FROM B WHERE c = '3')

 

WITH : 이름을 가진 서브쿼리를 정의한 후 사용하는 구문

서브쿼리가 여러개일때 가독성을 위해 주로 사용되는 편이다. 

WITH '별명' AS (
    '쿼리'
)
SELECT *
  FROM '별명'

'SQL' 카테고리의 다른 글

[SQL] 숫자, 문자열 함수  (0) 2023.01.25
    'SQL' 카테고리의 다른 글
    • [SQL] 숫자, 문자열 함수
    euny!
    euny!

    티스토리툴바