반응형
반응형

1. Join의 종류

  • Join이란?
    • 두 테이블에 공통으로 있는 칼럼을 이용해 연결 시키는 것
종류 설명
INNER 조건이 정확히 일치하는 데이터만 출력
LEFT OUTER 앞에 있는 데이터는 모두 출력, 뒤에 있는 데이터는 조건이 일치하는 데이터 출력 + 없으면 NULL
RIGHT OUTER 뒤에 있는 데이터는 모두 출력, 앞에 있는 데이터는 조건이 일치하는 데이터 출력 + 없으면 NULL
FULL OUTER 앞뒤 모든 일치하는 데이터 출력, 없으면 NULL
SELF 동일한 테이블끼리 수행하는 INNER JOIN
CROSS 두 테이블 컬럼의 곱집합 출력
NATURAL 두 테이블의 같은 이름의 컬럼 기준으로 INNER JOIN

2. Join의 문법

종류 문법
INNER 테이블1 A INNER JOIN 테이블2 B ON A.KEY = B.KEY
LEFT OUTER 테이블1 A LEFT OUTER JOIN 테이블2 B ON A.KEY = B.KEY
RIGHT OUTER 테이블1 A RIGHT OUTER JOIN 테이블2 B ON A.KEY = B.KEY
FULL OUTER 테이블1 A FULL OUTER JOIN 테이블2 B ON A.KEY = B.KEY
SELF 테이블1 A INNER JOIN 테이블1 B ON A.KEY = B.KEY
CROSS 테이블1 A CROSS JOIN 테이블2 B
NATURAL 테이블1 A NATURAL JOIN 테이블2 B

3. Join 예시

  • INNER JOIN
SELECT * FROM BASKET_A BA
INNER JOIN BASKET_B BB
ON BA.FRUIT = BB.FRUIT
  • LEFT OUTER JOIN
SELECT * FROM BASKET_A BA
LEFT OUTER JOIN BASKET_B BB
ON BA.FRUIT = BB.FRUIT
  • RIGHT OUTER JOIN
SELECT * FROM BASKET_A BA
RIGHT OUTER JOIN BASKET_B BB
ON BA.FRUIT = BB.FRUIT
  • FULL OUTER JOIN
SELECT * FROM BASKET_A BA
FULL OUTER JOIN BASKET_B BB
ON BA.FRUIT = BB.FRUIT
  • SELF JOIN
SELECT A.EMPLOYEE_ID AS ID, A.MANAGER_ID AS M_ID
    ,B.EMPLOYEE_ID AS ID,  B.MANAGER_ID AS M_ID
FROM EMPLOYEE A
INNER JOIN EMPLOYEE B
ON A.EMPLOYEE_ID = B.MANAGER_ID
  • CROSS JOIN
SELECT * FROM CROSS_T1 A
CROSS JOIN CROSS_T2 B
  • NATURAL JOIN
SELECT CATEGORY_ID AS C_ID, PRODUCT_ID AS P_ID
      , CATEGORY_NAME AS C_NAME ,PRODUCT_NAME AS P_NAME
FROM PRODUCTS NATURAL JOIN CATEGORIES

# 참고

반응형

'데이터 분석 > SQL' 카테고리의 다른 글

[SQL] 5. 집합 연산자  (0) 2021.04.19
[SQL] 4. 분석 함수  (0) 2021.04.05
[SQL] 3. 데이터 집계(Group by)  (0) 2021.04.01
[SQL] 1. 데이터 조회와 필터링  (0) 2021.03.23
Postgresql 설치(postGIS 포함)  (0) 2021.03.16
반응형

1. 데이터 조회

  • 데이터 조회
    • SELECT 컬럼명 FROM 테이블명
SELECT * FROM CUSTOMER;          -- 모든 컬럼 조회
SELECT FIRST_NAME FROM CUSTOMER; -- 특정 컬럼 조회
  • 데이터 정렬
    • ORDER BY 칼럼명 ASC => 정렬하기
      • ASC : 오름차순 정렬(Default)
      • DESC : 내림차순 정렬
SELECT FIRST_NAME, LAST_NAME FROM CUSTOMER
ORDER BY FIRST_NAME ASC,
    LAST_NAME DESC
  • 중복 제외값 조회
    • SELECT DISTINCT 칼럼명 FROM 테이블명
      • 테이블 내에 존재하는 칼럼명을 중복 제거 후 1개씩만 출력
    • SELECT DISTINCT ON(칼럼명1) 칼럼명1, 칼럼명2 FROM 테이블명 ORDER BY 칼럼명1, 칼럼명2 DESC
      • 칼럼명1 기준으로 중복 제고 후 칼럼명2는 DESC 정렬된 맨 위 1개의 값만 보여줌

2. 데이터 필터링

  • 조건으로 필터링
    • SELECT 칼럼명 FROM 테이블명 WHERE 조건
      • WHERE절 이하 조건에 따라 테이블 조회
SELECT FIRST_NNAME FROM CUSTOMER
WHERE FIRST_NAME='Jamie'
  • 출력 개수로 필터링
    • LIMIT
      • SELECT * FROM 테이블명 LIMIT N
        • N개행만 출력
      • SELECT * FROM 테이블명 LIMIT N OFFSET M
        • M+1번째 행부터 N개 출력
    • FETCH
      • SELECT * FROM 테이블명 FETCH FIRST N ROW ONLY
        • N개행만 출력
        • N을 입력하지 않으면 1개 행만 출력
      • SELECT * FROM 테이블명 OFFSET M ROWS FETCH FIRST N ROW ONLY
        • M+1번째 행부터 N개 출력
-- LIMIT
SELECT * FROM CUSTOMER LIMIT 5          -- 5개 행만 출력
SELECT * FROM CUSTOMER LIMIT 4 OFFSET 3 -- 3+1번째 행부터 4개행 출력

-- FETCH
SELECT * FROM CUSTOMER FETCH FIRST 5 ROW ONLY               -- 5개 행만 출력
SELECT * FROM CUSTOMER OFFSET 3 ROWS FETCH FIRST 4 ROW ONLY -- 3+1번째 행부터 4개행 출력
  • IN 연산자
    • SELECT * FROM 테이블명 WHERE 칼럼명 IN (V1, V2)
      • 칼럼명의 값이 V1, V2인 것만 조회
    • SELECT * FROM 테이블명 WHERE CUSTOMER_ID NOT IN (V1, V2)
      • 칼럼명의 값이 V1, V2가 아닌 것만 조회
SELECT * FROM CUSTOMER WHERE CUSTOMER_ID IN (1,2) -- ID가 1,2인 대상 추출
SELECT * FROM CUSTOMER WHERE CUSTOMER_ID NOT IN (1,2) -- ID가 1,2가 아닌 대상 추출
  • BETWEEN 연산자
    • SELECT * FROM 테이블명 WHERE 칼럼명 BETWEEN V1 AND V2
      • 칼럼명의 값이 V1 이상이면서 V2 이하인 것만 조회
    • SELECT * FROM 테이블명 WHERE 칼럼명 NOT BETWEEN V1 AND V2
      • 칼럼명의 값이 V1 미만이면서 V2 초과인 것만 조회
  • LIKE 연산자
    • SELECT * FROM 테이블명 WHERE 칼럼명 LIKE 특정패턴
      • 칼럼명이 특정 패턴을 갖는 것만 조회
        • 특정패턴이 % : 길이와 상관없이 아무 문자가 있는 패턴
        • 특정패턴이 _ : 한 개의 문자가 아무 문자가 있는 패턴
-- 이름이 KIM으로 시작하는 고객 추출
SELECT * FROM CUSTOMER
WHERE NAME LIKE 'KIM%';

-- 이름이 3자리이고 가운에 문자가 'A' 인 고객 추출
SELECT * FROM CUSTOMER
WHERE NAME LIKE '_A_';
  • IS NULL 연산자
    • SELECT * FROM 테이블명 WHERE 칼럼명 IS NULL
      • 칼럼명의 값이 NULL 인 것만 조회
    • SELECT * FROM 테이블명 WHERE 칼럼명 IS NOT NULL
      • 칼럼명의 값이 NULL이 아닌 것만 조회

# 참고

반응형

'데이터 분석 > SQL' 카테고리의 다른 글

[SQL] 5. 집합 연산자  (0) 2021.04.19
[SQL] 4. 분석 함수  (0) 2021.04.05
[SQL] 3. 데이터 집계(Group by)  (0) 2021.04.01
[SQL] 2. 데이터 조인  (0) 2021.03.29
Postgresql 설치(postGIS 포함)  (0) 2021.03.16

+ Recent posts

반응형