SlideShare a Scribd company logo
스터디 도서: Microsoft 전문가로 가는 지름길 1 SQL Server 2000
SQL Study Written By 유혜원 1/43
책 본문 PT
 요약 정보 처리
 하위 질의(subquery)
 IN / EXISTS
 상관관계의 하위 질위
(Correlated subquery)
 SELECT INTO
 UNION
 따라하기
 JOIN
 GROUP BY / HAVING
 COMPUTE / COMPUTE BY
 RLLUP 과 CUBE
 하위 질의(subquery)
 IN / EXISTS
 SELECT INTO
 UNION
SQL Study Written By 유혜원 2/43
 JOIN 이란?
정규화된 테이블들에 흩어져 있는 컬럼들을
필요에 의해 다시 모아 올 때 사용하는 것.
 JOIN의 종류
• INNER JOIN
• OUTER JOIN
• SELF JOIN
• NAUTURAL JOIN
• EQUI JOIN
• CROSS JOIN
SQL Study Written By 유혜원 3/43
 가장 일반적인 JOIN.
어떤 JOIN인지 지정하지 않으면,
자동적으로 INNER JOIN이 됨.
 두 테이블에 있는 키 값이 일치하는
데이터만 가져 옴.
[TIP] JOIN은 가능한 ANSI 문법으로 작성하는
것을 권장.
SQL Study Written By 유혜원 4/43
 책 제목과 해당 책의 가격, 출판사 이름
데이터가 담겨 있는 목록을 출력하라.
SELECT title, price, pub_name
FROM titles (INNER) JOIN publishers
ON titles.pub_id = publishers.pub_id
SQL Study Written By 유혜원 5/43
 예제 테이블들의 ER-D
SQL Study Written By 유혜원 6/43
Titles 테이블 Publishers 테이블
•Titles 테이블과 Publishers 테이블의
Pub_id가 같은지 비교한다.
• Pub_id가 같은 행의 내용들을
합친다.
• 합쳐진 내용들을 기준으로
title, price, pub_name 을 출력한다.
SQL Study Written By 유혜원 7/43
SQL Study Written By 유혜원 8/43
 JOIN을 하는 테이블들 중 어느 한 쪽의
데이터를 모두 가져옴.
 실무에서 사용 빈도가 높음.
[TIP] 긴 테이블 이름은 alias(별명)로 대체가능.
여러 테이블에서 사용되는 컬럼의 경우 어느 테이블의 컬럼
데이터를 지칭하는지 사용자와 프로그램 모두 알 수 없기
때문에 컬럼명 앞에 테이블명을 붙여준다.
이 때 긴 테이블명의 경우 타이핑의 편리함을 위해 별명을 지정
하여 대체 가능하다.
SQL Study Written By 유혜원 9/43
 책 번호와 그 책의 판매 수량, 제목 데이터
가 담겨있는 목록을 출력하라.
SELECT t.title_id, qty, title
FROM titles t LEFT OUTER JOIN sales s
ON t.title_id = s.title_id
SQL Study Written By 유혜원 10/43
 예제 테이블들의 ER-D
SQL Study Written By 유혜원 11/43
Titles 테이블 Sales 테이블
•Titles 테이블의 데이터를 가져온다.
•Titles 테이블과 Sales 테이블의
title_id가 같은지 비교한다.
• title_id가 같은 행의 내용들은 합치
고Titles 테이블에 없는 title_id는
NULL값으로 처리한다.
• 합쳐진 내용들을 기준으로
title_id, qty, title 을 출력한다.
SQL Study Written By 유혜원 12/43
SQL Study Written By 유혜원 13/43
 자기 자신을 다시 조인하는 경우.
 자기 자신을 다시 조인하여 똑같은 테이블
이름을 두 번 반복해서 사용하기 때문에
구분을 위해 반드시 alias가 필요.
SQL Study Written By 유혜원 14/43
 작가가 두 명 이상인 책 목록을 출력하라.
SELECT t1.title_id, t1.au_id, t2.au_id
FROM titleauthor t1, titleauthor t2
WHERE t1.title_id = t2.title_id
AND t1.au_id < t2.au_id
ORDER BY t1.title_id
SQL Study Written By 유혜원 15/43
•Titlesauthor테이블을 2번 불러온다.
• 이 때 구분을 위해 각각 다른 별명을
붙여준다.
• 서로 title_id가 같은지 비교한 후,
그 결과값의 au_id를 비교하여 더 큰
au_id값을 가진 경우 출력한다.
SQL Study Written By 유혜원 16/43
SQL Study Written By 유혜원 17/43
 GROUP BY
특정 컬럼을 기준으로 데이터들을 그룹
으로 묶음.
 HAVING
GROUP BY된 데이터들 중 특정 조건을
만족하는 값을 가져옴.
 GROUP BY ALL
WHERE 절 조건을 만족시키지 못한 데이터도
결과에 포함하여 출력.
SQL Study Written By 유혜원 18/43
 책 제목에 따라 전체 팔린 개수의 합을
출력하라.
 이 중 팔린 개수의 합이 30권 이상인 것만
출력하라.
SELECT title_id, sum(qty) AS ‘sum’
FROM sales
GROUP BY title_id
HAVING sum(qty) >= 30
SQL Study Written By 유혜원 19/43
•Title_id 기준으로 그룹핑 한 후,
각Title_id별 총 수량을 구한다.
• 그 중 총 수량이 30 이상인 것만 출력
한다.
SQL Study Written By 유혜원 20/43
 책 목록 중에서 책 판매 수량이 40권을 초
과하는 책의 판매 수량 총 합을 출력하라.
SELECT title_id, sum(qty) AS ‘sum’
FROM sales
WHERE qty > 40
GROUP BY ALL title_id
SQL Study Written By 유혜원 21/43
• title_id 기준으로 그룹핑 한다.
• 수량이 40을 초과하는 경우에만 수량
의 총 합을 계산한다.
• 그룹핑 된 title_id 전체 목록이 출력된
다.
• 총 합의 경우 수량이 40을 초과하는
조건을 만족한 경우에만 그 값을 출력
하고, 나머지는 NULL 값으로 한다.
SQL Study Written By 유혜원 22/43
 상세 내역과 함께 평균이나 합계 등을 같이 출력
하고 싶을 때 사용.
 COMPUTE는 전체에 대한 상세 내용과
산술식 계산값을, COMPUTE BY는 BY 뒤에
오는 컬럼 그룹을 기준으로 그룹핑하여
상세 내역과 산술식 계산값을 출력.
 COMPUTE BY를 사용하려면 ORDER BY가
COMPUTE BY 앞에 반드시 와야만 하고,
ORDER BY에서 지정된 순서 또는 그 일부분의
순서대로 COMPUTE BY를 사용 해야 함.
SQL Study Written By 유혜원 23/43
 책의 종류와 타이틀 아이디, 가격의
상세 데이터와 전체 평균을 출력하라.
SELECT type, title_id, price
FROM titles
COMPUTE avg(price)
SQL Study Written By 유혜원 24/43
SQL Study Written By 유혜원 25/43
 책의 종류를 기준으로 그룹핑하여
책의 종류와 타이틀 아이디, 가격의
상세 데이터와 각 책 종류별 평균을
출력하라.
SELECT type, title_id, price
FROM titles
ORDER BY type
COMPUTE avg(price) BY type
SQL Study Written By 유혜원 26/43
SQL Study Written By 유혜원 27/43
 의미 있는 데이터 통계들을 한꺼번에
볼 수 있도록 해 줌.
 데이터웨어하우징 / 데이터마트 /
데이터마이닝을 SQL 서버에서도 미약하게
나마 지원한 것.
SQL Study Written By 유혜원 28/43
 책의 종류와 출판사별 평균 가격,
책 종류별 평균 가격, 책 전체 평균 가격을
출력하라.
SELECT type , pub_id, AVG(price)
FROM titles
GROUP BY type, pub_id
WITH ROLLUP
SQL Study Written By 유혜원 29/43
SQL Study Written By 유혜원 30/43
 책의 종류와 출판사별 평균 가격,
책 종류별 평균 가격, 책 출판사별 평균 가격,
책 전체 평균 가격을 출력하라.
SELECT type , pub_id, AVG(price)
FROM titles
GROUP BY type, pub_id
WITH CUBE
SQL Study Written By 유혜원 31/43
SQL Study Written By 유혜원 32/43
 SELECT 혹은 INSERT, UPDATE, DELETE
문 안에 들어가 있는 SELECT.
 중첩된 SELECT(Nested SELECT)라고도 함.
 괄호로 묶이고,
하위 질의만 수행해도 수행되며,
안쪽 질의가 먼저, 바깥쪽 질의가 나중에
실행되는 특징을 가짐.
SQL Study Written By 유혜원 33/43
 서점 별 판매 총 수량과 판매 비율을
출력하라.
SELECT stor_id
, qty = sum(qty)
, ratio = round(convert(float, sum(qty))
/ (select sum(qty) from sales) * 100, 2)
FROM sales
GROUP BY stor_id
SQL Study Written By 유혜원 34/43
SQL Study Written By 유혜원 35/43
 하위 질의의 한 형태.
 JOIN으로 대체할 수 있음.
 IN은 괄호 안의 항목과 일치하는 것이
있어야 참이 되지만,
EXISTS는 괄호안에 어떤 것이든 결과만
돌려지면(행만 존재하면) 참이 됨.
SQL Study Written By 유혜원 36/43
 판매된 책 이름 목록을 출력하라.
SELECT title
FROM titles
WHERE title_id IN(
SELECT DISTINCT title_id
FROM sales
)
SQL Study Written By 유혜원 37/43
SQL Study Written By 유혜원 38/43
 business 종류의 책을 출판한 출판사 이름을
출력하라.
SELECT pub_name
FROM publishers
WHERE EXISTS
SELECT *
FROM titles
WHERE pub_id = publishers.pub_id
AND type = ‘business’)
SQL Study Written By 유혜원 39/43
SQL Study Written By 유혜원 40/43
 현재 있는 테이블의 내용 전체나 일부를
선택하여 새로운 테이블로 만들 때 사용.
 새로운 테이블은 임시 테이블과 영구 테이블
두 종류로 만들 수 있음.
SQL Study Written By 유혜원
만드는 방법 사용할 수 있는 범위 삭제되는 시기
일반 테이블 CREATETABLE 다른 세션에서도 DROPTABLE
세션 임시 테이블 #tablename 해당 세션에서만 세션이 끊어질 때
전역 임시 테이블 ##tablename 다른 세션에서도 세션이 끊어질 때
Tempdh의 일반 테이블 CREATETABLE 다른 세션에서도 SQL 서버가 시작될 때
41/43
 비 정규화된 테이블을 연결시키기 위해
사용.
 비 정규화의 기법 중 자주 사용하는 행들의
성능을 높여주기 위해 하나의 테이블을
행을 기준으로 둘 또는 그 이상으로 나누어
사용하는 방법이 있음.
 이렇게 나누어진 테이블을 합칠 때 사용.
SQL Study Written By 유혜원 42/43
감사합니다.
SQL Study Written By 유혜원 43/43

More Related Content

Viewers also liked

(Fios#03) 2. 네트워크 가상화 환경에서의 침해대응
(Fios#03) 2. 네트워크 가상화 환경에서의 침해대응(Fios#03) 2. 네트워크 가상화 환경에서의 침해대응
(Fios#03) 2. 네트워크 가상화 환경에서의 침해대응
INSIGHT FORENSIC
 
System hacking basics
System hacking basicsSystem hacking basics
System hacking basics
gnomekr
 
[20140830, Pycon2014] NetworkX를 이용한 네트워크 분석
[20140830, Pycon2014] NetworkX를 이용한 네트워크 분석[20140830, Pycon2014] NetworkX를 이용한 네트워크 분석
[20140830, Pycon2014] NetworkX를 이용한 네트워크 분석
Kyunghoon Kim
 
[Nux]12 nux
[Nux]12 nux[Nux]12 nux
[Nux]12 nux
jylee_kgit
 
[Info01]introduction
[Info01]introduction[Info01]introduction
[Info01]introduction
JY LEE
 
[I3 d]11 designui(2)
[I3 d]11 designui(2)[I3 d]11 designui(2)
[I3 d]11 designui(2)
jylee_kgit
 
[MSD01]Introduction
[MSD01]Introduction[MSD01]Introduction
[MSD01]Introductionjylee_kgit
 
[Msd12]interface design123
[Msd12]interface design123[Msd12]interface design123
[Msd12]interface design123
jylee_kgit
 
Excel expert 2010 모의고사 문제만
Excel expert 2010 모의고사 문제만Excel expert 2010 모의고사 문제만
Excel expert 2010 모의고사 문제만수진 서
 
Socket.io
Socket.io Socket.io
Socket.io
Minwoo Choi
 
Pdf 이교수의 멘붕하둡_pig
Pdf 이교수의 멘붕하둡_pigPdf 이교수의 멘붕하둡_pig
Pdf 이교수의 멘붕하둡_pig
Michelle Hong
 
[Msd02]mobile servicedesign
[Msd02]mobile servicedesign[Msd02]mobile servicedesign
[Msd02]mobile servicedesignjylee_kgit
 
Directory lists
Directory listsDirectory lists
Directory lists
Ilsun Choi
 
모바일 게임 보안
모바일 게임 보안모바일 게임 보안
모바일 게임 보안
TOAST_NHNent
 
[White Paper] SDN 기반 공격 탐지차단 강화를 위한 네트워크 관리 정보 구성 방안
[White Paper] SDN 기반 공격 탐지차단 강화를 위한 네트워크 관리 정보 구성 방안[White Paper] SDN 기반 공격 탐지차단 강화를 위한 네트워크 관리 정보 구성 방안
[White Paper] SDN 기반 공격 탐지차단 강화를 위한 네트워크 관리 정보 구성 방안
NAIM Networks, Inc.
 
[SOPT] 데이터 구조 및 알고리즘 스터디 - #03 : 정렬 (기본, 효율, 초효율
[SOPT] 데이터 구조 및 알고리즘 스터디 - #03 : 정렬 (기본, 효율, 초효율[SOPT] 데이터 구조 및 알고리즘 스터디 - #03 : 정렬 (기본, 효율, 초효율
[SOPT] 데이터 구조 및 알고리즘 스터디 - #03 : 정렬 (기본, 효율, 초효율
S.O.P.T - Shout Our Passion Together
 
가장 심각한 웹 애플리케이션 보안 위험 10가지-2013
가장 심각한 웹 애플리케이션 보안 위험 10가지-2013가장 심각한 웹 애플리케이션 보안 위험 10가지-2013
가장 심각한 웹 애플리케이션 보안 위험 10가지-2013
봉조 김
 
좋아보이는것들의비밀 인포그래픽 01
좋아보이는것들의비밀 인포그래픽 01좋아보이는것들의비밀 인포그래픽 01
좋아보이는것들의비밀 인포그래픽 01
윤소 최
 
HTML5_security_(next_generation_threats)
HTML5_security_(next_generation_threats)HTML5_security_(next_generation_threats)
HTML5_security_(next_generation_threats)한익 주
 

Viewers also liked (20)

(Fios#03) 2. 네트워크 가상화 환경에서의 침해대응
(Fios#03) 2. 네트워크 가상화 환경에서의 침해대응(Fios#03) 2. 네트워크 가상화 환경에서의 침해대응
(Fios#03) 2. 네트워크 가상화 환경에서의 침해대응
 
System hacking basics
System hacking basicsSystem hacking basics
System hacking basics
 
[20140830, Pycon2014] NetworkX를 이용한 네트워크 분석
[20140830, Pycon2014] NetworkX를 이용한 네트워크 분석[20140830, Pycon2014] NetworkX를 이용한 네트워크 분석
[20140830, Pycon2014] NetworkX를 이용한 네트워크 분석
 
[Nux]12 nux
[Nux]12 nux[Nux]12 nux
[Nux]12 nux
 
[Info01]introduction
[Info01]introduction[Info01]introduction
[Info01]introduction
 
[I3 d]11 designui(2)
[I3 d]11 designui(2)[I3 d]11 designui(2)
[I3 d]11 designui(2)
 
[MSD01]Introduction
[MSD01]Introduction[MSD01]Introduction
[MSD01]Introduction
 
[Msd12]interface design123
[Msd12]interface design123[Msd12]interface design123
[Msd12]interface design123
 
Excel expert 2010 모의고사 문제만
Excel expert 2010 모의고사 문제만Excel expert 2010 모의고사 문제만
Excel expert 2010 모의고사 문제만
 
[Nux]09 nux
[Nux]09 nux[Nux]09 nux
[Nux]09 nux
 
Socket.io
Socket.io Socket.io
Socket.io
 
Pdf 이교수의 멘붕하둡_pig
Pdf 이교수의 멘붕하둡_pigPdf 이교수의 멘붕하둡_pig
Pdf 이교수의 멘붕하둡_pig
 
[Msd02]mobile servicedesign
[Msd02]mobile servicedesign[Msd02]mobile servicedesign
[Msd02]mobile servicedesign
 
Directory lists
Directory listsDirectory lists
Directory lists
 
모바일 게임 보안
모바일 게임 보안모바일 게임 보안
모바일 게임 보안
 
[White Paper] SDN 기반 공격 탐지차단 강화를 위한 네트워크 관리 정보 구성 방안
[White Paper] SDN 기반 공격 탐지차단 강화를 위한 네트워크 관리 정보 구성 방안[White Paper] SDN 기반 공격 탐지차단 강화를 위한 네트워크 관리 정보 구성 방안
[White Paper] SDN 기반 공격 탐지차단 강화를 위한 네트워크 관리 정보 구성 방안
 
[SOPT] 데이터 구조 및 알고리즘 스터디 - #03 : 정렬 (기본, 효율, 초효율
[SOPT] 데이터 구조 및 알고리즘 스터디 - #03 : 정렬 (기본, 효율, 초효율[SOPT] 데이터 구조 및 알고리즘 스터디 - #03 : 정렬 (기본, 효율, 초효율
[SOPT] 데이터 구조 및 알고리즘 스터디 - #03 : 정렬 (기본, 효율, 초효율
 
가장 심각한 웹 애플리케이션 보안 위험 10가지-2013
가장 심각한 웹 애플리케이션 보안 위험 10가지-2013가장 심각한 웹 애플리케이션 보안 위험 10가지-2013
가장 심각한 웹 애플리케이션 보안 위험 10가지-2013
 
좋아보이는것들의비밀 인포그래픽 01
좋아보이는것들의비밀 인포그래픽 01좋아보이는것들의비밀 인포그래픽 01
좋아보이는것들의비밀 인포그래픽 01
 
HTML5_security_(next_generation_threats)
HTML5_security_(next_generation_threats)HTML5_security_(next_generation_threats)
HTML5_security_(next_generation_threats)
 

Recently uploaded

POSTECH Library EndNote21 이용교육 (2024년 2월) 자료
POSTECH Library EndNote21 이용교육 (2024년 2월) 자료POSTECH Library EndNote21 이용교육 (2024년 2월) 자료
POSTECH Library EndNote21 이용교육 (2024년 2월) 자료
POSTECH Library
 
[배포용] 코코아팹 교육 콘텐츠 선택 가이드_2024.06.17.update
[배포용] 코코아팹 교육 콘텐츠 선택 가이드_2024.06.17.update[배포용] 코코아팹 교육 콘텐츠 선택 가이드_2024.06.17.update
[배포용] 코코아팹 교육 콘텐츠 선택 가이드_2024.06.17.update
FabLabKoCoA
 
코딩 테스트 합격자 되기 C++ 10장 집합에 대한 강의 자료 입니다.
코딩 테스트 합격자 되기 C++ 10장 집합에 대한 강의 자료  입니다.코딩 테스트 합격자 되기 C++ 10장 집합에 대한 강의 자료  입니다.
코딩 테스트 합격자 되기 C++ 10장 집합에 대한 강의 자료 입니다.
ultrasuperrok
 
모빌투_캡스톤 최종pptx ~~~~~~~~~~~~~~~~~~~~~~~~~
모빌투_캡스톤 최종pptx ~~~~~~~~~~~~~~~~~~~~~~~~~모빌투_캡스톤 최종pptx ~~~~~~~~~~~~~~~~~~~~~~~~~
모빌투_캡스톤 최종pptx ~~~~~~~~~~~~~~~~~~~~~~~~~
202102904
 
학교 시설복합화의 이해와 사전기획에 대해 일본과 독일 사례를 중심으로 정리 20240623.pdf
학교 시설복합화의 이해와 사전기획에 대해 일본과 독일 사례를 중심으로 정리 20240623.pdf학교 시설복합화의 이해와 사전기획에 대해 일본과 독일 사례를 중심으로 정리 20240623.pdf
학교 시설복합화의 이해와 사전기획에 대해 일본과 독일 사례를 중심으로 정리 20240623.pdf
Seongwon Kim
 
코딩 테스트 합격자 되기 C++ 09장 트리에 대한 강의 자료 입니다.
코딩 테스트 합격자 되기 C++ 09장 트리에 대한 강의 자료  입니다.코딩 테스트 합격자 되기 C++ 09장 트리에 대한 강의 자료  입니다.
코딩 테스트 합격자 되기 C++ 09장 트리에 대한 강의 자료 입니다.
ultrasuperrok
 

Recently uploaded (6)

POSTECH Library EndNote21 이용교육 (2024년 2월) 자료
POSTECH Library EndNote21 이용교육 (2024년 2월) 자료POSTECH Library EndNote21 이용교육 (2024년 2월) 자료
POSTECH Library EndNote21 이용교육 (2024년 2월) 자료
 
[배포용] 코코아팹 교육 콘텐츠 선택 가이드_2024.06.17.update
[배포용] 코코아팹 교육 콘텐츠 선택 가이드_2024.06.17.update[배포용] 코코아팹 교육 콘텐츠 선택 가이드_2024.06.17.update
[배포용] 코코아팹 교육 콘텐츠 선택 가이드_2024.06.17.update
 
코딩 테스트 합격자 되기 C++ 10장 집합에 대한 강의 자료 입니다.
코딩 테스트 합격자 되기 C++ 10장 집합에 대한 강의 자료  입니다.코딩 테스트 합격자 되기 C++ 10장 집합에 대한 강의 자료  입니다.
코딩 테스트 합격자 되기 C++ 10장 집합에 대한 강의 자료 입니다.
 
모빌투_캡스톤 최종pptx ~~~~~~~~~~~~~~~~~~~~~~~~~
모빌투_캡스톤 최종pptx ~~~~~~~~~~~~~~~~~~~~~~~~~모빌투_캡스톤 최종pptx ~~~~~~~~~~~~~~~~~~~~~~~~~
모빌투_캡스톤 최종pptx ~~~~~~~~~~~~~~~~~~~~~~~~~
 
학교 시설복합화의 이해와 사전기획에 대해 일본과 독일 사례를 중심으로 정리 20240623.pdf
학교 시설복합화의 이해와 사전기획에 대해 일본과 독일 사례를 중심으로 정리 20240623.pdf학교 시설복합화의 이해와 사전기획에 대해 일본과 독일 사례를 중심으로 정리 20240623.pdf
학교 시설복합화의 이해와 사전기획에 대해 일본과 독일 사례를 중심으로 정리 20240623.pdf
 
코딩 테스트 합격자 되기 C++ 09장 트리에 대한 강의 자료 입니다.
코딩 테스트 합격자 되기 C++ 09장 트리에 대한 강의 자료  입니다.코딩 테스트 합격자 되기 C++ 09장 트리에 대한 강의 자료  입니다.
코딩 테스트 합격자 되기 C++ 09장 트리에 대한 강의 자료 입니다.
 

Sql study 20101113 유혜원

  • 1. 스터디 도서: Microsoft 전문가로 가는 지름길 1 SQL Server 2000 SQL Study Written By 유혜원 1/43
  • 2. 책 본문 PT  요약 정보 처리  하위 질의(subquery)  IN / EXISTS  상관관계의 하위 질위 (Correlated subquery)  SELECT INTO  UNION  따라하기  JOIN  GROUP BY / HAVING  COMPUTE / COMPUTE BY  RLLUP 과 CUBE  하위 질의(subquery)  IN / EXISTS  SELECT INTO  UNION SQL Study Written By 유혜원 2/43
  • 3.  JOIN 이란? 정규화된 테이블들에 흩어져 있는 컬럼들을 필요에 의해 다시 모아 올 때 사용하는 것.  JOIN의 종류 • INNER JOIN • OUTER JOIN • SELF JOIN • NAUTURAL JOIN • EQUI JOIN • CROSS JOIN SQL Study Written By 유혜원 3/43
  • 4.  가장 일반적인 JOIN. 어떤 JOIN인지 지정하지 않으면, 자동적으로 INNER JOIN이 됨.  두 테이블에 있는 키 값이 일치하는 데이터만 가져 옴. [TIP] JOIN은 가능한 ANSI 문법으로 작성하는 것을 권장. SQL Study Written By 유혜원 4/43
  • 5.  책 제목과 해당 책의 가격, 출판사 이름 데이터가 담겨 있는 목록을 출력하라. SELECT title, price, pub_name FROM titles (INNER) JOIN publishers ON titles.pub_id = publishers.pub_id SQL Study Written By 유혜원 5/43
  • 6.  예제 테이블들의 ER-D SQL Study Written By 유혜원 6/43
  • 7. Titles 테이블 Publishers 테이블 •Titles 테이블과 Publishers 테이블의 Pub_id가 같은지 비교한다. • Pub_id가 같은 행의 내용들을 합친다. • 합쳐진 내용들을 기준으로 title, price, pub_name 을 출력한다. SQL Study Written By 유혜원 7/43
  • 8. SQL Study Written By 유혜원 8/43
  • 9.  JOIN을 하는 테이블들 중 어느 한 쪽의 데이터를 모두 가져옴.  실무에서 사용 빈도가 높음. [TIP] 긴 테이블 이름은 alias(별명)로 대체가능. 여러 테이블에서 사용되는 컬럼의 경우 어느 테이블의 컬럼 데이터를 지칭하는지 사용자와 프로그램 모두 알 수 없기 때문에 컬럼명 앞에 테이블명을 붙여준다. 이 때 긴 테이블명의 경우 타이핑의 편리함을 위해 별명을 지정 하여 대체 가능하다. SQL Study Written By 유혜원 9/43
  • 10.  책 번호와 그 책의 판매 수량, 제목 데이터 가 담겨있는 목록을 출력하라. SELECT t.title_id, qty, title FROM titles t LEFT OUTER JOIN sales s ON t.title_id = s.title_id SQL Study Written By 유혜원 10/43
  • 11.  예제 테이블들의 ER-D SQL Study Written By 유혜원 11/43
  • 12. Titles 테이블 Sales 테이블 •Titles 테이블의 데이터를 가져온다. •Titles 테이블과 Sales 테이블의 title_id가 같은지 비교한다. • title_id가 같은 행의 내용들은 합치 고Titles 테이블에 없는 title_id는 NULL값으로 처리한다. • 합쳐진 내용들을 기준으로 title_id, qty, title 을 출력한다. SQL Study Written By 유혜원 12/43
  • 13. SQL Study Written By 유혜원 13/43
  • 14.  자기 자신을 다시 조인하는 경우.  자기 자신을 다시 조인하여 똑같은 테이블 이름을 두 번 반복해서 사용하기 때문에 구분을 위해 반드시 alias가 필요. SQL Study Written By 유혜원 14/43
  • 15.  작가가 두 명 이상인 책 목록을 출력하라. SELECT t1.title_id, t1.au_id, t2.au_id FROM titleauthor t1, titleauthor t2 WHERE t1.title_id = t2.title_id AND t1.au_id < t2.au_id ORDER BY t1.title_id SQL Study Written By 유혜원 15/43
  • 16. •Titlesauthor테이블을 2번 불러온다. • 이 때 구분을 위해 각각 다른 별명을 붙여준다. • 서로 title_id가 같은지 비교한 후, 그 결과값의 au_id를 비교하여 더 큰 au_id값을 가진 경우 출력한다. SQL Study Written By 유혜원 16/43
  • 17. SQL Study Written By 유혜원 17/43
  • 18.  GROUP BY 특정 컬럼을 기준으로 데이터들을 그룹 으로 묶음.  HAVING GROUP BY된 데이터들 중 특정 조건을 만족하는 값을 가져옴.  GROUP BY ALL WHERE 절 조건을 만족시키지 못한 데이터도 결과에 포함하여 출력. SQL Study Written By 유혜원 18/43
  • 19.  책 제목에 따라 전체 팔린 개수의 합을 출력하라.  이 중 팔린 개수의 합이 30권 이상인 것만 출력하라. SELECT title_id, sum(qty) AS ‘sum’ FROM sales GROUP BY title_id HAVING sum(qty) >= 30 SQL Study Written By 유혜원 19/43
  • 20. •Title_id 기준으로 그룹핑 한 후, 각Title_id별 총 수량을 구한다. • 그 중 총 수량이 30 이상인 것만 출력 한다. SQL Study Written By 유혜원 20/43
  • 21.  책 목록 중에서 책 판매 수량이 40권을 초 과하는 책의 판매 수량 총 합을 출력하라. SELECT title_id, sum(qty) AS ‘sum’ FROM sales WHERE qty > 40 GROUP BY ALL title_id SQL Study Written By 유혜원 21/43
  • 22. • title_id 기준으로 그룹핑 한다. • 수량이 40을 초과하는 경우에만 수량 의 총 합을 계산한다. • 그룹핑 된 title_id 전체 목록이 출력된 다. • 총 합의 경우 수량이 40을 초과하는 조건을 만족한 경우에만 그 값을 출력 하고, 나머지는 NULL 값으로 한다. SQL Study Written By 유혜원 22/43
  • 23.  상세 내역과 함께 평균이나 합계 등을 같이 출력 하고 싶을 때 사용.  COMPUTE는 전체에 대한 상세 내용과 산술식 계산값을, COMPUTE BY는 BY 뒤에 오는 컬럼 그룹을 기준으로 그룹핑하여 상세 내역과 산술식 계산값을 출력.  COMPUTE BY를 사용하려면 ORDER BY가 COMPUTE BY 앞에 반드시 와야만 하고, ORDER BY에서 지정된 순서 또는 그 일부분의 순서대로 COMPUTE BY를 사용 해야 함. SQL Study Written By 유혜원 23/43
  • 24.  책의 종류와 타이틀 아이디, 가격의 상세 데이터와 전체 평균을 출력하라. SELECT type, title_id, price FROM titles COMPUTE avg(price) SQL Study Written By 유혜원 24/43
  • 25. SQL Study Written By 유혜원 25/43
  • 26.  책의 종류를 기준으로 그룹핑하여 책의 종류와 타이틀 아이디, 가격의 상세 데이터와 각 책 종류별 평균을 출력하라. SELECT type, title_id, price FROM titles ORDER BY type COMPUTE avg(price) BY type SQL Study Written By 유혜원 26/43
  • 27. SQL Study Written By 유혜원 27/43
  • 28.  의미 있는 데이터 통계들을 한꺼번에 볼 수 있도록 해 줌.  데이터웨어하우징 / 데이터마트 / 데이터마이닝을 SQL 서버에서도 미약하게 나마 지원한 것. SQL Study Written By 유혜원 28/43
  • 29.  책의 종류와 출판사별 평균 가격, 책 종류별 평균 가격, 책 전체 평균 가격을 출력하라. SELECT type , pub_id, AVG(price) FROM titles GROUP BY type, pub_id WITH ROLLUP SQL Study Written By 유혜원 29/43
  • 30. SQL Study Written By 유혜원 30/43
  • 31.  책의 종류와 출판사별 평균 가격, 책 종류별 평균 가격, 책 출판사별 평균 가격, 책 전체 평균 가격을 출력하라. SELECT type , pub_id, AVG(price) FROM titles GROUP BY type, pub_id WITH CUBE SQL Study Written By 유혜원 31/43
  • 32. SQL Study Written By 유혜원 32/43
  • 33.  SELECT 혹은 INSERT, UPDATE, DELETE 문 안에 들어가 있는 SELECT.  중첩된 SELECT(Nested SELECT)라고도 함.  괄호로 묶이고, 하위 질의만 수행해도 수행되며, 안쪽 질의가 먼저, 바깥쪽 질의가 나중에 실행되는 특징을 가짐. SQL Study Written By 유혜원 33/43
  • 34.  서점 별 판매 총 수량과 판매 비율을 출력하라. SELECT stor_id , qty = sum(qty) , ratio = round(convert(float, sum(qty)) / (select sum(qty) from sales) * 100, 2) FROM sales GROUP BY stor_id SQL Study Written By 유혜원 34/43
  • 35. SQL Study Written By 유혜원 35/43
  • 36.  하위 질의의 한 형태.  JOIN으로 대체할 수 있음.  IN은 괄호 안의 항목과 일치하는 것이 있어야 참이 되지만, EXISTS는 괄호안에 어떤 것이든 결과만 돌려지면(행만 존재하면) 참이 됨. SQL Study Written By 유혜원 36/43
  • 37.  판매된 책 이름 목록을 출력하라. SELECT title FROM titles WHERE title_id IN( SELECT DISTINCT title_id FROM sales ) SQL Study Written By 유혜원 37/43
  • 38. SQL Study Written By 유혜원 38/43
  • 39.  business 종류의 책을 출판한 출판사 이름을 출력하라. SELECT pub_name FROM publishers WHERE EXISTS SELECT * FROM titles WHERE pub_id = publishers.pub_id AND type = ‘business’) SQL Study Written By 유혜원 39/43
  • 40. SQL Study Written By 유혜원 40/43
  • 41.  현재 있는 테이블의 내용 전체나 일부를 선택하여 새로운 테이블로 만들 때 사용.  새로운 테이블은 임시 테이블과 영구 테이블 두 종류로 만들 수 있음. SQL Study Written By 유혜원 만드는 방법 사용할 수 있는 범위 삭제되는 시기 일반 테이블 CREATETABLE 다른 세션에서도 DROPTABLE 세션 임시 테이블 #tablename 해당 세션에서만 세션이 끊어질 때 전역 임시 테이블 ##tablename 다른 세션에서도 세션이 끊어질 때 Tempdh의 일반 테이블 CREATETABLE 다른 세션에서도 SQL 서버가 시작될 때 41/43
  • 42.  비 정규화된 테이블을 연결시키기 위해 사용.  비 정규화의 기법 중 자주 사용하는 행들의 성능을 높여주기 위해 하나의 테이블을 행을 기준으로 둘 또는 그 이상으로 나누어 사용하는 방법이 있음.  이렇게 나누어진 테이블을 합칠 때 사용. SQL Study Written By 유혜원 42/43

Editor's Notes

  1. ANSI SQL: 표준 문법 T-SQL: Microsoft SQL 서버에서만 사용하는 문법
  2. 별명 사용법에 대해서는 뒤의 예제를 통해 알아보자.
  3. 상관관계의 하위 질의,줄여서 상관 하위 질의도 있다. 이것은 바깥쪽 질의와 안쪽 질의가 서로 영향을 주어, 안쪽 질의만으로는 실행이 되지 않는다. 성능향상을 위해서는 하위 질의, 상관 하위 질의는 가급적 사용하지 말아야 한다. 특히, 상관 하위 질의는 피하도록 한다.