다양한 예제로 쉽게 배우는 오라클 SQL 과 PL/SQL

Similar documents
다양한 예제로 쉽게 배우는 오라클 SQL 과 PL/SQL

Jerry Held


5장 SQL 언어 Part II

다양한 예제로 쉽게 배우는 오라클 SQL 과 PL/SQL

RDB개요.ppt

다양한 예제로 쉽게 배우는 오라클 SQL 과 PL/SQL

강의 개요

단답형 (26 회기출문제 ) 1. 아래와같은테이블이있을때아래의 SQL 결과에대해서 Oracle, SQL Server 순서로적으시오 TAB1 COL1 CHAR(10) COL2 CHAR(10) INSERT INTO TAB1 VALUES ('1',''); INSERT INT

객관식 1. 아래의쿼리를만족하는결과를가장잘설명한것은? SELECT A.* FROM HR.EMPLOYEES A, HR.EMPLOYEES B WHERE 1=1 AND A.MANAGER_ID = B.EMPLOYEE_ID AND B.SALARY >= ANY A.SALARY;

歯sql_tuning2

Microsoft PowerPoint - Oracle Data Join Method.pptx [읽기 전용]

SQL Tuning Business Development DB

3 S Q L A n t i p a t t e r n s Trees/intro/parent.sql CREATE TABLE Comments ( comment_id SERIAL PRIMARY KEY, parent_id BIGINT UNSIGNED, comment TEXT

다양한 예제로 쉽게 배우는 오라클 SQL 과 PL/SQL

SQL

Microsoft PowerPoint - Oracle Data Access Pattern.ppt

다양한 예제로 쉽게 배우는 오라클 SQL 과 PL/SQL

13주-14주proc.PDF

I T C o t e n s P r o v i d e r h t t p : / / w w w. h a n b i t b o o k. c o. k r

Microsoft Word - 03_SQL_CURSOR.doc

´ÙÁß Row °á°ú¸¦ ´ÜÀÏÇàÀ¸·Î Äĸ¶·Î ºÐ¸®ÇØ Ãâ·ÂÇÏ´Â ¹æ¹ý

SQL Tuning Business Development DB SQL - -SQL -SQL

ePapyrus PDF Document

빅데이터 분산 컴퓨팅 -6

0. Intro ORACLE 社 Oracle, My SQL, Exadata IBM 社 DB2, Informix SAP 社 ASE, IQ, ASA Microsoft 社 SQL Server Teradata 社 Teradata 공통점은? Altibase 社 Altibase

Microsoft Word - SQL튜닝_실습교재_.doc

목차 BUG 문법에맞지않는질의문수행시, 에러메시지에질의문의일부만보여주는문제를수정합니다... 3 BUG ROUND, TRUNC 함수에서 DATE 포맷 IW 를추가지원합니다... 5 BUG ROLLUP/CUBE 절을포함하는질의는 SUBQUE

@OneToOne(cascade = = "addr_id") private Addr addr; public Emp(String ename, Addr addr) { this.ename = ename; this.a

결과보고서

SQL Server 에서 SQL 튜닝시알아야할힌트와사용 방법 엑셈컨설팅본부 /DB 컨설팅팀박성호 Optimizer 가 SQL 을해석할때항상최적의실행계획을생성하지는못한다. 복잡한 SQL 일수록최적의실행계획을생성하기위해고려해야할대상 (Table, Index 가많은경우 )

Microsoft Word - 04_EXCEPTION.doc

ORACLE 꼭 이 책의 내용들을 다 외울 정도로 공부하여 스스로의 지식으로 만들기 바랍 니다. 마치 작은 씨앗에서 큰 나무가 자라나는 것처럼 이 책 한 권은 작지만 이 책을 다 읽은 후에는 큰 나무가 되기를 바랍니다. 이 책은 SQL 책입니다. 그러나 SQL을 잘 작

Query Process 단계처리내용 Parse 단계 Syntax, Security, Semantics의체크및Simple transformation 을수행한다 < 표 2>. Query Rewrite 단계서브질의와뷰의병합을수행하고, OR Expansion 작업을수행한다.

ESQL/C

1 데이터베이스 2 MySQL 설치 3 기초 SQL 4 고급 SQL 유용한함수들 JOIN inseog Kim Dep. of Applied Statistics, Dongguk통계데이터베이스 University jinseog.kim gma

객관식 1번풀이사전지식 * 비교연산자 ANY ( 서브쿼리 ) - 서브쿼리의결과에존재하는어느하나의값이라도만족하는조건을의미. 비교연산자로 " > " 를사용했다면메인쿼리는서브쿼리의값들중어떤값이라도만족하면되므로서브쿼리의결과의최소값보다큰모든건이조건을만족 - SOME 과동일 1번

MS-SQL SERVER 대비 기능

untitled

Spring Boot/JDBC JdbcTemplate/CRUD 예제

Microsoft Word - 05_SUBPROGRAM.doc

06/09-101È£ä263»Áö

04/07-08(È£ä263»Áö

%eb%8f%99%ec%9d%b8-[NO_09]%20%ec%9d%98%ea%b3%bc%eb%8c%80%ed%95%99%20%ec%86%8c%ec%8b%9d%ec%a7%80_F(%ec%b5%9c%ec%a2%85)-2.pdf

Microsoft PowerPoint _TechNet_SQL Server 2005.ppt [호환 모드]

Result Cache 동작원리및활용방안 엑셈컨설팅본부 /DB 컨설팅팀김철환 개요 ORACLE DBMS 를사용하는시스템에서 QUERY 성능은무엇보다중요한요소중하나이며그 성능과직접적인관련이있는것이 I/O 이다. 많은건수를 ACCESS 해야만원하는결과값을얻을수있는 QUER

Microsoft Word - PLSQL.doc

GROUPING SETS 등의새로운리포팅기능 - WINDOW FUNCTION 같은새로운개념의분석기능들 가. 일반집합연산자 현재사용하는 SQL 의많은기능이관계형데이터베이스의이론을수립한 E.F.Codd 박사의논문에언급이되어있다. 논문에언급된 8 가지관계형대수는다시각각 4

MySQL-.. 1

오라클옵티마이저의기본원리

10.ppt

PowerPoint Presentation

Microsoft Word - 07_TRIGGER.doc

Oracle Magazine 2003 summer

Microsoft PowerPoint - ch10 - 이진트리, AVL 트리, 트리 응용 pm0600

TITLE

Microsoft Word - [Unioneinc] 특정컬럼의 통계정보 갱신_ _ldh.doc

NLJ BATCH 과부분범위처리 엑셈컨설팅본부 / DB 컨설팅팀오수영 개요 오라클은새로운버전이출시될때마다한층업그레이드된기능들이추가된다. 이기능들은사용자에게편리함을제공함은물론이고, 기존의기능들이성능적으로업그레이드되어보다강력해지기도한다. 그러나때로는새롭게추가된기능으로인해,

Microsoft PowerPoint - 사본 - DB06-SQL,시스템카탈로그,뷰.ppt

[ 목차 ] 5.1 데이터베이스프로그래밍개념 5.2 T-SQL T-SQL 문법 5.3 JAVA 프로그래밍 2

SQL초보에서Schema Object까지

(Microsoft PowerPoint - 5\300\345.\271\256 \303\263\270\256\(8\301\266\).ppt)

슬라이드 1

DB 성능고도화핵심원리 비투엔컨설팅 수석컨설턴트 조시형

Microsoft PowerPoint 관계 대수 및 관계 해석(Part 1)

< D53514C2CBAE42CBDC3BDBAC5DBC4ABC5BBB7CEB1D72D3130B3E2B0A3B1E2C3E2BAD0B7F9C1FD28C5EBC7D5292E687770>

InsertColumnNonNullableError(#colName) 에해당하는메시지출력 존재하지않는컬럼에값을삽입하려고할경우, InsertColumnExistenceError(#colName) 에해당하는메시지출력 실행결과가 primary key 제약에위배된다면, Ins

소만사 소개

개발자를 위한 오라클 SQL 튜닝

Microsoft PowerPoint - 3장-MS SQL Server.ppt [호환 모드]

TECHNICAL WHITE PAPER Tibero Optimizer SQL Execution Plan October 2012

빅데이터분산컴퓨팅-5-수정

금오공대 컴퓨터공학전공 강의자료

SQL 실행계획을 이용한 패턴튜닝_ _최종.ppt [호환 모드]

Let G = (V, E) be a connected, undirected graph with a real-valued weight function w defined on E. Let A be a set of E, possibly empty, that is includ

-->> 바로위의예제와같은내용이지맊이런식으로해도된다 -->> 삽입한데이터확인 위에대한모든 INSERT 구문에는 'customerid' 에대한값이없다, 'customerid' 는 <customer> 테이블에기본키였으므로이상하게이상하게생각될지도모르겠지맊앞선에서테이블을설정할

슬라이드 제목 없음

FlashBackt.ppt

배치프로그램에서튜닝대상 SQL 추출하기 엑셈컨설팅본부 /DB 컨설팅팀박성호 배치프로그램의성능문제를진단하기위해트레이스를사용할수없고, 개별 SQL 에대한성 능점검은비효율적인경우에어떻게배치프로그램의성능문제를제대로파악하고개선안을도 출할것인가? 복잡한로직을가지고있는프로그램 (

예제소스는 에서다운로드하여사용하거나툴바의 [ 새쿼리 ]( 에아래의소스를입력한다. 입력후에는앞으로실습을위해서저장해둔다. -- 실습에필요한 Madang DB 와 COMPANY DB 를모두생성한다. -- 데이터베이스생성 US

<C3D6C0E7C3B528BAB8B5B5C0DAB7E1292D322E687770>

PowerPoint 프레젠테이션

통계적 DB보안

歯PLSQL10.PDF

PowerPoint 프레젠테이션

BY-FDP-4-70.hwp

Microsoft PowerPoint - Java7.pptx

Bind Peeking 한계에따른 Adaptive Cursor Sharing 등장 엑셈컨설팅본부 /DB 컨설팅팀김철환 Bind Peeking 의한계 SQL 이최초실행되면 3 단계의과정을거치게되는데 Parsing 단계를거쳐 Execute 하고 Fetch 의과정을통해데이터

Microsoft PowerPoint - Computer - chapter04.ppt [호환 모드]

Microsoft PowerPoint - 1_3_DBA_SQL_tuning

Ç¥Áö

구조체정의 자료형 (data types) 기본자료형 (primitive data types) : char, int, float 등과같이 C 언어에서제공하는자료형. 사용자정의자료형 (user-defined data types) : 다양한자료형을묶어서목적에따라새로운자료형을

신림프로그래머_클린코드.key

Tablespace On-Offline 테이블스페이스 온라인/오프라인

구축환경 OS : Windows 7 그외 OS 의경우교재 p26-40 참조 Windows 의다른버전은조금다르게나타날수있음 Browser : Google Chrome 다른브라우저를사용해도별차이없으나추후수업의모든과정은크롬사용 한

금오공대 컴퓨터공학전공 강의자료

JTS 1-2¿ùÈ£ ³»Áö_Ä÷¯ PDF¿ë

1. SQL 문의종류 2 DDL (Data Definition Language) : 데이터와그구조를정의 SQL문 CREATE DROP ALTER 내용데이터베이스객체를생성데이터베이스객체를삭제기존에존재하는데이터베이스객체를다시정의하는역할 DML (Data Manipulati

Oracle 10g SQL , PL/SQL 튜닝

<C1A4BAB8C3B3B8AE5FBBEABEF7B1E2BBE75FC7CAB1E25F E687770>

Transcription:

다양한예제로쉽게배우는 오라클 SQL 과 PL/SQL 서진수저

4 장 JOIN 을배웁니다 1

2

1. Cartesian Product ( 카티션곱, CROSS Join) - Oracle Join 문법 SQL> SELECT e.ename, d.dname 2 FROM emp e, dept d ; - ANSI Join 문법 SQL> SELECT e.ename, d.dname 2 FROM emp e CROSS JOIN dept d ; 3

2. EQUI Join ( 등가 Join) 4. JOIN 을배웁니다 1) Equi join 예 1: 학생테이블 (student) 과학과테이블 (department) 테이블을사용하여학생이름, 1 전공학과번호 (deptno1), 1 전공학과이름을출력하세요. 4

- Oracle Join 문법 SCOTT>SELECT s.name " 학생이름 ", s.deptno1 " 학과번호 ", d.dname " 학과이름 " 2 FROM student s, department d 3 WHERE s.deptno1 = d.deptno ; - ANSI Join 문법 SCOTT>SELECT s.name " 학생이름 ", s.deptno1 " 학과번호 ", d.dname " 학과이름 " 2 FROM student s JOIN department d 3 ON (s.deptno1 = d.deptno) ; 5

2) Equi Join 예 2: 학생테이블 (student) 과교수테이블 (professor) 을 join 하여학생의이름과지도교수번호, 지도교수이름을출력하세요. 6

- Oracle Join 문법 SCOTT>SELECT s.name " 학생이름 ", s.profno " 교수번호 ", p.name " 교수이름 " 2 FROM student s, professor p 3 WHERE s.profno = p.profno ; - ANSI Join 문법 SCOTT>SELECT s.name " 학생이름 ", s.profno " 교수번호 ",p.name " 교수이름 " 2 FROM student s JOIN professor p 3 ON (s.profno = p.profno ); 7

3) Equi Join 예 3: 학생테이블 (student) 과학과테이블 (department), 교수테이블 (professor) 을 Join하여학생의이름과학과이름, 지도교수이름을출력하세요. 8

- Oracle Join 문법 4. JOIN 을배웁니다 SCOTT>SELECT s.name " 학생이름 ", d.dname " 학과이름 ", p.name " 교수이름 " 2 FROM student s, department d, professor p 3 WHERE s.deptno1 = d.deptno 4 AND s.profno = p.profno ; - ANSI Join 문법 SCOTT> SELECT s.name " 학생이름 ", d.dname " 학과이름 ", p.name " 교수이름 " 2 FROM student s JOIN department d 3 ON s.deptno1 = d.deptno 4 JOIN professor p 5 ON s.profno = p.profno ; 9

4) Equi Join 예 4 : emp2 테이블과 p_grade 테이블을조회하여사원의이름과직급, 현재연봉, 해당직급의연봉의하한금액과상한금액을출력하세요. 10

- Oracle Join 문법 - ANSI Join 문법 SCOTT> SELECT e.name " 사원이름 ", 2 e.position " 현재직급 ", 3 e.pay " 현재연봉 ", 4 p.s_pay " 하한금액 ", 5 p.e_pay " 상한금액 " 6 FROM emp2 e, p_grade p 7 WHERE e.position = p.position ; SCOTT> SELECT e.name " 사원이름 ", 2 e.position " 현재직급 ", 3 e.pay " 현재연봉 ", 4 p.s_pay " 하한금액 ", 5 p.e_pay " 상한금액 " 6 FROM emp2 e JOIN p_grade p 7 ON e.position = p.position ; 11

5) Equi Join 예 5 : 1 전공 (deptno1) 이 101 번인학생들의학생이름과지도교수이름을출력하세요. 12

- Oracle Join 문법 4. JOIN 을배웁니다 SCOTT>SELECT s.name " 학생이름 ", p.name " 지도교수명 " 2 FROM student s, professor p 3 WHERE s.profno = p.profno 4 AND s.deptno1 = 101 ; - ANSI Join 문법 SCOTT>SELECT s.name " 학생이름 ", p.name " 지도교수명 " 2 FROM student s JOIN professor p 3 ON s.profno = p.profno 4 AND s.deptno1 = 101 ; 13

3. Non-Equi Join ( 비등가 Join) 1) Non-Equi Join 예제 1: Gogak 테이블과 gift 테이블을 Join 하여고객의마일리지포인트별로받을수있는상품을조회하여고객의이름과상품명을출력하세요. 14

- Oracle Join 구문 SCOTT>SELECT go.gname " 고객명 ", go.point "POINT", gi.gname " 상품명 " 2 FROM gogak go, gift gi 3 WHERE go.point BETWEEN gi.g_start AND gi.g_end ; - ANSI Join 구문 SCOTT>SELECT go.gname " 고객명 ", go.point "POINT", gi.gname " 상품명 " 2 FROM gogak go JOIN gift gi 3 ON go.point BETWEEN gi.g_start AND gi.g_end ; 15

2) Non-Equi Join 예제 2: 4. JOIN 을배웁니다 위예제 1 번에서조회한상품의이름과필요수량이몇개인지조회하세요. 16

- Oracle Join 구문 SCOTT> SELECT gi.gname " 상품명 ", COUNT(*) " 필요수량 " 2 FROM gogak go, gift gi 3 WHERE go.point BETWEEN gi.g_start AND g_end 4 GROUP BY gi.gname ; - ANSI Join 구문 SCOTT>SELECT gi.gname " 상품명 ", COUNT(*) " 필요수량 " 2 FROM gogak go JOIN gift gi 3 ON go.point BETWEEN gi.g_start AND gi.g_end 4 GROUP BY gi.gname ; 17

3) Non-Equi Join 예제 3: Student 테이블과 exam_01 테이블, hakjum 테이블을조회하여학생들의이름과점수와학점을출력하세요. 18

- Oracle Join 문법 SCOTT>SELECT s.name " 학생이름 ", e.total " 점수 ", h.grade " 학점 " 2 FROM student s, exam_01 e, hakjum h 3 WHERE s.studno = e.studno 4 AND e.total BETWEEN h.min_point AND h.max_point ; - ANSI Join 문법 SCOTT>SELECT s.name " 학생이름 ",e.total " 점수 ", h.grade " 학점 " 2 FROM student s JOIN exam_01 e 3 ON s.studno = e.studno 4 JOIN hakjum h 5 ON e.total BETWEEN h.min_point AND h.max_point ; 19

4) Non-Equi Join 예제 4 : 4. JOIN 을배웁니다 Gogak 테이블과 gift 테이블을 Join 하여고객이자기포인트보다낮은포인트의상품중한가지를선택할수있다고할때산악용자전거를선택할수있는고객명과포인트, 상품명을출력하세요. 20

- Oracle Join 문법 SCOTT>SELECT go.gname " 고객명 ", go.point "POINT", gi.gname " 상품명 " 2 FROM gogak go, gift gi 3 WHERE gi.g_start <= go.point 4 AND gi.gname =' 산악용자전거 '; - ANSI Join 문법 SCOTT>SELECT go.gname " 고객명 ", go.point "POINT", gi.gname " 상품명 " 2 FROM gogak go JOIN gift gi 3 ON gi.g_start <= go.point 4 AND gi.gname =' 산악용자전거 '; 21

5) Non-Equi Join 예제 5: Emp 2 테이블과 p_grade 테이블을조회하여사원들의이름과나이, 현재직급, 예상직급을출력하세요. 예상직급은나이로계산하며해당나이가받아야하는직급을의미합니다. 나이는오늘 (sysdate) 를기준으로하되 trunc 로소수점이하는절삭해서계산하세요. 22

- Oracle Join 문법 SCOTT>SELECT e.name " 이름 ", 2 trunc((sysdate-e.birthday)/365,0) " 현재나이 ", 3 e.position " 현재직급 ", 4 g.position " 예상직급 " 5 FROM emp2 e, p_grade g 6 WHERE trunc((sysdate-e.birthday)/365,0) BETWEEN g.s_age AND g.e_age ; - ANSI Join 문법 SCOTT>SELECT e.name " 이름 ", 2 trunc((sysdate-e.birthday)/365,0) " 현재나이 ", 3 e.position " 현재직급 ", 4 g.position " 예상직급 " 5 FROM emp2 e JOIN p_grade g 6 ON trunc((sysdate-e.birthday)/365,0) BETWEEN g.s_age AND g.e_age ; 23

4. OUTER Join ( 아우터조인 ) vs INNER Join ( 이너조인 ) 1) Outer Join 예제 1: Student 테이블과 Professor 테이블을 Join 하여학생이름과지도교수이름을출력하세요. 단지도교수가결정되지않은학생의명단도함께출력하세요. - Oracle Outer Join 문법 SCOTT>SELECT s.name " 학생이름 ", p.name " 교수이름 " 2 FROM student s, professor p 3 WHERE s.profno = p.profno(+) ; - Oracle Outer Join 문법 SCOTT>SELECT s.name " 학생이름 ", p.name " 교수이름 " 2 FROM student s LEFT OUTER JOIN professor p 3 ON s.profno = p.profno ; 24

- 결과화면 지도교수가없는학생들입니다. 교수이름에 * 가나오는이유는 SQL> set null ***** ; 로설정했기때문입니다. 25

2) Outer Join 예제 2 : Student 테이블과 Professor 테이블을 Join 하여학생이름과지도교수이름을출력하세요. 단지도학생이결정되지않은교수의명단도함께출력하세요. 지도학생이결정 안된교수들입니다. 26

- Oracle Outer Join 문법 SCOTT>SELECT s.name " 학생이름 ", p.name " 교수이름 " 2 FROM student s, professor p 3 WHERE s.profno(+) = p.profno 4 ORDER BY 1 ; - ANSI Outer Join 문법 SCOTT>SELECT s.name " 학생이름 ", p.name " 교수이름 " 2 FROM student s RIGHT OUTER JOIN professor p 3 ON s.profno = p.profno 4 ORDER BY 1 ; 27

3) Outer Join 예제 3 : Student 테이블과 Professor 테이블을 Join 하여학생이름과지도교수이름을출력하세요. 단지도학생이결정안된교수명단과지도교수가결정안된학생명단을한꺼번에출력하세요. 지도교수가없는학생들입니다 지도학생이없는교수들입니다 28

- Oracle Outer Join 문법 SCOTT>SELECT s.name " 학생이름 ", p.name " 교수이름 " 2 FROM student s, professor p 3 WHERE s.profno(+) = p.profno 4 UNION 5 SELECT s.name " 학생이름 ", p.name " 교수이름 " 6 FROM student s, professor p 7 WHERE s.profno = p.profno(+) ; - Oracle Outer Join 문법 SCOTT>SELECT s.name " 학생이름 ", p.name " 교수이름 " 2 FROM student s FULL OUTER JOIN professor p 3 ON s.profno = p.profno ; 29

5. SELF Join 경영지원부의상위부서는사장실이다 30

31

- Oracle Join 문법 SCOTT> SELECT a.dname 부서명, b.dname 상위부서명 2 FROM dept2 a, dept2 b 3 WHERE a.pdept = b.dcode ; - ANSI Join 문법 SCOTT> SELECT a.dname 부서명, b.dname 상위부서명 2 FROM dept2 a JOIN dept2 b 3 ON a.pdept = b.dcode ; 32

- 출력결과 33

** Join 연습문제 1 : professor 테이블에서교수의번호, 교수이름, 입사일, 자신보다입사일빠른사람인원수를출력하세요. 단자신보다입사일이빠른사람수를오름차순으로출력하세요. 34

6. JOIN 원리 4. JOIN 을배웁니다 35

1) Nested Loop Join ( 가장기본적인 Join 기법입니다 ) SQL> SELECT e.ename, d.dname 2 FROM emp e, dept d 3 WHERE e.deptno = d.deptno ; 36

2) Sort-Merge join 4. JOIN 을배웁니다 인덱스가없을경우 인덱스가있을경우 37

- Sort 후 Merge 작업 38

3) Hash Join (CBO 에서만가능합니다 ) 39