Professional Documents
Culture Documents
C bn
MC LC
MC LC ...
...1
...5
..5
.5
..5
...5
..5
...6
.6
..7
..7
.7
.9
..9
...9
..9
..9
..10
..11
...11
.11
...12
.13
..15
..17
...17
...17
..18
.19
..20
...20
..20
..21
...23
..23
.23
...23
.24
..24
.26
.30
...32
...34
...34
...35
..36
.36
..36
..36
Trang 1
..36
..36
...39
.40
...40
..40
.40
.40
.41
...41
..42
...43
...43
..43
.44
...44
..44
..45
..46
...50
.50
..50
...51
..51
...52
52
52
53
54
54
54
55
55
55
56
56
56
56
57
58
58
58
58
59
59
59
59
60
60
60
60
61
61
62
62
Trang 2
...62
..63
..64
.64
...64
.65
...65
.66
...66
..66
..67
...68
...68
..68
.69
...69
...69
..69
..70
...71
...71
..71
..71
...72
..73
.73
..74
...74
..76
...76
...76
...76
...77
..77
...78
...78
...78
.78
...79
..81
...81
...81
..82
..82
...82
...83
..84
...84
..84
.85
...85
Trang 3
PH LC ...
A - TI LIU THAM KHO ...
B - DANH MC CC HNH V...
.85
.86
...86
.86
..87
...88
..88
..88
...89
...89
...89
...90
.90
...91
..91
.91
..92
...92
...92
..93
..95
..95
..96
.97
..97
...97
.98
...99
...100
...100
...101
.101
..102
...103
.103
..103
Trang 4
Din gii
Table
Row
Column
Field
Primary Key
Trang 5
Constraints
Row
DEPT
EMPNO
ENAME
7369
SMITH
20
7499
ALLEN
30
10
ACCOUNTING
7521
WARD
30
20
RESEARCH
7566
JONES
20
30
SALES
7654
MARTIN
30
7698
BLAKE
30
40
OPERATIONS
EMP
DEPT
DEPTNO
DEPTNO
DNAME
Foreign key
7782
CLARK
10
Primary key
Column
Hnh v 1. Minh ho cc thnh phn logic trong database
Din gii
Table
View
Sequence
Index
Synonym
Tn tng ng ca i tng
Program unit
Din gii
SELECT
L lnh thng dng nht, dng ly, xem d liu trong CSDL.
INSERT
UPDATE
DELETE
Trang 6
GRANT
REVOKE
DEPT
EMP
SALGRADE
BONUS
DUMMY
Hnh v 2. M hnh d liu thc hnh
Kiu
iu kin
PRIMARY KEY
Din gii
M phng ban
DEPTNO
NUMBER(2)
DNAME
VARCHAR2(14)
Tn phng ban
LOC
VARCHAR2(13)
a ch
Bng SALGRADE
Tn ct
Kiu
iu kin
PRIMARY KEY
Din gii
GRADE
NUMBER
LOSAL
NUMBER
Gi tr thp nht
HISAL
NUMBER
Gi tr cao nht
Mc lng
Trang 7
Bng EMP
Tn ct
Kiu
iu kin
EMPNO
NUMBER(4)
PRIMARY KEY
ENAME
VARCHAR2(10)
JOB
VARCHAR2 (9)
MGR
NUMBER(4)
HIREDATE
DATE
SAL
NUMBER(7,2)
Lng
COMM
NUMBER(7,2)
DEPTNO
NUMBER(2) NOT
NULL,
Din gii
M nhn vin
Tn nhn vin
Ngh nghip
FOREIGN KEY
(EMP.EMPNO)
M ngi qun l
Thng
FOREIGN KEY
(DEPT.DEPTNO)
M phng ban
Trang 8
[DISTINCT ]
table;
Vi:
SELECT
DISTINCT
column
alias
FROM table
V d:
SELECT
FROM emp;
Trang 10
2.1.5. Gi tr NULL
Ct c gi tr rng (NULL) l ct cha c gn gi tr, ni cch khc n cha c khi to gi tr. Cc ct
vi bt c kiu d liu no cng c th c tr NULL, tr khi c n l kha hay c rng buc ton vn NOT
NULL. Trong biu thc c bt k gi tr NULL no kt qu cng l NULL.
V d:
SELECT ename,
FROM emp;
sal*12
comm
ANUAL_SAL
Nu mun chn cc nhn vin c comm l NULL th phi dng ton t IS NULL
SELECT * FROM emp WHERE comm IS NULL;
SQL*Plus
Nhn dng lnh SQL v gi lnh ln
Server
Tu thuc vo tng phin bn ca Oracle Khng
thao tc vi d liu trong database
Cu lnh c ti trc tip khng thng qua b
m
Cu lnh c th vit tt
C s dng k t kt thc lnh khi thc hin Khng i hi phi c k t kt thc lnh
S dng cc hm trong vic nh dng d
liu
Din gii
Mi trng
nh dng d liu
Thao tc file
Son tho
Tng tc
Cc lnh khc
<user_name>/<password>[@<database>];
Vi:
user_name
password
database
Tn truy nhp
Mt khu truy nhp
Tn database truy nhp
V d:
Conn
Tester/tester@DB1;
<table_name>;
Vi:
table_name
V d:
Desc
Name
DEPTNO
DNAME
LOC
Dept;
Null?
Type
NOT NULL
NUMBER(2)
VARCHAR2(14)
VARCHAR2(13)
Din gii
A[PPEND] text
C[HANGE] /old/new
C[HANGE] /text/
CL[EAR] BUFF[ER]
DEL
Xo dng hin ti
DEL n
Xo dng n
DEL m n
Xo dng t m n n
I[NPUT]
I[NPUT] text
L[IST]
Lit k dng n
L[IST] m n
Lit k dng m n n
R[UN]
Nhy n dng n
N text
0 text
ng 1
Din gii
ED[IT]
ED[IT]filename [.ext ]
EXIT
C php:
SPOOL OFF
Tn lnh
Din gii
CLE[AR]
Xo nh dng ca column
FOR[MAT] format
HEA[DING] text
t nhn co column
JUS[TIFY] align
NOPRI[NT]
n column
NUL[L] text
PRI[NT}
Hin th column
TRU[NCATED]
WRA[PPED]
Cc loi nh dng
nh dng
Din gii
V d
Kt qu
An
999999
1234
Hin th c s 0
099999
01234
$Hin thi $
$9999
$1234
Hin th k t L
L9999
L1234
9999.99
1234.00
9,999
1,234
L
,
2.3.BI TP
1. Chn ton b thng tin trong bng SALGRADE
GRADE
LOSAL
HISAL
1
2
3
4
5
700
1201
1401
2001
3001
1200
1400
2000
3000
9999
KING
BLAKE
CLARK
JONES
MARTIN
ALLEN
TURNER
JAMES
WARD
FORD
SMITH
SCOTT
ADAMS
MILLER
PRESIDENT
MANAGER
MANAGER
MANAGER
SALESMAN
SALESMAN
SALESMAN
CLERK
SALESMAN
ANALYST
CLERK
ANALYST
CLERK
CLERK
7839
7839
7839
7698
7698
7698
7698
7698
7566
7902
7566
7788
7782
17-11-1981
01-05-1981
09-06-1981
02-04-1981
28-09-1981
20-02-1981
08-09-1981
03-12-1981
22-02-1981
03-12-1981
17-12-1980
09-12-1982
12-01-1983
23-01-1982
SAL COMM
5000
2850
2450
2975
1250
1600
1500
950
1250
3000
800
3000
1100
1300
1400
300
0
500
DEPTNO
10
30
10
20
30
30
30
30
30
20
20
20
20
10
Trang 15
60000
34200
29400
35700
16400
19500
18000
11400
15500
36000
9600
36000
13200
15600
Trang 16
Hnh v 4. Hn ch d liu tr v
Vi:
column
alias
table
condition
tn ct d liu tr v
tiu ca ct d liu tr v
tn bng truy vn d liu
mnh iu kin lc d liu tr v
Mnh WHERE dng t iu kin cho ton b cu lnh truy vn. Trong mnh WHERE c th c cc
thnh phn:
Tn column
Ton t so snh
Tn column, hng s hoc danh sch cc gi tr
V d:
SELECT DEPTNO, JOB, ENAME, SAL
FROM EMP
WHERE SAL BETWEEN 1000 AND 2000 ;
Trang 17
EMPNO,
ENAME,
SAL
EMPNO,
ENAME,
SAL
Din gii
Ton t bng hay tng ng
Ton t khc hay khng tng ng
Ton t ln hn
<
Ton t nh hn
>=
<=
Cc ton t ca SQL
Ton t
[NOT] BETWEEN x AND y
IN (danh sch):
x [NOT] LIKE y
IS [NOT] NULL
EXISTS
Din gii
[Khng] ln hn hoc bng x v nh hn hoc bng y Thuc bt k gi
tr no trong danh sch
ng nu x [khng] ging khung mu y
Cc k t dng trong khun mu:
Du gch di (_)
:
Ch mt k t bt k
Du phn trm (%) : Ch mt nhm k t bt k
Kim tra gi tr rng
Tr v TRUE nu c tn ti
Trang 18
Cc ton t logic
Ton t
Din gii
NOT
Ph nh mnh
AND
OR
Ton t
Cc ton t so snh
2
3
4
NOT
AND
OR
IN (danh sch)
Chn nhn vin c lng bng mt trong 2 gi tr 1400 hoc 3000
SELECT * FROM emp WHERE sal IN (1400, 3000);
x [NOT] LIKE y
Tm nhn vin c tn bt u bng chui SMITH
SELECT * FROM emp WHERE
ename LIKE 'SMITH_';
V k hiu "_" dng i din cho mt k t bt k nn nu khng c mnh ESCAPE, cu lnh trn s
tm tt c cc nhn vin tn AAB, ABB, ACB, v.v...
Nu mun k hiu "_" mang ngha nguyn thy, tc l khng cn i din cho k t bt k na, ta t du
"\" trc k hiu. ng thi khai bo thm mnh ESCAPE "\"
Trang 19
Ta cng c th dng mt k t bt k thay cho "\". Chng hn mnh sau c cng kt qu vi mnh trn
SELECT ename FROM emp WHERE ename LIKE '%A^_B%'; ESCAPE '^';
3.2.SP XP D LIU TR V
3.2.1. Mnh ORDER BY
C php:
SELECT [DISTINCT ] {*, column [alias],...}
FROM table;
[WHERE condition]
[ORDER BY expr/position [DESC/ASC]];
Mnh ORDER BY dng sp xp s liu c hin th v phi t v tr sau cng ca cu lnh truy
vn.
V d:
SELECT ENAME, JOB,
FROM EMP
ORDER BY ENAME;
SAL*12,
DEPTNO
Trang 20
Order gi tr NULL
Ring i vi gi tr NULL, nu sp xp theo th t ASCENDING s nm cc v tr cui cng.
Ch : C th ch nh sp xp theo th t cc column trong mnh SELECT.
V d:
SELECT DEPTNO, JOB, ENAME, SAL
FROM EMP
ORDER BY 2;
3.3.BI TP
1. Chn nhn vin trong bng EMP c mc lng t 1000 n 2000 (chn cc trng
ENAME, DEPTNO, SAL).
ENAME
DEPTNO
SAL
30
30
30
30
20
10
1600
1250
1250
1500
1100
1300
ALLEN
WARD
MARTIN
TURNER
ADAMS
MILLER
ACCOUNTING
OPERATIONS
RESEARCH
SALES
ADAMS CLERK
CLARK MANAGER
FORD
ANALYST
JONES MANAGER
KING
PRESIDENT
MILLER CLERK
SCOTT ANALYST
SMITH CLERK
MGR HIREDATE
7788
7839
7566
7839
12-01-1983
09-06-1981
03-12-1981
02-04-1981
17-11-1981
7782 23-01-1982
7566 09-12-1982
7902 17-12-1980
20
10
20
20
10
10
20
20
4. Hin th tn v ngh nghip nhng nhn vin lm ngh th k (cleck) ti phng 20.
ENAME
JOB
SMITH
ADAMS
CLERK
CLERK
Trang 21
6. Hin th tn nhn vin, ngh nghip, lng ca nhng nhn vin c gim c qun
l.
ENAME
JOB
SAL
SMITH
ALLEN
WARD
JONES
MARTIN
BLAKE
CLARK
SCOTT
TURNER
ADAMS
JAMES
FORD
MILLER
CLERK
SALESMAN
SALESMAN
MANAGER
SALESMAN
MANAGER
MANAGER
ANALYST
SALESMAN
CLERK
CLERK
ANALYST
CLERK
800
1600
1250
2975
1250
2850
2450
3000
1500
1100
950
3000
1300
13 rows selected.
7. Hin th tn nhn vin, m phng ban, ngy gia nhp cng ty sao cho gia nhp cng
ty trong nm 1983.
ENAME
DEPTNO HIREDATE
ADAMS
20 12-JAN-83
COMM
300
0
500
Trang 22
Chng 4. CC HM SQL
4.1.TNG QUAN V HM SQL
4.1.1. Cu trc hm SQL
Hm SQL l mt c im lm tng kh nng s dng cu lnh SQL. Hm SQL c th nhn nhiu tham s
vo v tr v ch mt gi tr.
Hm
SQL
mt
im
sau:
Trang 23
Din gii
ROUND(n[,m])
TRUNC(n[,m])
CEIL(n)
FLOOR(n)
POWER(m,n)
Cho ly tha bc n ca m
EXP(n)
Cho gi tr ca en
SQRT(n)
Cho cn bc 2 ca n, n>=0
SIGN(n)
Cho du ca n.
n<0 c SIGN(n)= -1
n=0 c SIGN(n)= 0
n>0 c SIGN(n)= 1
ABS(n)
Cho gi tr tuyt i
MOD(m,n)
Din gii
Cho logarit c s m ca n
Tr v cosin ca n (n tnh bng radian)
Trang 24
TAN(n)
V d hm ROUND(n[,m])
SELECT
ROUND(4.923,1),
ROUND(4.923),
ROUND(4.923,-1),
ROUND(4.923,2)
FROM DUMMY;
ROUND(4.923,1) ROUND(4.923) ROUND(4.923,-1) ROUND(4.923,2)
4.9
4.92
V d hm TRUNC(n[,m])
SELECT
TRUNC (4.923,1),
TRUNC (4.923),
TRUNC (4.923,-1),
TRUNC (4.923,2)
FROM DUMMY;
TRUNC(4.923,1) TRUNC(4.923) TRUNC(4.923,-1) TRUNC(4.923,2)
4.9
4.92
V d hm CEIL(n)
SELECT
CEIL (SAL), CEIL(99.9),CEIL(101.76), CEIL(-11.1)
FROM EMP
WHERE SAL BETWEEN 3000 AND 5000;
CEIL(SAL) CEIL(99.9) CEIL(101.76) CEIL(-11.1)
5000
3000
3000
100
100
100
102
102
102
-11
-11
-11
V d hm FLOOR(n)
SELECT FLOOR (SAL), FLOOR (99.9), FLOOR (101.76), FLOOR (-11.1)
FROM EMP
WHERE SAL BETWEEN 3000 AND 5000;
FLOOR(SAL) FLOOR(99.9) FLOOR(101.76) FLOOR(-11.1)
5000
3000
3000
99
99
99
101
101
101
-12
-12
-12
POWER(SAL,3),
POWER(50,5)
V d hm POWER(m,n)
SELECT SAL, POWER(SAL,2),
FROM EMP
WHERE DEPTNO =10;
5000
2450
1300
25000000
6002500
1690000
1.2500E+11
1.4706E+10
2197000000
312500000
312500000
312500000
V d hm EXP(n)
SELECT EXP(4) FROM DUMMY;
EXP(4)
54.59815
V d hm SQRT(n)
SELECT SAL, SQRT(SAL),
FROM EMP
WHERE DEPTNO =10;
SQRT(40),
SQRT
(COMM)
V d hm SIGN(n)
SELECT SAL-NVL(COMM,0), SIGN(SAL-NVL(COMM,0)),
NVL(COMM,0)-SAL, SIGN(NVL(COMM,0)-SAL)
FROM EMP
WHERE DEPTNO =30
SAL-NVL(COMM,0)SIGN(SAL-NVL(COMM,0))NVL(COMM,0)-SAL SIGN(NVL(COMM,0)
SAL)
2850
-150
1300
1500
950
750
1
-1
1
1
1
1
-2850
150
-1300
-1500
-950
-750
-1
1
-1
-1
-1
-1
Din gii
Cho kt hp ca 2 chui k t, tng t nh s
dng ton t ||
Cho chui vi k t u cc t l k t
hoa
Cho chui k t vit thng (khng vit
hoa)
Cho chui k t c chiu di bng n. Nu chui
char1 ngn hn n th thm vo bn tri chui
char2 cho n k t. Nu chui char1 di hn n
th gi li n
Trang 26
B cc k t trng bn tri
NLS_INITCAP(char)
REPLACE(char,search_string[,replacem
ent_string])
RPAD(char1, n [,char2])
RTRIM(char1, n [,char2])
B cc k t trng bn phi
SOUNDEX(char)
SUBSTR(char, m [,n])
UPPER(char)
ASCII(char)
LENGTH(char)
V d hm LOWER(char)
SELECT
LOWER(DNAME),
LOWER(SQL
COURSE)
FROM
DEPT;
LOWER(DNAME) LOWER('SQL
accounting
research
sales
operations
sql
sql
sql
sql
course
course
course
course
V d hm UPPER(char)
SELECT ENAME FROM EMP WHERE ENAME = UPPER(Smith);
ENAME
SMITH
V d hm INITCAP(char)
SELECT
INITCAP(DNAME),
INITCAP(LOC)
FROM
DEPT;
INITCAP(DNAME) INITCAP(LOC)
Trang 27
Accounting
Research
Sales
Operations
New York
Dallas
Chicago
Boston
V d hm CONCAT(char1, char2)
SELECT CONCAT(ENAME, JOB) JOB FROM EMP WHERE EMPNO = 7900;
JOB
JAMES
CLERK
V d hm LPAD(char1, n [,char2])
SELECT LPAD(DNAME,20,*), LPAD(DNAME,20), LPAD(DEptno,20, )
FROM DEPT;
LPAD(DNAME,20,'*') LPAD(DNAME,20)
***ACCOUNTING
***RESEARCH
***SALES
***OPERATIONS
LPAD(DEPTNO,20,'')
ACCOUNTING
RESEARCH
SALES
OPERATIONS
10
20
30
40
V d hm RPAD(char1, n [,char2])
SELECT RPAD(DNAME,20,*), RPAD(DNAME,20), RPAD(DEptno,20, )
FROM DEPT;
RPAD(DNAME,20,'*') RPAD(DNAME,20)
RPAD(DEPTNO,20,'')
ACCOUNTING
RESEARCH
SALES
OPERATIONS
10
20
30
40
***
***
***
***
ACCOUNTING
RESEARCH
SALES
OPERATIONS
V d hm SUBSTR(char, m [,n])
SELECT
SUBSTR(ORACLE,2,4),
FROM DEPT;
SUBSTR(DNAME,2),
SUBSTR(DNAME,3,5)
CCOUNTING
ESEARCH
ALES
PERATIONS
COUNT
SEARC
LES
ERATI
INSTR(DNAME,'A') INSTR(DNAME,'ES')
INSTR(DNAME,'C',1,2)
1
3
Trang 28
5
2
5
2
4
0
0
0
0
V d hm LTRIM(char1, n [,char2])
SELECT
DNAME, LTRIM(DNAME,A), LTRIM(DNAME,AS),
LTRIM(DNAME,ASOP)
FROM DEPT;
DNAME
ACCOUNTING
RESEARCH
SALES
OPERATIONS
CCOUNTING
RESEARCH
SALES
OPERATIONS
CCOUNTING
RESEARCH
LES
OPERATIONS
CCOUNTING
RESEARCH
LES
ERATIONS
V d hm RTRIM(char1, n [,char2])
SELECT
DNAME, RTRIM(DNAME,A), RTRIM(DNAME,AS),
RTRIM(DNAME,ASOP)
FROM DEPT;
DNAME
ACCOUNTING
RESEARCH
SALES
OPERATIONS
ACCOUNTING
RESEARCH
SALES
OPERATIONS
ACCOUNTING
RESEARCH
SALES
OPERATIONS
ACCOUNTING
RESEARCH
SALES
OPERATIONS
V d hm SOUNDEX(char)
SELECT ENAME, SOUNDEX(ENAME)
FROM EMP
WHERE SOUNDEX(ENAME)= SOUNDEX(FRED);
ENAME
SOUN
FORD
F630
V d hm LENGTH(char)
SELECT LENGTH(SQL
FROM DEPT;
COURSE),
LENGTH(DEPTNO),
LENGTH(DNAME)
2
2
2
2
14
14
14
14
TRANSLATE( JOB
JOB,
TRANSLATE
Trang 29
KING
CLARK
MILLER
KING
FLARK
MILLER
PRESIDENT PTESIDENT
MANAGER MINIGET
CLERK
CLETK
V d hm REPLACE(char,search_string[,replacement_string])
SELECT
FROM EMP
WHERE DEPTNO =30 OR DEPTNO =20;
JOB
REPLACE(JOB,'SALESMAN', ENAME
MANAGER MANAGER
MANAGER MANAGER
SALESMAN SALESPERSON
SALESMAN SALESPERSON
SALESMAN SALESPERSON
CLERK
CLERK
SALESMAN SALESPERSON
ANALYST ANALYST
CLERK
CLERK
ANALYST ANALYST
CLERK
CLERK
BLAKE
JONES
MARTIN
ALLEN
TURNER
JAMES
WARD
FORD
SMITH
SCOTT
ADAMS
REPLACE(ENAME,'CO','
BLAKE
JONES
MARTIN
ALLEN
TURNER
JAMES
WARD
FORD
SMITH
SPRTT
ADAMS
V d cc hm lng nhau:
SELECT DNAME, LENGHT(DNAME), LENGHT(TRANSLATE,DNAME, AS,A))
FROM DEPT;
DNAME
LENGTH(DNAME) LENGTH(TRANSLATE(DNAME,'AS','A'))
ACCOUNTING
RESEARCH
SALES
OPERATIONS
14
14
14
14
14
13
12
13
d2)
Din gii
Cho bit s thng gia ngy d1 v d2. Cho ngy d
thm n thng.
Cho ngy tip theo ngy d c th ch bi char. Cho
ngy cui cng trong thng ch bi d.
V d hm MONTH_BETWEEN(d1, d2)
SELECT
MONTHS_BETWEEN( SYSDATE, HIREDATE),
MONTHS_BETWEEN('01-01-2000','05-10-2000')
FROM EMP
WHERE MONTHS_BETWEEN( SYSDATE,HIREDATE)>240;
MONTHS_BETWEEN(SYSDATE,HIREDATE) TWEEN('01-01-2000','05-10-2000')
Trang 30
-9.1290323
-9.1290323
-9.1290323
V d hm ADD_MONTHS(d,n)
SELECT
HIREDATE,
FROM EMP
WHERE DEPTNO=20;
ADD_MONTHS(HIRE,3),
ADD_MONTHS(HIREDATE,-3)
V d hm NEXT_DAY(d, char )
SELECT
HIREDATE,
FROM EMP
WHERE DEPTNO = 10;
NEXT_DAY(HIREDATE,FRIDAY),
NEXT_DAY(HIREDATE,6)
V d hm LAST_DAY(d)
SELECT SYSDATE, LAST_DAY(SYSDATE),
LAST_DAY(15-01-2001)
FROM EMP
WHERE DEPTNO =20;
SYSDATE
HIREDATE,
LAST_DAY(HIREDATE),
28-03-2001 31-03-2001 02-04-1981 30-04-1981 31-01-2001 2803-2001 31-03-2001 03-12-1981 31-12-1981 31-01-2001 28-032001 31-03-2001 17-12-1980 31-12-1980 31-01-2001 28-032001 31-03-2001 09-12-1982 31-12-1982 31-01-2001 28-032001 31-03-2001 12-01-1983 31-01-1983 31-01-2001
ROUND(date1,YEAR)
TRUNC(date1,
MONTH)
TRUNC(date1, YEAR)
Din gii
Tr v ngy date 1 ti thi im gia tra 12:00 AM
Nu date 1 nm trong na thng u tr v ngy u tin ca thng,
ngc li s tr v ngy u tin ca thng sau.
Nu date 1 nm trong na nm u tr v ngy u tin
ca thng, ngc li s tr v ngy u tin ca nm
sau.
Tr v ngy u tin ca thng cha date1 Tr v ngy u tin ca
nm cha date1
Trang 31
Din gii
Chuyn kiu s v ngy v kiu k t.
Chuyn k t c ni dung s sang s
Chuyn k t sang kiu ngy vi nh dng t trong
fmt.
So snh biu thc expr vi gi tr search nu ng tr v gi tr
result nu khng tr v gi tr default.
Chuyn gi tr COL|VALUE thnh val nu null. Tr gi tr
ln nht trong dy gi tr.
V d:
SELECT To_char (sysdate, day, ddth month yyyy) from dummy;
SELECT EMPNO, ENAME, HIREDATE
FROM EMP
WHERE HIREDATE = TO_DATE (June 4, 1984, month dd, yyyy);
INSERT INTO EMP (EMPNO, DEPTNO, HIREDATE
VALUES (777, 20, TO_DATE(19-08-2000, DD-MM-YYYY);
SELECT
ENAME, JOB,
DECODE (JOB, CLERK,WWORKER,MANAGER,BOSS,UNDEFINED)
DECODED_JOB
FROM EMP;
SELECT GREATEST(1000,2000),
WHERE DEPTNO = 10;
GREATEST(SAL,COMM)
FROM
EMP
Din gii
SCC hoc CC
Th k; S ch ngy BC
Nm; S ch ngy BC
YYY, YY, Y
Ch nm vi 3,2,1 k t s
SYEAR, YEAR
Qu trong nm
MM
Gi tr thng vi 2 s (01-12)
MONTH
MON
WW, W
DDD, DD, D
DAY
Ch th trong tun
DY
AM, PM
Ch nh sng, chiu
MI
Pht (0-59)
SS
Giy (0-59)
SSSSS
S giy n na m (0-86399)
/ . , -
char
TH
SP
SPTH, THSP
RR
0-49
Nm
Nm hin t
50-99
0-49
th k hin ti
Th k sau
50-99
Th k trc
Th k hin ti
Mt s khun dng s
Din gii
K t
V d
Kt qu
Xc nh hin th 1 s
999999
1234
Hin th c s 0 u nu di khun
dng ln hn s hin c
099999
001234
$Thm k t tin t
$999999
Thm k t tin t bn a
L999999
Du thp phn
999999.99
999,999
1,234
MI
Du m bn phi ( vi cc gi tr m)
999999MI
1234-
PR
999999PR
<1234>
99.9999RRRR
1.234E+03
$1234
FF1234
1234.00
Nhn vi 10 n, n l s cc s 9 t sau V
9999V99
123400
Hin th c gi tr 0 nu = 0.
B9999.99
1234.00
Trang 33
Din gii
Gi tr trung bnh ca n,khng k tr null S
row c expr khc null
Gi tr ln nht ca expr
Gi tr nh nht ca expr
Phng sai ca n khng k tr null Tng ca
ca n khng k tr null Variance ca n khng
k tr null
Trang 34
Mnh HAVING l t iu kin ca nhm d liu. Mnh ny khc mnh WHERE ch mnh
WHERE t iu kin cho ton b cu lnh SELECT.
V d:
SELECT JOB, MAX(SAL)
FROM EMP
WHERE JOB !=MANAGER
GROUP BY JOB;
JOB
ANALYST
CLERK
PRESIDENT
SALESMAN
MAX(SAL)
3000
1300
5000
1600
MAX(SAL)
1300
1600
MAX(SAL)
3000
5000
Trang 35
4.4.2. Hm COALSCE
C php:
COALESCE(expr1, expr2, expr3, ...)
Tr v gi tr ca tham s u tin khc null
4.5.BI TP
4.5.1. Hm trn tng dng d liu
1. Lit k tn nhn vin, m phng ban v lng nhn vin c tng 15% (PCTSAL).
DEPTNO ENAME
10
30
10
20
KING
BLAKE
CLARK
JONES
PCTSAL
5000
2850
2450
2975
Trang 36
MARTIN
ALLEN
TURNER
JAMES
WARD
FORD
SMITH
SCOTT
ADAMS
MILLER
1250
1600
1500
950
1250
3000
800
3000
1100
1300
DEPTNO JOB
BLAKE
MARTIN
ALLEN
TURNER
JAMES
WARD
30
30
30
30
30
30
Manager
Salesperson
Salesperson
Salesperson
Clerk
Salesperson
Trang 37
DATE_HIRED
JONES
FORD
SMITH
SCOTT
ADAMS
april,SECOND 1981
december,THIRD 1981
december,SEVENTEENTH 1980
december,NINTH 1982
january,TWELFTH 1983
7. Hin th tn nhn vin, ngy gia nhp cng ty, ngy xt nng lng (sau ngy gia
nhp cng ty 1 nm), sp xp theo th t ngy xt nng lng.
ENAME
HIREDATE REVIEW
SMITH
ALLEN
WARD
JONES
BLAKE
CLARK
TURNER
MARTIN
KING
JAMES
FORD
MILLER
SCOTT
ADAMS
17-12-1980
20-02-1981
22-02-1981
02-04-1981
01-05-1981
09-06-1981
08-09-1981
28-09-1981
17-11-1981
03-12-1981
03-12-1981
23-01-1982
09-12-1982
12-01-1983
17-12-1981
20-02-1982
22-02-1982
02-04-1982
01-05-1982
09-06-1982
08-09-1982
28-09-1982
17-11-1982
03-12-1982
03-12-1982
23-01-1983
09-12-1983
12-01-1984
SALARY
ADAMS
ALLEN
BLAKE
CLARK
FORD
JAMES
JONES
KING
MARTIN
MILLER
SCOTT
SMITH
TURNER
WARD
BELOW 1500
1600
2850
2450
3000
BELOW 1500
2975
5000
BELOW 1500
BELOW 1500
3000
BELOW 1500
On Target
BELOW 1500
Trang 38
11. Hin th tn nhn vin, ngy gia nhp cng ty, ngy lnh lng sao cho ngy lnh
lng phi vo th 6, nhn vin ch c nhn lng sau t nht 15 ngy lm vic ti
cng ty, sp xp theo th t ngy gia nhp cng ty.
Trang 39
Cc column trng tn phi c ch r column nm bng no thng qua tn hoc qua alias. Tn trng
ny c th t trong cc mnh khc nh SELECT, ORDER BY..
V d:
SELECT DEPT.DEPTNO, ENAME,JOB,
FROM EMP, DEPT
WHERE EMP.DEPTNO = DEPT.DEPTNO
ORDER BY DEPT.DEPTNO;
SELECT A.DEPTNO, A.ENAME,
FROM EMP A, DEPT B
WHERE A.DEPTNO = B.DEPTNO
ORDER BY A.DEPTNO;
DNAME
A.JOB,
B.DNAME
Cc column trng tn phi c ch r column nm bng no thng qua tn hoc qua alias. Tn trng
ny c th t trong cc mnh khc nh SELECT, ORDER BY..
V d:
SELECT E.ENAME,E.JOB, S.GRADE
FROM EMP E, SALGRADE S
WHERE E.SAL BETWEEN S. LOSAL AND S.HISAL;
Trang 40
Trong mnh WHERE ca mi lin kt cng khng c dng ton t IN hoc OR ni cc iu kin lin
kt khc.
V d:
SELECT
FROM
WHERE
AND
ENAME
BLAKE
MARTIN
ALLEN
TURNER
JAMES
WARD
30
30
30
30
30
30
40
SALES
SALES
SALES
SALES
SALES
SALES
OPERATIONS
EMP_SAL MGR_NAME
2850
2450
2975
1250
1600
1500
950
1250
800
1100
1300
MGR_SAL
KING
KING
KING
BLAKE
BLAKE
BLAKE
BLAKE
BLAKE
FORD
SCOTT
CLARK
5000
5000
5000
2850
2850
2850
2850
2850
3000
3000
2450
Mnh USING (Tng t nh Natural Join, nhng cho php ch r tn ct c s dng trong php kt
ni).
Trang 41
Kt ni FULL OUTER JOIN (All records from both tablesIdentical to a union of left outer join and right
outer join)
SELECT E.ENAME, D.DNAME
FROM EMP E FULL OUTER JOIN DEPT D ON (E.DEPTNO = D.DEPTNO);
5.1.6. Cc ton t tp hp
Tn ton t
UNION
Din gii
Kt hp kt qu ca nhiu cu hi vi nhau, ch gi li mt i din cho cc mu tin
trng nhau.
cng c lp li
INTERSET
MINUS
V d:
Select job from emp where deptno = 10
Union
Select job from emp where deptno = 30;
JOB
CLERK
MANAGER
PRESIDENT
SALESMAN
Trang 42
JOB
BLAKE
CLARK
JONES
MANAGER
MANAGER
MANAGER
Din gii
NOT IN
Khng thuc
ANY v SOME
ALL
EXISTS
Tr v TRUE nu c tn ti.
V d:
SELECT * FROM emp
WHERE sal = ANY (SELECT sal FROM emp WHERE deptno=30);
SELECT * FROM emp
WHERE sal >= ALL (select distinct sal
From emp
Where deptno =30)
Order by sal desc;
SELECT ENAME, SAL, JOB, DEPTNO
FROM EMP
WHERE SAL > SOME (SELECT DISTINCT SAL
FROM EMP
WHERE DEPTNO =30)
Trang 43
Level (cp)
Level l mt ct gi cha cp trong cu trc hnh cy. V d.
SELECT LEVEL, DEPTNO, EMPNO, ENAME, JOB, SAL
FROM EMP
CONNECT BY PRIOR EMPNO = MGR
START WITH MGR is NULL;
LEVEL
DEPTNO
1
2
3
3
3
3
3
2
3
2
3
4
3
4
10
30
30
30
30
30
30
10
10
20
20
20
20
20
EMPNO ENAME
7839
7698
7654
7499
7844
7900
7521
7782
7934
7566
7902
7369
7788
7876
KING
BLAKE
MARTIN
ALLEN
TURNER
JAMES
WARD
CLARK
MILLER
JONES
FORD
SMITH
SCOTT
ADAMS
JOB
PRESIDENT
MANAGER
SALESMAN
SALESMAN
SALESMAN
CLERK
SALESMAN
MANAGER
CLERK
MANAGER
ANALYST
CLERK
SALEMAN
CLERK
SAL
5000
2850
1250
1600
1500
950
1250
2450
1300
2975
3000
800
3300
1100
Vi:
START WITH
CONNECT BY
PRIOR
V d:
SELECT LEVEL, DEPTNO, EMPNO, ENAME, JOB, SAL
FROM EMP
CONNECT BY PRIOR MGR = EMPNO
START WITH empno = 7876;
LEVEL
DEPTNO
1
2
3
4
20
20
20
10
EMPNO ENAME
7876
7788
7566
7839
ADAMS
SCOTT
JONES
KING
JOB
CLERK
SALEMAN
MANAGER
PRESIDENT
SAL
1100
3300
2975
5000
DEPTNO
1
2
3
3
3
3
3
2
3
2
3
4
4
10
30
30
30
30
30
30
10
10
20
20
20
20
EMPNO ENAME
7839
7698
7654
7499
7844
7900
7521
7782
7934
7566
7902
7369
7876
KING
BLAKE
MARTIN
ALLEN
TURNER
JAMES
WARD
CLARK
MILLER
JONES
FORD
SMITH
ADAMS
JOB
PRESIDENT
MANAGER
SALESMAN
SALESMAN
SALESMAN
CLERK
SALESMAN
MANAGER
CLERK
MANAGER
ANALYST
CLERK
CLERK
SAL
5000
2850
1250
1600
1500
950
1250
2450
1300
2975
3000
800
1100
V d 2:
SELECT LEVEL, DEPTNO, EMPNO, ENAME, JOB, SAL
FROM EMP
CONNECT BY PRIOR EMPNO = MGR AND ENAME != SCOTT
Trang 45
DEPTNO
1
2
3
3
3
3
3
2
3
2
3
4
10
30
30
30
30
30
30
10
10
20
20
20
EMPNO ENAME
7839
7698
7654
7499
7844
7900
7521
7782
7934
7566
7902
7369
JOB
KING
BLAKE
MARTIN
ALLEN
TURNER
JAMES
WARD
CLARK
MILLER
JONES
FORD
SMITH
PRESIDENT
MANAGER
SALESMAN
SALESMAN
SALESMAN
CLERK
SALESMAN
MANAGER
CLERK
MANAGER
ANALYST
CLERK
SAL
5000
2850
1250
1600
1500
950
1250
2450
1300
2975
3000
800
5.4.BI TP
1. Hin th ton b tn nhn vin v tn phng ban lm vic sp xp theo tn phng
ban.
LOC
DNAME
KING
BLAKE
CLARK
JONES
ALLEN
FORD
SCOTT
NEW YORK
CHICAGO
NEW YORK
DALLAS
CHICAGO
DALLAS
DALLAS
ACCOUNTING
SALES
ACCOUNTING
RESEARCH
SALES
RESEARCH
RESEARCH
JOB
JAMES
SMITH
ADAMS
MARTIN
WARD
MILLER
ALLEN
TURNER
BLAKE
CLARK
JONES
FORD
SCOTT
KING
CLERK
CLERK
CLERK
SALESMAN
SALESMAN
CLERK
SALESMAN
SALESMAN
MANAGER
MANAGER
MANAGER
ANALYST
ANALYST
PRESIDENT
SAL
GRADE
950
800
1100
1250
1250
1300
1600
1500
2850
2450
2975
3000
3000
5000
1
1
1
2
2
2
3
3
4
4
4
4
4
5
JOB
ALLEN
TURNER
SALESMAN
SALESMAN
SAL
GRADE
1600
1500
3
3
iu kin mc
Trang 46
LOC
SAL
JONES
FORD
SMITH
SCOTT
ADAMS
DALLAS
DALLAS
DALLAS
DALLAS
DALLAS
2975
3000
800
3000
1100
6. Hin th tn nhn vin , ngh nghip, lng, mc lng, tn phng lm vic tr nhn
vin c ngh l cleck v sp xp theo chiu gim.
ENAME
JOB
SAL
MARTIN
WARD
ALLEN
TURNER
BLAKE
CLARK
JONES
FORD
SCOTT
KING
SALESMAN
SALESMAN
SALESMAN
SALESMAN
MANAGER
MANAGER
MANAGER
ANALYST
ANALYST
PRESIDENT
GRADE DNAME
1250
1250
1600
1500
2850
2450
2975
3000
3000
5000
2
2
3
3
4
4
4
4
4
5
SALES
SALES
SALES
SALES
SALES
ACCOUNTING
RESEARCH
RESEARCH
RESEARCH
ACCOUNTING
JOB
ANUAL_SAL DNAME
JAMES
SMITH
ADAMS
MILLER
FORD
SCOTT
CLERK
CLERK
CLERK
CLERK
ANALYST
ANALYST
11400
9600
13200
15600
36000
36000
GRADE
SALES
RESEARCH
RESEARCH
ACCOUNTING
RESEARCH
RESEARCH
1
1
1
2
4
4
LOC
40 OPERATIONS
BOSTON
EMP_SAL MGR_NAME
2850
2450
2975
1250
1600
1500
950
1250
3000
800
3000
1100
1300
KING
KING
KING
BLAKE
BLAKE
BLAKE
BLAKE
BLAKE
JONES
FORD
JONES
SCOTT
CLARK
MGR_SAL
5000
5000
5000
2850
2850
2850
2850
2850
2975
3000
2975
3000
2450
Trang 47
EMP_SAL MGR_NAME
KING
BLAKE
CLARK
JONES
MARTIN
ALLEN
TURNER
JAMES
WARD
FORD
SMITH
SCOTT
ADAMS
MILLER
5000
2850
2450
2975
1250
1600
1500
950
1250
3000
800
3000
1100
1300
KING
KING
KING
BLAKE
BLAKE
BLAKE
BLAKE
BLAKE
JONES
FORD
JONES
SCOTT
CLARK
MGR_SAL
5000
5000
5000
2850
2850
2850
2850
2850
2975
3000
2975
3000
2450
11. Hin th ngh nghip c tuyn dng vo nm 1981 v khng c tuyn dng vo
nm 1994.
EMP_SAL MGR_NAME
BLAKE
MARTIN
ALLEN
TURNER
JAMES
WARD
CLARK
MILLER
JONES
FORD
SMITH
SCOTT
ADAMS
13 rows selected.
2850
1250
1600
1500
950
1250
2450
1300
2975
3000
800
3300
1100
BLAKE
BLAKE
BLAKE
BLAKE
BLAKE
BLAKE
CLARK
CLARK
JONES
JONES
JONES
JONES
JONES
MGR_SAL
2850
2850
2850
2850
2850
2850
2450
2450
2975
2975
2975
2975
2975
14. Tm nhng nhn vin kim c lng cao nht trong mi loi ngh nghip.
JOB
MAX(SAL)
ANALYST
CLERK
MANAGER
PRESIDENT
SALESMAN
3000
1300
2975
5000
1600
15. Tm mc lng cao nht trong mi phng ban, sp xp theo th t phng ban.
ENAME
JOB
KING
PRESIDENT
DEPTNO
SAL
10
5000
Trang 48
SALEMAN
MANAGER
20
30
3300
2850
HIREDATE
DEPTNO
CLARK
SMITH
ALLEN
09-06-1981
17-12-1980
20-02-1981
10
20
30
KING
JONES
FORD
SCOTT
BLAKE
ALLEN
SAL
DEPTNO
5000
2975
3000
3300
2850
1600
10
20
20
20
30
30
18. Hin th tn nhn vin, m nhn vin, m gim c, tn gim c, phng ban lm
vic ca gim c, mc lng ca gim c.
EMP_NUMBER EMP_NAME EMP_SAL MGR_NUMBER MGR_NAME MGR_DEPT MGR_GRADE
7698 BLAKE
7654 MARTIN
7499 ALLEN
7844 TURNER
7900 JAMES
7521 WARD
7782 CLARK
7934 MILLER
7566 JONES
7902 FORD
7369 SMITH
7788 SCOTT
7876 ADAMS
13 rows selected.
2850
1250
1600
1500
950
1250
2450
1300
2975
3000
800
3300
1100
7698
7698
7698
7698
7698
7698
7782
7782
7566
7566
7566
7566
7566
BLAKE
BLAKE
BLAKE
BLAKE
BLAKE
BLAKE
CLARK
CLARK
JONES
JONES
JONES
JONES
JONES
30
30
30
30
30
30
10
10
20
20
20
20
20
4
4
4
4
4
4
4
4
4
4
4
4
4
Trang 49
V du 2:
Select ename, deptno, job
From emp
Where deptno = &&depno_please;
6.2.LNH DEFINE
Khai bo v gn tr cho cc bin, v d khai bo bin condition c gi tr 'sal
> 1000'
V d:
DEFINE REM=SAL*12+NVL(COMM,0)
SELECT ENAME, JOB, &REM
FROM EKP ORDER BY & REM;
Trang 50
6.3.LNH ACCEPT
Khai bo v gn tr cho bin vi dng hin th
ACCEPT variable [NUMBER/CHAR] [PROMPT/NOPROMPT 'text'] HIDE
V d:
ACCEPT Salary NUMBER PROMPT 'Salary figure: '
Salary figure : 3000
T kho hide cho php che chui nhp liu, hay dng khi nhp password.
ACCEPT password CHAR PROMPT 'Enter password: ' HIDE
Password : ***
6.4.BI TP
1. Hin th tn nhn vin, ngy gia nhp cng ty vi iu kin ngy gia nhp cng ty
nm trong khong hai bin runtime c nhp vo t bn phm (&first_date,
&last_date).
2. Hin th tn nhn vin, ngh nghip, lng, m gim c, m phng ban vi iu
kin ngh nghip bng mt bin c nhp vo t bn phm. (&job)
3. nh ngha mt bin tnh thu nhp mt nm ca nhn vin. Dng bin ny tm
nhng nhn vin c thu nhp ln hn hoc bng $30000.
4. nh ngha mt bin l khong thi gian nhn vin lm trong cng ty. Hin th tn
nhn vin v qung thi gian nhn vin lm vic vi iu kin nhn vin l mt
bin c nhp vo t bn phm.
ENAME
LENGTH OF SERVICE
KING
19 YEAR 4 MONTHS
Trang 51
Vi:
tablename
column
[datatype]
[DEFAULT expr]
[column_constraint]
[table_constraint]
[PCTFREE integer]
[PCTUSED integer]
[INITRANS integer]
[MAXTRANS integer]
[TABLESPACE tablespace]
Tn table cn to
Tn column trong table
Kiu d liu ca column
Gi tr mc nh ca column trong trng hp
NULL l expr
Rng buc ca bn thn column
Rng buc ca ton bng
Phn trm khng gian cn trng
Phn trm khng gian s dng
S bn ghi khi to
S bn ghi ln nht
Ch nh TABLESAPCE cho bng
[STORAGE storage_clause]
[AS subquery]
V d 1:
CREATE TABLE EMP
EMPNO NUMBER NOT NULL CONSTRAINT PK_EMP PRIMARY KEY,
ENAME VARCHAR2(10) CONSTRAINT NN_ENAME NOT NULL
CONSTRAINT UPPER_ENAME CHECK (ENAME=UPPER(ENAME)),
JOB VARCHAR2(9),
MGR NUMBER CONSTRAINT FK_MGR REFERENCES
SCOTT.EMP(EMPNO),
HIREDATE DATE DEFAULT SYSDATE, SAL
NUMBER(10,2) CONSTRAINT CK_SAL
CHECK(SAL>500),
COMM NUMBER(9,0) DEFAULT NULL,
DEPTNO NUMBER(2) CONSTRAINT NN_DEPTNO NOT NULL
CONSTRAINT FK_DEPTNO REFERENCES SCOTT.DEPT(DEPTNO))
PCTFREE 5 PCTUSED 75
V du 2:
CREATE TABLE SALGRADE1
Trang 52
KEY,
V d 3:
CREATE TABLE DEPT10
AS
SELECT EMPNO, ENAME, JOB,
FROM EMP WHERE DEPTNO =10;
SAL
V d 4:
CREATE TABLE EMP_SAL (NAME, SALARY,GRADE)AS
SELECT ENAME, SAL, GRADE
FROM EMP, SALGARDE
WHERE EMP.SAL BETWEEN LOSAL AND HISAL ;
Trong :
fixed header = 57 bytes
variable transaction header = 23*gi tr ca thng s instrans
table directory =4
row directory = 2* s lng row trong block.
2. Tnh ton khong a trng cha d liu ca data block. Tnh theo cng thc sau:
Khong a trng cha data =(block size -total block header) (block size -(fixed header+ variable transaction
header))*(pctree/100)
Trang 53
Trong :
object
Tn object
Trang 54
lnh
sau
thm
mt
mu
tin
vo
bng
DEPT
Trang 55
NUMBER
V d sau cho thy cch thc Oracle lu tr d liu kiu s ty theo cch nh precision v
scale khc nhau.
D liu thc
7456123.89
7456123.89
7456123.89
7456123.89
7456123.89
7456123.8
7456123.89
7456123.89
Kiu
NUMBER
NUMBER(9)
NUMBER(9,2)
NUMBER(9,1)
NUMBER(6)
NUMBER(15,1)
NUMBER(7,-2)
NUMBER(-7,2)
Gi tr lu tr
7456123.89
7456123
7456123.89
7456123.8
Khng hp l
7456123.8
7456100
Khng hp l
Ngoi ra, cc ct kiu LONG khng c tham gia trong cc thnh phn sau ca cu lnh
SQL
Cc mnh WHERE, GROUP BY, ORDER BY, CONNECT BY hoc vi tc t
DISTINCT trong cu lnh SELECT
Cc hm s dng trong cu lnh SQL nh SUBSTR, INSTR
Trong danh sch la chn ca cu lnh SELECT c s dng mnh GROUP BY Trong danh
sch la chn ca cu hi con, cu hi c s dng cc ton t tp hp Trong danh sch la chn
ca cu lnh CREATE TABLE AS SELECT
Ngy Julian: L gi tr s cho bit s ngy k t ngy 1 thng ging nm 4712 trc cng nguyn.
V d:
SELECT TO_CHAR (TO_DATE('01-01-1992', 'MM-DD-YYYY'), 'J') JULIAN
FROM DUAL;
Kt qu:
JULIAN
2448623
Trang 57
Vi
block
row
file
V d:
0000000F.0000.0002
V d 1:
SELECT ename FROM emp WHERE hiredate = '12-MAR-1993'
Oracle t ng chuyn chui '12-MAR-1993' sang kiu DATE trong php so snh
V d 2:
SELECT ename FROM emp WHERE ROWID = '00002514.0001.0001'
Trang 58
7.4.2. UNIQUE
Ch ra rng buc duy nht, cc gi tr ca column ch trong mnh UNIQUE trong cc row
ca table phi c gi tr khc bit. Gi tr null l cho php nu UNIQUE da trn mt ct.
V d:
CREATE TABLE DEPT (
DEPTNO
NUMBER(2),
DNAME
CHAR(14),
LOC
CHAR(13),
CONSTRAINT UNQ_DEPT_LOC UNIQUE(DNAME, LOC));
Trang 59
7.4.5. CHECK
Rng buc kim tra gi tr.
V d:
CREATE TABLE EMP
(EMPNO NUMBER NOT NULL CONSTRAINT PK_EMP PRIMARY KEY,
ENAME VARCHAR2(10) CONSTRAINT NN_ENAME NOT NULL
CONSTRAINT UPPER_ENAME CHECK (ENAME =
UPPER(ENAME)),
JOB VARCHAR2(9),
MGR NUMBER CONSTRAINT FK_MGR REFERENCES
SCOTT.EMP(EMPNO),
HIREDATE DATE DEFAULT SYSDATE, SAL
NUMBER(10,2) CONSTRAINT CK_SAL
CHECK(SAL>500),
COMM NUMBER(9,0) DEFAULT NULL,
DEPTNO NUMBER(2) CONSTRAINT NN_DEPTNO NOT NULL
CONSTRAINT FK_DEPTNO REFERENCES SCOTT.DEPT(DEPTNO);
Trong :
ADD
MODIFY
DROP
ENABLE/DISABLE
Ch :
Trang 60
V d 2:
ALTER TABLE emp MODIFY (ename CHAR(25);
V d 3:
ALTER TABLE emp DROP CONSTRAINT
ALTER TABLE DROP PRIMARY KEY;
emp_mgr;
V d 4:
ALTER TABLE dept DISABLE CONSTRAINT dept_prim;
Trong :
CASCADE CONSTRAINTS
V d:
DROP TALE emp
Trang 61
Trong :
old
new
Tn c
Tn mi
V d:
RENAME emp TO employee
Trong :
REUSE STORAGE
Trang 62
Hin th cu ca USER_OBJECT
DESCRIBE USER_OBJECT;
7.7.BI TP
1. To bng PROJECT vi cc column c ch ra di y, PROJID l promary key, v
P_END_DATE > P_START_DATE.
Column name
PROJID
P_DESC
P_START_DATE
P_END_DATE
BUDGET_AMOUNT
MAX_NO_STAFF
NUMBER
VARCHAR2
DATE
DATE
NUMBER
NUMBER
4
20
7,2
2
PROJID
EMPNO
A_START_DATE
A_END_DATE
BILL_AMOUNT
ASSIGN_TYPE
NUMBER
NUMBER
DATE
DATE
NUMBER
VARCHAR2
4
4
NOT NULL
NOT NULL
4,2
2
3. Thm column COMMENTS kiu LONG vo bng PROJECTS. Thm column HOURS kiu
NUMBER vo bng ASSIGNMENTS.
4. S dng view USER_OBJECTS hin th tt c cc i tng user s hu.
5. Thm rng buc duy nht (UNIQUE) cho 2 column PROJECT_ID v EMPNO ca bng
ASSIGNMENTS.
6. Xem cc thng tin v cc rng buc trong USER_CONSTRAINTS.
7. Xem trong USER hin ti c tt c bao nhiu bng.
Trang 63
column,
...])
V d:
INSERT INTO dept (depno, dname, loc)
VALUES (50, 'MARKETING', 'SAN JOSE')
V d:
INSERT INTO emp_tmp (ename, sal)
SELECT ename, sal FROM emp WHERE sal > 1000
Oracle 9i cn cho php thc hin lnh INSERT trn ng thi nhiu table khc nhau, ch s dng mt cu
lnh DML.
V d:
Lnh INSERT khng iu kin (UNCONDITIONAL)
INSERT ALL
INTO T1 (C1, C2, ...) VALUES (C1, C2, ...)
INTO T2 (C1, C2, ...) VALUES (C1, C2, ...)
SELECT C1, C2, ... FROM T9;
Lnh INSERT khng iu kin (CONDITIONAL)
INSERT [ALL|FIRST]
WHEN c1 = 1 THEN INTO T1 (C1, C2, ...) VALUES (C1, C2, ...)
WHEN c1 = 2 THEN INTO T2 (C1, C2, ...) VALUES (C1, C2, ...)
WHEN c2 = 3 THEN INTO T3 (C1, C2, ...) VALUES (C1, C2, ...)
SELECT C1, C2, ... FROM T9;
Trang 64
[expr,
subquery]
V d 1:
UPDATE emp
SET job = 'SALEMAN', hiredate = sysdate, sal = sal * 1.1
WHERE ename = 'SCOTT';
V d 2:
UPDATE emp
SET comm = (SELECT comm FROM commission C
WHERE C.empno = emp.empno)
WHERE empno IN (SELECT empno FROM commission);
V d 3:
UPDATE emp a
SET deptno =
(SELECT deptno FROM dept
WHERE loc = 'BOSTON'),
(sal, comm) = (SELECT
1.1*AVG(sal),1.5*AVG(comm)
FROM emp b
WHERE a.deptno = b.deptno)
WHERE deptno IN
(SELECT deptno FROM dept
WHERE loc = 'DALLAS' OR loc = 'DETROIT');
Trang 65
USING T2 ON (T1.C9=T2.C9)
WHEN MATCHED THEN UPDATE SET T1.C1=T2.C2, T1.C2=T2.C2 ...
WHEN NOT MATCHED THEN INSERT (C1,C2, ...) VALUES (C1,C2,
...);
V d:
DELETE FROM emp
WHERE deptno = 10;
C php:
Kt thc giao dch hin ti, thc hin cc chuyn i d liu
COMMIT
Trang 66
V d:
INSERT INTO DEPT
VALUES (50,TESTING,LAS VEGAS);
SAVEPOINT INSERT_DONE;
UPDATE DEPT
SET DNAME = MARKETING;
ROLLBACK TO INSERT_DONE ;
UPDATE DEPT SET DNAME
WHERE DNAME =SALES;
MARKETING
COMMIT;
8.3.BI TP
1. Thm d liu vo bng PROJECTS.
PROJID
P_DESC
P_START_DATE
P_END_DATE
BUDGET_AMOUNT
MAX_NO_STAFF
1
WRITE C030 COURSE
02-JAN-88
07-JAN-88
500
1
2
PROOF READ NOTES
01-JAN-89
10-JAN-89
600
1
1
7369
01-JAN-88
03-JAN-88
50.00
WR
15
1
7902
04-JAN-88
07-JAN-88
55.00
WR
20
2
7844
01-JAN-89
10-JAN-89
45.50
PF
30
Trang 67
Vi:
INCREMENT BY
START WITH
MAXVALUE
MINVALUE
CYCLE/NO CYCLE
Ch
Ch
Gi
Gi
Dy
Mc
nh khong cch ca
nh s u tin ca
tr ln nht ca dy
tr nh nht ca dy
tun t c quay vng
nh l NO CYCLE
dy s tun t
dy s tun t
tun t
tun t
khi n im cui.
V d:
CREATE SEQUENCE sample_sequence
INCREMENT 1
STRAT WITH 2
MAXVALUE 100;
sequence.CURRVAL
sequence.NEXTVAL
Trang 68
S dng sequence
CURRVAL v NEXTVAL c th c s dng trong cc trng hp sau:
Trong danh sch la chn ca cu lnh SELECT
Trong mnh VALUES ca cu lnh INSERT
Trong mnh SET ca cu lnh UPDATE
Khng c s dng CURRVAL v NEXTVAL trong cc trng hp sau Trong
cu hi con
Trong cc view v snapshot
Trong cu lnh SELECT c tc t DISTINCT
Trong cu lnh SELECT c s dng GROUP BY hay ORDER BY
Trong cu lnh SELECT c s dng cc php ton tp hp nh UNION,
INTERSET, MINUS
Trong mnh WHERE ca cu lnh SELECT
Ga tr DEFAULT ca ct trong cu lnh CREATE TABLE hay ALTER TABLE
Trong iu kin ca rng buc CHECK
Hu sequence:
DROP SEQUENCE sequence_name ;
9.2.INDEX
9.2.1. To index
Index l mt cu trc c s d liu, c sever s dng tm mt row trong bng mt
cch nhanh chng. Index bao gm mt key value (mt ct (column) trong hng (row)) v
ROWID.
C php:
CREATE [UNIQUE]] INDEX index_name
ON TABLE ( column [,column...]);
S lng index cho mt table l khng gii hn. Tuy nhin nu c qu nhiu index s gy nh hng n s
liu khi m d liu trong table b thay i th t theo index. V d: Thm mt row vo bng tt c cc Index
s c update. Nn chn la gia yu cu query, v insert, update c mt index hp l. i vi cc kho
PRIMARY KEY v UNIQUE KEY t kho UNIQUE c t ng thm khi to INDEX.
V d:
CREATE INDEX i-ENAME ON EMP (ENAME);
9.3.BI TP
1. To Index trn ct PROJID cho bng ASSIGNMENT.
2. Hin th danh sch ca nhn vin thuc s qun l ca ngi c tn l 1 bin c
nhp t bn phm
EMPNO ENAME JOB
7698
7654
7499
7844
7900
7521
MGR HIREDATE
BLAKE MANAGER
7839 01-05-1981
MARTIN SALESMAN 7698 28-09-1981
ALLEN SALESMAN 7698 20-02-1981
TURNER SALESMAN 7698 08-09-1981
JAMES CLERK
7698 03-12-1981
WARD
SALESMAN 7698 22-02-1981
SAL COMM
2850
1250
1600
1500
950
1250
1400
300
0
500
DEPTNO
30
30
30
30
30
30
Trang 70
Trong :
OR REPLACE
FORCE
column, column
WITH CHECK OPTION
CONSTRAINT
V d 1:
CREATE VIEW emp_view
AS
SELECT empno, ename, sal FROM emp WHERE deptno = 10;
V d 2:
CREATE VIEW dept_summary
(name, minsal, maxsal, avsal)
AS
SELECT dname, min(sal), max(sal), avg(sal) FROM emp, dept
FROM emp, dept
WHERE emp.deptno = dept.deptno
GROUP BY dname;
V d 3:
CREATE VIEW dept_view
AS
SELECT eame, sal*12 Annsal
FROM emp
WHERE deptno = 20
WITH CHECK OPTIION CONSTRAINT dept_check;
10.1.2. Xa cc view
Ch nhng ngi to view mi c quyn DROP
Trang 71
10.2.BI TP
1. To view c hin th nh sau:
select * from aggredates;
DEPTNO
AVERAGE MAXIMUN
10 2916.66667
20
2235
30 1566.66667
MINIMUN
SUM
1300
800
950
8750
11175
9400
5000
3300
2850
NO_SALS NO_COMMS
3
5
6
0
0
4
NUMBER(9,2)
NUMBER(9,2)
VARCHAR2(60)
VARCHAR2(60)
DATE
DATE
Trang 72
Quyn h thng
Trong cc quyn h thng quyn DBA l ln nht. DBA c quyn
CREATE USER : To user mi
DROP USER :Xo user
DROP ANY TABLE :Xo table
BACKUP ANY TABLE :To cc backup table.
Gn quyn
Trang 73
Xo quyn
REVOKE privilege[,privilege...] FROM user [,user...]
11.2.ROLE
Role l tn ca mt nhm cc quyn hn. N c to qun l quyn hn cho cc ng dng hoc nhm
cc User. Vic dng role cho php qun l thng nht trn cc i tng, tng tnh mm do trong qun tr,
d dng thay i. V d hai i tng X, Y c quyn trn role A tc l role A c quyn g th X, Y c quyn
tng ng khi role A b thay i quyn hn th X, Y cng b thay i quyn hn theo.
Lnh to Role
C php:
CREATE ROLE role [IDENTIFY BY password];
11.3.SYNONYM
Synonyms l b danh cho mi i tng ca Oracle. Cc i tng ca Oracle l table, view, snapshot,
sequence, procedure, function, package v cc synonym khc. C php
CREATE PUBLIC SYNONYM synonym_name
FROM [OWNER.]object_name;
Trang 74
Tnh bo mt l v synonym l b danh, nn ngi s dng dng b danh ny s khng on c thm thng
tin g.
Trang 75
V d1:
DECLARE
empno
NUMBER(4):=7788;
BEGIN
UPDATE emp
SET sal = 9000
WHERE empno = 0001;
END;
V d 2:
DECLARE
v_deptno
v_loc
NUMBER(2);
VARCHAR2(15);
BEGIN
Trang 76
[ELSE
Cng vic n + 1;
]
END IF;
V d 1:
IF ename = 'SCOTT' THEN
beam_me_up := 'YES';
COMMIT;
ELSE
beam_me_up := 'NO';
ROLLBACK;
END IF;
V d 2:
IF choice= 1 THEN
action := 'Run payroll';
ELSIF choice=2 THEN
action:='Run';
ELSIF choice=3 THEN
action:='Backup';
ELSE
action:='Invalid';
END IF;
Trang 77
V d:
x := 0;
y := 1000;
LOOP
x := x + 1;
y := y - x;
EXIT x > y;
END LOOP;
V d:
x := 0;
LOOP Index IN 1 .. 100
x := x + 1;
END LOOP;
V d:
WHILE length(:Address) < 50 LOOP
:Address := :Address || ;
END LOOP;
Nhn;
Trang 78
V d:
BEGIN
<<Nhn>>
cng vic;
GOTO Nhn;
END;
Khai bo:
CURSOR Tn cursor( danh sch bin) IS Cu
lnh truy vn;
V d1:
CURSOR
c_Dept
IS
SELECT deptno, dname
FROM dept
WHERE deptno>10;
CURSOR
c_Dept(p_Deptno NUMBER)
SELECT deptno, dname
FROM dept
WHERE deptno>10;
V d2:
IS
M cursor:
OPEN Tn cursor | Tn cursor( danh sch bin);
V d1:
OPEN
c_Dept;
OPEN
c_Dept(10);
V d2:
Ly d liu:
FETCH Tn cursor INTO Tn bin;
V d:
FETCH c_Dept INTO v_Dept;
ng cursor:
CLOSE Tn cursor;
V d:
CLOSE c_Dept;
Cc thuc tnh:
%isopen
Trang 79
tr
li
tr
row
tr
V d1:
DECLARE
-- Khai bo cursor truy vn d liu
CURSOR c_Emp IS
SELECT *
FROM emp
WHERE dept_id = 10;
-- Khai bo bin cursor tng ng cha dng d liu
v_Emp c_EMP%rowtype;
BEGIN
-- M cursor
OPEN c_Emp;
LOOP
-- Ly dng d liu t cursor
FETCH c_Emp INTO v_Emp;
-- Thot khi vng lp nu ly ht d liu trong cursor
EXIT WHEN c_Emp%notfound;
-- B sung d liu vo Emp_ext theo d liu ly c t
cursor
INSERT INTO Emp_ext (empno, ename, job)
VALUES (v_Emp.empno, v_Emp.ename, v_Emp.job); END
LOOP;
-- ng cursor
CLOSE c_Emp;
END;
V d 2:
DECLARE
-- Khai bo cursor, c cho php cp nht d liu
CURSOR
c_Dept
IS
SELECT dname, loc
FROM dept FOR UPDATE OF loc;
-- Khai bo bin lu tr d liu
v_Dept
c_Dept%ROWTYPE;
v_sales_count
NUMBER:=0;
v_non_sales
NUMBER:=0;
BEGIN
-- M cursor
OPEN c_Dept;
LOOP
-- Ly tng dng d liu ca cursor x l
FETCH c_Dept INTO v_Dept;
-- Thot khi lnh lp nu duyt ht tt c d liu
EXIT WHEN c_Dept %notfound;
IF (v_Dept.dname = 'SALES')AND(v_Dept.loc!='DALLAS') THEN
-- Cp nht d liu trn cursor
Trang 80
END;
Tn_kiu_Table;
V d:
TYPE t_Name IS
TABLE OF Emp.Ename%TYPE INDEX BY BINARY_INTEGER;
v_First_name
v_Last_name
t_Name;
t_Name;
Tn_kiu_Record;
V d:
TYPE t_Emp IS
RECORD OF (
empno
Trang 81
char(10),
char(9),
number(4),
date default sysdate,
number(7,2),
number(7,2),
number(2) not null);
t_Emp;
Tn bng%ROWTYPE;
V d:
v_Emp emp%ROWTYPE;
Truy nhp n cc trng trong d liu bn ghi dng ging nh trong 1 dng d liu tr v. V d:
v_Emp.empno, v_Emp.sal, ...
Tn ct d liu%TYPE;
v_Sal
Emp.sal%TYPE;
V d:
Vi:
INTO var1, var2... [cursor_var]
Bin lu gi cc gi tr trong
table ly t lnh select.
V d:
SELECT deptno, loc INTO v_deptno, v_loc
FROM dept
WHERE dname = SALES;
Trang 82
12.5.BI TP
1. Vit on chng trnh tm kim cc hng trong bng EMP vi bin c a t
ngoi vo l &1 dng JOb_type(emp.job%type) v a ra thng bo thch hp
vo bng MESSAGES.
2. Vit on chng trnh ghi d liu vo bng MESSAGES vi ct NUMCOL1 mang gi tr
l 1 nu l row 1 c Insert, 2 nu row 2 c Insert... . Khng c Insert nhng
row c gi tr l 6 hoc 8, thot khi vng lp insert sau gi tr 10. Commit sau vng
lp.
3. Lit k cc ct ENAME, HIREDATE, SAL Vi iu kin EMPNO bng gi tr bin
&EMPLOYEE_NO c a vo, sau kim tra:
1.1
1.2
1.3
Trang 83
Din gii
Object Navigator
PL/SQL Interpreter
D li m ngun PL/SQL.
Store Program Unit Editor To v son tho cc m ngun khi lnh PL/SQL trong
cc Store Program thuc Server.
Database Trigger Edditor
Object
name:
Tn
cc
i
tng
Find field: Tm kim cc i tng theo tn
Trang 85
Trigger database c phn ra lm nhiu loi khc nhau v c thc hin trc hoc sau mi thao tc c
th trn tng bng d liu ca database.
13.2.CC HM, TH TC
13.2.1. To hm, th tc trn Client
i vi hm, th tc hay package trn client, ta c th to v bin dch ngay chng. Oracle Builder h tr
trnh thng dch cho php kim tra li ca on chng trnh va thc hin.
13.2.3. D li i vi cc hm, th tc
Vi Procedure Builder, ta c th thc hin chy cc hm, th tc theo tng bc. Qua , ta c th pht hin
c cc li xy ra trong chng trnh, nu c. Mn hnh PL/SQL Interpreter cho php ta thc hin iu ny:
14.1.1. To th tc
Ta c th to th tc trc tip bng dng lnh sau: C php:
CREATE [OR REPLACE] PROCEDURE procedure_name
[(argument1
[mode1]
datatype1,
argument2
[mode2]
datatype2,
...)]
IS | AS
BEGIN
PL/SQL Block;
END;
Vi:
procedure_name
argument
mode
datatype
PL/SQL Block
Tn th tc
Tn tham s
Loi tham s: IN hoc OUT hoc IN OUT,
mc nh l IN
Kiu d liu ca tham s
Ni dung khi lnh SQL v PL/SQL trong
th tc
V d:
CREATE OR REPLACE PROCEDURE change_sal
(p_Percentage
IN number,
p_Error
OUT varchar2,
)
IS
v_User_exp
Exception;
BEGIN
IF p_Percentage < 0 THEN
RAISE v_User_exp;
END IF;
UPDATE emp
SET sal = sal*p_Percentage/100;
EXCEPTION
Trang 88
14.1.2. Hu b th tc
Tng t nh vic to th tc, ta c th hu b th tc thng qua cu lnh SQL. C php:
DROP PROCEDURE
Tn th tc;
DROP PROCEDURE
change_sal;
V d:
14.1.3. Cc bc lu gi mt th tc
Mt th tc trong Oracle c thc hin theo hai bc chnh sau:
1. Ni dung ca th tc c thit lp v lu gi trong database di dng vn bn
(text)
2. Ton b ni dung ca th tc c bin dch ra dng m p-code, tin cho vic thc
hin th tc .
14.2.HM
Tng t nh th tc, hm (function) cng l nhm cc lnh PL/SQL thc hin chc nng no . Khc vi
th tc, cc hm s tr v mt gi tr ngay ti li gi ca n.
Trang 89
14.2.1. To hm
Ta c th to hm trc tip bng dng lnh sau: C php:
CREATE [OR REPLACE] FUNCTION function_name
[(argument1
[mode1]
datatype1,
argument2
[mode2]
datatype2,
...)]
RETURN
datatype
IS | AS
BEGIN
PL/SQL Block;
END;
Vi:
function_name
argument
mode
datatype
PL/SQL Block
Tn hm
Tn tham s
Loi tham s: IN hoc OUT hoc IN OUT,
mc nh l IN
Kiu d liu ca tham s
Ni dung khi lnh SQL v PL/SQL trong
th tc
V d:
CREATE OR REPLACE FUNCTION get_sal
(p_Emp_id
IN number)
RETURN varchar2
IS
BEGIN
SELECT sal
FROM emp
WHERE emp_id = p_Emp_id;
RETURN
null;
EXCEPTION
WHEN others THEN
RETURN
Li: || SQLERRM;
END;
Trang 90
V d:
SQL> VARIABLE v_Sal number;
SQL>
EXECUTE
:v_SAL
:=
get_sal(7934);
PL/SQL procedure successfully completed.
SQL> PRINT v_Sal;
v_Sal
1300
14.2.5. Hu b hm
Tng t nh vic to hm, ta c th hu b hm thng qua cu lnh SQL. C php:
DROP FUNCTION Tn hm;
V d:
DROP FUNCTION get_sal;
Trang 91
14.2.6. Hm v th tc
Ta to cc th tc lu gi mt lot cc cc cu lnh phc v cho nhiu ln gi khc nhau. Th tc c th
khng c, c mt hoc nhiu tham s. Tuy nhin th tc khng tr li bt k mt kt qu no.
Hm cng ging nh th tc, n cng bao gm mt lot cc cu lnh, c th khng c, c mt hoc nhiu
tham s. Tuy nhin khc vi th tc, hm bao gi cng tr v mt kt qu. V vy, ta s dng hm trong cc
php tnh ton, gn gi tr. Khi , cu lnh thc hin s d dng v sng sa hn.
So snh gia hm v th tc
Th tc
Hm
C th c gi ging nh mt phn ca
biu thc
Khng c kiu gi tr tr v
C cha gi tr tr v
C th tr v mt hoc nhiu gi tr
(thng qua tham s OUT)
Tr v mt gi tr
14.3.PACKAGE
Package l mt tp hp cc kiu d liu, bin lu gi gi tr v cc th tc, hm c cng mt mi lin h vi
nhau, c gp chung li. c im ni bt nht ca package l khi mt phn t trong package c gi th
ton b ni dung ca package s c np vo trong h thng. Do , vic gi ti cc phn t khc trong
package sau ny s khng phi mt thi gian np vo h thng na. T , nng cao tc thc hin lnh
ca ton b hm, th tc c trong package.
Trang 92
chiu ti c.
Public procedure (th tc cng cng): bao gm cc hm, th tc ca package c th
triu gi t cc ng dng bn ngoi.
Private procedure (th tc ring phn): l cc hm, th tc c trong package v ch
c th c triu gi bi cc hm hay th tc khc trong package m thi.
Global variable (bin tng th): l bin c khai bo dng trong ton b package,
ng dng bn ngoi tham chiu c ti bin ny.
Private variable (bin ring phn): l bin c khai bo trong mt hm, th tc thuc
package. N ch c th c tham chiu n trong bn thn hm hay th tc .
14.3.2. To package
Ta c th to package trc tip bng dng lnh sau: C php
khai bo phn m t package:
CREATE [OR REPLACE] PACKAGE package_name IS
| AS
public type and cc item declarations
subprogram specifications
END package_name;
Vi:
package_name
Tn package
type and item declarations
subprogram specifications
PL/SQL
IS | AS
private type and item declarations
subprogram bodies
Khai bo cc kiu
ch s dng ring
trong package
Ni dung ca
package
END package_name;
Vi:
package_name
type and item declarations
subprogram specifications
Tn package
Phn khai bo cc bin, hng,
cursor, ngoi l v kiu
Khai bo cc hm, th tc
PL/SQL
V d:
-- Phn khai bo ca package
CREATE OR REPLACE PACKAGE comm_package
IS
v_comm
v_valid
BOOLEAN;
BEGIN
v_valid := validate_comm(p_comm);
IF v_valid = TRUE THEN
v_comm := p_comm;
ELSE
RAISE_APPLICATION_ERROR(-20210,Invalid
END IF:
END reset_comm;
END comm_package;
comm);
14.3.3. Hu package
Tng t nh vic to package, ta c th hu b hm thng qua cu lnh SQL. C php:
-- Hu phn package specification
DROP PACKAGE
Tn package;
-- Hu phn package body
DROP PACKAGE
BODY
Tn package;
V d:
DROP PACKAGE
DROP PACKAGE
comm_package;
BODY
comm_package;
Hm
DBMS_ALERT
DBMS_APPLICATION_INFO
DBMS_DDL
DBMS_DESCRIBE
DBMS_JOB
DBMS_LOCK
DBMS_MAIL
DBMS_OUTPUT
DBMS_PIPE
DBMS_SESSION
DBMS_SHARED_POOL
DBMS_SQL
DBMS_TRANSACTION
DBMS_UTILITY
UTL_FILE
Trang 96
15.1.TO TRIGGER
Khi to database trigger, ta cn lu ti mt s tiu ch nh:
Thi gian thc hin: BEFORE, AFTER
Hnh ng thc hin: INSERT, UPDATE, DELETE
i tng tc ng: bng d liu
Loi trigger thc hin: trn dng lnh hay trn cu lnh Mnh
iu kin thc hin
Ni dung ca trigger
Ta cng c th phn loi trigger theo loi cu lnh kch hot nh: INSERT, UPDATE, DELETE. Trong
cc trigger thuc mt trong ba loi lnh: INSERT, UPDATE,DELETE. Trigger UPDATE cn phi ch
r thm tn ct d liu kch hot trigger mi khi gi tr d liu trong b thay i. Bn trong Trigger c th
c cha cc lnh thao tc d liu. Do , cn phi trnh trng hp lp li theo kiu quy.
Mt cch khc ta cng c th phn loi trigger theo s ln kch hot. theo s c 02 loi trigger:
Trigger mc lnh: Trigger c kch hot mi khi thc hin cu lnh.
Trigger mc dng lnh: Trigger c kch nhiu ln ng vi mi dng d liu chu
nh hng bi thao tc thc hin lnh.
Trang 97
Tn trigger
Thi gian kch hot trigger
Loi cu lnh kch hot trigger
Tn bin thay th cho gi tr trc v
sau thay i ca dng d liu ang x l
Trigger thuc loi tc ng trn dng d
liu
Ch ra mt s iu kin rng buc thc
hin trigger
Tn bng d liu c gn trigger trn
Ni dung khi lnh SQL v PL/SQL trong
trigger
Trang 98
V d:
CREATE OR REPLACE TRIGER
BEFORE INSERT ON emp
secure_emp
BEGIN
IF TO_CHAR(sysdate,DY) IN (SAT,SUN)
OR TO_CHAR(sysdate,HH24) NOT BETWEEN 08 AND 18
THEN
RAISE_APPLICATION_ERROR (-20500,
Thi gian lm vic khng ph hp);
END IF;
END;
CREATE OR REPLACE TRIGER audit_emp_values
AFTER DELETE OR INSERT OR DELETE ON emp FOR
EACH ROW
BEGIN
INSERT INTO audit_emp_values (user_name, timestamp, id,
old_last_name, new_last_name, old_title,
new_tile, old_salary, new_salary)
VALUES (USER, SYSDATE, :old.empno, :old.ename,
:new.ename, :old.job, :new.job, :old.sal,
:new.sal);
END;
Trang 99
15.2.QUN L TRIGGER
15.2.1. Phn bit database trigger
Trigger v th tc
Trigger
Th tc
c gi ngm nh
Form Trigger
trigger_name
trigger_name
Tn trigger;
DISABLE | ENABLE;
Vi:
V d:
-- Cho php trigger c hot ng
ALTER TRIGGER
check_sal ENABLE;
Cho php/ khng cho php kch hot tt c cc databse trigger ca mt bng C php:
ALTER TABLE
table_name
Tn bng;
Vi:
V d:
-- Khng cho php cc trigger ng vi bng emp c hot ng
ALTER TABLE
COMPILE;
V d:
-- Bin dch li trigger check_sal sau khi sa i ni dung
ALTER TRIGGER check_sal COMPILE;
15.2.3. Hu b trigger
S dng cu lnh SQL hu b trigger.
Trang 101
C php:
DROP TRIGGER
trigger_name;
DROP TRIGGER
check_sal;
V d:
Trang 102
PH LC
A - TI LIU THAM KHO
[1]
[2]
Gio trnh kin trc v qun tr CSDL Oracle 8i, Cng ty c phn ti
ngn, 04/2001
[3]
[4]
[5]
[6]
[7]
Website: www.oracle.com
B - DANH MC CC HNH V
Hnh v 1. Minh ho cc thnh phn logic trong database ...
Hnh v 2. M hnh d liu thc hnh...
Hnh v 3. Cu lnh ca SQL*Plus ...
Hnh v 4. Hn ch d liu tr v ...
Hnh v 5. Cu trc hm SQL ...
Hnh v 6. Phn loi hm SQL ...
Hnh v 7. Cu trc ca Object Navigator...
Hnh v 8. Son tho hm, th tc pha Client...
Hnh v 9. Son tho hm, th tc, trigger pha Server ...
Hnh v 10. To hm, th tc ti Client ...
Hnh v 11. To hm, th tc ti Server ...
Hnh v 12. Mn hnh PL/SQL Interpreter ...
Hnh v 13. Cc bc thc hin mt th tc ...
Hnh v 14. Cu trc package ...
Hnh v 15. Th t thc hin trigger...
Hnh v 16. To trigger bng cng c Procedure Builder ...
Hnh v 17. Trigger tc ng trn dng d liu...
...6
..7
.12
...17
...23
.24
...84
..85
...86
.86
..87
...87
.89
..93
..98
.100
..100
Trang 103