8장 서브 쿼리.

Slides:



Advertisements
Similar presentations
북한기도제목 4 월 3 주 (4/15-4/21). 1. 북한정치 - 통일부와 국방부는 11 일 잇따라 열린 정례 브리핑에서 지난 7 일 북한 해외 식당 종업원 들이 집단 탈북한 데 이어 북한 정찰총국 출 신 북한군 대좌와 북한 외교관이 지난해 잇 따라 한국으로 망명한.
Advertisements

SQL 언어 SQL.
02 SQL 언어 SQL 명령문의 종류와 사용 방법 오라클 오류 메시지.
02 SQL 언어 SQL 명령문의 종류와 사용 방법 오라클 오류 메시지.
MYSQL 설치 SQL언어 SQL언어의 활용 웹과 SQL언어와의 연동
데이터베이스 9주차 : 데이터베이스 설계 2교시 : 데이터베이스 설계(3)
Nested Queries CSED421: Database Systems Labs.
Prepared Statements CSED421: Database Systems Labs.
PL/SQL.
16 분석함수 분석 함수의 개념 분석 함수의 종류 계층적 질의문.
관계 대수와 SQL.
대용량 데이터베이스 솔루션 발표자: 박보영 2007년 5월19일.
오라클 데이터베이스 성능 튜닝.
DataBase 기본 교육 신입사원용 최지철.
Database & Internet Computing Laboratory 한 양 대 학 교
다양한 예제로 쉽게 배우는 오라클 SQL 과 PL/SQL
박시우 ( 업무에 바로 쓰는 SQL 튜닝 박시우 (
제 5 장 인덱스 생성 및 관리.
5장 SQL 주요 함수.
데이터 베이스 설계 및 실습 #1 - 오라클 설치 및 SQL 기본.
SELECT 문 사원 테이블의 모든 정보를 출력하는 예제 1. 비교 연산자 SELECT 문의 형태
7장 조인.
다양한 예제로 쉽게 배우는 오라클 SQL 과 PL/SQL
DBMS실습(I) 데이터베이스 기본개념 2015년 1학기 동서울대학교 컴퓨터소프트웨어과.
12장 데이터 읽기 일관성과 락.
SQL SQL 불펌하지 마세요!!!!!!!! 불펌 금지.
MySQL 및 Workbench 설치 데이터 베이스.
요약 정보 만들기.
kHS 데이터베이스 테이블 및 인덱스 kHS.
기본적인 SELECT문 작성.
데이터 베이스 설계 및 실습 #3 - SQL 함수.
SQL*PLUS.
테이블 : 데이터베이스를 구성하는 요소로 같은 성격에 정보의 집합체. 레코드 : 하나의 정보를 가지고 있는 컬럼의 집합체
14장 뷰.
6장 그룹 함수.
I. SQL 성능 향상 가이드.
07 그룹 함수 그룹 함수의 개념 그룹 함수의 종류 데이터 그룹 생성 HAVING 절.
08 조인(JOIN) 조인의 개념 칼럼 이름의 애매모호성, 테이블 별명, 조인 조건식 조인의 종류.
09 서브쿼리(Subquery) 서브쿼리의 개념 서브쿼리의 종류 데이터베이스 실무에서 서브쿼리 사용시 주의 사항.
14 뷰(View) 뷰의 개념 뷰 관리.
SELECT empno, ename, job, sal, dname FROM emp, dept
13 인덱스 인덱스의 개념 인덱스의 구조 인덱스의 효율적인 사용 방법 인덱스의 종류 및 생성 방법 인덱스 실행 경로 확인
3장 SQL*Plus 명령어.
9장 테이블 생성 및 변경, 삭제하기(DDL).
MYSQL 설치 SQL언어 SQL언어의 활용 웹과 SQL언어와의 연동
SQL.
다양한 예제로 쉽게 배우는 오라클 SQL 과 PL/SQL
Quiz #1.
다양한 예제로 쉽게 배우는 오라클 SQL 과 PL/SQL
13 인덱스 인덱스의 개념 인덱스의 구조 인덱스의 효율적인 사용 방법 인덱스의 종류 및 생성 방법 인덱스 실행 경로 확인
다양한 예제로 쉽게 배우는 오라클 SQL 과 PL/SQL
다양한 예제로 쉽게 배우는 오라클 SQL 과 PL/SQL
환경 설정 예제 데이터베이스 생성 - 그림 3.34의 SQL Server 관리 스튜디오 창의 왼쪽 영역의 데이터베
Sql & DB
13장 무결성 제약조건.
JDBC Lecture 004 By MINIO.
View(뷰) 1 가상 테이블(Virtual Relation)
Restricting and Sorting Data
오라클 쿼리 문제 EMP (사원 테이블) DEPT (부서 테이블) 컬럼명 설명 EMPNO 사원번호 ENAME 사원명 JOB
기본적인 SELECT문 작성.
8장 테이블의 생성 및 변경 정인기.
Fucntion 요약.
문성우 SQL 실습 Part Ⅰ 문성우.
과제 #5 MySQL 연동 php문서에서 SQL문의 삽입, 삭제, 수정, 검색을 수행한다. 주어진 form을 최대한 활용한다.
3장 SQL*Plus 명령어.
Chapter 10 데이터 검색1.
7장 테이블 조인하기.
14 뷰(View) 뷰의 개념 뷰 관리.
 6장. SQL 쿼리.
                              데이터베이스 설계 및 실습 #6 - SQL 실습 한국외국어대학교 DaPS 연구실                              
Presentation transcript:

8장 서브 쿼리

목 차 서브 쿼리의 문법과 종류 단일 행 서브 쿼리 서브 쿼리에서 그룹 함수의 사용 다중 행 서브 쿼리 IN 연산자 ALL 연산자 ANY 연산자

이름이 ‘Jones’인 사원의 부서이름 조회 서브 쿼리의 문법과 종류 서브쿼리 : select 문 안에 또 다른 select문이 있는 것 - ( … ) 로 처리하여 가장 먼저 수행 이름이 ‘Jones’인 사원의 부서이름 조회

단일 행 서브쿼리 : 서브쿼리가 반환하는 결과 값이 단일 행인 경우 단일 행 서브 쿼리 단일 행 서브쿼리 : 서브쿼리가 반환하는 결과 값이 단일 행인 경우 Jones 가 있는 부서의 이름 조회 SQL> SELECT dname      FROM   dept      WHERE  deptno = ( SELECT deptno                      FROM  emp                       WHERE  ename='JONES'); SQL> SELECT deptno           FROM  emp         WHERE  ename='JONES'; SQL> SELECT dname      FROM   dept    WHERE  deptno = 20                  

단일 행 서브 쿼리 –cont’d 10번 부서에서 근무하는 사원의 이름과 부서명 출력 SQL> SELECT e.ename, d.dname   2 FROM   emp e, dept d     3 WHERE  e.deptno = d.deptno 4 AND d.deptno = 10;                      SQL> SELECT e.ename, d.dname   2 FROM   emp e,     3 ( SELECT deptno, dname 4 FROM dept 5 WHERE deptno=10 ) d 6 WHERE  e.deptno = d.deptno;             테이블명 대신 서브쿼리를 사용하는 경우

서브 쿼리에서 그룹 함수의 사용 평균급여보다 많이 받는 사원의 이름과 급여 출력 SQL> SELECT ename, sal      FROM   emp      WHERE  sal > ( SELECT AVG(sal)                       FROM  emp);  평균급여보다 많이 받는 사원의 이름과 급여를 고액순으로 출력 SQL> SELECT ename, sal      FROM   emp      WHERE  sal > ( SELECT AVG(sal)                       FROM  emp) ORDER  BY sal DESC;

서브 쿼리에서 그룹 함수의 사용 –cont’d 10번 부서의 최대 급여와 같은 급여를 받는 사원번호와 이름 출력 SQL> SELECT  empno, ename      FROM    emp    WHERE   sal = ( SELECT  MAX(sal)                       FROM    emp                                WHERE  deptno = 10);

다중 행 서브쿼리 : 서브쿼리가 반환하는 결과 값이 여러 행인 경우 다중 행 서브 쿼리 다중 행 서브쿼리 : 서브쿼리가 반환하는 결과 값이 여러 행인 경우 서브쿼리 결과 값 하나 일치 하나이상 일치 모든값이 일치 하나라도 만족

IN 연산자 A 나 B로 시작하는 이름을 가진 사원과 같은 부서 사원의 이름, 입사일, 부서번호 출력 SQL> SELECT  ename, hiredate, deptno    FROM   emp      WHERE   deptno IN ( SELECT  deptno                              FROM  emp                             WHERE  ename < ‘C');  Blake와 같은 부서사원의 이름, 입사일, 부서번호 출력(BLAKE 제외) SQL> SELECT  ename, hiredate, deptno    FROM   emp      WHERE   deptno = ( SELECT  deptno                              FROM  emp                             WHERE  ename = 'BLAKE') and ename != ‘BLAKE’; 

IN 연산자 –cont’d 급여가 3000 이상인 사원이 소속된 부서 사원의 이름, 급여, 부서번호 출력 SQL> SELECT ename, sal, deptno    FROM   emp      WHERE  deptno IN ( SELECT deptno                            FROM   emp                            WHERE  sal >= 3000); 급여가 3000 이상인 사원의 부서번호 출력 SQL> SELECT distinct deptno    FROM   emp      WHERE  sal >= 3000;

ALL 연산자 30번 부서 사원의 최대 급여보다 더 많이 받는 사원의 이름, 급여 출력 SQL> SELECT ename, sal      FROM emp      WHERE sal > ALL (SELECT sal                          FROM emp                         WHERE deptno = 30); SQL> SELECT ename, sal      FROM emp      WHERE sal > ( SELECT max(sal)                          FROM emp                         WHERE deptno = 30);

ANY 연산자 30번 부서의 사원 급여 최소값보다 더 많이 받는 사원의 이름, 급여 출력 SQL> SELECT ename, sal      FROM emp      WHERE sal > ANY (SELECT sal                          FROM emp                         WHERE deptno = 30); SQL> SELECT ename, sal      FROM emp      WHERE sal > (SELECT min(sal)                          FROM emp                         WHERE deptno = 30);

예제 1,2 SCOTT의 급여 이상을 받는 사원의 이름, 급여 출력 SQL> SELECT ename, sal      FROM emp      WHERE sal >= (SELECT sal                         FROM emp                         WHERE ename=‘SCOTT’); 직급이 사원(clerk)인 사람의 부서번호, 부서명, 지역 조회 SQL> SELECT deptno, dname, loc      FROM dept      WHERE deptno IN (SELECT deptno                        FROM emp                        WHERE job=‘CLERK’);

예제 3, 4 이름에 T를 포함하고 있는 사원과 같은 부서에 근무하는 사원의 번호와 이름 출력 SQL> SELECT empno, ename      FROM emp      WHERE deptno IN (SELECT deptno                          FROM emp                         WHERE ename LIKE ‘%T%’); 부서위치가 DALLAS인 모든 사원의 이름, 부서번호 조회 SQL> SELECT ename, deptno      FROM emp      WHERE deptno = (SELECT deptno                        FROM dept                        WHERE loc= ‘DALLAS’);

이름이 King 인 사원의 사번을 상사(mgr)로 가진 사원 조회 예제 5, 6 Sales 부서의 모든 사원의 이름과 급여 출력 SQL> SELECT ename, sal      FROM emp      WHERE deptno = (SELECT deptno                         FROM dept                         WHERE upper(dname) = ‘SALES’); King의 부하사원들의 이름과 급여, 상사 조회 SQL> SELECT ename, sal , mgr      FROM emp      WHERE mgr = (SELECT empno                        FROM emp                        WHERE ename=‘KING’); 이름이 King 인 사원의 사번을 상사(mgr)로 가진 사원 조회

예제 7 급여가 평균급여보다 많고 이름에 S가 들어가는 사원과 동일한 부서에 근무하는 모든 사원의 번호, 이름, 급여 출력 SQL> SELECT empno, ename, sal      FROM emp      WHERE deptno IN (SELECT deptno                         FROM emp WHERE sal > (SELECT avg(sal) FROM emp )                         AND ename like ‘%S%’); 급여가 평균급여보다 많고 이름에 S가 들어가는 사원과 동일한 부서에 근무하는

Tip 부서위치가 DALLAS 가 아닌 모든 사원의 정보 조회 SQL> SELECT * FROM emp      WHERE deptno NOT IN (SELECT deptno                        FROM dept                        WHERE loc=‘DALLAS’); 부서위치가 DALLAS 인 부서번호 조회 사번이 7566인 사원과 같은 상사를 가진 사원 정보 조회(널값 포함) SQL> SELECT *      FROM emp      WHERE NVL(mgr, 0) = (SELECT NVL(mgr,0)                        FROM emp                        WHERE empno = 7566); 사번이 7566 인 사원의 상사 조회

Tip 부하직원이 없는 사원 정보 출력 SQL> SELECT * FROM emp      WHERE empno NOT IN (SELECT NVL(mgr,0)                        FROM emp );      FROM emp m      WHERE m.empno NOT IN (SELECT e.mgr                        FROM emp e WHERE e.mgr=m.empno); 부서장 사원 정보 조회 SQL> SELECT *      FROM emp      WHERE empno IN (SELECT NVL(mgr,0)                        FROM emp );