내가 보려고 정리하는 SQL - (1) SQL 개념


이 글을 읽는 사람이 SQL을 처음 시작한다는 가정 하에 기초적인 부분을 간단히 작성하였습니다.🧐

💻 SQL(strutured query language)이란?

  • 관계형 데이터베이스 관리시스템(RDBMS)의 데이터를 관리하기 위해 설계된 특수 목적의 프로그래밍 언어
    • 즉, 데이터베이스에게 일을 시킬 수 있는 유일한 수단
  • 미국표준협회(ANSI)에 의해 표준이 정해져있으며, 모든 RDBMS는 ANSI SQL을 기반으로 만들어짐
  • 표준 ANSI SQL과 그외 SQL이 존재함
    • 표준 SQL인 ANSI SQL 이외에 각 DBMS Vendor인 MS-SQL, Oracle, MySQL 등에서 자신만의 기능을 추가한 SQL이 있음
    • ANSI SQL : 모든 DBMS에서 공통적으로 사용 가능한 핵심 표준 SQL
    • 그외 SQL : 여러 제품의 DBMS에서 자신만의 독자적인 기능을 위해 추가적인 SQL을 만듦

✅ SQL로 하는 3step 작업

STEP 1. 선택

  • FROM절에서 원하는 데이터 집합을 정의한 후, WHERE절이나 HAVING절을 사용하여 ROW를 걸러내는 작업 image

STEP 2. 추출

  • SELECT절에 COLUMN 배열로 COLUMN을 걸러내는 작업 image

STEP 3. 가공 추출

  • 집계합수, GROUP BY절 등으로 COLUMN을 가공하는 작업 image

📍 SQL 실행 순서 (Oracle SQL 기준)

  • Oracle 이외의 다른 DBMS에서는 FROM 절 없는 SQL문도 존재함
  • Oracle SQL 기준으로 아래와 같은 순서로 SQL이 실행됨
    1. FROM
    2. WHERE
    3. GROUP BY
    4. HAVING
    5. SELECT
    6. ORDER BY
        SELECT      {*, column(s) [alias], ...} 
        FROM        table(s) [alias]
        WHERE       condition(s)
        GROUP BY    column(s)
        HAVING      condition(s)
        ORDER BY    columns(s) [alias][DESC, ...];
      

1️⃣ SELECT절 간단 정리

1. 존재하는 모든 테이블 보기
SELECT  *
FROM    테이블명
2. 일부 칼럼 설정해서 보기
SELECT  칼럼1, 칼럼2, 칼럼3
FROM    테이블명
3. 칼럼에 별칭(alias) 붙여서 조회
SELECT  칼럼1 "별칭1", 칼럼2 as "별칭2"
FROM    테이블명
4. 연결 연산자로 칼럼붙여서 조회
SELECT  칼럼1 || 칼럼2
FROM    테이블명
5. 중복 제거해서 보기
SELECT  DISTINCT 칼럼 1
FROM    테이블명
6. 중복 제거해서 보기
SELECT  DISTINCT 칼럼 1
FROM    테이블명
7. 조건문을 통해서 보기
SELECT  * 
FROM    테이블명
WHERE   칼럼1 = '조건1' AND 칼럼2 = '조건2'

2️⃣ WHERE절 간단 정리

image

1. BETWEEN
SELECT  칼럼1
FROM    테이블
WHERE   칼럼2 BETWEEN 범위1 AND 범위2
2. IN
SELECT  칼럼1
FROM    테이블
WHERE   칼럼2 IN (A, B)
3. LIKE
SELECT  칼럼1
FROM    테이블
WHERE   칼럼2 LIKE '%단어%'
4. IS NULL / IS NOT NULL
SELECT  칼럼1
FROM    테이블
WHERE   칼럼2 IS NULL -- or IS NOT NULL

3️⃣ TABLE JOIN 간단 정리

SQL JOIN의 종류

image (출처 : Common JOIN types)

1. INNER JOIN(교집합)
  • Table1과 Table2가 일치하는 키값만 가져옴 image
2. OUTER JOIN
  • Table1과 Table2가 일치하지 않는 키값까지 함께 가져옴 image
3. LEFT JOIN(Table1 + 교집합)
  • Table2에 없는 키값에 대해서는 NULL로 채움 image
4. UNION(Table1 row + Table2 row, 중복 row 제외)
  • Table1과 Table2를 하나로 합치고 싶을 때 사용 (중복되는 행은 하나만 표시)
  • UNION ALL : 중복제거를 하지않고 모두 합쳐서 가져옴 image
5. CROSS JOIN
  • Table1의 모든 행들과 Table2의 모든 행들을 조인하여 가져옴 image


🙋‍♀️(예시) 3개 이상 TABLE JOIN시 SQL 설계 방법
  • 목적 : VIP 고객을 상대로 감사 이벤트 상품을 보내려고 함
  • 조건
    • 강남에 사는 고객
    • 최근 구매이력이 한달 이내인 고객
    • 구매금액이 1,000만원 이상인 고객
    • 미납금이 없는 고객
  • 데이터
    1. 고객정보 : 성별 / 연락처 / 주소
    2. 구매정보 : 구매일자 / 구매상품 / 구매금액
    3. 청구정보 : 청구일자 / 청구금액 / 미납금액 image





© 2020.02. by ysjang0926

Powered by theorydb