09 서브쿼리(Subquery) 서브쿼리의 개념 서브쿼리의 종류 데이터베이스 실무에서 서브쿼리 사용시 주의 사항.

Slides:



Advertisements
Similar presentations
Ⅰ. 연산자 Ⅱ. 제어 구조. 연산자 : 할당 연산자 - 사용자가 정의한 변수에 임의의 값을 저장하는 기능 strvar = strVar1+ “ Hello ”
Advertisements

1. 2 차원 배열  배열은 동일한 데이터 유형으로 여러 개의 변수를 사용할 경우 같은 이 름으로 지정하여 간편하게 사용할 수 있도록 하는 것으로서 앞에서 1 차원 배열을 공부하였습니다.  2 차원 배열은 바둑판을 생각하면 되며, 1 차원 배열에서 사용하는 첨자를 2.
널 (null) 의 처리 널을 검색하는 방법 형식 예 ) takes 테이블에서 아직 학점이 부여되지 않은 학생의 학번을 검색 is null is not null ( 질의 64) select stu_id from takes where grade is null.
12 데이터 무결성 제약조건 데이터 무결성 제약조건의 개념 데이터 무결성 제약조건의 종류 무결성 제약조건의 생성 방법.
SQL 언어 SQL.
02 SQL 언어 SQL 명령문의 종류와 사용 방법 오라클 오류 메시지.
02 SQL 언어 SQL 명령문의 종류와 사용 방법 오라클 오류 메시지.
MYSQL 설치 SQL언어 SQL언어의 활용 웹과 SQL언어와의 연동
Nested Queries CSED421: Database Systems Labs.
PARK SUNGJIN Oracle 설치 PARK SUNGJIN
16 분석함수 분석 함수의 개념 분석 함수의 종류 계층적 질의문.
Database Laboratory, Hong Ik University
MS-Access의 개요 1강 MOS Access 2003 CORE 학습내용 액세스 응용 프로그램은 유용한 데이터를
다양한 예제로 쉽게 배우는 오라클 SQL 과 PL/SQL
Excel 일차 강사 : 박영민.
06 SQL 함수 SQL 함수의 개념 문자 함수 숫자 함수 날짜 함수 데이터 타입의 변환 일반 함수.
데이터 베이스 설계 및 실습 #1 - 오라클 설치 및 SQL 기본.
제 09 장 데이터베이스와 MySQL 학기 인터넷비즈니스과 강 환수 교수.
다양한 예제로 쉽게 배우는 오라클 SQL 과 PL/SQL
8장 서브 쿼리.
MySQL 및 Workbench 설치 데이터 베이스.
기본적인 SELECT문 작성.
11 테이블 관리와 데이터 딕셔너리 데이터베이스 응용 프로젝트 개발 테이블 구조 변경 데이터 딕셔너리.
테이블 : 데이터베이스를 구성하는 요소로 같은 성격에 정보의 집합체. 레코드 : 하나의 정보를 가지고 있는 컬럼의 집합체
6장 그룹 함수.
다양한 예제로 쉽게 배우는 오라클 SQL 과 PL/SQL
07 그룹 함수 그룹 함수의 개념 그룹 함수의 종류 데이터 그룹 생성 HAVING 절.
08 조인(JOIN) 조인의 개념 칼럼 이름의 애매모호성, 테이블 별명, 조인 조건식 조인의 종류.
14 뷰(View) 뷰의 개념 뷰 관리.
3.2 SQL Server 설치 및 수행(계속) 시스템 데이터베이스 master
Heesang kim PL/SQL 3 Heesang kim.
13 인덱스 인덱스의 개념 인덱스의 구조 인덱스의 효율적인 사용 방법 인덱스의 종류 및 생성 방법 인덱스 실행 경로 확인
모바일 자바 프로그래밍 JDBC / WAP Ps lab 오민경.
18강. 데이터 베이스 - II JDBC 살펴보기 Statement객체 살펴보기 Lecturer Kim Myoung-Ho
17강. 데이터 베이스 - I 데이터 베이스의 개요 Oracle 설치 기본적인 SQL문 익히기
MYSQL 설치 SQL언어 SQL언어의 활용 웹과 SQL언어와의 연동
SQL.
다양한 예제로 쉽게 배우는 오라클 SQL 과 PL/SQL
13 인덱스 인덱스의 개념 인덱스의 구조 인덱스의 효율적인 사용 방법 인덱스의 종류 및 생성 방법 인덱스 실행 경로 확인
You YoungSEok Oracle 설치 You YoungSEok
고급 SQL 이번에는 고급 SQL 질의에 대해서 실습을 하겠습니다. Database Laboratory.
어서와 C언어는 처음이지 제14장.
JDBC Lecture 004 By MINIO.
2015학년도 PHP 기말 레포트 로그인 홈페이지 제작.
Visual Basic .NET MDI 만들기.
에어 조건문.
기본적인 SELECT문 작성.
2장. 변수와 타입.
5장 선택제어문 if 선택문 switch-case 선택문 다양한 프로그램 작성 조건 연산자.
SQL Study.
Fucntion 요약.
CHAP 21. 전화, SMS, 주소록.
2nd day Indexing and Slicing
문성우 SQL 실습 Part Ⅰ 문성우.
Database Relational DML SQL.
학습목표 학습목표 관계 데이터베이스에서 데이터 조작에 사용되는 명령어(DML)는 삽입(INSERT), 삭제(DELETE), 수정(UPDATE), 검색(SELECT) 이 있는데 이 중 사용 빈도가 가장 높은 것이 데이터의 검색에 사용되는 SELECT문 이며 이 명령문은 다양한.
에어 PHP 입문.
10 데이터 조작어 데이터 조작어 데이터 입력 데이터 수정 데이터 삭제 MERGE 트랜잭션 관리 시퀀스.
10 데이터 조작어 데이터 조작어 데이터 입력 데이터 수정 데이터 삭제 MERGE 트랜잭션 관리 시퀀스.
14 뷰(View) 뷰의 개념 뷰 관리.
7장. 다양한 형태의 반복문. 7장. 다양한 형태의 반복문 7-1 반복문이란? 반복문의 기능 세 가지 형태의 반복문 특정 영역을 특정 조건이 만족하는 동안에 반복 실행하기 위한 문장 7-1 반복문이란? 반복문의 기능 특정 영역을 특정 조건이 만족하는 동안에 반복.
Chapter 10 데이터 검색1.
11장 배열 1. 배열이란? 1.1 배열의 개요 1.2 배열의 선언과 사용.
8장 선택 논리 II 1. 논리연산자 1.1 논리연산자 : AND (&&) 1.2 논리연산자 : OR (||)
실습과제 (변수와 자료형, ) 1. 다음 작업 (가), (나), (다)를 수행하는 프로그램 작성
7장 테이블 조인하기.
14 뷰(View) 뷰의 개념 뷰 관리.
 6장. SQL 쿼리.
                              데이터베이스 설계 및 실습 #6 - SQL 실습 한국외국어대학교 DaPS 연구실                              
교과서 78쪽 학습 목표 정보 관리의 필요성을 이해할 수 있다. 데이터베이스의 개념과 필요성을 이해할 수 있다.
Presentation transcript:

09 서브쿼리(Subquery) 서브쿼리의 개념 서브쿼리의 종류 데이터베이스 실무에서 서브쿼리 사용시 주의 사항

서브쿼리 개요 하나의 SQL 명령문의 결과를 다른 SQL 명령문에 전달하기 위해 두 개 이상의 SQL 명령문을 하나의 SQL명령문으로 연결하여 처리하는 방법 서브쿼리의 필요성 예 : 교수 테이블에서 ‘전은지’ 교수와 직급이 동일한 모든 교수의 이름 검색 처리방식 1. 교수 테이블에서 ‘전은지’ 교수의 직급 검색 SQL 명령문 실행 2. 교수 테이블의 직급 칼럼에서 1 에서 얻은 결과 값과 동일한 직급을 가진 교수 검색 명령문 실행 1, 2 SQL 명령문 처리과정을 통합하여 하나의 SQL 명령문으로 처리 9장. 서브쿼리

서브쿼리의 개념 개요 서브쿼리 필요성 - 계속 처리과정 ② ① 메인쿼리(main query) 1. 서브쿼리는 메인쿼리가 실행되기 전에 한번씩 실행됨 2. 서브쿼리에서 실행된 결과가 메인 쿼리에 전달되어 최종적인 결과를 출력 서브쿼리를 이용한 교수명과 직급 검색 SELECT name, position FROM professor WHERE position ② 메인쿼리(main query) = (SELECT positon FROM professor WHERE name = ‘전은지’); ① 서브쿼리(subquery) 9장. 서브쿼리

서브쿼리의 개념 ① ② ① ① ② ② ③ ③ 서브쿼리를 사용하지 않은 경우 서브쿼리를 사용한 경우 교수 테이블에서 ‘전은지’ 교수의 직급 검색 SELECT position FROM professor WHERE name = ‘전은지’; 서브쿼리를 이용하여 교수 이름과 직급을 동시 검색 SELECT name, position FROM professor WHERE position ① ② 결과 전달 ① = (SELECT positon FROM professor WHERE name = ‘전은지’); PROFNO NAME … POSITION 9901 김도훈 교수 9902 이재우 조교수 ……… 9907 전은지 전임강사 PROFNO NAME POSITION 9901 김도훈 교수 9902 이재우 조교수 ……… …… 9904 염일웅 전임강사 9907 전은지 PROFNO NAME POSITION 9901 김도훈 교수 9902 이재우 조교수 ……… …… 9904 염일웅 전임강사 9907 전은지 교수 테이블에서 ‘전임강사’ 직급의 교수 검색 SELECT name, position FROM professor WHERE position = ‘전임강사’; ① ② ② ③ ③ NAME POSITION 염일웅 전임강사 전은지 NAME POSITION 염일웅 전임강사 전은지 9장. 서브쿼리

단일행 서브쿼리 개요 서브쿼리에서 단 하나의 행만을 검색하여 메인쿼리에 반환하는 질의문 메인쿼리의 WHERE 절에서 서브쿼리의 결과와 비교할 경우에는 반드시 단일행 비교 연산자 중 하나만 사용해야함 단일 행 비교 연산자 : =, >, >=, <, <>, <= 서브쿼리의 결과로 하나의 행만이 출력되어야 함 방법 1. 서브쿼리의 조건절에서 기본 키나 고유 키를 ‘=‘ 비교 하는 방식 방법 2. 서브쿼리의 SELECT 절에서 전체 집합을 대상으로 그룹 함수 사용 9장. 서브쿼리

‘=’ 연산자를 이용한 단일행 서브쿼리 9장. 서브쿼리

‘<’ 연산자를 이용한 단일행 서브쿼리 9장. 서브쿼리

단일행 서브쿼리 9장. 서브쿼리

다중 행 서브쿼리 개요 서브쿼리에서 반환되는 결과 행이 하나 이상일 때 사용하는 서브쿼리 메인쿼리의 WHERE 절에서 서브쿼리의 결과와 비교할 경우에는 다중 행 비교 연산자 를 사용하여 비교 다중 행 비교 연산자 : IN, ANY, SOM, ALL, EXISTS 다중 행 비교 연산자는 단일 행 비교 연산자와 결합하여 사용 가능 9장. 서브쿼리

IN 연산자를 이용한 다중 행 서브쿼리 개요 메인쿼리의 비교 조건에서 서브쿼리의 출력 결과와 하나라도 일하면 메인쿼리 조건절이 참이 되는 연산자 ‘=‘ 연산자를 OR로 연결한 것과 같은 의미 IN 연산자를 이용한 서브쿼리의 예 SELECT name, grade, deptno FROM student WHERE deptno IN (SELECT deptno FROM department WHERE college = 100); NAME … GRADE DEPTNO 전인하 4 101 박미경 1 지은경 2 이광훈 ... 오유석 102 = SELECT name, grade, deptno FROM student WHERE deptno = 101 OR deptno = 102 9장. 서브쿼리

IN 연산자를 이용한 다중 행 서브쿼리 9장. 서브쿼리

ANY 연산자를 이용한 다중 행 서브쿼리 개요 = 메인쿼리의 비교 조건에서 서브쿼리의 출력 결과와 하나라도 일치하면 메인쿼리 조건절이 참이 되는 연산자 ‘>,<‘ 등과 같은 범위 비교도 가능 ANY 연산자를 이용한 서브쿼리의 예 SELECT studno, name, height FROM student WHERE height > ANY (SELECT height WHERE grade = ‘4’); NAME … GRADE HEIGHT 전인하 4 176 김영균 3 172 오유석 177 …… 이광훈 ... 175 류민정 2 162 = ANY SELECT name, grade, height FROM student WHERE height > (SELECT MIN(height) FROM student WHERE grade = ‘4’ ); 학생의 키가 176, 177, 175 중 최소인 175보다 크면 참 9장. 서브쿼리

ANY 연산자를 이용한 다중 행 서브쿼리 9장. 서브쿼리

ALL 연산자를 이용한 다중 행 서브쿼리 개요 = 메인쿼리의 비교 조건에서 서브쿼리의 검색 결과와 모두 일치하면 메인쿼리 조건절이 참이 되는 연산자 ANY 연산자와 차이점 ‘ >ANY’ : 서브쿼리 결과 중에서 최소 값보다 크면 메인쿼리의 비교 조건이 참 ‘>ALL’ : 서브쿼리의 결과 중에서 최대 값보다 크면 메인쿼리의 비교 조건이 참 SELECT studno, name, height FROM student WHERE height > ALL (SELECT height WHERE grade = ‘4’); NAME … GRADE HEIGHT 전인하 4 176 김영균 3 172 오유석 177 …… 이광훈 ... 175 류민정 2 162 = ALL SELECT name, grade, height FROM student WHERE height > (SELECT MAX(height) FROM student WHERE grade = ‘4’ ); 학생의 키가 176, 177, 175 중 최대인 177보다 크면 참 9장. 서브쿼리

ALL 연산자를 이용한 다중 행 서브쿼리 9장. 서브쿼리

EXISTS 연산자를 이용한 다중 행 서브쿼리 개요 서브쿼리에서 검색된 결과가 하나라도 존재하면 메인쿼리 조건절이 참이 되는 연산자 서브쿼리에서 검색된 결과가 존재하지 않으면 메인쿼리의 조건절은 거짓 ‘선택된 레코드가 없습니다’ 라는 메시지 출력 NOT EXISTS EXISTS 와 상반되는 연산자 서브쿼리에서 검색된 결과가 하나도 존재하지 않으면 메인쿼리의 조건절이 참이 되는 연산자 9장. 서브쿼리

EXISTS 연산자를 이용한 다중 행 서브쿼리 SELECT profno, name, sal, comm, … FROM professor WHERE ② 아니오 (①의 결과가 없는 경우) EXISTS (SELECT positon FROM professor WHERE comm IS NOT NULL) ; ①의 결과가 존재하는가? ① 예 (①의 결과가 한 행이라도 있는 경우) ②의 결과값은? ②의 결과값은? 선택된 레코드가 없습니다 PROFNO NAME … POSITION COMM 9901 김도훈 교수 20 9902 이재우 조교수 9903 성연희 15 ……… …… 9907 전은지 전임강사 9908 남은혁 부교수 17 9장. 서브쿼리

EXISTS 연산자를 이용한 다중 행 서브쿼리 9장. 서브쿼리

NOT EXISTS 연산자를 이용한 다중 행 서브쿼리 9장. 서브쿼리

다중 컬럼 서브쿼리 개요 서브쿼리에서 여러 개의 칼럼 값을 검색하여 메인쿼리의 조건절과 비교하는 서브쿼리 메인쿼리의 조건절에서도 서브쿼리의 칼럼 수만큼 지정해야 함 종류 PAIRWISE : 칼럼을 쌍으로 묶어서 동시에 비교하는 방식 UNPAIRWISE : 칼럼별로 나누어서 비교한 후, AND 연산을 하는 방식 PAIRWISE, UNPAIRWISE 서브쿼리 비교  PAIRWISE 비교방법  UNPAIRWISE 비교 방법 9장. 서브쿼리

PAIRWISE 다중 칼럼 서브쿼리 개요 메인쿼리와 서브쿼리의 비교 대상 칼럼을 쌍으로 묶어서 행별로 비교하는 방법 메인쿼리와 서브쿼리에서 비교하는 칼럼의 수는 반드시 동일해야 함 9장. 서브쿼리

PAIRWISE 다중 칼럼 서브쿼리 9장. 서브쿼리

UNPAIRWISE 다중 칼럼 서브쿼리 개요 메인쿼리와 서브쿼리의 비교 대상 칼럼을 분리하여 개별적으로 비교한 후 AND 연산에 의해 최종 결과를 출력 각 칼럼이 동시에 만족하지 않더라도 개별적으로 만족하는 경우에는 비교 조건이 참이 되어 결과를 출력 가능 9장. 서브쿼리

UNPAIRWISE 다중 칼럼 서브쿼리 9장. 서브쿼리

상호연관 서브쿼리 개요 메인쿼리절과 서브쿼리간에 검색 결과를 교환하는 서브쿼리 메인쿼리와 서브쿼리간의 결과를 교환하기 위하여 서브쿼리의 WHERE 조건절에서 메인쿼리의 테이블과 연결 주의 행을 비교할 때마다 결과를 메인으로 반환하는 관계로 처리 성능이 저하될 수 있음 9장. 서브쿼리

상호연관 서브쿼리 책 267 Page 9장. 서브쿼리

실무에서 서브쿼리 사용시 주의사항 단일행 서브쿼리에서 오류가 발생하는 경우 복수 행 값을 반환하는 서브쿼리와 단일행 비교연산자 함께 사용하는 경우 반환되는 칼럼의 수와 메인쿼리에서 비교되는 칼럼 수가 일치하지 않는 경우 9장. 서브쿼리

실무에서 서브쿼리 사용시 주의사항 메인쿼리와 서브쿼리 칼럼의 수가 일치하지 않는 경우 9장. 서브쿼리

실무에서 서브쿼리 사용시 주의사항 ORDER BY 절 사용 서브쿼리 내에서 ORDER BY 절 사용하면 오류 발생 9장. 서브쿼리

실무에서 서브쿼리 사용시 주의사항 ORDER BY 절 사용 9장. 서브쿼리

실무에서 서브쿼리 사용시 주의사항 서브쿼리의 결과가 NULL인 경우 9장. 서브쿼리

실습 학과별 최소키 보다 큰 학생의 이름, 학과번호ㅡ 학번, 키를 출력하는 JDBC 프로그램을 작성하시오. 9장. 서브쿼리

WITH Clause 최신 SQL 기능 질의 결과의 재사용 구문 WITH 테이블 이름 AS ( SELECT … FROM … VIEW : 영구적 임시 데이블 생성 WITH Clause : 한시적 임시 테이블 생성 구문 WITH 테이블 이름 AS ( SELECT … FROM … WHERE ) WITH 절로 정의된 테이블은 일반 테이블과 동일한 기능을 제공한다. 질의문이 간결해지고 이해하기 쉬움. 9장. 서브쿼리

WITH Clause 김도훈 교수 입사일 보다 늦게 입사한 교수의 이름 또는 늦게 출생한 학생의 이름을 출력하시오. Join 형태 (select p1.name from professor p1, professor p2 where p2.name = ‘김도훈’ and p1.hiredate > p2.hiredate) UNION (select s.name from student s, professor p2 where p2.name = ‘김도훈’ and s.birthdate > p2.hiredate) 9장. 서브쿼리

where hiredate > ANY (select hiredate where name = ‘김도훈’) ) UNION SubQuery 형태 ( select name from professor where hiredate > ANY (select hiredate where name = ‘김도훈’) ) UNION from student where birthdate > ANY (select hiredate 9장. 서브쿼리

WITH Clause WITH clause 형태 WITH kimhire AS ( SELECT hiredate FROM professor WHERE name = ‘김도훈’) (SELECT name FROM professor, kimhire WHERE professor.hiredate > kimhire.hiredate ) UNION ( SELECT name FROM student, kimhire WHERE student.birthdate > kimhire.hiredate) 9장. 서브쿼리

WITH Clause 다음 질의를 WITH 절을 이용하여 재작성하여 JDBC를 이용하여수행하시오. 9장. 서브쿼리