sql 서브쿼리 등 - 3월 20일

조준수·2023년 3월 29일
0

SQL 심화 9~10

17장 01_Scalar Subquery

  1. 서브쿼리
    (1) 하나의 SQL문 안에 포함되어 있는 또 다른 SQL문을 말한다.
    (2) 메인쿼리가 서브쿼리를 포함하는 종속적인 관계이다.
    (3) 서브쿼리는 메인쿼리의 컬럼 사용 가능
    (4) 메인쿼리는 서브쿼리의 컬럼 사용 불가

  2. 서브쿼리 사용 시 주의점
    (1) 서브쿼리는 괄호로 묶어서 사용
    (2) 단일 행 혹은 복수 행 비교 연산자와 함께 사용 가능
    (3) 서브쿼리에서는 order by를 사용할 수 없다.

  3. 서브쿼리의 종류
    (1) 스카라 서브쿼리 : select절에 사용
    (2) 인라인 뷰 : from절에 사용
    (3) 중첩 서브쿼리 : where절에 사용

  4. 스카라 서브쿼리
    (1) 결과는 하나의 컬럼이어야 한다.
    (2) 문법
    select column1, (select column2 from tablename2 where condition)
    from tablename1
    where condition;

17장 02_Inline View

  1. 인라인 뷰
    (1) 메인쿼리에서는 인라인 뷰에서 조회한 컬럼만 사용가능하다.
    (2) 문법
    select a.column, b.column
    from table1 a, (select column1, column2 from table2) b
    where condition;

17장 03_Nested Subquery

  1. 중첩 서브쿼리
    (1) 싱글 로우 : 하나의 행을 검색하는 서브쿼리
    (2) 멀티플 로우 : 하나 이상의 행을 검색하는 서브쿼리
    (3) 멀티플 컬럼 : 하나 이상의 열을 검색하는 서브쿼리
    (4) 서브쿼리가 비교연산자와 사용되는 경우, 서브쿼리의 검색 결과는 한 개의 결과값을 가져야 한다.

  2. 싱글 로우
    (1) 예시
    select name from celeb where name = (select host from snl_show where id=1);
    (2) 만약 where절 id=1을 빼면 에러가 난다.

17장 04_Multiple Row

  1. 서브쿼리 결과 중에 포함될 때
    (1) where절에 in과 함께 쓴다.

  2. 서브쿼리 결과에 값이 있으면 반환
    (1) where절에 exists와 함께 쓴다.

  3. 서브쿼리 결과 중에 최소한 하나라도 만족하면 (비교연산자 사용)
    (1) where절에 any와 함께 쓴다.

  4. 서브쿼리 결과를 모두 만족하면 (비교연산자 사용)
    (1) where절에 all과 함께 쓴다.

17장 06_Multiple Column

  1. 멀티플 컬럼(연관 서브쿼리)
    (1) 서브쿼리 내에 메인쿼리 컬럼이 같이 사용되는 경우

17장 08실습 - SQL Subquery inline view_

  1. 경찰서 별로 가장 많이 발생한 범죄 건수와 범죄 유형을 조회
    (예시)
    select c.police_station, c.case_number, c.crime_type from crime_status c, (select police_station, max(case_number) count from crime_status where status_type="발생" group by police_station) m
    where c.police_station = m.police_station and c.case_number = m.count
profile
print(‘안녕하세요! 반갑습니다!’)

0개의 댓글