5장 sql 언어 part iii - uosstatlearn.uos.ac.kr/2013/grad_advprog_spring/chapter5-3.pdf ·...

13
5¥ SQL ‚· Part III =t YP ˜Yü =t (YP ˜Yü) 5¥ SQL ‚· Part III 1 / 13

Upload: others

Post on 23-Jan-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 5장 SQL 언어 Part III - UOSstatlearn.uos.ac.kr/2013/grad_advprog_spring/chapter5-3.pdf · ä(——˛: ROLLUP, CUBE, COMPUTE ј0¥D ˜ð°’\GROUP BY @hØ pt0— \2 ( fl} (

5장 SQL 언어 Part III

박창이

서울시립대학교 통계학과

박창이 (서울시립대학교 통계학과) 5장 SQL 언어 Part III 1 / 13

Page 2: 5장 SQL 언어 Part III - UOSstatlearn.uos.ac.kr/2013/grad_advprog_spring/chapter5-3.pdf · ä(——˛: ROLLUP, CUBE, COMPUTE ј0¥D ˜ð°’\GROUP BY @hØ pt0— \2 ( fl} (

SQL 함수

스칼라 함수

수학 함수

문자열 함수

날짜 함수

통계 관련 집계 함수

교재 표 참조

박창이 (서울시립대학교 통계학과) 5장 SQL 언어 Part III 2 / 13

Page 3: 5장 SQL 언어 Part III - UOSstatlearn.uos.ac.kr/2013/grad_advprog_spring/chapter5-3.pdf · ä(——˛: ROLLUP, CUBE, COMPUTE ј0¥D ˜ð°’\GROUP BY @hØ pt0— \2 ( fl} (

SQL 함수: 수학 함수

(예제 1) 0과 1사이의 난수 하나 생성

SELECT RAND() as RN

(예제 2) 테이블 Score 필드 값의 제곱근

SELECT ID, SQRT(Score) as SQRTScore

FROM Score

박창이 (서울시립대학교 통계학과) 5장 SQL 언어 Part III 3 / 13

Page 4: 5장 SQL 언어 Part III - UOSstatlearn.uos.ac.kr/2013/grad_advprog_spring/chapter5-3.pdf · ä(——˛: ROLLUP, CUBE, COMPUTE ј0¥D ˜ð°’\GROUP BY @hØ pt0— \2 ( fl} (

SQL 함수: 문자열 함수

(예제 1) Customer Info 테이블의 주민등록번호에서 왼쪽 두 자리

값을 검색

SELECT CID, LEFT(SID,2) as BirthYear

FROM Customer Info

(예제 2) Customer OnlineInfo 테이블에서 password 의 길이 검색

SELECT CID, LEN(LPW) as LengthofPassword

FROM Customer OnlineInfo

박창이 (서울시립대학교 통계학과) 5장 SQL 언어 Part III 4 / 13

Page 5: 5장 SQL 언어 Part III - UOSstatlearn.uos.ac.kr/2013/grad_advprog_spring/chapter5-3.pdf · ä(——˛: ROLLUP, CUBE, COMPUTE ј0¥D ˜ð°’\GROUP BY @hØ pt0— \2 ( fl} (

SQL 함수: 날짜 함수

(예제 1) Customer OnlineInfo 테이블에 CID=‘999999’,

LID=‘id=99’, LPW=‘pw=999’, Email=null, Jday=현재날짜 인

레코드 삽입

INSERT INTO Customer OnlineInfo

VALUES (‘999999’, ‘id=99’, ‘pw=999’, null, GETDATE() )

(예제 2) Customer Info 테이블에서 고객들의 나이를 내림차순으로

검색

SELECT CID, Name, year(GETDATE())-year(Bday) as Age

FROM Customer Info

ORDER BY Age DESC

박창이 (서울시립대학교 통계학과) 5장 SQL 언어 Part III 5 / 13

Page 6: 5장 SQL 언어 Part III - UOSstatlearn.uos.ac.kr/2013/grad_advprog_spring/chapter5-3.pdf · ä(——˛: ROLLUP, CUBE, COMPUTE ј0¥D ˜ð°’\GROUP BY @hØ pt0— \2 ( fl} (

SQL 함수: 통계 관련 집계 함수

(예제 1) Customer Info 테이블의 전체 레코드 수, 고객 나이의

평균과 합 검색

SELECT COUNT(*) as countAll, AVG(

year(GETDATE())-year(Bday) ) as averAge, SUM(

year(GETDATE())-year(Bday) ) as sumAge

FROM Customer Info

(예제 2) Customer Info 테이블의 전체 레코드 수, 고객 나이의

표준편차를 계산 SELECT COUNT(*) as countAll, STDEV(

year(GETDATE())-year(Bday)) as sampleSTDEV, STDEVP(

year(GETDATE())-year(Bday)) as popSTDEV

FROM Customer Info

박창이 (서울시립대학교 통계학과) 5장 SQL 언어 Part III 6 / 13

Page 7: 5장 SQL 언어 Part III - UOSstatlearn.uos.ac.kr/2013/grad_advprog_spring/chapter5-3.pdf · ä(——˛: ROLLUP, CUBE, COMPUTE ј0¥D ˜ð°’\GROUP BY @hØ pt0— \2 ( fl} (

다차원분석: ROLLUP, CUBE, COMPUTE

집계 기능을 가진 연산자로 GROUP BY 와 함께 데이터에 대한 2

차적 요약

(예제 1) 교과목 테이블과 성적 테이블을 조인하여 과목별 평균

성적 계산

SELECT SubjectName, AVG(Score) as averScore

FROM Score as S INNER JOIN Curriculum as C

ON S.SubjectID=C.SubjectID

GROUP BY SubjectName

박창이 (서울시립대학교 통계학과) 5장 SQL 언어 Part III 7 / 13

Page 8: 5장 SQL 언어 Part III - UOSstatlearn.uos.ac.kr/2013/grad_advprog_spring/chapter5-3.pdf · ä(——˛: ROLLUP, CUBE, COMPUTE ј0¥D ˜ð°’\GROUP BY @hØ pt0— \2 ( fl} (

(예제 2) 교과목 테이블과 성적 테이블을 조인하여 전체 평균,

학번별 평균 성적 계산(Group By, Rollup 사용)

SELECT ID, SubjectName, AVG(Score) as averScore

FROM Score as S INNER JOIN Curriculum as C

ON S.SubjectID=C.SubjectID

GROUP BY ID, SubjectName WITH ROLLUP

ORDER BY ID

(예제 3) 교과목 테이블과 성적 테이블을 조인하여 전체 평균,

학번별, 과목별 평균 성적 계산 (Group By, Cube 사용)

SELECT ID, SubjectName, AVG(Score) as averScore

FROM Score as S INNER JOIN Curriculum as C

ON S.SubjectID=C.SubjectID

GROUP BY ID, SubjectName WITH CUBE

ORDER BY ID

박창이 (서울시립대학교 통계학과) 5장 SQL 언어 Part III 8 / 13

Page 9: 5장 SQL 언어 Part III - UOSstatlearn.uos.ac.kr/2013/grad_advprog_spring/chapter5-3.pdf · ä(——˛: ROLLUP, CUBE, COMPUTE ј0¥D ˜ð°’\GROUP BY @hØ pt0— \2 ( fl} (

(예제 4) 교과목 테이블과 성적 테이블을 조인하여 전체 평균,

학번별 평균 성적 계산(Compute 사용)

SELECT ID, SubjectName, Score

FROM Score as S INNER JOIN Curriculum as C

ON S.SubjectID=C.SubjectID

ORDER BY ID, SubjectName

COMPUTE AVG(Score) BY ID

COMPUTE AVG(Score)

박창이 (서울시립대학교 통계학과) 5장 SQL 언어 Part III 9 / 13

Page 10: 5장 SQL 언어 Part III - UOSstatlearn.uos.ac.kr/2013/grad_advprog_spring/chapter5-3.pdf · ä(——˛: ROLLUP, CUBE, COMPUTE ј0¥D ˜ð°’\GROUP BY @hØ pt0— \2 ( fl} (

데이터베이스 객체 정의

뷰(View): 하나 이상의 테이블로부터 유도되어 만들어진 가상

테이블

실제 데이터가 저장되지 않음

테이블처럼 데이터 삽입, 갱신이 가능하지만 때론 제약이 따름

ALTER 문은 사용할 수 없음

저장 프로시저(stored procedure): 데이터베이스에 미리 컴파일

되어 저장해 놓은 SQL 문장

질의 처리 속도 향상

업무처리 루틴 공유

네트워크 트래픽 감소

트리거(trigger): 테이블에 삽입, 갱신, 삭제 등의 사건이 일어날 때

자동적으로 수행되는 저장 프로시저

박창이 (서울시립대학교 통계학과) 5장 SQL 언어 Part III 10 / 13

Page 11: 5장 SQL 언어 Part III - UOSstatlearn.uos.ac.kr/2013/grad_advprog_spring/chapter5-3.pdf · ä(——˛: ROLLUP, CUBE, COMPUTE ј0¥D ˜ð°’\GROUP BY @hØ pt0— \2 ( fl} (

데이터베이스 객체 정의: 뷰

(예제)

CREATE VIEW Student Customer (CID, Name, Job, Sex)

as SELECT CID, Name, Job, Sex

FROM Customer Info

WHERE Job=‘학생’

WITH CHECK OPTION

뷰 제거

DROP VIEW Student Customer

박창이 (서울시립대학교 통계학과) 5장 SQL 언어 Part III 11 / 13

Page 12: 5장 SQL 언어 Part III - UOSstatlearn.uos.ac.kr/2013/grad_advprog_spring/chapter5-3.pdf · ä(——˛: ROLLUP, CUBE, COMPUTE ј0¥D ˜ð°’\GROUP BY @hØ pt0— \2 ( fl} (

데이터베이스 객체 정의: 저장 프로시저

생성

CREATE PROCEDURE sp CustomerInfo

AS

SELECT COUNT(*) as CountAll, AVG(

year(getdate())-year(Bday) ) as averAge, SUM(

year(getdate())-year(Bday) ) as sumAge

FROM Customer Info

실행

EXECUTE sp CustomerInfo

제거

DROP PROCEDURE sp CustomerInfo

박창이 (서울시립대학교 통계학과) 5장 SQL 언어 Part III 12 / 13

Page 13: 5장 SQL 언어 Part III - UOSstatlearn.uos.ac.kr/2013/grad_advprog_spring/chapter5-3.pdf · ä(——˛: ROLLUP, CUBE, COMPUTE ј0¥D ˜ð°’\GROUP BY @hØ pt0— \2 ( fl} (

데이터베이스 객체 정의: 저장 프로시저

생성

CREATE TRIGGER cust delTrigger

ON Customer Info

FOR DELETE

AS

DELETE Customer OnlineInfo

WHERE CID IN ( SELECT CID

FROM Customer Info )

제거

DROP TRIGGER cust delTrigger

박창이 (서울시립대학교 통계학과) 5장 SQL 언어 Part III 13 / 13