You are looking for information, articles, knowledge about the topic nail salons open on sunday near me 서브 쿼리 on Google, you do not find the information you need! Here are the best content compiled and compiled by the Toplist.maxfit.vn team, along with other related topics such as: 서브 쿼리 서브쿼리 종류, 서브쿼리 mysql, 서브쿼리 사용 이유, 서브쿼리란, 스칼라 서브쿼리, 서브쿼리 속도, 서브쿼리 select, mssql 서브쿼리
[DATABASE] 서브쿼리란? 서브쿼리 사용해보기
- Article author: mozi.tistory.com
- Reviews from users: 21638 Ratings
- Top rated: 4.1
- Lowest rated: 1
- Summary of article content: Articles about [DATABASE] 서브쿼리란? 서브쿼리 사용해보기 서브쿼리란? 하나의 SQL 문에 포함되어 있는 또 다른 SQL 문을 말합니다. 서브쿼리 사용시 주의사항 1. 서브쿼리를 괄호로 감싸서 사용한다. 2. …
- Most searched keywords: Whether you are looking for [DATABASE] 서브쿼리란? 서브쿼리 사용해보기 서브쿼리란? 하나의 SQL 문에 포함되어 있는 또 다른 SQL 문을 말합니다. 서브쿼리 사용시 주의사항 1. 서브쿼리를 괄호로 감싸서 사용한다. 2. 서브쿼리란? 하나의 SQL 문에 포함되어 있는 또 다른 SQL 문을 말합니다. 서브쿼리 사용시 주의사항 1. 서브쿼리를 괄호로 감싸서 사용한다. 2. 서브쿼리는 단일 행 또는 복수 행 비교 연산자와 함께 사용 가능하..’DBA 업무’와
‘알게되는 정보’를 기록하는 공간 - Table of Contents:
티스토리툴바
[Oracle] 오라클 서브쿼리 종류 및 사용법 (SubQuery)
- Article author: gent.tistory.com
- Reviews from users: 14272 Ratings
- Top rated: 4.4
- Lowest rated: 1
- Summary of article content: Articles about [Oracle] 오라클 서브쿼리 종류 및 사용법 (SubQuery) 오라클에서 쿼리문을 작성하다 보면 서브 쿼리(subquery)를 자주 접하게 된다. 서브 쿼리를 처음 접하면 아주 복잡하게 느껴지는데, 기능을 조금만 … …
- Most searched keywords: Whether you are looking for [Oracle] 오라클 서브쿼리 종류 및 사용법 (SubQuery) 오라클에서 쿼리문을 작성하다 보면 서브 쿼리(subquery)를 자주 접하게 된다. 서브 쿼리를 처음 접하면 아주 복잡하게 느껴지는데, 기능을 조금만 … 오라클에서 쿼리문을 작성하다 보면 서브 쿼리(subquery)를 자주 접하게 된다. 서브 쿼리를 처음 접하면 아주 복잡하게 느껴지는데, 기능을 조금만 익히면 쿼리문을 작성할 때 아주 유용하게 사용할 수 있다. 서브..
- Table of Contents:
Header Menu
Main Menu
[Oracle] 오라클 서브쿼리 종류 및 사용법 (SubQuery)‘데이터베이스오라클’ 관련 글
Sidebar – Right
Sidebar – Footer 1
Sidebar – Footer 2
Sidebar – Footer 3
Copyright © 젠트의 프로그래밍 세상 All Rights Reserved
Designed by JB FACTORY
SQL 서브쿼리(Sub Query) 예제 – select절, from절, where절
- Article author: suy379.tistory.com
- Reviews from users: 28527 Ratings
- Top rated: 4.7
- Lowest rated: 1
- Summary of article content: Articles about SQL 서브쿼리(Sub Query) 예제 – select절, from절, where절 이번 포스팅은 실무 SQL에서 정말 많이 사용하는 서브쿼리(Sub Query)에 대해 소개한다. ※ 서브쿼리란? 앞선 포스팅에서 가장 기본적인 SQL 문법은 … …
- Most searched keywords: Whether you are looking for SQL 서브쿼리(Sub Query) 예제 – select절, from절, where절 이번 포스팅은 실무 SQL에서 정말 많이 사용하는 서브쿼리(Sub Query)에 대해 소개한다. ※ 서브쿼리란? 앞선 포스팅에서 가장 기본적인 SQL 문법은 … 이번 포스팅은 실무 SQL에서 정말 많이 사용하는 서브쿼리(Sub Query)에 대해 소개한다. ※ 서브쿼리란? 앞선 포스팅에서 가장 기본적인 SQL 문법은 [SELECT, FROM, WHERE] 라고 했었다. 서브쿼리란 위치에 따라 S..
- Table of Contents:
관련글
댓글0
최근글
인기글
전체 방문자
티스토리툴바
[ Oracle ] SQL 서브쿼리 SELECT, FROM, WHERE — 애송이의 코딩이야기
- Article author: mjn5027.tistory.com
- Reviews from users: 27596 Ratings
- Top rated: 3.8
- Lowest rated: 1
- Summary of article content: Articles about [ Oracle ] SQL 서브쿼리 SELECT, FROM, WHERE — 애송이의 코딩이야기 서브쿼리란? – 하나의 쿼리 문장 내에 포함된 또 하나의 쿼리 문장. – 비교연산자의 오른쪽에 기술해야 하고 반드시 괄호 안에 넣어야 함. …
- Most searched keywords: Whether you are looking for [ Oracle ] SQL 서브쿼리 SELECT, FROM, WHERE — 애송이의 코딩이야기 서브쿼리란? – 하나의 쿼리 문장 내에 포함된 또 하나의 쿼리 문장. – 비교연산자의 오른쪽에 기술해야 하고 반드시 괄호 안에 넣어야 함. 서브쿼리란? – 하나의 쿼리 문장 내에 포함된 또 하나의 쿼리 문장. – 비교연산자의 오른쪽에 기술해야 하고 반드시 괄호 안에 넣어야 함. – 메인 쿼리가 실행되기 이전에 한 번만 실행됨. SQL의 기본 문법이자 가..리액트,리엑트,react,redux,saga,java,자바,설치,데이터베이스,오라클,sql,oracle,리덕스,리듀서,리덕스툴킷,redux,toolkit,database
- Table of Contents:
블로그 메뉴
인기 글
태그
티스토리
서브쿼리란
SELECT 절 서브쿼리 ( 스칼라 서브쿼리 )
FROM 절 서브쿼리 ( 인라인뷰 서브쿼리 )
WHERE 절 서브쿼리 ( 중첩 서브쿼리 )
단일행 서브쿼리
다중행 서브쿼리
티스토리툴바
[MYSQL] 📚 서브쿼리 개념 & 문법 💯 정리
- Article author: inpa.tistory.com
- Reviews from users: 14318 Ratings
- Top rated: 3.9
- Lowest rated: 1
- Summary of article content: Articles about [MYSQL] 📚 서브쿼리 개념 & 문법 💯 정리 서브쿼리(subquery)란 다른 쿼리 내부에 포함되어 있는 SELETE 문을 의미한다. 서브쿼리를 포함하고 있는 쿼리를 외부쿼리(outer query)라고 부르며, 서브 … …
- Most searched keywords: Whether you are looking for [MYSQL] 📚 서브쿼리 개념 & 문법 💯 정리 서브쿼리(subquery)란 다른 쿼리 내부에 포함되어 있는 SELETE 문을 의미한다. 서브쿼리를 포함하고 있는 쿼리를 외부쿼리(outer query)라고 부르며, 서브 … 서브쿼리(Subquery) 서브쿼리(subquery)란 다른 쿼리 내부에 포함되어 있는 SELETE 문을 의미한다. 서브쿼리를 포함하고 있는 쿼리를 외부쿼리(outer query)라고 부르며, 서브쿼리는 내부쿼리(inner query)라고도..
- Table of Contents:
서브쿼리(Subquery)
서브쿼리 실전 예제
방문해 주셔서 감사드립니다
공지사항
최근 댓글 new
최근 글 new
인기 글 hot
티스토리툴바
[MSSQL] 서브쿼리(SubQuery)란 무엇일까? / 특징 / 종류 / 예제
- Article author: jeongkyun-it.tistory.com
- Reviews from users: 12660 Ratings
- Top rated: 4.9
- Lowest rated: 1
- Summary of article content: Articles about [MSSQL] 서브쿼리(SubQuery)란 무엇일까? / 특징 / 종류 / 예제 서브쿼리(SUBQUERY)란? 이번 글에서는 서브쿼리에 대해서 알아볼 것이다. 서브쿼리의 정의부터 알아보면, SELECT 쿼리문 안에 포함 되어있는 또 하나 … …
- Most searched keywords: Whether you are looking for [MSSQL] 서브쿼리(SubQuery)란 무엇일까? / 특징 / 종류 / 예제 서브쿼리(SUBQUERY)란? 이번 글에서는 서브쿼리에 대해서 알아볼 것이다. 서브쿼리의 정의부터 알아보면, SELECT 쿼리문 안에 포함 되어있는 또 하나 … 서브쿼리(SUBQUERY)란? 이번 글에서는 서브쿼리에 대해서 알아볼 것이다. 서브쿼리의 정의부터 알아보면, SELECT 쿼리문 안에 포함 되어있는 또 하나의 별도 SELECT 쿼리문을 말한다. 서브쿼리(SubQuery) 특징 여..
- Table of Contents:
다국어 번역
다크 모드
프로필
My GitHub
카테고리
인기 글
최근 댓글
방문자 통계
태그
💲 많이 본 글
댓글0
💲 많이 본 글
티스토리툴바
[MySQL] 서브쿼리 사용법
- Article author: dwbutter.com
- Reviews from users: 13661 Ratings
- Top rated: 3.1
- Lowest rated: 1
- Summary of article content: Articles about [MySQL] 서브쿼리 사용법 서브쿼리 : SQL 문 안에 부품처럼 들어가는 SELECT 문 sub (하위의, 일부분의) Query (데이터베이스에 보내는 요청) 서브쿼리를 쓸 땐 괄호로 감싸 … …
- Most searched keywords: Whether you are looking for [MySQL] 서브쿼리 사용법 서브쿼리 : SQL 문 안에 부품처럼 들어가는 SELECT 문 sub (하위의, 일부분의) Query (데이터베이스에 보내는 요청) 서브쿼리를 쓸 땐 괄호로 감싸 … 서브쿼리 : SQL 문 안에 부품처럼 들어가는 SELECT 문 sub (하위의, 일부분의) Query (데이터베이스에 보내는 요청) 서브쿼리를 쓸 땐 괄호로 감싸줘야함 서브쿼리는 HAVING 절, SELECT 절, WHERE 절, FROM 절..
- Table of Contents:
관련글
댓글0
티스토리툴바
[MS-SQL] 서브쿼리(Subquery) 개념과 종류 : 네이버 블로그
- Article author: blog.naver.com
- Reviews from users: 48626 Ratings
- Top rated: 3.5
- Lowest rated: 1
- Summary of article content: Articles about [MS-SQL] 서브쿼리(Subquery) 개념과 종류 : 네이버 블로그 SQL에서 서브쿼리(Subquery)는 하나의 쿼리문 안에 포함되어 있는 또하나의 쿼리문을 의미합니다. 서브쿼리는 메인쿼리가 서브쿼리를 포함하는 종속적 … …
- Most searched keywords: Whether you are looking for [MS-SQL] 서브쿼리(Subquery) 개념과 종류 : 네이버 블로그 SQL에서 서브쿼리(Subquery)는 하나의 쿼리문 안에 포함되어 있는 또하나의 쿼리문을 의미합니다. 서브쿼리는 메인쿼리가 서브쿼리를 포함하는 종속적 …
- Table of Contents:
블로그
악성코드가 포함되어 있는 파일입니다
작성자 이외의 방문자에게는 이용이 제한되었습니다
서브쿼리
- Article author: dkkim2318.tistory.com
- Reviews from users: 17794 Ratings
- Top rated: 3.7
- Lowest rated: 1
- Summary of article content: Articles about 서브쿼리 서브 쿼리란 하나의 SQL문 안에 포함되어 있는 또 다른 SQL을 의미합니다 서브쿼리는 알려지지 않은 기준을 이용한 검색을 위해 사용됩니다 또한 하나 … …
- Most searched keywords: Whether you are looking for 서브쿼리 서브 쿼리란 하나의 SQL문 안에 포함되어 있는 또 다른 SQL을 의미합니다 서브쿼리는 알려지지 않은 기준을 이용한 검색을 위해 사용됩니다 또한 하나 … 서브쿼리? 서브 쿼리란 하나의 SQL문 안에 포함되어 있는 또 다른 SQL을 의미합니다 서브쿼리는 알려지지 않은 기준을 이용한 검색을 위해 사용됩니다 또한 하나의 SQL문 안에 포함되어 있는 SQL 이기 때문에 메..
- Table of Contents:
바닥코딩
서브쿼리 본문
코딩의 시작, TCP School
- Article author: www.tcpschool.com
- Reviews from users: 16872 Ratings
- Top rated: 3.3
- Lowest rated: 1
- Summary of article content: Articles about 코딩의 시작, TCP School 서브쿼리는 반드시 괄호(())로 감싸져 있어야만 합니다. MySQL에서 서브쿼리를 포함할 수 있는 외부쿼리는 SELECT, INSERT, UPDATE, DELETE, SET, DO 문이 있습니다. …
- Most searched keywords: Whether you are looking for 코딩의 시작, TCP School 서브쿼리는 반드시 괄호(())로 감싸져 있어야만 합니다. MySQL에서 서브쿼리를 포함할 수 있는 외부쿼리는 SELECT, INSERT, UPDATE, DELETE, SET, DO 문이 있습니다. 4차산업혁명, 코딩교육, 소프트웨어교육, 코딩기초, SW코딩, 기초코딩부터 자바 파이썬 등
- Table of Contents:
31) 서브쿼리
31) 서브쿼리
접속자집계
See more articles in the same category here: Top 287 tips update new.
[DATABASE] 서브쿼리란? 서브쿼리 사용해보기
서브쿼리란?
하나의 SQL 문에 포함되어 있는 또 다른 SQL 문을 말합니다.
서브쿼리 사용시 주의사항
1. 서브쿼리를 괄호로 감싸서 사용한다.
2. 서브쿼리는 단일 행 또는 복수 행 비교 연산자와 함께 사용 가능하다.
3. 서브쿼리에서는 ORDER BY 를 사용하지 못한다.
서브쿼리가 사용 가능한 곳
1. SELECT 절
2. FROM 절
3. WHERE 절
4. HAVING 절
5. ORDER BY 절
6. INSERT 문의 VALUES 절
7. UPDATE 문의 SET 절
서브쿼리의 분류
단일 행 서브 쿼리
서브쿼리가 단일 행 비교 연산자(=, <, <=, >, >=, <>)와 함께 사용할 때는 서브쿼리의 결과 건수가 반드시 1건 이하여야 합니다.
만약 결과가 2건 이상인 경우 오류가 발생합니다.
단일 행 쿼리의 예제
만약 T2 테이블의 C2 = 3 인 조건을 만족하는 C1 의 값이 2건 이상인 경우 오류가 발생합니다.
SELECT C1, C2, C3 FROM T1 WHERE C1 = (SELECT C1 FROM T2 WHERE C2 = ‘3’) ORDER BY C1, C2, C3;
그룹 함수를 사용하는 경우 결과값이 1건이기 때문이 단일 행 서브쿼리로써 사용 가능합니다.
SELECT C1, C2, C3 FROM T1 WHERE C1 <= (SELECT AVG(C1) FROM T2 WHERE C2 = '3') ORDER BY C1, C2, C3; 다중 행 서브쿼리 서브쿼리의 결과가 2건 이상 반환될 수 있다면 반드시 다중 행 비교 연산자(IN, ALL, ANY, SOME)와 함께 사용해야 합니다. 다중 행 연산자 설명 IN 서브쿼리의 결과에 존재하는 임의의 값과 동일한 조건을 의미한다. ALL 서브쿼리의 결과에 존재하는 모든 값을 만족하는 조건을 의미한다. ANY 서브쿼리의 결과에 존재하는 어느 하나의 값이라도 만족하는 조건을 의미한다. EXISTS 서브쿼리의 결과를 만족하는 값이 존재하는지 여부를 확인하는 조건을 의미한다. 만약 T2 테이블의 C2 = 3 인 조건을 만족하는 C1 의 값이 2건 이상인 경우 = 이 아닌 IN 을 사용해야 합니다. SELECT C1, C2, C3 FROM T1 WHERE C1 IN (SELECT C1 FROM T2 WHERE C2 = '3') ORDER BY C1, C2, C3; 다중 칼럼 서브쿼리 서브쿼리 결과로 여러 개의 컬럼이 반환되어 메인쿼리의 조건과 동시에 비교되는 것을 의미합니다. 다중 칼럼 서브쿼리의 예제 SELECT C1, C2, C3 FROM T1 WHERE (C1, C2) IN (SELECT C1, C2 FROM T2 WHERE C2 = '3') ORDER BY C1, C2, C3; 연관 서브쿼리 서브쿼리 내에 메인쿼리 컬럼이 사용된 서브쿼리 입니다. 연관 서브쿼리 예제 SELECT T1.C1, T1.C2, T1.C3 FROM T1 T1 WHERE (T1.C1, T1.C2) IN (SELECT T2.C1, T2.C2 FROM T2 T2 WHERE T2.C2 = T1.C2) -- 메인 쿼리의 컬럼을 서브쿼리에 사용 ORDER BY T1.C1, T1.C2, T1.C3; 그 밖의 위치에서 사용하는 서브쿼리 SELECT 절에 사용하는 서브쿼리 스칼라 서브쿼리라고도 합니다. 스칼라 서브쿼리는 한 행, 한 컬럼만을 반환하는 서브쿼리를 말합니다. SELECT T1.C1, (SELECT AVG(T2.C1) FROM T2 T2) FROM T1 T1; FROM 절에 사용하는 서브쿼리 인라인 뷰 라고 합니다. 기본적으로 FROM 절에는 테이블 명이 오도록 되어있습니다. 그런데 서브쿼리가 FROM 절에 사용되면 동적으로 생성된 테이블인 것처럼 사용할 수 있습니다. 인라인 뷰는 SQL 문이 실행될 때만 임시적으로 생성되는 동적인 뷰이기 때문에 데이터베이스에 해당 정보가 저장되지 않습니다. 인라인 뷰는 동적으로 조인 방식을 사용하는 것과 같습니다. SELECT T1.C1, T2.C1, T2.C2 FROM T1 T1, (SELECT C1, C2 FROM T2) T2 WHERE T1.C1 = T2.C1; HAVING 절에서 사용하는 서브쿼리 그룹함수와 함께 사용될 때 그룹핑된 결과에 대해 부가적인 조건을 주기 위해 사용합니다. SELECT T1.C1, T2.C1, T2.C2 FROM T1 T1, T2 T2 WHERE T1.C1 = T2.C1 GROUP BY T1.C1, T2.C1, T2.C2 HAVING AVG(T1.C1) < (SELECT AVG(C1) FROM T2 ); UPDATE 문의 SET 절에서 사용하기 UPDATE T1 T1 SET T1.C1 = (SELECT T2.C1 FROM T2 T2 WHERE T2.C1 = T1.C1); INSERT 문의 VALUES 절에서 사용하기 INSERT INTO T1 (C1, C2, C3) SELECT C1, C2, C3 FROM T2; INSERT INTO T1 (C1, C2, C3) VALUES ((SELECT C1 FROM T2), (SELECT C2 FROM T2), (SELECT C3 FROM T2)); 뷰 테이블은 실제로 데이터를 가지고 있는 반면, 뷰는 실제 데이터를 가지고 있지 않습니다. 질의에서 뷰가 사용되면 뷰 정의를 참조해서 DBMS 내부적으로 질의를 재작성하여 질의를 수행합니다. 뷰는 실제 데이터를 가지고 있지 않지만 테이블이 수행하는 역할을 수행하기 때문에 가상 테이블이라고도 합니다. 뷰 사용의 장점 장점 설명 독립성 테이블 구조가 변경되어도 뷰를 사용하는 응용 프로그램은 변경하지 않아도 된다. 편리성 복잡한 질의를 뷰로 생성함으로써 관련 질의를 단순하게 작성할 수 있다. 보안성 숨기고 싶은 정보가 존재하는 경우, 뷰를 생성할 때 해당 컬럼을 빼고 생성하여 정보를 숨길 수 있다. 이 내용은 'SQL 전문가 가이드, 한국데이터베이스 진흥원' 에서 공부한 내용입니다.
[Oracle] 오라클 서브쿼리 종류 및 사용법 (SubQuery)
오라클에서 쿼리문을 작성하다 보면 서브 쿼리(subquery)를 자주 접하게 된다. 서브 쿼리를 처음 접하면 아주 복잡하게 느껴지는데, 기능을 조금만 익히면 쿼리문을 작성할 때 아주 유용하게 사용할 수 있다. 서브 쿼리는 메인 쿼리 내부에 작성하는 쿼리를 뜻하며, 주로 아래의 3가지 서브 쿼리로 분류한다.
오라클 서브쿼리 종류
서브 쿼리 사용 위치 설명 스칼라 서브 쿼리 SELECT 절 단일 칼럼, 단일 행을 반환 (1개의 값) 인라인 뷰 FROM 절 View와 사용적인 측면에서 동일함 (임시 뷰, 임시 테이블) 중첩 서브 쿼리 WHERE 절, HAVING 절 다중 칼럼 또는 다중 행을 반환
위의 3가지 분류 외에도 연관성 없는 서브 쿼리, 연관성 있는 서브 쿼리로 분류하기도 한다. 연관성 없는 서브 쿼리는 메인 쿼리의 테이블과 무관하게 실행되는 서브 쿼리이며, 연관성 있는 서브 쿼리는 메인 쿼리의 테이블과 조인하여 실행하는 서브 쿼리이다.
스칼라 서브 쿼리 (scalar subquery)
SELECT a.empno , a.ename , a.deptno , (SELECT dd.dname FROM dept dd WHERE dd.deptno = a.deptno) AS dept_name FROM emp a WHERE a.sal >= 3000
위의 예제는 서브 쿼리를 사용하여 부서명(dname)을 가져오는 쿼리이다.
코드 값을 가져오는 서브 쿼리는 주로 아우터 조인을 대신하여 사용하며 위의 쿼리는 아우터 조인으로 변경해도 된다.
SELECT 절에 사용하는 서브 쿼리는 하나의 값만 조회되어야 한다. (하나의 칼럼, 하나의 행)
다중 행의 값이 조회되면 “ORA-01427 단일 행 하위 질의에 2개 이상의 행이 리턴되었습니다.”라는 오류가 발생한다.
(만약을 대비해서 서브 쿼리 마지막에 AND ROWNUM = 1을 붙이기도 함)
SELECT a.empno , a.ename , a.job , a.sal , a.sal – (SELECT ROUND(AVG(aa.sal)) FROM emp aa WHERE aa.job = a.job) AS avg_sal_diff FROM emp a WHERE a.deptno = 20 ORDER BY a.job, a.empno
위의 예제는 자신의 연봉에서 해당 직군의 평균 연봉과 차이를 계산하는 쿼리이다.
서버 쿼리의 결과와 칼럼을 값을 연산할 수도 있다.
SELECT a.deptno , a.dname , CASE WHEN a.deptno IN (SELECT DISTINCT aa.deptno FROM emp aa WHERE aa.job = ‘MANAGER’) THEN ‘Y’ END AS manager_yn FROM dept a
SELECT 절에서 CASE 표현식 등의 조건으로 서브 쿼리를 사용하면 다중 칼럼, 다중 행의 서브 쿼리를 사용할 수 있다.
인라인 뷰 (inline view)
SELECT a.empno , a.ename , a.job , b.mgr_name , b.mgr_dept FROM emp a INNER JOIN (SELECT a.empno AS mgr_no , a.ename AS mgr_name , b.dname AS mgr_dept FROM emp a , dept b WHERE a.deptno = b.deptno) b ON (a.mgr = b.mgr_no) WHERE a.deptno = 10
인라인 뷰는 뷰(View)와 동일하며 다른 점은 뷰(View)는 오브젝트이기 때문에 재활용이 가능하지만 인라인 뷰는 해당 쿼리문에서만 사용하는 임시 뷰이다. 인라인 뷰는 WITH 절로 생성된 뷰와도 비슷하다.
인라인 뷰는 테이블(또는 뷰)처럼 메인 쿼리의 테이블과 조인을 하여 사용할 수 있다. 인라인 뷰는 테이블과 같이 인덱스가 없기 때문에 데이터가 많으면 쿼리문이 느려질 수 있어서 사용 시 주의해야 한다.
중첩 서브 쿼리 (nested subquery)
SELECT a.empno , a.ename , a.deptno , b.dname FROM emp a INNER JOIN dept b ON (a.deptno = b.deptno) WHERE a.job = ‘CLERK’ AND a.deptno IN (SELECT DISTINCT aa.deptno FROM emp aa WHERE aa.job = ‘MANAGER’) ORDER BY a.deptno
위의 예제는 IN 연산자에 값을 직접 입력하지 않고 서브 쿼리로 값을 가져와서 입력하는 쿼리이다.
조회된 다중행의 부서 코드(deptno) 값이 IN 연산자에 입력된다.
SELECT a.empno , a.ename , a.deptno , b.dname FROM emp a INNER JOIN dept b ON (a.deptno = b.deptno) WHERE a.job = ‘CLERK’ AND EXISTS (SELECT 1 FROM emp aa WHERE aa.job = ‘MANAGER’ AND aa.deptno = a.deptno) ORDER BY a.deptno
IN 연산자의 예제와 동일한 결과의 쿼리이며, EXISTS 연산자의 서브 쿼리에 만족하는 값이 하나라도 조회되면 메인 쿼리에도 조회된다.
SELECT a.empno , a.ename , a.job , a.sal FROM emp a WHERE a.job IN (‘MANAGER’, ‘SALESMAN’) AND a.sal >= (SELECT ROUND(AVG(aa.sal)) FROM emp aa WHERE aa.job = a.job) ORDER BY a.job, a.empno
서브 쿼리의 결과와 부등호 연산자(>, <, >=, <=, =)를 사용하여 칼럼의 값을 비교할 수 있다. 부등호 연산자를 사용할 때는 스칼라 서브 쿼리를 사용해야 한다. 연관성 없는 서브 쿼리, 연관성 있는 서브 쿼리 연관성 없는 서브 쿼리는 메인 쿼리의 테이블과 연관 없이 서브 쿼리 내부의 테이블로만 결과를 반환하는 쿼리이다. 연관성 있는 서브 쿼리는 메인 쿼리의 테이블과 조인하여 메인테이블의 칼럼 값에 맞는 결과를 반환하는 쿼리이다. 예제쿼리(테이블포함).txt 0.00MB
SQL 서브쿼리(Sub Query) 예제 – select절, from절, where절
이번 포스팅은 실무 SQL에서 정말 많이 사용하는 서브쿼리(Sub Query)에 대해 소개한다.
※ 서브쿼리란?
앞선 포스팅에서 가장 기본적인 SQL 문법은 [SELECT, FROM, WHERE] 라고 했었다.
서브쿼리란 위치에 따라 SELECT절, FROM절, WHERE절로 나뉘는데,
SELECT절에 [SELECT, FROM, WHERE]을 넣거나
FROM절에 [SELECT, FROM, WHERE]을 넣거나
WHERE절에 [SELECT, FROM, WHERE]을 넣는 구문을 의미한다.
가장 일반적인 것은 WHERE절이며, 실무에선 FROM절과 WHERE절을 가장 많이 사용한다.
예제와 함께 어떻게 서브쿼리를 쓰는지 알아보자!
✔Table of Contents
1. SELECT절 서브쿼리
SELECT절에 사용되는 서브쿼리는 하나의 열처럼 사용된다.
| Q. [MEMBER], [ORDER] 테이블 간 공통값만 매칭하되, [ORDER]는 전부 & [MEMBER]는 gender 열만 나오게 하라.
위 질문에 대해서 저번 포스팅에서 배운 JOIN을 활용하면 다음과 같이 구할 수 있다.
SELECT A.*, B.gender FROM [ORDER] A LEFT JOIN [MEMBER] B ON A.mem_no = B.mem_no
이렇게 LEFT JOIN을 활용한 것을 SELECT절 서브쿼리로 바꿔서 풀면 이렇게 할 수 있다.
SELECT *, (SELECT gender FROM [MEMBER] B WHERE B.mem_no = A.mem_no) AS gender FROM [ORDER] A
즉, [ORDER] 테이블은 전체를(A.*), 그리고 [MEMBER] 테이블의 ‘gender’ 컬럼만 똑 떼어서 가져오는 것이다.
후자를 하는 방법이 SELECT절 서브쿼리이며, SELECT절 서브쿼리가 하나의 ‘gender’ 컬럼처럼 사용되고 있다.
SELECT절 서브쿼리는 데이터의 양이 많을수록 실행속도가 느려지기 때문에 거의 사용되지 않는 명령어이다.
2. FROM절 서브쿼리
FROM절에 사용되는 서브쿼리는 하나의 테이블처럼 사용된다.
테이블처럼 사용되므로, 열 이름과 테이블명을 꼭 명시해줘야 한다!! (FROM절 내 서브쿼리는 괄호를 치고, AS 명시)
| Q. [ORDER] 테이블에서 회원번호(mem_no)별 주문금액(sales_amt) 합계를 집계하라.
위 질문에 대해서 저번 포스팅에서 배운 GROUP BY를 활용하면 다음과 같다.
SELECT mem_no, SUM(sales_amt) AS tot_amt FROM [ORDER] GROUP BY mem_no
이렇게 쓴 쿼리를 FROM절로 바꾼다면 이렇게 하나의 테이블처럼 만들면 된다.
SELECT * FROM (SELECT mem_no, SUM(sales_amt) AS tot_amt FROM [ORDER] GROUP BY mem_no) A
위의 예시는 다소 극단적(?)이긴 하다. 처음에 썼던 쿼리를 그냥 FROM절 안에 넣고, SELECT문으로는 전체를 호출했기 때문. 실제로는 이렇게 쿼리를 짜는 경우가 거의 없을 것이다.
실전에서는 여러 가지 테이블을 조인시켜 가공하고, 1차 가공한 결과물을 또다시 2차 가공하고.. 하는 경우가 많다.
1차 가공한 결과를 테이블 형태로 다시 저장하면 좋겠지만 이게 불가능한 경우엔 1차 가공물을 FROM절 서브쿼리에 넣어 하나의 테이블로 이용하는 경우가 많다.
그래서 또다른 예제를 살펴보자.
| Q. 위에서 만든 FROM절 서브쿼리 A 를 기준으로, [MEMBER] 테이블을 LEFT JOIN하여라.
SELECT * FROM (SELECT mem_no, SUM(sales_amt) AS tot_amt FROM [ORDER] GROUP BY mem_no) A LEFT JOIN [MEMBER] B ON A.mem_no = B.mem_no
실제론 위 쿼리와 같이 사용되는 경우가 많다. (정말 편리한 FROM절 서브쿼리!)
3. WHERE절 서브쿼리
WHERE절 서브쿼리는 일반 서브쿼리이다. 가장 대표적인 형태이기 때문!
가장 대표적인 예제를 풀어보자.
| Q. [MEMBER] 테이블의 mem_no = ‘1000005’인 주문내역을 [ORDER] 테이블에서 조회하여라.
SELECT * FROM [ORDER] WHERE mem_no IN (SELECT mem_no FROM [MEMBER] WHERE mem_no = ‘1000005’)
이렇게 [MEMBER] 테이블의 mem_no를 조회할 때 WHERE절은 유용하게 쓰인다.
위의 예시는 너무 간단하니 한번 더 해보자!
| Q. [MEMBER] 테이블의 gender = ‘man’인 주문내역을 [ORDER] 테이블에서 조회하여라.
SELECT * FROM [ORDER] WHERE mem_no IN (SELECT mem_no FROM [MEMBER] WHERE gender = ‘man’)
이는 [MEMBER] 와 [ORDER] 테이블의 공통열(key)이 mem_no이기 때문에, gender=’man’인 mem_no를 WHERE절로부터 찾아내 조회할 수 있었다.
4. 문제로 풀어보기
배운 내용을 문제로 풀어보자. 쿼리를 혼자서 작성해보고 이게 맞는지 확인해보자. (‘더보기’를 클릭하면 정답 쿼리를 확인할 수 있다)
| Q. [ORDER] 테이블의 [mem_no] 컬럼별 [sales_amt] 컬럼의 합계를 구하여라. (단, SUM(sales_amt) 열 이름은 tot_amt로 한다.)
더보기 SELECT mem_no, sum(sales_amt) tot_amt FROM [ORDER] GROUP BY mem_no
결과물은 이렇다.
| Q. 1번 문제에서 짠 쿼리를 서브쿼리로 하여, [MEMBER] 테이블을 LEFT JOIN 하여라.
더보기 1번 문제의 쿼리를 FROM절 서브쿼리로 만들면 하나의 테이블처럼 사용할 수 있다. SELECT * FROM (SELECT mem_no, sum(sales_amt) tot_amt FROM [ORDER] GROUP BY mem_no ) A LEFT JOIN [MEMBER] B ON A.mem_no = B.mem_no
결과물은 이렇게!
| Q. 2번 문제에서 짠 쿼리를 바탕으로, [gender]와 [addr] 컬럼별 [tot_amt] 합계를 구하여라. (단, SUM(tot_amt)의 열 이름은 ‘합계’로 하고, gender와 addr 컬럼은 [MEMBER] 테이블에만 있다.)
더보기 위에서 만든 쿼리를 그대로 가져오되, gender와 addr 컬럼으로 GROUP BY를 시키는 것을 추가하자. SELECT B.gender, B.addr, SUM(tot_amt) AS 합계 FROM (SELECT mem_no, sum(sales_amt) tot_amt FROM [ORDER] GROUP BY mem_no ) A LEFT JOIN [MEMBER] B ON A.mem_no = B.mem_no GROUP BY B.gender, B.addr
결과물은 이렇게!
반응형
So you have finished reading the 서브 쿼리 topic article, if you find this article useful, please share it. Thank you very much. See more: 서브쿼리 종류, 서브쿼리 mysql, 서브쿼리 사용 이유, 서브쿼리란, 스칼라 서브쿼리, 서브쿼리 속도, 서브쿼리 select, mssql 서브쿼리