일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 프로그래머스 #mysql #경기도에 위치한 식품창고 목록 출력하기 #알고리즘 #코린이 #개발자 #study
- 프로그래머스 #mysql #동명 동물 수 찾기 #알고리즘 #코린이 #개발자
- 프로그래머스 #조건에 맞는 회원수 구하기 #mysql #알고리즘 #코린이 #개발자 #study
- 프로그래머스 #모음 제거 #알고리즘 #자바 #java #코린이 #개발자 #study
- 코린이 #개발자 #study
- 백준 #네 번째 점 #3009 #자바 #java #알고리즘 #코린이 #개발자 #study
- 프로그래머스 #동명 동물 수 찾기 #mysql #데이터베이스 #db #코린이 #개발자 #알고리즘
- 프로그래머스 #과일로 만든 아이스크림 고르기 #mysql #알고리즘 #코린이 #개발자 #study
- 프로그래머스 #잡은 물고기의 평균 길이 구하기 #mysql #알고리즘 #코린이 #개발자 #study
- 프로그래머스 #mysql #알고리즘 #자동차 대여 기록에서 장기/단기 대여 구분하기 #코린이 #개발자 #study
- 프로그래머스 #mysql #알고리즘 #이름이 있는 동물의 아이디 #코린이 #개발자 #study
- 프로그래머스 #잡은 물고기 중 가장 큰 물고기의 길이 구하기 #알고리즘 #mysql #코린이 #개발자 #study
- 프로그래머스 #한 해에 잡은 물고기 수 구하기 #mysql #알고리즘 #코린이 #개발자 #study
- 프로그래머스 #아픈 동물 찾기 #mysql #알고리즘 #코린이 #개발자 #study
- 백준 #다이얼 #5622 #알고리즘 #자바 #java #코린이 #개발자 #study
- 특정 옵션이 포함된 자동차 리스트 구하기 #코린이 #개발자 #study
- 프로그래머스 #mysql #알고리즘 #어린 동물 찾기 #코린이 #개발자 #study
- 프로그래머스 #가장 큰 물고기 10마리 구하기 #mysql #알고리즘 #코린이 #개발자 #study
- 백준 #
- 프로그래머스 #mysql #흉부외과 또는 일반외과 의사 목록 출력하기 #알고리즘 #코린이 #개발자 #study
- 프로그래머스 #알고리즘 #mysql #인기있는 아이스크림 #코린이 #개발자 #study
- mysql #min() #max() #최소값 #최대값 #코린이 #개발자 #study
- 프로그래머스 #python 개발자 찾기 #알고리즘 #mysql #코린이 #개발자 #study
- 백준 #4153 #직각삼각형 #알고리즘 #자바 #java #코린이 #개발자 #study
- 프로그래머스 #mysql #12세 이하인 여자 환자 목록 출력하기 #알고리즘 #코린이 #개발자 #study
- 프로그래머스 #mysql #알고리즘 #코린이 #개발자 #study
- 백준 #일곱 난쟁이 #2309 #자바 #java #알고리즘 #코린이 #개발자 #study
- 프로그래머스 #나이 정보가 없는 회원 수 구하기 #mysql #알고리즘 #코린이 #개발자 #study
- 프로그래머스 #알고리즘 #mysql #
- 프로그래머스 #mysql #역순 정렬하기 #알고리즘 #코린이 #개발자 #study
- Today
- Total
luke
[MySQL] - Sub Query, ANY, ALL (서브쿼리, ANY, ALL) 본문
[MySQL] - Sub Query, ANY, ALL (서브쿼리, ANY, ALL)
Sub Query(서브쿼리)
- 다른 쿼리 내부에 포함되어 있는 SELECT 문을 의미한다.
- 서브쿼리를 포함하고 있는 쿼리를 외부쿼리(outer query)라고 한다.
- 서브쿼리는 내부쿼리(inner query)라고도 한다.
- JOIN이나 UNION과 같은 동작을 수행할 수 있는 또 다른 방법을 제공한다.
- JOIN이나 UNION 보다 조금 더 읽기 편하다.
- 서브쿼리의 결과가 둘 이상이 되면 에러가 발생한다.
<예시>
SELECT * FROM a_table
WHERE user_age =
( SELECT user_age -- 여기서 부터 SubQuery --
FROM a_table
WHERE user_name ='짱구');
서브쿼리문 이 언제 어떻게 쓰이는지 예시를 들어보겠다.
이 쿼리문은 내가 나이가 몇 살인 아이의 친구들 리스트를 출력하려고 한다.
하지만 나이는 기억이 안 나고 그 나이대의 아이의 이름만 확실히 기억난다.
이름은 '짱구' 다. 이럴 경우 서브쿼리문을 사용하면 위 () 안에 있는 쿼리문과 같이
user_name(컬럼) 이 '짱구'인 a_table (테이블) 안에 있는 user_age (컬럼) 값을 찾는다.
(이렇게 되면 user_age의 값인 5를 추출해 낸다.)
<결과>
그렇다면 WHERE 절에 있는 조건식은 a_table 안의 user_age = 5 인 값들을 모두 출력한다.
ANY(SOME)
1. 서브쿼리의 여러 개의 결과 중 한 가지만 만족하면 true이다.
2. SOME은 ANY와 동일한 의미로 사용한다.
비교 연산자와 ANY
- > ANY :최소값 보다 크면
- >= ANY : 최소값 보다 크거나 같으면
- < ANY : 최대값 보다 작으면
- <= ANY : 최대값 보다 작거나 같으면
- = ANY : IN과 같은 기능
<예시>
SELECT * FROM a_table
WHERE user_age < ANY
( SELECT user_age
FROM a_table
WHERE user_sex ='남');
<결과>(서브쿼리문 실행 결과, 전체 쿼리문 실행 결과)
< ANY를 사용했을 때 서브쿼리에 있는 쿼리문은 조건이 user_sex는 '남'인 a_table에 있는 user_age 값들인 5,42를 추출한 걸 확인할 수 있다. 이때 전체 쿼리문을 실행한다면 < ANY는 서브쿼리문의 최대값 보다 큰 값들을 추출한다.
ALL
1. 서브쿼리의 여러 개의 결과 중 모두 만족하면 true이다.
비교 연산자와 ALL
- > ALL : 최대값 보다 크면
- >= ALL : 최대값 보다 크거나 같으면
- < ALL : 최소값 보다 작으면
- <= ALL : 최소값 보다 작거나 같으면
- = ALL : 서브 쿼리의 결과가 1건이면 괜찮지만 여러 건이면 오류 발생
<예시>
SELECT * FROM a_table
WHERE user_age < ALL
( SELECT user_age
FROM a_table
WHERE user_sex ='남');
<결과>
서브쿼리문 실행은 위의 ANY와 같다. 다만 전체 쿼리문 실행 결과가 다를 뿐이다.
ALL은 ANY와 다르게 비교 연산자도 다르다. 이점 유의해서 확인해야 한다.
'DB > MySQL' 카테고리의 다른 글
[MySQL] - GROUP BY (그룹화 데이터 조회) (0) | 2024.06.01 |
---|---|
[MySQL] - ORDER BY, LIMIT (오름차순, 내림차순, 출력 개수 제한) (0) | 2024.05.21 |
[MySQL] - LIKE 사용 (0) | 2024.05.18 |
[MySQL] - SELECT, WHERE 사용 (0) | 2024.05.15 |
[MySQL] - SQL 분류 (DML, DDL, DCL, TCL) (0) | 2024.05.14 |