[데이터 취업 스쿨 스터디 노트] 12. SQL 심화(Scalar Functions, SQL Subquery)

WHIT·2024년 6월 6일
0

Data Scientist

목록 보기
14/18

< 수강분량 : SQL CH. 16 ~ 17 >

✅ Scalar Function

- UCASE

  • 영문을 대문자로 반환하는 함수
SELECT UCASE(string);

- LCASE

  • 영문을 소문자로 반환하는 함수
SELECT LCASE(string);

- MID

  • 문자열 부분을 반환하는 함수
SELECT MID(string, start_position, lenngth)

# string : 원본 문자열
# start : 문자열 반환 시작 위치 (첫글자는 1, 마지막글자는 -1)
# length : 반환할 문자열 길이

- LENGTH

  • 문자열의 길이를 반환하는 함수
SELECT LENGTH(string);

- ROUND

  • 지정한 자리에서 숫자를 반올림하는 함수
SELECT ROUND(number, decimals_place);

- NOW

  • 현재 날짜 및 시간을 반환하는 함수
SELECT NOW();

- FORMAT

  • 숫자를 천단위 콤마가 있는 형식으로 반환하는 함수
SELECT FORMAT(number, decimal_place);

# number : 포맷을 적용할 문자 혹은 숫자
# decimals : 표시할 소수점 위치

✅ SQL Subquery

- SQL Subquery

  • 하나의 SQL 문 안에 포함되어 있는 또 다른 SQL 문을 말한다.
  • 메인쿼리가 서브쿼리를 포함하는 종속적인 관계이다.
    - 서브쿼리는 메인쿼리의 칼럼 사용 가능
    • 메인쿼리는 서브쿼리의 칼럼 사용 불가

- Subquery 사용시 주의

  • Subquery 는 괄호로 묶어서 사용
  • 단일 행 혹은 복수 행 비교 연산자와 함께 사용 가능
  • Subquery 에서는 order by 를 사용X

- Subquery 종류

  • 스카라 서브쿼리 (Scalar Subquery) - SELECT 절에 사용
  • 인라인 뷰 (Inline View) - FROM 절에 사용
  • 중첩 서브쿼리 (Nested Subqeury) - WHERE 절에 사용

스카라 서브쿼리 (Scalar Subquery)

  • SELECT 절에서 사용하는 서브쿼리. 결과는 하나의 Column 이어야 한다.
SELECT column1, (SELECT column2 FROM table2 WHERE condition)
FROM table1
WHERE condition;

인라인 뷰 (Inline View)

  • FROM 절에서 사용하는 서브쿼리. 메인쿼리에서는 인라인 뷰에서 조회한 Column 만 사용가능하다.
SELECT a.column, b.column
FROM table1 a, (SELECT column1, column2 FROM table2) b
WHERE condition;

중첩 서브쿼리 (WHERE 절에서 사용하는 서브쿼리)

  • Single Row - 하나의 열을 검색하는 서브쿼리
    - 서브쿼리가 비교연산자와 사용되는 경우, 서브쿼리의 검색 결과는 한 개의 결과값을 가져야 한다. (두개 이상인 경우 에러)
SELECT name FROM celeb WHERE name = (SELECT host FROM snl_show WHERE id = 1);
  • Multiple Row - 하나 이상의 행을 검색하는 서브쿼리
    - 서브쿼리 결과 중에 포함될 때 (IN)
SELECT column_names
FROM table_name
WHERE column_name IN (SELECT column_name
					  FROM table_name
                      WHERE condition)
ORDER BY column_names;
  • 서브쿼리 결과에 값이 있으면 반환 (EXISTS)
SELECT column_names
FROM table_name
WHERE EXISTS (SELECT column_name
              FROM table_name
              WHERE condition)
ORDER BY column_names;
  • 서브쿼리 결과 중에 최소한 하나라도 만족하면 (ANY)
SELECT column_names
FROM table_name
WHERE column_name = ANY (SELECT column_name
                         FROM table_name
                         WHERE condition)
ORDER BY column_names;
  • 서브쿼리 결과를 모두 만족하면 (ALL)
SELECT column_names
FROM table_name
WHERE column_name = ALL (SELECT column_name
                         FROM table_name
                         WHERE condition)
ORDER BY column_names;
  • Multiple Column - 하나 이상의 열을 검색하는 서브쿼리
    - 서브쿼리 내에 메인 컬럼이 같이 사용되는 경우
SELECT column_names
FROM tablename a
WHERE (a.column1, a.column2, ...) = IN (b.column1, b.column2, ...
                                        FROM tablename b
                                        WHERE a.column_name = b.column_name)
ORDER BY column_names;

"이 글은 제로베이스 데이터 취업 스쿨의 강의 자료 일부를 발췌하여 작성되었습니다."

0개의 댓글