고급 SQL 이번에는 고급 SQL 질의에 대해서 실습을 하겠습니다. Database Laboratory.

Slides:



Advertisements
Similar presentations
1. 2 차원 배열  배열은 동일한 데이터 유형으로 여러 개의 변수를 사용할 경우 같은 이 름으로 지정하여 간편하게 사용할 수 있도록 하는 것으로서 앞에서 1 차원 배열을 공부하였습니다.  2 차원 배열은 바둑판을 생각하면 되며, 1 차원 배열에서 사용하는 첨자를 2.
Advertisements

1 넷스팟 MAC ID 설정 방법 ( 서울캠퍼스 기준 ) 각종 스마트폰의 WiFi 를 이용시 각종 스마트폰의 WiFi 를 이용시 MAC ID 설정을 하는 방법 입니다. 아이폰의 경우는 별도의 설정없이 바로 사용이 가능하오니, 사용이 어려울 경우, 고객센터로 문의하시면 됩니다.
아이튠즈 계정 생성. 1. 인터넷을 통해 설치한 아이튠즈를 실행 한 후 그림의 순서대로 선택을 합니다. 1 2.
출석수업 과제 – 총 5문제, 10월 25일 제출 정보통계학과 장영재 교수.
무료문자 보내기 62. 창업자께서 현재 스마트폰 무제한 약정 요금제를 사용하고 계시다면
DB 프로그래밍 학기.
DB 프로그래밍 학기.
You YOungseok 데이터베이스 테이블 및 인덱스 You YOungseok.
컴퓨터프로그래밍 1주차실습자료 Visual Studio 2005 사용법 익히기.
1 ENT 출고확정 처리방법 ? 1. 발주관리 > 주문전체 보기 내 필드 추가 확인 ? ENT 주문관리 페이지에서 그림
MS-Access의 개요 1강 MOS Access 2003 CORE 학습내용 액세스 응용 프로그램은 유용한 데이터를
제 09 장 데이터베이스와 MySQL 학기 인터넷비즈니스과 강 환수 교수.
Outlook Express 메일 백업 및 복원가이드
8장 서브 쿼리.
MySQL 및 Workbench 설치 데이터 베이스.
옐로우캡 TSC 드라이버 설치방법.
기본적인 SELECT문 작성.
테이블 : 데이터베이스를 구성하는 요소로 같은 성격에 정보의 집합체. 레코드 : 하나의 정보를 가지고 있는 컬럼의 집합체
6장 그룹 함수.
홍익대학교 메일 시스템 구축 Outlook 설정 매뉴얼.
07 그룹 함수 그룹 함수의 개념 그룹 함수의 종류 데이터 그룹 생성 HAVING 절.
[ ] 호서대학교 현장실습지원센터 홈페이지 안내 교수 매뉴얼.
09 서브쿼리(Subquery) 서브쿼리의 개념 서브쿼리의 종류 데이터베이스 실무에서 서브쿼리 사용시 주의 사항.
3.2 SQL Server 설치 및 수행(계속) 시스템 데이터베이스 master
Communication and Information Systems Lab. 황재철
1. C++ 시작하기.
Heesang kim PL/SQL 3 Heesang kim.
13 인덱스 인덱스의 개념 인덱스의 구조 인덱스의 효율적인 사용 방법 인덱스의 종류 및 생성 방법 인덱스 실행 경로 확인
18강. 데이터 베이스 - II JDBC 살펴보기 Statement객체 살펴보기 Lecturer Kim Myoung-Ho
17강. 데이터 베이스 - I 데이터 베이스의 개요 Oracle 설치 기본적인 SQL문 익히기
학습목표 학습목차 다른 홈페이지의 HTML 파일 코드를 보는 방법에 대해 알아봅니다.
ASP.NET AJAX 비동기 게시판 작성 2007 컴퓨터공학실험( I )
KIM HEESANG PL/SQL 2 KIM HEESANG
13 인덱스 인덱스의 개념 인덱스의 구조 인덱스의 효율적인 사용 방법 인덱스의 종류 및 생성 방법 인덱스 실행 경로 확인
환경 설정 예제 데이터베이스 생성 - 그림 3.34의 SQL Server 관리 스튜디오 창의 왼쪽 영역의 데이터베
어서와 C언어는 처음이지 제14장.
JDBC Lecture 004 By MINIO.
2015학년도 PHP 기말 레포트 로그인 홈페이지 제작.
홀인원2.0 설치 메뉴얼.
LIT-GenAppSetup ※ Texting+ 클라이언트 프로그램은 제품 인증을 받은 제품입니다.
Term Projects 다음에 주어진 2개중에서 한 개를 선택하여 문제를 해결하시오. 기한: 중간 보고서: 5/30 (5)
Adobe 제품 다운로드 및 설치 방법 안내 Adobe Creative Cloud Adobe License 권한을 받으신 분
인문학 동영상 강의 사용자 매뉴얼 (PC & Mobile).
27강 JAVA Collections - II - Map계열 컬렉션 클래스 살펴보기 - Set계열 컬렉션 클래스 살펴보기
3D 프린팅 프로그래밍 01 – 기본 명령어 강사: 김영준 목원대학교 겸임교수.
에어 조건문.
ASP.NET AJAX / AJAX Control Toolkit 응용 2008 컴퓨터공학실험( I )
Moving Control in Web using Ajax Toolkit
문성우 SQL 실습 Part Ⅰ 문성우.
Database Relational DML SQL.
디버깅 관련 옵션 실습해보기 발표 : 2008년 5월 19일 2분반 정 훈 승
단축키 기능 1. 단축키 기능 설명 Alt + R 조회 S 저장 I 삽입 A 추가 D 삭제 P 출력 Q 닫기
10 데이터 조작어 데이터 조작어 데이터 입력 데이터 수정 데이터 삭제 MERGE 트랜잭션 관리 시퀀스.
10 데이터 조작어 데이터 조작어 데이터 입력 데이터 수정 데이터 삭제 MERGE 트랜잭션 관리 시퀀스.
4장. 데이터 표현 방식의 이해. 4장. 데이터 표현 방식의 이해 4-1 컴퓨터의 데이터 표현 진법에 대한 이해 n 진수 표현 방식 : n개의 문자를 이용해서 데이터를 표현 그림 4-1.
DA :: 퀵 정렬 Quick Sort 퀵 정렬은 비교방식의 정렬 중 가장 빠른 정렬방법이다.
14 뷰(View) 뷰의 개념 뷰 관리.
기초C언어 제2주 실습 프로그래밍의 개념, 프로그램 작성 과정 컴퓨터시뮬레이션학과 2016년 봄학기 담당교수 : 이형원
Chapter 10 데이터 검색1.
7장 테이블 조인하기.
어드민 로그인 ID : admin 비밀번호 : 서보테크 1. 제품소개 등록 - MISUBISHI
14 뷰(View) 뷰의 개념 뷰 관리.
대한축구협회 대한축구협회 2013년 전산등록 매뉴얼 2018년 심판보고서매뉴얼.
 6장. SQL 쿼리.
DBMS & SQL Server Installation
                              데이터베이스 설계 및 실습 #6 - SQL 실습 한국외국어대학교 DaPS 연구실                              
문제의 답안 잘 생각해 보시기 바랍니다..
6 객체.
2학기 2학기 7월 26일(금) 14시에 덕성포탈에 로그인 하시면 합격/불합격/대기 여부를 확인하실 수 있습니다. 2학기
Ⅰ. 데이터베이스 정의 Ⅱ. MS SQL 서버 Ⅲ. 데이터베이스 인터페이스
Presentation transcript:

고급 SQL 이번에는 고급 SQL 질의에 대해서 실습을 하겠습니다. Database Laboratory

차례 join subquery exists unions IF ~ ELSE CASE Inner / Outer join 고급 SQL에서 다룰 내용은 내부/외부 조인과 질의 내 네스팅된 질의를 수행하는 서브쿼리에 대해서 살펴본 후에 EXISTS UNION, IF~ ELSE, CASE 키워드를 이용한 질의를 사용 예제를 통해서 확인하는 과정으로 진행 하겠습니다. Database Laboratory

join ER-Diagram Account, branch, account_branch Table 그림과 같이 acccount와 branch 개체와 관계 릴레이션인 account_branch 테이블이 다대일 매핑 관계를 가지고 있는 ER 다이어그램 입니다. account 테이블에는 account_number를 주 키로, branch_name과 balance가 애트리뷰트로 설정되어 있고 branch 테이블에는 branch_name이 주 키로, branch_city, assets이 애트리뷰트로 설정되어 있습니다. 두 엔티티 간에 관계 역할을 하고 있는 account_branch 릴레이션은 각 테이블의 주 키를 애트리뷰트로 가지고 있습니다. 관계를 가진 테이블에 Database Laboratory

join data 입력 branch account account_branch Database Laboratory 왼쪽은 account table, 오른쪽은 branch table, 그리고 가운데는 account_branch 관계테이블에 데이터를 입력한 결과를 보여주고 있습니다. 여기서, account_branch 는 account와 branch의 관계 테이블이지만 관계라는 것은 개념일 뿐 모두 동일한 테이블이기 때문에 account_branch 테이블에 들어가서 데이터 값을 넣어주지 않으면 가운데의 쿼리문을 작성하고 실행했을 때 결과 값이 나오지 않습니다. account_branch Database Laboratory

join SELECT * FROM account, branch 결과 Database Laboratory 다음은 SELECT * FROM account, branch와 같은 질의를 했을 경우, account와 branch 테이블을 조인한 결과를 그림과 같이 볼 수 있습니다. 결과 값이 길어서 생략하였습니다. Database Laboratory

join inner join과 outer join 비교 내부조인 (inner join) : 외부조인(outer join) : 기준이 되는 table이 양쪽 모든 테이블에 공통되는 컬럼의 값을 비교해서 테이블을 통합한 다. 두 테이블에서 조인조건을 만족하는 행만 출력한다. 외부조인(outer join) : 어느 한쪽 table이 기준이 되어 기준이 되는 테이블에서 모든 data를 반환하고, 기준이 되지 않는 쪽의 table에서는 조건을 만 족하는 data를 반환하게 되는 join을 말한다. 만약 기준이 되지 않는 table에서 data 가 없는 경우에는 해당 column에 NULL 값을 반환하게 된다. left join right join 앞에서 조인결과를 살펴 봤듯이 상당한 양의 결과를 반환하고 있습니다. 여러 가지 join 중에서 내부조인과 외부조인에 대해서 알아보도록 하겠습니다. - 내부조인은 모든 테이블에 공통되는 컬럼의 값을 비교해서 테이블을 통합합니다. SQL Server는 두 테이블에서 join 조건을 만족하는 행만 출력합니다. - 외부조인은 내부조인처럼 조인조건을 만족하는 행을 통합한 결과 집합을 출력합니다. 그러나 해당조건을 만족하는 행과 함께 left 및 right 외부조인은 테이블들 중 하나의 테이블에 일치하지 않는 행들을 추가로 반환합니다. 소스테이블의 컬럼은 데이터를 담고 있지만, 다른 테이블의 컬럼은 NULL 값을 담고 있습니다. 또한 조인된 테이블 중 하나에서 데이터의 완전한 리스트가 필요할 때 left 또는 right join을 사용할 수 있습니다. Database Laboratory

join = = inner join (내부조인) SELECT 절에서 가져올 column을 정의 별칭 사용 가능 FROM 절에서 필요한 table을 나열한 후 WHERE 조건에서 공통 조건을 명시 이름이 같은 컬럼이 1 개일 경우 WHERE a.X = b.X = INNER JOIN, ON a.X = b.X where 절에 조건을 주어 가져올 row 수를 제한하는 내부 조인은 가져올 컬럼을 정의하고 from절에서 필요한 table을 나열한 후에 where 조건에서 이름이 같은 컬럼을 명시하여 질의를 할 수 있습니다. 같은 이름의 컬럼이 1 개일 경우는 where 절에 공통 조건을 명시한 것은 inner join, on 다음에 공통 조건을 사용하면 결과 값이 같다. 또한 같은 이름의 컬럼이 2 개 이상일 경우는 on 다음에 and 로 연결한 것이 using 다음에 공통 컬럼 이름을 나열하면 결과가 같다. 실습에서는 컬럼이 1 개일 경우에만 실습을 하겠습니다. 이름이 같은 컬럼이 2 개일 경우 INNER JOIN, ON (a.X = b.X) and (a.Y = b.Y) = INNER JOIN, USING(X,Y) Database Laboratory

join where 절에서 공통 조건을 사용한 Inner join branch와 account 테이블에 공통되는 컬럼의 값을 비교 해서 테이블을 통합한다 // column 별칭 사용 // 공통조건 명시 where 절에서 공통 조건을 사용한 내부조인에 대해서 살펴보면 branch와 account 테이블에 공통되는 컬럼 branch_name을 비교해서 테이블을 통합하는 질의와 결과를 보여주고 있습니다. branch를 a로 account를 b로 별칭을 만든 후 branch와 account를 내부 조인하는데 공통조건이 branch의 branch_name과 account의 branch_name이 같으며 where 절에는 branch_name을 오름차순으로 정렬하라는 질의를 수행한 것입니다. Database Laboratory

join inner join, ON 을 사용한 내부조인 // inner join 사용 Database Laboratory 다음은 inner join 과 on keyword를 사용하여 내부조인을 한 경우 입니다. 결과는 같은 것을 확인 할 수 있습니다. Database Laboratory

join LEFT Outer join (외부조인) 왼쪽에 있는 branch table이 기준 branch table에서 모든 data를 반환하고, branch와 account의 지사 이름이 일치하는 결과를 반환한다 기준(branch) LEFT OUTER JOIN은 왼쪽에 있는 branch 테이블이 기준이며, branch table에서 모든 데이터를 반환하고, branch와 account의 branch_name이 일치하는 결과를 반환합니다. 기준 테이블인 branch의 branch_name의 데이터들에 account 테이블의 branch_name 데이터들이 모두 포함되므로 NULL 값은 출력되지 않았습니다. Database Laboratory

join LEFT join (LEFT Outer join과 같은 의미) Database Laboratory

join RIGHT Outer join 오른쪽에 있는 account table이 기준 account table에서 모든 data를 반환하고, branch와 account의 지사 이름이 일치하는 결과를 반환한다. 기준(branch) LEFT Outer join과 반대로 오른쪽에 있는 account 테이블이 기준이며, account 테이블에서 모든 data를 반환하고 branch와 account의 지사 이름이 일치하는 결과를 반환하고 있습니다. 기준이 되지 않는 테이블 branch에 data : North Town, Pownal 이 없기 때문에 NULL 값이 반환된 것을 확인 할 수 있습니다 . Database Laboratory

join RIGHT join (RIGHT Outer join과 같은 의미) Database Laboratory

join Management Studio를 이용한 inner join 1. [account Table]-[우측 마우스 클릭-상위 200개 행 편집] Management Studio를 이용한 내부조인방법에 대해서 알아보도록 하겠습니다. account table 에서 우측 마우스 클릭해서 상위 200개 행 편집을 누르면 위와 같은 그림이 생성됩니다. 그 상태에서 오른쪽 버튼을 다시 클릭하여 다이어그램으로 들어갑니다. 2. 다이어그램 선택 Database Laboratory

join Management Studio를 이용한 inner join 3. [오른쪽 마우스 클릭]-[테이블 추가 클릭]-[테이블추가]- [branch 테이블 추가 클릭]-[닫기] 그럼 다음 다시 오른쪽 마우스를 클릭하여 테이블 추가를 선택하면 ‘테이블 추가’ 가 생성됩니다. 여기서 branch 테이블을 선택하고 추가를 누른 후 닫기 버튼을 클릭합니다. 그러면, Database Laboratory

join Management Studio를 이용한 inner join Database Laboratory 위의 그림과 같이 생성됩니다. Database Laboratory

join Management Studio를 이용한 inner join(표 형태와 질의어 창 생성) 다시 오른쪽 버튼을 누르고 [창]-[조건]을 클릭하시면 표 형태가 생성됩니다. 그리고 Database Laboratory

join Management Studio를 이용한 inner join (표 형태와 질의어 창 생성) 그리고 [창]에서 [SQL]을 누르시면 질의어가 생성되었음을 알 수 있습니다. 질의어를 보시면 ON 다음에 branch_name이 같은 공통조건으로 생성된 것을 확인할 수 있습니다. Database Laboratory

join Management Studio를 이용한 inner join(출력 형태 설정) diagram에서 출력할 column을 선택하거나 표 형태에서 테이블, 열, 정렬순서 등을 설정한 뒤 (실행 버튼)을 클릭하면 Diagram에서 출력할 column을 선택하거나 표 형태에서 테이블, 열, 정렬순서 등을 설정한 뒤에 실행버튼을 클릭하면 Database Laboratory

join Management Studio를 이용한 inner join(결과) Database Laboratory 쿼리 분석기에 내부 조인한 질의어와 같은 질의를 보여주며 결과 또한 같다는 것을 확인 할 수 있습니다. 지금까지 Management Studio를 사용한 내부조인 실습이었습니다. Database Laboratory

Union Union 연산자로 합집합 만들기 account, branch 테이블의 SELECT문 결과를 단일 결과 집합으로 보고 싶을 때 사용한다 유니온 연산자로 합집합을 만들 수 있는데, 이 연산자는 account, branch 테이블의 select 문 결과를 단일 결과 집합으로 보고 싶을 때 사용할 수 있습니다. 질의는 account 테이블에서 잔고가 1000인 모든 컬럼과 branch 테이블에서 자산이 90000000 인 결과를 UNION ALL을 사용하여 합집합 했을 경우 출력결과를 확인 할 수 있습니다. Database Laboratory

subquery subquery 이용하기 서브 쿼리는 단일값을 반환하고 SELECT, INSERT, UPDATE, DELETE 문이나 다른 하위 쿼리 내부에 중첩된 SELECT 쿼리이다 서브 쿼리는 단일 값을 반환하고 SELECT, INSERT, UPDATE, DELETE 문이나 다른 하위 쿼리 내부에 중첩된 SELECT 쿼리를 말합니다. 잔고가 400 달러 이상을 가진 지사이름을 출력한 서브쿼리를 먼저 수행하고 이 결과에 한해서 내포한 쿼리에서는 branch 테이블의 branch_name 과 assets를 출력하라는 질의문을 수행한 결과를 오른쪽 그림에서 보여주고 있습니다. Database Laboratory

subquery EXISTS와 서브 쿼리 EXISTS를 사용하는 것은 서브 쿼리에서 주어진 조건을 만족하는 데이터를 판단하여 존재하는 값들만 검색값으로 반환한다 exists와 서브 쿼리를 함께 사용할 수도 있는데 exists를 사용하는 것은 서브 쿼리에서 주어진 조건을 만족하는 데이터를 판단하여 존재하는 값들만 검색값으로 반환하는 역할을 합니다. 서브 쿼리에서 질의를 먼저 수행 후 내포 한 쿼리를 수행하는 순서로 수행됩니다. 잔고가 400 달러 이하인 branch_name의 결과값에 존재하는 branch_name 과 assets를 출력하라는 질의를 수행하면 Horseneck와 Bennington 시가 출력되었습니다. Database Laboratory

IF ~ ELSE 구문 IF 조건 { sql_statement | statement_block } [ELSE IF~ ELSE 구문을 사용하여 질의를 보여주고 있습니다. IF 조건 다음에는 질의문 또는 질의 문 블록이 한번 이상 반복 될 수 있으며 ELSE 문은 옵션이고 사용된다면 IF에서와 마찬가지로 질의문을 사용할 수 있습니다. 오른쪽 질의문은 account 테이블로부터 잔고의 평균이 300 달러 이상이면 branch 테이블로부터 assets를 출력합니다. 300 달러 미만을 경우에는 잔고가 부족하다라는 메시지를 출력합니다 Database Laboratory

CASE 여러 조건을 평가하고 각 조건에 맞는 단일 값을 반 환하는데 사용한다. Database Laboratory case문에서는 여러 조건을 평가하고 각 조건에 맞는 단일 값을 반환하는데 사용할 수 있습니다. branch 테이블로부터 branch_name를 출력하고 assets를 신용등급으로 나타낼 수 있도록 질의문을 작성하였다. 9000000일 경우는 신용등급이 AAA이고 30000일경우는 신용등급이 D가 출력된 것을 볼 수있으며 when절에 명시하지 않았을 경우는 NULL 값이 출력 됩니다. 그럼 이번 주 온라인 실습을 마치겠습니다. 수고하셨습니다. Database Laboratory

Report 다음 페이지를 참조(column name, data type, length, key)하고 쿼리 분석기 를 반드시 사용하여 customer, loan, borrower table을 만들고 다음과 같은 질의를 한 결과를 출력하여 제출하시오. customer table에 e-mail column을 추가 하는 질의문과 customer table을 열었을 때 결과를 출력하는 질의를 작성하시오 branch_name이 P 로 시작하고 amount가 1500 이상인 loan_number를 출력하는 질의를 작성하시오 amount가 1500 이상이면 5% 이자율을, 1500 이하이면 무조건 3% 이자율을 적 용하였을 경우 한달 동안의 총합과 평균을 구하는 질의를 작성하시오 branch_name 이번주 리포트는 교과서를 참조(column name, data type, length, key)하고 쿼리 분석기를 반드시 사용하여 customer, loan, borrower table을 만들고 다음과 같은 질의를 한 결과를 출력하여 제출하시오. customer table에 e-mail column을 추가 하는 질의문과 customer table을 열었을 때 결과를 출력하는 질의를 작성하시오 branch_name이 P 로 시작하고 amount가 1500 이상인 loan_number를 출력하는 질의를 작성하시오 amount가 1500 이상이면 5% 이자율을, 1500 이하이면 무조건 3% 이자율을 적용하였을 경우 한달 동안의 총합과 평균을 구하는 질의를 작성하시오 Hallym Univ. DB Lab.

Report 만약 loan에서 amount의 평균이 1200 이상일 경우에 branch_name 과 loan_number를 출력하고 그렇지 않을 경우 에는 “대출할 수 없습니다” 라는 메시지를 출력하는 1. 질의 를 작성하고 2.질의 결과를 출력하시오. branch_name 이번주 사이버 강의 리포트는 4 주차 사이버 강의에서 생성한 테이블을 사용하면 됩니다. 만약 loan에서 amount의 평균이 1200 이상일 경우에 branch_name 과 loan_number를 출력하고 그렇지 않을 경우에는 “대출할 수 없습니다” 라는 메시지를 출력하는 1. 질의를 작성하고 2.질의 결과를 출력하면 됩니다. Hallym Univ. DB Lab.

레포트 제출 제출방법 실습 과정을 캡쳐 후 한글, word 파일에 캡쳐 부분에 대한 설명과 SQL구문에 간단한 주석을 넣어서 제출 하시기바 랍니다. 실습 화면 캡쳐 시 자신의 학번 데이터베이스가 보이도록 하시기 바랍니다. dbing@hallym.ac.kr 레포트제출 제출기한 2013년 10월 16일 11시59분까지 Database Laboratory