Link Search Menu Expand Document

SQL 기초

SELECT 구문

SELECT 구문과 FROM 구

SELECT [테이블 필드] FROM [테이블 이름]

WHERE 구

  • WHERE 구에서 사용할 수 있는 대표적인 연산자
    • =: ~와 같음
    • ≠: ~와 같지 않음
    • ≥: ~ 이상
    • : ~보다 큼

    • ≤: ~ 이하
    • <: ~보다 작음
  • AND, OR, IN 사용 가능
  • NULL을 다룰 때는 IS NULL / IS NOT NULL

    GROUP BY 구

  • 집계 함수
    • COUNT: 레코드 수를 계산
    • SUM: 숫자를 더함
    • AVG: 숫자의 평균을 구함
    • MAX: 최댓값을 구함
    • MIN: 최솟값을 구함
  • 테이블 전체를 대상으로 할 경우 GROUP BY 구를 생략하거나 GROUP BY () 형태로 사용

    HAVING 구

  • GROUP BY 구로 선택한 집합에 조건을 걸 때 사용

    ORDER BY 구

  • SELECT 구문의 결과 순서를 명시적으로 지정
  • 생략 시 ASC(Ascending Order, 올림차순), DESC(Descending Order, 내림차순) 사용 가능

    뷰와 서브쿼리

  • 뷰 (View)
    • CREATE VIEW [뷰 이름] ([필드 이름1], [필드 이름 2] ... ) AS SELECT문
    • SELECT 구문을 데이터베이스 안에 저장하지만 내부에 데이터를 보유하지는 않음
  • 서브쿼리 (Subquery)
    • FROM 구에 직접 지정하는 SELECT 구문
    • 서브쿼리를 사용하여 동적으로 상수 리스트를 생성할 수 있음

      조건 분기, 집합 연산, 윈도우 함수, 갱신

      SQL과 조건 분기

  • CASE 식
    CASE WHEN [평가식] THEN []
       ELSE []
    END
    
    • 식을 적을 수 있는 곳이라면 어디든지 적을 수 있음
      • SELECT
      • WHERE
      • GROUP BY
      • HAVING
      • ORDER BY

        SQL의 집합 연산

  • UNION: 합집합
  • INTERSECT: 교집합
  • EXCEPT: 차집합, 교환 법칙이 성립하지 않음
  • 중복된 레코드를 제외하고 싶지 않을 경우 뒤에 ALL을 붙임

    윈도우 함수

  • 집약 함수 뒤에 OVER 구를 작성하고 내부에 PARTITION BY 또는 ORDER BY 입력
    SELECT name, age,
         RANK() OVER(ORDER BY age DESC) AS rnk
    FROM Address;
    

    트랜잭션과 갱신

  • INSERT로 데이터 삽입: INSERT INTO [테이블 이름] ([필드1], [필드2], [필드3]) VALUES ([값1], [값2], [값3])
  • DELETE로 데이터 삭제: DELETE FROM [테이블 이름]
  • UPDATE로 데이터 갱신: UPDATE [테이블 이름] SET [필드 이름] = [식]