1.SQL 소개

Download Report

Transcript 1.SQL 소개

Oracle7.0
(SQL & SQL PLUS)
- 신입사원 교육자료
(주)대호네티즌 S/W개발팀
목 차
1. SQL 소개
7. Subquaries
2. 내부 Datatypes
8. Data 처리
3. Operators
9. Table Making
4. Functions
10. View
5. Clauses
11. Index
6. Join
12. 기타
1.SQL 소개
SQL(Structured Query Language, pronounced equel)은 ORACLE D/B환경에서 사용자나 개발자가
사용해야 하는 명령들의 집단임.
자료접근을 위해 반드시
1. SQL 역사
-. 관계형자료 모델은 1970대초 Dr.E.F.Codd에 의하여 처음으로 개발됨.
-. SQL언어는 1970대 중반 IBM의 Pototype Relational Database Managment System에 의해 발전됨.
-. 최초의 SQL언어는 (SEQUEL2)1976 IBM Journal of R&D에 의해 소개되었고,
-. 1979년 ORACLE사가 상업용으로 이용 가능한 SQL의 실행을 소개함.
-. SQL은 IBM의 D/B2와 SQL/DS에서도 실행됨.
-. 현재 SQL은 광범위한 실행과 산업 구조화된 자료접근 언어로 이용됨.
2. SQL 표준
-. ANSI SQL은 3.135-1989 Database Language SQL with Integrity Enhancement or ANSI SQL89에 relational database
managment system의 표준으로 정의.
-. 이는 ANSI X3.135-1986을 대신함과 ANSI SQL Addendum1.에 소개된 무결성 강화를 내포함.
-. ANSI는 ANSI X3.168-1989 atabase Language Embeded SQL에 내장된 SQL의 정의를 표준으로 채택함.
-. 거의 모든 관계형 자료시스템은 SQL형식을 제공하며 ANSI SQL89를 표준으로 사용함.
3. 비처리 언어
-. SQL은 비처리 언어임.
-. 동일 시간대의 하나보다 많은 레코드 처리
-. 자료의 자동처리 제공
4. 모든 사용자를 위한 언어
-.
-.
-.
-.
-.
-.
-.
-.
SQL은 모든 종류의 사용자로부터 모든 종류의 자료활동에 이용.
system administrators
database administrators
security administrators
application programmers
decision support system personnel
many other types of end users
SQL은 모든사용자에게 D/B구성이나 응용를 위한 명령문 제공.
- 1 -
5. 통일된 언어
-
querying data
inserting, updating, and deleting rows in table
creating, replacing, altering, and dropping objects
controlling access to the database and its object
guaranteeing database consistency and integrity
6. 내장된 SQL
-.
-.
-.
-.
모든 SQL명령은 SELET,INSERT와 같이 SQL환경하 상호작용 도구들 안에서 이용 가능.
PREPARE and OPEN은 control명령으로 처리 프로그래밍 언어안에서 표준SQL을 수행.
응용프로그램에 의해 호출되어 어떤 작업을 수행할수 있는 데이터베이스에 내장된 내장 프로시져 작성을 의미.
데이타베이스에 내장된 데이타베이스 시스템은 간단한 스크린과 메뉴 오브젝트를 완전한 툴 키트를 제공.
- 2 -
2. 내부 Datatypes
1.Data types
(1)VARCHR2(size):변수길이인 영숫자 데이터. 최대 2000byte를 갖음.
(2)NUMBER(p.s):Precision의 P와 Scale의 S를 포함. P지정시 1~38까지 S를 지정시 -84~127의 범위.
(3)LONG:문자변수로 확장된 길이를 2GByte 또는 2^31-1까지 확장.
(4)DATA:날자형 포함한 데이터 타입. 예) Jan 1 4712BC - Dec 31 4712 AD
(5)RAW(size):크기가 255Byte까지 가능한 Binary 데이터.
(6)LONG RAW:크기가 Giga_Byte 데이터.
(7)ROWID:Table에서 행의 고유한 Address를 나타내는 16진 문자열.
(8)CHAR(size):1~255문자 사이의 길이를 갖는 영숫자 데이터.
(9)MLSLABLE:O/S Label의 이진형식.
- 3 -
3. Operators
-. O/S label의 이진형식, 이 데이타형식은 주로 확인된 ORACLE에 사용.
-. 이 아이템을 orperands나 arguments라 부름
-. Operator는 특정한 charaters나 keyword로 묘사.
(1) Arithmetic operators
Operators
목
적
예
제
+
-
양수와 음수를 표현
-. 단항(UNARY)연산
SELECT *
FROM orders
WHERE qtysold = -1
*
/
곱하기,나누기 표현
-. 이항(BINARY)연산
UPDATE emp
SET sal = sal * 1.1
+
-
덧셈,뺄셈 표현
-. 이항(BINARY)연산
SELECT sal + comm FROM emp
WHERE sysdate - hiredate > 365
(2) Charater operators
Operators
||
목
적
예
문자 연결
SELECT Name is
FROM orders
제
|| ename
-.문자연결 연산결과는 두 문자열이 서로 다른 문자열로 두 문자열의 자료형식이 같은 CHAR형이면 결과는 이
형식의 제한된 255문자 국한되며, 만약 한쪽이 VARCHR2형이면 결과의 자료 형식은 VARCHR2형으로 제한 범위는
2000문자 형식을 따름.
-.문자열 안의 공백문자는 이 연산자에 의하여 그대로 보존됨.
- 4 -
(3) Comparision operators
Operators
=
목
적
예
일치함을 비교
SELECT * FROM emp
WHERE sal = 1500
!= , ^=, <>
불일치 비교
SELECT * FROM emp
WHERE sal != 1500
>,<,>=,<=
비교연산시(대,소)
IN
NOT IN
제
연산자 다음문장을 수용하는 어떤것이든
충촉하는가를 비교
= ANY
SELECT * FROM emp
WHERE job IN ( AA , BB )
SELECT * FROM emp
WHERE sal IN (SELECT sal FROM emp
WHERE deptno = 30)
위의 연산과 반대의 개념
만약 어떤값이 NULL이면 FALSE로
평가한다
!= ANY
SELECT * FROM emp
WHERE sal NOT IN (SELECT sal
FROM emp
WHERE deptno = 30)
SELECT * FROM emp
WHERE job NOT IN ( AA , BB )
-. NULL 데이터타 베이스 용어에서 NULL은 필드에 데이타 베이스가 없다는 뜻임. 그것은 칼람이 제로거나
빈칸이라는 것을 의미하는 것이 아님. 제로나 빈칸은 값임. NULL은 어떤것도 그 필드안에 없다는 뜻임.
만일 Field = 9와 같은 비교식을 만들어 Field가 NULL이면, 그 비교식은 Unknow으로 돌아 올 것임.
이것은 조건이 불안하여 대부분의 SQL을 선호 하는 사람들은 Unknow를 FASLE로 바꾸어 특정연산자에게
IS NULL을 제공하여 NULL조건을 테스트함. 상당히 많은 로직버그를 추적할경우 NULL값을 비교하지말고
FALSE의 초기값으로 복구하는지 확인함.
- 5 -
Operators
ANY ,SOME
목
적
예
제
리스트안이나 질의에대한 돌아옴으로 각각의
값과 비교.만약값이 Unknow일 경우 FALSE로
판단.
SELECT * FROM emp WHERE sal = ANY
(SELECT sal FROM emp WHERE
depyno = 30)
리스트안이나 질의에대한 돌아옴으로 모든
값과 비교.만약값이 Unknow일 경우 TRUE로
판단.
SELECT * FROM emp WHERE sal >= ALL
(SELECT sal FROM emp WHERE
depyno = 30)
[NOT] BETWEEN
x AND y
[NOT] x이상 y이하의 사이값
SELECT * FROM emp WHERE sal
BETWEEN 2000 AND 3000
EXISTS
LIST안에 단하나의 ROW라조 존재하면
참값을 돌려줌.
SELECT dname, deptno
FROM dept
WHERE EXISTS (SELECT * FROM emp
WHERE dept.deptno=emp.deptno)
x[NOT] LIKE y
[ESCAPE]
x값이 y patterm값이라면 참이됨
%(문자열생략),_(단일문자생략)
escape문으로 선정된 문자는 특수문자도
문자그대로 동일시 됨.
#1 SELECT ename FROM emp
WHERE ename LIKE %A\_B% escape \
IS [NOT] NULL
where절에서는 =null을 사용할수없으며
null 비교시사용
SELECT * FROM emp
where comn IS NULL
ALL
#1. \를 escape문자로보고 _앞에\가 선행하여 이것은 오락클이 해석시 _를 특수문자가 아니 일반문자로 인식
(4) Logical operators
NOT, AND , OR 다른 언어와 내용 동일
- 6 -
(5) SET operators
Operators
목
적
예
제
UNION
두개의 질의 결과를 동일한것은 두번출력을
피하고 결과 리턴
SELECT part FROM order_list1
UNION
SELECT part FROM order_list2
UNION ALL
두개의 질의에 대하여 모든값을 출력
SELECT part FROM order_list1
UNION ALL
SELECT part FROM order_list2
INTERSECT
두개의 질의에의해 발견된 행만을 출력
즉 동일 내용만 출력
SELECT part FROM order_list1
INTERSECT
SELECT part FROM order_list2
MINUS
두번째에 나타나지 않았던 첫번째 질의
에서 행을 리턴한다
SELECT part FROM order_list1
MINUS
SELECT part FROM order_list2
(6) ORTHER operators
(+)
PRIOR
OUT JOIN임을 가르킴
SELECT ename, dname
FROM emp dept
WHERE dept.deptno = emp.deptno (+)
계층또는 트리구조안 에서 현재행에 대한
부모행을 (위한) 평가.
SELECT empno, ename, mgr
FROM emp
CONNECT BY
PRIOR empno = mgr
- 7 -
4. Functions
(1) Number functions
functions
목
적
예
제
CEIL(n)
인수보다 크거나 같은 가장 작은 정수 리턴
SELECT B, CEIL(B) CEILING FROM qsc
FLOOR(n)
인수보다 작거나 같은 가장큰 정수
SELECT B, FLOOR(B) FLOORING FROM qsc
POWER(n,m)
한 수를 다른것의 거듭제곱으로 곱할때 사용
SELECT A, B, POWER(A,B) FROM qsc
COS,COSH,SIN,SINH,TAN,TANH(n)
EXP(n),ABS(n)
LN,LOG(n)
MOD(n,m)
SIGN(n),SQRT(n)
타 언어와 동일
(2) Charater functions
functions
CHR(n)
목
적
예
제
인수의 해당문자 출력
SELECT A CHAR(64)
CONCAT(char1,c2)
문자 결함후 출력
SELECT CONCAT(firname,lasname)
INITCAP(char)
단어의 첫문자만 대문자 이후 소문자로 출력
SELECT INITCAP(lasname)
LOWER(char)
모든문자를 소문자로
SELECT LOWER(firname)
UPPER(char)
모든문자를 대문자로
SELECT UPPER(firname)
- 8 -
functions
목
적
예
제
LPAD(char1,n
[char2])
char1의 내용을 n문자열로출력하되 n이 char1
보다크면 char2를 왼쪽부터 채움
SELECT LPAD( page1,15, * ) FROM sqc
RPAD(char1,n
[char2])
char1의 내용을 n문자열로출력하되 n이 char1
보다크면 char2를 오른쪽부터 채움
SELECT RPAD( page1,15, * ) FROM sqc
LTRIM(char,[set]) SET으로 정의된 문자를 CHAR왼쪽으로부터제거
RTRIM
오른쪽
SELECT LTRIM( xyxXxyLAST WORD , xy )
REPLACE(char,
search_string
[,re_string])
찾는문자열을 re_string으로 대처
SLECT REPLACE( JACK and JUE, J , BL )
SUBSTR
(char,m[,n])
문자열중 m번째 문자부터 n문큼 출력
만약 n이 음수이면 뒤에서 앞으로 출력
SELECT SUBSTR( ABCDEFG ,3,2)
TRANSLATE
(char,from,to)
char은 목적문자열 TO문자열로 수반되는 FROM SELECT DD, TRANCLATE( WE34ER
문자열이있다.FROM문자열에서 발생하는 타켓 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ
문자열의 요소는 TO문자열의 부합되는요소로 9999999999XXXXXXXXXXXXXXXXXXXXXXXXXX
변환.
=> XX99XX
LENGTH(char)
문자 데이타의 길이를 측정 리턴
SELECT LENGTH( LG_MART )
LENGTHB(char)
문자 데이타의 BYTE수를 측정 리턴
SELECT LENGTHB( LG_MART )
- 9 -
(3) Conversion functions
functions
목
적
예
제
TO_CHAR
수를 문자화 함
SELECT TO_CHAR(1234)
TO_NUMBER
문자를 수치화 함
SELECT NAME,TESNUM,TES*TO_NUMBER(NAME)
TO_DATE
문자형을 날자화 함
INSERT INTO (bonus_date)
SELECT TO_DATE(
January 15,1987,11:00 A.M. ,
Month dd, YYYY, HH:MI A.M. ,
NLS_DATE_LANGUAGE = American )
FROM DUAL
(4) Date functions
functions
목
적
예
ADD_MONTHS(d,n)
d로 지정된날에 n달을 더하여 출력
LAST_DAY(d)
d로 지정된 날의 해당월의 마지막 날 출력
SYSDATE
현 시스템의 시각과 날을 출력
MONTHS_BETWEEN
(d1,d2)
d1과d2사이의 값을 구함
서면 결과는 부정적
제
SELECT TO_CHAR(ADD_MONTH(HIREDATE,1),
DD-MON-YYY)
SELECT TO_CHAR(SYSDATE, MM-DD-YYYY
HH24:MI:SS )
d2가d1보다 앞
- 10 -
SELECT MONTHS_BETWEEN
(TO_DATE(02-02-1990,
MM-DD-YYYY
TO_DATE(01-01-1990,
MM-DD-YYYY)
5. Clauses
*
*
*
*
*
WHERE
: 조건문을 첨가 자료를 제한 선택할수있게함
STARTING WITH : LIKE(<exp>%)와 동일 WHERE절에 추가사용
ORDER BY
: 자료를 정렬함
GROUP BY
: 지정자에따라 동일 자료를 묶음
HAVING
: WHERE는 집단 함수에서는 실행하지 않때문에 이를 대처하기위해 사용
EXAM 1)
LG_TABLE
name
part
deposit
선병숙
미용
200,000
윤갑미
경호
23,000
최성자
미용
98,000
이종말
노인
129,000
박숙경
전원
65,000
1)일반 문법
SELECT [DISTINCT | ALL] { * | {[schema.]{table | view |snapshot}.
*|exr} [ [AS] c_alias] [, [schema.]{table
| view |snapshot}.* |exr} [ [AS] c_alias] ]
... }
FROM [schema.]{table | view | snapshot}[@dblink][t_alias]
[,[schema.]{table | view | snapshot}[@dblink][t_alias]...}
[ WHERE condition ]
[ GROUP BY expr [,expr] ...[HAVING condition] ]
[{UNION | UNION ALL | INTERSECT | MINUS} SELECT command ]
[ ORDER BY {expr|position} [ASC|DESC]
[, {expr|position} [ASC|DESC]]...]
1) 테이블 내용 보기
보고자 하는 필드선택(전체선택 *)
SELECT name 이름 , part 부서 , deposit 예금
FORM LG-TABLE
선택된 필드를 지정한 이름으로
(생략시 필드명 그대로)
선택된 필드중 deposit항이 100,000보다
큰것을 선택
WHERE deposit > 100,000
- 11 -
2) 테이블 내용 정렬
정렬함을 정의
SELECT name 이름 , part 부서 , deposit 예금 FORM LG-TABLE
ORDER BY name [ASC] [DESC]
내림차순 정렬
3) 테이블 내용 Grouping
SELECT name 이름 , part 부서 , SUM(deposit)
오름 차순으로 정렬(생략가능)
선택항에 대한 전체 합
FORM LG-TABLE
GROUP BY PART
HAVING deposit > 100,000
part를 기준으로 그룹핑
그룹의 조건문으로 해당항을 그룹핑할때
조건을 제시(WHERE절은 사용 불가)
- 12 -
6. Join
소속 테이블(LGMART)의 해당 필드 지정
1) 등가 조인
SELECT LGMART.NAME, LGMART.PARTNUM, FS.PARTNUM,FS.DESCRITION
FROM LQMART, FS
소속 테이블(FS)의 해당 필드 지정
사용 테이블 지정
공동 필드항을 출력하기 위한 조건문
WHERE LGMART.PARTNUM = FS.PARTNUM
소속 테이블(LGMART)의 해당 필드 지정
2) 비등가 조인
SELECT LGMART.NAME, LGMART.PARTNUM, FS.PARTNUM,FS.DESCRITION
FROM LQMART, FS
소속 테이블(FS)의 해당 필드 지정
사용 테이블 지정
LGMART의 PARTNUM과 FS의PARTNUM을
비교 LGMART.PARTNUM이 큰 RECORD를
출력하기 위한 조건문
WHERE LGMART.PARTNUM > FS.PARTNUM
소속 테이블(LGMART)의 해당 필드 지정
3) 외부 조인
SELECT LGMART.NAME, LGMART.PARTNUM, FS.PARTNUM,FS.DESCRITION
FROM LQMART
소속 테이블(FS)의 해당 필드 지정
사용 테이블중 내부테이블 지정
사용테이블중 외부 테이블 지정과 테이블
추출 조건 지정
JOIN FS ON FS.PARTNUM = 54
- 13 -
4) 테이블 자체조인
SELECT L.NAME, L.PARTNUM, F.NAME, F.PARTNUM
FROM TBL L, TBL F
WHERE L.PARTNUM = F.PARTNUM AND
L.NAME <> F.NAME
동일 테이블을 두가지 이름으로 지정
테이이블안에 PARTNUM은 같고 NAME 은 다른 내용을
찾기 위한 조건문
SELECT * FROM TBL
PARTNUM
=======
54
42
46
23
76
10
76
NAME
====
PEDL
SEATS
TIR
MUBI
ROBI
TAN
CLSH
NAME PARTNUM
==== =======
ROBI
76
CLSH
76
NAME PARTNUM
==== =======
CLSH
76
ROBI
76
- 14 -
7. Subqueries
1) 서브쿼리 만들기
SELECT * FROM ORDERS
WHERE PARTNUM = (SELECT PARTNUM FROM PART
WHERE DESCRIPTION LIKE ROAD%
ORDEREDON
===========
19-MAY-1996
17-JAN-1996
17-JAN-1996
1-JUN-1996
11-JUL-1996
옆의 서브 쿼리는 PART테이블의 DESCRIPTION이 ROAD로
시작하는 레코드의 PARTNUM이 테이블 ORDERS의 PARTNUM과
동일한 항목을 찾음
)
NAME
PARTNUM
QUANTITY REMARKS
========== =========== =========== =======
TRUE WHEEL
76
3 PAID
BIKE SPEC
76
11 PAID
LE SHOPPE
76
5 PAID
AAA BIKE
76
4 PAID
JACKS BIKE
76
14 PAID
2) EXIST 사용하기
SELECT NAME, ORDEREDON FROM ORDERS
WHERE EXISTS (SELECT * FROM ORDERS
WHERE NAME = TRUE WHEEL)
서브쿼리에서 리턴이 단 한항이라도 있는 경우 EXISTS는 참값을 갖고
모든 행을 프린트 함
3) ANY 사용하기(SOME과 동일 또는 IN)
SELECT NAME, ORDEREDON FROM ORDERS
WHERE NAME = ANY(SELECT NAME FROM ORDERS
WHERE NAME = TRUE WHEEL)
ANY는 서브쿼리의 출력을 취해 그것을 쿼리에서 각행과 비교하여 서버
쿼리에서 결과가 있는 쿼리의 각행에 대하여 TRUE를 리턴함.
4) ALL 사용하기
SELECT NAME, ORDEREDON FROM ORDERS
ALL은 서브쿼리의 결과를 취하여 결과가 조건을 충족시킬 경우에만
WHERE NAME <> ALL(SELECT NAME FROM ORDERS
TRUE를 리턴한다. ALL은 옆의 예제와 같이 더블 네가티브로 사용.
WHERE NAME = JACKS BIKE )
- 15 -
7. Subqueries
TABLE PART
**********
PARTNUM
===========
54
42
46
23
76
10
DESCRIPTION
PRICE
==================== ==========
PEDALS
54.25
SEATS
24.50
TIRES
15.25
MOUNTAIN BIKE
350.45
ROAD BIKE
530.00
TANDEM
1200.00
TABLE ORDERS
************
ORDEREDON NAME
PARTNUM
QUANTITY REMARK
=========== ========== ========== =========== =========
15-MAY-1996 TRUE WHEEL
23
6 PAID
19-MAY-1996 TRUE WHEEL
76
3 PAID
2-SEP-1996 TRUE WHEEL
10
1 PAID
30-JUL-1996 BIKE SPEC
54
10 PAID
30-MAY-1996 BIKE SPEC
10
2 PAID
30-JUL-1996 BIKE SPEC
23
8 PAID
17-JAN-1996 BIKE SPEC
76
11 PAID
17-JAN-1996 LE SHOPPE
76
5 PAID
1-JUN-1996 LE SHOPPE
10
3 PAID
1-JUN-1996 AAA BIKE
10
1 PAID
1-JUL-1996 AAA BIKE
76
4 PAID
1-JUL-1996 AAA BIKE
46
14 PAID
11-JUL-1996 JACKS BIKE
76
14 PAID
- 15 -
8. Data 처리
1) INSERT
INSERT INTO PART(PARTNUM,DESCRIPTION,PRICE)
VALUES( 34 , K BIKE , 230.00 )
테이블 PART에 새로운 레코드가 추가 됨
2) UPDATE
UPDATE PART
SET PRICE = 200
WHERE PARTNUM = 10
WHERE절이 TRUE로 평가 되는 주어진 테이블의 모든 레코드에
부합되는값이 업데이트 됨.
3) DELETE
DELETE FROM PART
WHERE PRICE < 50
DELETE문은 해당되는 레코드를 삭제하며 어느 한 필드만을
삭제할 수는 없음.
- 16 -
9. Table 만들기
1) CREATE DATABASE
문법
CREATE DATABASE database_name
2) CREATE TABLE PART( PARTNUM NUMBER,
PART라는 테이블을 생성하되 PARTNUM은 수자형 DESCRIPTION은
문자형21자리로 PRICE는 수자형으로 생성.
DESCRIPTION CHAR(21),
PRICE NUMBER)
3) 기존 테이블에서 테이블 만들기
CREATE TABLE NEW_PART(PARTNUM, DESCRIPTION , PRICE)
AS (SELECT 8 FROM PART WHERE PRICE < 500)
TABLE PART에서 가격이 500이상인 레코드를 NEW_PART으로
테이블을 생성.
4) ALTER TABLE
테이블의 구조를 변경할때 사용
* 칼럼을 기존 테이블에 추가 ALTER TABLE PART
ADD NAME CHAR(20)
* 이미 있었던 칼럼수정
ALTER TABLE PART
MODIFY PARTNUM CHAR(8) [NULL]
5) 데이블 삭제
문법) DROP TABLE table_name
6) 데이타베이스 삭제
문법) DROP TABLE database_name
- 17 -
10. View
1) 뷰의 목적
뷰란 본래 가상 테이블이다. 그들은 복잡한 쿼리를 캡슐화 하는데 사용된다. 일단 데이타 세트에서 뷰가 만들어지면
그 뷰를 다른 테이블로 다룰수 있다. 그러나 뷰 안에서 데이타를 수정 하는데는 특수한 제한이 있음
2) 뷰 일반 문법
CREATE VIEW <view_name> [(column1,column2...)] AS
SELECT <table_name column_name>
FROM <table_name>
* 뷰의 삭제
DROP VIEW view_name
3) 뷰의 SELECT 사용의 제한
* UNION 연산자를 사용할수 없음.
* ORDER BY 절을 사용할수 없음.
4) 뷰를 사용한 데이터 수정의 제한
* DELETE 문은 멀티플 테이블 뷰에서 허용되지 않음
* INSERT 문은 기본 데이터에 사용된 모든 NOT NULL 칼럼이 뷰에 포함되지 않는 한 허용되지 않음
이것은 SQL 프로세서가 NOT NULL 칼럼에 사입할값이 무엇인지 모르기 때문
* 만일 조인 뷰를 통하여 레코드를 삽입 또는 수정한다면 수정된 모든 레코드는 동일한 물리적 테이블에
속하여야 함
* DISTINT 절이 뷰를 만드는데 사용된다면 레코드를 그 뷰 안에서 수정 또는 삽입 할수 없음
- 18 -
11. Index
1) 인덱스의 목적
인덱스를 통한 DAM(Direct Aceess Method)를 사용
2) 일반 문법
CREATE INDEX [schema.] index
ON { [schema.]table (column [!!under!!ASC|DESC]
[, column [!!under!!ASC|DESC]...)
|CLUSTER[schema.]cluster}
[INITRANS integer] [MAXTRANS integer]
[TABLESPACE tablespace]
[STORAGE integer]
[PCTFREE integer]
[NOSORT]
인덱스를 포함하기위한 SCHEMA 생략시 오락클은
사용자 고유의 SCHEMA를 생성한다
인뎃스를 생성코자 하는 테이블
오름차순 , 내림차순 정의
크라스터 인덱스를 일일이 지정하기위해
사용됨. 크라스터는 일반 필드를 가진 테이블
저장하는데 사용되므로 액세스 속도 향상 시킴
그러나 오락클은 크라스터를 자동 생산하지
않으므로 사용자가 생성해야 함
인덱스를위하여 이들은 각항의 값을 인식시킴
인덱스의 테이블 스페이이스를 확보
인덱스를 위한 STORAGE 특징들을 인식시킴.
각각의 인덱스 불럭 안에 수정이나 삽입을 위한 남은 장소의 비율
인덱스 생성시 정렬을 하지않게 함
- 19 -
12. 기타
1) TRANSACTION
자료 사용중의 변화에 대한 대응으로 사용되는 것으로 작업중 자료의 변화를 탐지하여 모든 작업을 Rolled back하여
惡작업을 사전에 예방.
2) CREATE USER
오락클에서 자료의 안전성을 위해 사용자를 제안할 수 있도록 패스워드를 만듬.
3) 역할 만들기 (Role)
⊙ 역
할
CONNECT ROLE
RESOURCE ROLE
DBA ROLE
⊙ 내
용
선택, 삽입, 삭제, 테이블 뷰, 시퀀스, 크러스터, 시노님
CONNECT ROLE이외 프로시저, 트리거, 인덱스
데이터 베이스 시스템에서 원하는 모든것가능
4) PRIVILEGES
사용자에게 특권이 결정되면 사용자가 데이타 베이스에서 어떤 허가를 가질지를 결정. 이것은 시스템 특권과
오브젝트 특권으로 구분.
5) TRIGGER
특수 목적의 작업을 수행하기 위해 만들어진 내장 프로시저이며, 트리거는 수정/삭제/삽입을 위해 프로그래머가
만든 특수 타입의 내장 프로시저.
6) SYNONYM
뷰와 같은 작용.
7) CURSORS
데이타베이스 커서는 프로그램어가 데이타 그룹을 선택하고 커서가 위치한 각각의 개별적인 데이터의 라인을
사용하면서 레코드 그룹을 통하여 이동할수 있게 함. 또한 쿼리의 결과를 나중에 사용하기 위하여 그 값을 저장.
- 20 -
수고하셨습니다.