Ch.2 SQL 기초

텐저린티·2023년 7월 28일
0

SQL레벨업

목록 보기
2/10
post-thumbnail
💡 목적
  • SQL 관련 기초 설명

6강. SELECT 구문

  • 검색 = 질의(query) = 추출(retrieve)

1. SELECT 와 FROM 구

  • 대부분의 경우 FROM 구 사용해야 함.
  • SELECT 1 처럼 상수 접근에는 안 써도 됨.
  • 불명한 데이터는 NULL로 처리

2. WHERE 구

  • 레코드 선택 시 추가 조건 지정
  • 벤 다이어그램을 생각하면 쉽다

키워드

  • AND
  • OR
  • IN
  • NULL
    • IS NULL
    • IS NOT NULL

3. GROUP BY 구

  • 그룹으로 나누면 합계, 평균 등 집계 연산 사용 가능해짐
  • count, sum, avg, max, min

4. HAVING 구

  • 결과 집합에 조건 걸어 선택하는 기능
  • WHERE 구는 레코드에 조건 지정
  • HAVING 구는 집합에 조건 지정

5. ORDER BY 구

  • 레코드 출력 순서는 딱히 정해진 규칙 없다
  • ORDER BY 로 명시적 지정 가능

6. 뷰, 서브쿼리

    • DB안에 저장

    • 테이블과 달리 데이터 저장 X

    • SELECT 구문 저장 O

      ## 선언
      CREATE VIEW CountAddress (v_address, cnt)
      AS
      SELECT address, COUNT(*)
      	FROM Address
      	GROUP BY address;
      
      ## 사용
      SELECT v_address, cnt
      	FROM CountAddress;
  • 익명 뷰
    • 이거시 바로 서브쿼리다
    • FROM 구에 직접 SELECT 구문을 걸어주는 것
    • WHERE 절에 서브쿼리를 걸어 매칭하는 방식으로 많이 사용
      • 서브쿼리를 매개변수로 받는 거

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

1. SQL 과 조건 분기

  • SQL은 조건 분기를 ‘문장’ 이 아닌 으로 함
  • SQL 조건분기는 특정한 값(상수)를 리턴
  • CASE 식 구문
    • 단순 CASE 식 < 검색 CASE 식
    • 식을 적을 수 있는 곳이라면 어디든 사용 가능

2. SQL 집합 연산

UNION - 합집합

  • 두 개 테이블을 한 테이블로 합친 결과
  • 중복 제거
  • 중복 제거 싫다! → UNION ALL

INTERSECT - 교집합

  • 양쪽 테이블에 공통 존재 레코드 출력
  • 중복 제거

EXCEPT - 차집합

  • 순서가 중요하다
  • 뭐가 먼저 나오느냐에 따라 결과 달라짐

3. 윈도우 함수

  • 성능에 큰 영향
  • 집약 기능 없는 GROUP BY 구
    • 집약 기능이 없다
    • 출력 결과 레코드 수 = 테이블 레코드 수
  • COUNT, SUM 같은 일반함수 사용 가능
  • 윈도우 전용 함수 제공
    • RANK() : 지정 키로 레코드에 순위 매김
      • 동점 → 같은 등수 + 동률 수 만큼 건너뜀
    • DENSE_RANK()
      • 동점 → 같은 등수 + 건너뛰지 않음
SELECT ADDRESS,
		COUNT(*) OVER(PARTITION BY ADDRESS)
	FROM ADDRESS;

4. 트랜잭션과 갱신

  • DB 근본은 검색이다
  • SQL 갱신 작업
    • 삽입
    • 제거
    • 갱신
  • INSERT - 삽입
    • 필드 리스트와 값 리스트는 같은 순서로 대응
  • DELETE - 삭제
    • 한번에 여러 개 레코드 단위 처리
    • 삭제 대상은 필드가 아니라 레코드
    • 일부 필드 제거는 update 사용
    • delete * from : 안 됨
    • delete 필드 from : 안 됨
    • 삭제 후에도 테이블은 유지됨
  • UPDATE - 갱신
    • SET 구에 여러 필드를 입력하면 한 번에 여러 필드 갱신 가능

💡 문제
  • SELECT 구문 입력, 출력 자료형은 무엇인가? 테이블(관계). 이외에는 아무것도 없음. 무조건 테이블이 입력이자 출력
  • Address 테이블에서 성별 별로 나이 순위 (건너뛰기 있게)를 매기는 SELECT 구문은?
profile
개발하고 말테야

0개의 댓글

관련 채용 정보