PowerPoint 프레젠테이션

Download Report

Transcript PowerPoint 프레젠테이션

데이터베이스 프로그래밍
(소프트웨어 개발 트랙)
2005. 01. 15
SQL (2) - 함수, 뷰
1
제 1부 고급 SQL
오라클 데이터 처리 함수
뷰
SQL (2) - 함수, 뷰
2
오라클 데이터 처리 함수
문자
처리
함수
CHR / ASCII
문자 / ASCII
LOWER / UPPER
소문자 / 대문자
INITCAP
첫 글자만 대문자로 변환
LPAD / RPAD
왼쪽 / 오른쪽에서 문자열
LTRIM / RTRIM
왼쪽 / 오른쪽 빈칸 삭제
REPLACE
문자열 치환
SUBSTR / SUBSTRB
문자열 잘라내기 / byte 기준
LENGTH / LENGTHB
문자열 길이 / byte 기준
INSTR / INSTRB
문자열의 위치를 찾음 / byte 기준
SQL (2) - 함수, 뷰
3
오라클 데이터 처리 함수
숫자
처리
함수
날짜
처리
함수
CEIL
소수점에서 올림
MOD
나머지 값
POWER
승수
ROUND
반올림
TRUNC
버림
SIGN
양수 / 음수 구분
SYSDATE
현재 날짜와 시간
LAST_DAY
해당 월의 마지막 날짜
MONTHS_BETWEEN
두 기간 사이의 개월 수
ADD_MONTHS
월수 더하고 빼기
NEXT_DAY
다음 첫번째 해당 요일의 날짜
SQL (2) - 함수, 뷰
4
오라클 데이터 처리 함수
변환
함수
기타
TO_CHAR
문자로 치환
TO_NUMBER
숫자로 치환
TO_DATE
날짜로 치환
NVL
Null 처리 함수
DECODE
연속 조건문
USERENV
환경 값
GREATEST / LEAST
최대값 / 최소값
UID / USER
User ID / User 명
SQL (2) - 함수, 뷰
5
오라클 데이터 처리 함수

DUAL 테이블



SYS 사용자가 소유하는 것으로 모든 사용자가 질의 가능
dummy 라는 단 하나의 컬럼에 X 라는 단 하나의 레코드만을
갖는 테이블
일시적인 산술연산이나 가상 컬럼등의 값을 보고 싶을 때 많이 사용
SQL (2) - 함수, 뷰
6
문자 처리 함수 – 문자 변환

CHR, ASCII


ASCII 값을 문자로, 문자를 ASCII 값으로 변환
사용법


CHR (n)
ASCII (char)
SQL (2) - 함수, 뷰
7
문자 처리 함수 – 대소문자 변환

LOWER, UPPER, INITCAP 함수

LOWER : 문자열을 모두 소문자로

UPPER : 문자열을 모두 대문자로


INITCAP : 문자열에 속한 각 단어별로 첫 글자를 대문자로,
나머지는 소문자로
사용법

LOWER(컬럼명 | 문자열)

UPPER(컬럼명 | 문자열)

INITCAP(컬럼명 | 문자열)
SQL (2) - 함수, 뷰
8
문자 처리 함수 – 대소문자 변환

예) SCOTT 사용자의 EMP 테이블 사용

SELECT empo, ename FROM emp
WHERE empno < 7600;
SQL (2) - 함수, 뷰
9
Cont.
select empno, UPPER(ename)
from emp
where empno<7600;
select empno, LOWER(ename)
from emp
where empno<7600;
select empno, INITCAP(ename)
from emp
where empno<7600;
SQL (2) - 함수, 뷰
10
Cont.
select empno, ename, job
from emp
where empno<7600;
select empno, ename
from emp
where LOWER(job) = 'manager';
SQL (2) - 함수, 뷰
11
문자 처리 함수- 문자열 조작

문자열 조작 함수

LPAD



RPAD



n 자리만큼의 공간에서 char1을 왼쪽에 붙이고, 남는 자리는
char2 로 채움
RPAD(char1, n, char2)
REPLACE


n 자리만큼의 공간에서 char1을 오른쪽에 붙이고, 남는 자리는
char2 로 채움
LPAD(char1, n, char2)
문자나 문자열을 치환
REPLACE (char1, char2, char3)

char1의 char2를 char3 으로 변환
SQL (2) - 함수, 뷰
12
문자 처리 함수- 문자열 조작
SQL (2) - 함수, 뷰
13
문자 처리 함수- 문자열 조작
SQL (2) - 함수, 뷰
14
문자 처리 함수- 문자열 조작

문자열 조작

SUBSTR, SUBSTRB


SUBSTR(char, n)


char의 n번째 자리부터 문자열 끝까지 돌려줌
SUBSTR(char, n, m)


문자열의 일부를 돌려줌
char의 n번째 자리부터 m번째에 해당하는 문자열을 돌려줌
SUBSTRB(char, n, m)

byte 단위로 char의 n번째 자리부터 m번째에 해당하는
문자열을 돌려줌
SQL (2) - 함수, 뷰
15
문자 처리 함수- 문자열 조작
SQL (2) - 함수, 뷰
16
문자 처리 함수- 문자열 조작
SQL (2) - 함수, 뷰
17
문자 처리 함수- 문자열 조작

LENGTH, LENGTHB : 문자열의 길이

LENGTH(char)


char 길이 반환
LENGTHB(char)

byte 단위로 char 길이 반환
SQL (2) - 함수, 뷰
18
문자 처리 함수- 문자열 조작
SQL (2) - 함수, 뷰
19
문자 처리 함수- 문자열 조작

INSTR, INSTRB : 문자열 속에서 특정 문자나 문자열의
위치를 알려줌

INSTR (char1, char2, n, m)



char1 문자열 중에서 char2 가 포함된 문자열의 위치가
char1 기준으로 앞에서 몇 번째 있는지 알려줌.
단, n번째 위치부터 시작해서 m 번째로 char2와 같은 위치를 돌려줌
INSTRB (char1, char2, n, m)


byte 단위로 char1 문자열 중에서 char2 가 포함된 문자열의 위치가
char1 기준으로 앞에서 몇 번째 있는지 알려줌.
단, n번째 위치부터 시작해서 m 번째로 char2와 같은 위치를 돌려줌
SQL (2) - 함수, 뷰
20
문자 처리 함수- 문자열 조작
SQL (2) - 함수, 뷰
21
문자 처리 함수- 문자열 조작
SQL (2) - 함수, 뷰
22
문자 처리 함수- 공백 제거

LTRIM, RTRIM : 공백문자 (Space) 제거

LTRIM (char)


char의 맨 왼쪽부분에 있는 공백제거
RTRIM (char)

char의 맨 오른쪽부분에 있는 공백제거
SQL (2) - 함수, 뷰
23
문자 처리 함수- 공백 제거
SQL (2) - 함수, 뷰
24
숫자 처리 함수 - CEIL

CEIL – 소수점 이하의 값이 존재하면 무조건 올림

CEIL (n)
SQL (2) - 함수, 뷰
25
숫자 처리 함수 – MOD, POWER

MOD : 나머지 값 구하는 함수


MOD(n, m)
POWER : 승수 값을 구하는 함수

POWER(n, m) : n의 m 승 값
SQL (2) - 함수, 뷰
26
숫자 처리 함수 – MOD, POWER
SQL (2) - 함수, 뷰
27
숫자 처리 함수 – ROUND, TRUNC

ROUND : 반올림값을 구하는 함수

ROUND(n,m) : n은 계산할 숫자, m 은 정수값

m == 0 : n의 소수점 첫째자리에서 반올림,
ROUND(n)과 같음


m > 0 : n의 소수점 (m+1) 자리에서 반올림

m < 0 : n의 10의 (-m) 자리에서 반올림
TRUNC : 버림 값을 구하는 함수

TRUNC(n,m) : n은 계산할 숫자, m 은 정수값
SQL (2) - 함수, 뷰
28
숫자 처리 함수 – ROUND, TRUNC
SQL (2) - 함수, 뷰
29
숫자 처리 함수 – SIGN

SIGN : 해당 값이 양수이면 1, 음수이면 –1, 0이면 0을 돌려줌

SIGN(n) : n 값을 1, 0, -1 로 바꾸어줌
SQL (2) - 함수, 뷰
30
날짜 처리 함수 - SYSDATE

SYSDATE


지금 현재의 날짜와 시간을 의미하고, 기본 값으로 오늘
날짜를 돌려줌
SYSDATE
SQL (2) - 함수, 뷰
31
날짜 처리 함수 – LAST_DAY

LAST_DAY : 해당 날짜의 월의 마지막 날짜

LAST_DAY(date)

date 일자의 해당 월의 마지막 날짜
SQL (2) - 함수, 뷰
32
날짜 처리 함수 – MONTHS_BETWEEN

MONTHS_BETWEEN : 두 날짜사이의 기간을 월 단위로 계산

MONTHS_BETWEEN (date1, date2)

date1과 date2 의 기간을 월 단위로 계산,
date1이 date2보다 클 경우가 양수의 결과
SQL (2) - 함수, 뷰
33
날짜 처리 함수 – MONTHS_BETWEEN
SQL (2) - 함수, 뷰
34
날짜 처리 함수 – ADD_MONTHS

ADD_MONTHS : 해당 일을 월 단위로 해서 이후/이전 날짜로
바꾸어줌

ADD_MONTHS (date, n)

date의 n 개월 후를 계산
SQL (2) - 함수, 뷰
35
날짜 처리 함수 – NEXT_DAY

NEXT_DAY : 해당 일을 기준으로 주어진 요일이 처음 오는
날짜를 돌려줌

NEXT_DAY(date, 요일)


date를 기준으로 [요일]에 해당하는 바로 다음 날짜를 구함
[요일]의 표현방법은 숫자로도 가능

일 : 1, 월 : 2, 화 : 3, 수 : 4, 목 : 5, 금 : 6, 토 : 7
SQL (2) - 함수, 뷰
36
날짜 처리 함수 – NEXT_DAY
SQL (2) - 함수, 뷰
37
변환 함수 – TO_CHAR

TO_CHAR : 문자로 변환

TO_CHAR(n)


n 을 문자로 변환
TO_CHAR(n, format)

n 을 format 형식의 문자로 변환
n
format
format
1000
‘9,999.99’
‘9G999D99’
1234567.890
‘9,999,999.999’
‘9G999G999D999’
3.5
‘9,999.99’
‘9G999D99’
1234
‘999,99’
‘999G999’
SQL (2) - 함수, 뷰
38
변환 함수 – TO_CHAR

TO_CHAR(date, format)

date를 format 형식의 문자로 변환
date
sysdate
예제
format
‘YYYYMMDD’
‘20040201’
‘YYYY/MM/DD’
‘2004/02/01’
‘YYYY-MM-DD’
‘2004-02-01’
‘YYYY/MM/DD HH24MISS’
‘20040201 132910’
‘YYYY/MM/DD HHMISS AM’
‘20040201 012910 PM’
‘YYYY/MM/DD HH24:MI:SS’
‘2004/02/01 13:29:10’
‘YYYY/MM/DD HH24:MI:SS:SSSSS’
‘2004/02/01 13:29:10:7880’
SQL (2) - 함수, 뷰
39
변환 함수 – TO_CHAR
SQL (2) - 함수, 뷰
40
변환 함수 – TO_CHAR
SQL (2) - 함수, 뷰
41
변환 함수 – TO_NUMBER

TO_NUMBER : 형태만 숫자인 문자를 숫자로 변환


TO_NUMBER(char)

숫자로 이루어진 char를 문자로 변환.

char 가 숫자 모양이 아닌 a, b, 가, 나 처럼 일반 문자이면 에러 발생
TO_NUMBER(char, format)

format 에 맞는 형태의 숫자로 이루어진 char를 숫자로 변환.

단, format의 크기가 최소한 char보다는 커야 한다
SQL (2) - 함수, 뷰
42
변환 함수 – TO_NUMBER
SQL (2) - 함수, 뷰
43
변환 함수 – TO_DATE

TO_DATE : 형태가 날짜인 문자를 DATE 로 변환

TO_DATE (char)


날짜로 이루어진 char 를 날짜로 변환
TO_DATE (char, format)

format 에 맞는 형태의 날짜로 이루어진 char 를 날짜로 변환
SQL (2) - 함수, 뷰
44
변환 함수 – TO_DATE
SQL (2) - 함수, 뷰
45
변환 함수 – TO_DATE
SQL (2) - 함수, 뷰
46
기타 - NVL

NVL : 해당 컬럼이 null 일 경우에 대신할 문자나 숫자 등을 대신
사용할 수 있게 하는 함수

NVL(컬럼명, 대신할 데이터)

해당 컬럼의 데이터가 null 일 경우 대신한 데이터가 대신 사용되고,
아닌 경우에는 원래 데이터를 사용
SQL (2) - 함수, 뷰
47
Cont.
SQL (2) - 함수, 뷰
48
기타 - DECODE

DECODE : 연속적인 조건문

DECODE (a,b,c,d)


a가 b이면 c이고, 아니면 d
DECODE (a,b,c,d,e,f)

a가 b이면 c이고, d이면 e이고 아니면 f
SQL (2) - 함수, 뷰
49
기타 - USERENV

USERENV : 지금 사용 중인 오라클의 몇 가지 환경변수 값을
알수 있음

USERENV(‘LANGUAGE’)


USERENV(‘TERMINAL’)


현재 설치되어있는 오라클의 언어
컴퓨터 이름
USERENV(‘SESSIONID’)

세션 ID
SQL (2) - 함수, 뷰
50
기타 - USERENV
SQL> SELECT USERENV('LANGUAGE') "LANGUAGE",
USERENV('TERMINAL') "TERMINAL",
USERENV('SESSIONID') "SESSIONID"
FROM DUAL;
LANGUAGE
---------------------------------------------------TERMINAL
SESSIONID
------------------------------ ---------AMERICAN_AMERICA.KO16KSC5601
pts/0
127744
SQL (2) - 함수, 뷰
51
기타 – GREATEST, LEAST

GREAST, LEAST : 나열한 데이터 중에서 가장 큰 값과
가장 작은 값을 찾음.

GREAST(n1, n2, n3,…,char1, char2, char3,..)

LEAST (n1, n2, n3,…,char1, char2, char3,..)
SQL (2) - 함수, 뷰
52
기타 – GREATEST, LEAST
SQL (2) - 함수, 뷰
53
기타 – UID, USER

UID, USER : 사용자 ID와 사용자의 OWNER 를 알려줌
SQL (2) - 함수, 뷰
54
뷰

뷰 개요

뷰 생성

뷰 구조 확인

뷰 수정

뷰 를 통한 데이터 변경
SQL (2) - 함수, 뷰
55
뷰

뷰 (View)


하나이상의 테이블로부터 유도된 이름을 가진 가상 테이블
(virtual table)
구문
CREATE [OR REPLACE] VIEW view_name
[column1, column2, ….]
AS
Select statement
SQL (2) - 함수, 뷰
56
뷰

예 1: 학생(STUDENT) 테이블의 컴퓨터학과 학생들로
컴퓨터과 학생(CSTUDENT) 라는 뷰 생성
SQL (2) - 함수, 뷰
57
뷰
SQL (2) - 함수, 뷰
58
뷰

예2:
SQL (2) - 함수, 뷰
59
뷰

예 3 : 두 개 이상의 테이블을 연관하여 정의
SQL (2) - 함수, 뷰
60
뷰의 구조 및 이름 확인

USER_VIEWS 데이터 사전 테이블
SQL (2) - 함수, 뷰
61
뷰의 수정

OR REPLACE 옵션 사용
SQL (2) - 함수, 뷰
62
뷰를 통한 데이터 변경


뷰가 하나의 테이블을 사용하고, 적절한 권한이 있다면 INSERT,
UPDATE, DELETE 문을 사용하여 뷰가 참조하는 테이블의 데이터
변경 가능
WITH CHECK OPTION 절 사용

뷰를 통해 수행되는 INSERT 와 UPDATE는 WITH CHECK
OPTION 절이 있으면 삽입되거나 갱신되는 데이터에 대해
무결성 제약조건과 데이터 검증 체크를 한다.

READ ONLY 옵션 사용

뷰에서 삽입, 갱신, 삭제가 불가능해진다.
SQL (2) - 함수, 뷰
63
뷰를 통한 데이터 변경

예1
SQL> UPDATE CSTUDENT
2 SET
S_YEAR = 3
3 WHERE S_ID = '20011234';
1 row updated.
SQL> select s_id, s_name, s_year
2 from cstudent;
S_ID
S_NAME
S_YEAR
---------- ---------- ---------20011234 신경화
3
20011235 서용만
4
20011236 정주영
4
SQL (2) - 함수, 뷰
64
뷰를 통한 데이터 변경

예2
SQL> CREATE OR REPLACE VIEW
2 CSTUDENT_YEAR4 (S_ID, S_NAME, S_YEAR)
3 AS
4 SELECT S_ID, S_NAME, S_YEAR
5 FROM
STUDENT
6 WHERE S_MAJOR= '컴퓨터학과' AND S_YEAR=4
7 WITH CHECK OPTION CONSTRAINT
8 CSTUDENT_YEAR4_CK;
SQL (2) - 함수, 뷰
65
뷰를 통한 데이터 변경

예2
SQL> UPDATE CSTUDENT_YEAR4
2 SET
S_YEAR = 3
3 WHERE S_ID = '20011234';
UPDATE CSTUDENT_YEAR4
*
ERROR at line 1:
ORA-01402: view WITH CHECK OPTION where-clause violation
SQL (2) - 함수, 뷰
66
뷰를 통한 데이터 변경

예 3 : READ ONLY 옵션 사용
SQL> CREATE OR REPLACE VIEW
2 MSTUDENT (S_ID, S_NAME, S_YEAR)
3 AS
4 SELECT S_ID, S_NAME, S_YEAR
5 FROM
STUDENT
6 WHERE S_MAJOR= '멀티미디어학과'
7 WITH READ ONLY;
View created.
SQL (2) - 함수, 뷰
67
뷰를 통한 데이터 변경
SQL> SELECT * FROM MSTUDENT;
S_ID
S_NAME
S_YEAR
---------- ---------- ---------20023451 김영철
3
20012454 정태웅
4
20012456 정진영
4
SQL> DELETE FROM MSTUDENT
2 WHERE S_ID='20023451';
DELETE FROM MSTUDENT
*
ERROR at line 1:
ORA-01752: cannot delete from view
without exactly one key-preserved table
SQL (2) - 함수, 뷰
68
뷰 삭제


뷰는 데이터베이스에서 기본 테이블을 기반으로 하기 때문에
데이터 손실없이 뷰 삭제 가능
구문
DROP VIEW view_name;

예
SQL> DROP VIEW MSTUDENT;
View dropped.
SQL (2) - 함수, 뷰
69