Professional Documents
Culture Documents
C bn
MC LC
MC LC ... CHNG 1. GII THIU CHUNG ...
1.1. NGN NG SQL ... 1.1.1. Lch s pht trin ca ngn ng SQL ... 1.1.2. Chun SQL ... 1.2. CC KHI NIM C BN TRONG C S D LIU ... 1.2.1. Cc thnh phn logic trong database... 1.2.2. Cc i tng trong database ... 1.2.3. Cc nhm lnh SQL c bn ... 1.3. C S D LIU THC HNH... 1.3.1. M hnh d liu ... 1.3.2. Cu trc bng d liu ...
...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
Oracle c bn - SQL v PL/SQL 4.5. BI TP ... 4.5.1. Hm trn tng dng d liu ... 4.5.2. Hm trn nhm d liu ... ..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
Oracle c bn - SQL v PL/SQL 7.6. THNG TIN V TABLE TRONG T IN D LIU... 7.7. BI TP ... ...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
Oracle c bn - SQL v PL/SQL 13.1.4. Database Trigger Edditor ... 13.2. CC HM, TH TC ... 13.2.1. To hm, th tc trn Client ... 13.2.2. To hm, th tc trn Server ... 13.2.3. D li i vi cc hm, th tc ... .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
PH LC ...
A - TI LIU THAM KHO ... B - DANH MC CC HNH V...
...103
.103 ..103
Trang 4
Trang 5
Primary Key nht thit phi c s liu. Foreign Key L mt column hoc mt tp cc columns c tham chiu ti chnh bng hoc mt bng khc. Foreign Key xc nh mi quan h gia cc bng. L cc rng buc i vi d liu trong cc bng thuc database. V d: Foreign Key, Primary Key...
Constraints
V d: minh ho cc thnh phn logic trong database EMP EMPNO 7369 Row 7499 7521 7566 7654 7698 7782 Column
Hnh v 1. Minh ho cc thnh phn logic trong database
DEPTNO
DEPTNO 10 20 30 40
20 30 30 20 30 30 10
Primary key
Din gii L lnh thng dng nht, dng ly, xem d liu trong CSDL. L 3 lnh dng nhp thm nhng row mi, thay i ni dung d liu trn cc row hay xo cc row trong table. Nhng lnh ny c gi l cc lnh thao tc d liu DML (Data Manipulation Language)
Trang 6
Oracle c bn - SQL v PL/SQL CREATE ALTER DROP RENAME TRUNCATE COMMIT ROLLBACK SAVE POINT GRANT REVOKE
L 3 lnh dng thit lp, thay i hay xo b cu trc d liu nh l table, view, index. Nhng lnh ny c gi l cc lnh nh ngha d liu DDL (Data Definition Language) Qun l vic thay i d liu bng cc lnh DML. Vic thay i d liu c th c nhm li thnh cc transaction. 2 lnh ny dng gn hoc hu cc quyn truy nhp vo CSDL Oracle v cc cu trc bn trong n. Nhng lnh ny c gi l cc lnh iu khin d liu DCL (Data Control Language)
DEPT
EMP
SALGRADE
DUMMY
Hnh v 2. M hnh d liu thc hnh
BONUS
Kiu
NUMBER(2) VARCHAR2(14) VARCHAR2(13)
iu kin
PRIMARY KEY
Bng SALGRADE Tn ct
GRADE LOSAL HISAL
Kiu
NUMBER NUMBER NUMBER
iu kin
PRIMARY KEY
Trang 7
Bng EMP Tn ct
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
Kiu
NUMBER(4) VARCHAR2(10) VARCHAR2 (9) NUMBER(4) DATE NUMBER(7,2) NUMBER(7,2) NUMBER(2) NOT NULL,
iu kin
PRIMARY KEY
M phng ban
Trang 8
Vi:
SELECT DISTINCT column alias FROM table Hin th ni dung ca mt hay nhiu ct Phn bit ni dung gia cc dng d liu tr v Ly tt cc cc ct trong bng Tn ct d liu cn tr v Phn tiu ca ct d liu tr v Tn bng cha d liu truy vn
V d:
SELECT FROM emp;
Cu trc ca lnh truy vn gm c hai phn: Mnh chn la bao gm Lnh SELECT v tn ct d liu tr v Mnh biu din ni cha bao gm FROM v tn bng.
Oracle c bn - SQL v PL/SQL SELECT ename, sal *12, comm FROM SELECT ename, (sal+250)*12 FROM emp; emp;
Tiu ca ct (column alias) Trong mnh SELECT, column alias l phn nhn hin th ca column khi ly s liu ra. Trong column alias khng c c du cch v vit cch sau tn column mt du cch. Column alias c chp nhn c du cch khi c t trong du nhy kp ( ). V d: (ANUAL chnh l column alias)
SELECT ename, SAL*12 ANUAL, comm FROM emp;
Ghp tip cc ct d liu Ton t ghp tip chui (||) cho php ghp tip d liu trong cc ct khc nhau ca cng mt dng d liu vi nhau thnh mt chui. Ta c th c nhiu ton t ghp chui trong cng mt column alias. V d:
SELECT empno||ename EMPLOYEE FROM emp;
Ghp tip chui k t Trong mnh SELECT, ta c th thc hin ghp tip bt k k t no, biu thc hay s no m khng phi l column hoc column alias. V d:
SELECT empno || ename || WORK IN DEPARTMENT || deptno Employee Detail FROM emp;
10 30 20 3 rows selected.
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
NULL trong cc hm ca SQL Trong cc hm lm vic vi tng ct hay hm v hng (scalar function). Cc hm loi ny tr v tr null khi c tham s NULL, tr hm NVL v TRANSLATE c th tr v gi tr thc. C php ca hm NVL:
NVL (DATECOLUMN,01-01-2001) NVL(NUMBERCOLUMN, 9) NVL(CHARCOLUMN,STRING) NVL(comm,0) tr v tr 0 khi comm l null SELECT ename, sal*12 + NVL(comm,0) ANUAL_SAL FROM emp;
Trong cc hm lm vic vi nhm cc ct (group function): Hu ht cc hm lm vic trn nhm b qua tr null, v d nh khi s dng hm AVG tnh trung bnh cho mt ct c cc gi tr 1000, NULL, NULL, NULL, 2000. Khi trung bnh c tnh l (1000+2000)/2=1500, nh vy tr null b b qua ch khng phi xem l tr 0.
NULL trong cc biu thc so snh, iu kin kim tra c phi NULL hay khng dng cc ton t IS NULL hoc IS NOT NULL. Nu trong biu thc so snh c tr null tham gia v kt qu ca biu thc ph thuc vo tr null th kt qu l khng xc nh, tuy nhin trong biu thc DECODE, hai gi tr null c xem l bng nhau trong php so snh. Oracle xem cc biu thc vi kt qu khng xc nh tng ng vi FALSE. (V d: comm = NULL) c kt qu khng xc nh v do biu thc so snh xem nh cho kt qu FALSE. Trong cu lnh sau khng c mu tin no c chn
SELECT * FROM emp WHERE comm=NULL;
Nu mun chn cc nhn vin c comm l NULL th phi dng ton t IS NULL
SELECT * FROM emp WHERE comm IS NULL;
Khc bit gia lnh SQL v SQL*Plus SQL L ngn ng giao tip vi Oracle Server trong vic truy xut d liu Cu lnh da trn b k t chun ASCII Thao tc trn cc d liu c trong cc bng c nh ngha trong database Cu lnh c np vo b nh m trn mt hoc nhiu dng Cu lnh khng c vit tt S dng cc hm trong vic nh dng d liu 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 lnh nh dng d liu ca chnh SQL*Plus
Cho php ngi dng c th to cc bin s dng trong cu lnh SQL v thao tc vi cc bin nh: nhp d liu, kt xut d liu. Cc lnh khc cho php kt ni ti c s d liu v hin th cc ct d liu theo nh nh dng.
Vi:
user_name password database Tn truy nhp Mt khu truy nhp Tn database truy nhp
V d:
Conn Tester/tester@DB1;
Vi:
table_name Tn bng cn hin th cu trc
V d:
Desc Name DEPTNO DNAME LOC Dept; Null? NOT NULL Type NUMBER(2) VARCHAR2(14) VARCHAR2(13)
Din gii a thm on text vo dng hin ti Chuyn on text c thnh on text mi trong dng hin ti Xo on text trong dng hin ti Xo tt c cc dng trong SQL buffer Xo dng hin ti Xo dng n Xo dng t m n n Thm mt s dng nht nh Thm dng c cha text Lit k ton b cc dng trong SQL buffer
Trang 13
Lit k dng n Lit k dng m n n Hin th v chy lnh trong buffer Nhy n dng n Thay dng n bi on text Chn 1 dng trc d
ng 1
Din gii Ghi ni dung bufer thnh file. APPEND ghi thm vo file. REPLACE chn ln ni dung file c. Ghi ni dung file vo buffer. Mc nh phn ui l .sql Chy cc lnh trong file Ging lnh Start Son tho ni dung bufffer c tn l afiedt.buf chy ni dung buffer dng lnh / Son tho ni dung file
EXIT
Tn lnh
CLE[AR] FOR[MAT] format HEA[DING] text JUS[TIFY] align NOPRI[NT] NUL[L] text PRI[NT} TRU[NCATED] WRA[PPED]
Din gii Xo nh dng ca column Chuyn nh dng ca ct d liu t nhn co column Cn tri - left , phi - right, gia - center cho nhn n column Hin th text nu gi tr ca column l NULL Hin th column Xo chui ti cui dng u tin khi hin th Ph cui chui ca dng tip theo
Oracle c bn - SQL v PL/SQL COLUMN ename HEADING Employee|Name FORMAT A15 COLUMN sal JUSTIFY LEFT FORMAT $ 99,990.00 COLUMN hiredate FORMAT A9 NULL Not hired
Cc loi nh dng nh dng An 9 0 Din gii Hin th di nht n k t dng cho cc column dng k t hoc dng ngy Hin th s, khng bao gm s 0 Hin th c s 0 $Hin thi $ L Hin th k t L Hin th du thp phn , Hin th du phn chia hng nghn 999999 099999 $9999 L9999 9999.99 9,999 1234 01234 $1234 L1234 1234.00 1,234 V d Kt qu
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
2. Chn ton b thng tin trong bng EMP EMPNO ENAME JOB MGR HIREDATE 7839 7698 7782 7566 7654 7499 7844 7900 7521 7902 7369 7788 7876 7934 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
DEPTNO 10 30 10 20 30 30 30 30 30 20 20 20 20 10
Trang 15
Oracle c bn - SQL v PL/SQL 3. Hin th mi loi ngh nghip JOB ANALYST CLERK MANAGER PRESIDENT SALESMAN
4. Hin th tn nhn vin v thu nhp trong mt nm (REMUNERATION) ENAME REMUNERATION KING BLAKE CLARK JONES MARTIN ALLEN TURNER JAMES WARD FORD SMITH SCOTT ADAMS MILLER 14 rows selected. 60000 34200 29400 35700 16400 19500 18000 11400 15500 36000 9600 36000 13200 15600
5. Hin th theo ni dung di y Who, what and when KING HAS HELP THE POSITION OF PRESIDENT IN DEPT 10 SINCE 17-11-1981 BLAKE HAS HELP THE POSITION OF MANAGER IN DEPT 30 SINCE 01-05-1981 CLARK HAS HELP THE POSITION OF MANAGER IN DEPT 10 SINCE 09-06-1981 JONES HAS HELP THE POSITION OF MANAGER IN DEPT 20 SINCE 02-04-1981 MARTIN HAS HELP THE POSITION OF SALESMAN IN DEPT 30 SINCE 28-09-1981 ALLEN HAS HELP THE POSITION OF SALESMAN IN DEPT 30 SINCE 20-02-1981 TURNER HAS HELP THE POSITION OF SALESMAN IN DEPT 30 SINCE 08-09-1981 JAMES HAS HELP THE POSITION OF CLERK IN DEPT 30 SINCE 03-12-1981 WARD HAS HELP THE POSITION OF SALESMAN IN DEPT 30 SINCE 22-02-1981 FORD HAS HELP THE POSITION OF ANALYST IN DEPT 20 SINCE 03-12-1981 SMITH HAS HELP THE POSITION OF CLERK IN DEPT 20 SINCE 17-12-1980 SCOTT HAS HELP THE POSITION OF ANALYST IN DEPT 20 SINCE 09-12-1982 ADAMS HAS HELP THE POSITION OF CLERK IN DEPT 20 SINCE 12-01-1983 MILLER HAS HELP THE POSITION OF CLERK IN DEPT 10 SINCE 23-01-1982 14 rows selected. 6. Hin th cu trc bng emp;
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
Truy vn d liu vi nhiu iu kin Mnh WHERE cho php ghp c nhiu iu kin thng qua cc ton t logic AND/OR. Ton t AND yu cu d liu phi tho mn c 2 iu kin. Ton t OR cho php d liu tho mn 1 trong 2 iu kin. V d:
SELECT DEPTNO, JOB, ENAME, SAL FROM EMP WHERE SAL BETWEEN 1000 AND 2000 AND JOB = MANAGER; SELECT DEPTNO, JOB, ENAME, SAL FROM EMP WHERE SAL BETWEEN 1000 AND 2000 OR JOB = MANAGER; SELECT DEPTNO, JOB, FROM EMP WHERE SAL > 1500 AND JOB = MANAGER OR JOB =SALESMAN; SELECT DEPTNO, JOB, FROM EMP WHERE SAL > 1500 AND (JOB = MANAGER OR JOB =SALESMAN); 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 Ton t ln hn hoc bng Ton t nh hn hoc bng
Din gii
y [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
Din gii Ph nh mnh Yu cu d liu phi tho mn c 2 iu kin Cho php d liu tho mn 1 trong 2 iu kin
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);
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 '^';
IS [NOT] NULL V d:
SELECT * FROM emp WHERE comm IS NULL ;
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
Mnh ORDER BY mc nh sp xp theo th t tng dn ASC[ENDING] S thp trc Ngy nh trc K t theo bng ch ci sp xp theo th t ngc li (gim dn) t t kho DESC[ENDING] sau column cn sp th t. Vi d:
SELECT ENAME, JOB, HIREDATE FROM EMP ORDER BY HIREDATE DESC ;
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 ALLEN WARD MARTIN TURNER ADAMS MILLER DEPTNO 30 30 30 30 20 10 SAL 1600 1250 1250 1500 1100 1300
4. Hin th tn v ngh nghip nhng nhn vin lm ngh th k (cleck) ti phng 20.
ENAME SMITH ADAMS JOB CLERK CLERK
Trang 21
6. Hin th tn nhn vin, ngh nghip, lng ca nhng nhn vin c gim c qun l.
ENAME SMITH ALLEN WARD JONES MARTIN BLAKE CLARK SCOTT TURNER ADAMS JAMES FORD MILLER JOB CLERK SALESMAN SALESMAN MANAGER SALESMAN MANAGER MANAGER ANALYST SALESMAN CLERK CLERK ANALYST CLERK SAL 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 ADAMS DEPTNO HIREDATE 20 12-JAN-83
8. Hin th tn nhn vin, lng mt nm (ANUAL_SAL ), thng sao cho lng ln hn thng v ngh nghip l SALEMAN, sp theo th t lng gim dn v tn tng dn.
ANUAL_SAL 19200 18000 15000 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:
Thc hin vic tnh ton ngay trn d liu C th thao tc, thay i ngay trn tng mc d liu tr v Hoc cng c th thao tc trn nhm cc d liu tr v C th nh dng li cc d liu tr v c kiu s, hay kiu thi gian C th chuyn i kiu d liu tr v
Trang 23
Din gii Cho gi tr lm trn ca n (n cp m, mc nhin m=0) Cho gi tr n ly m ch s tnh t chm thp phn Cho s nguyn nh nht ln hn hoc bng n Cho s nguyn ln nht bng hoc nh hn n Cho ly tha bc n ca m Cho gi tr ca en Cho cn bc 2 ca n, n>=0 Cho du ca n.
n<0 c SIGN(n)= -1 n=0 c SIGN(n)= 0 n>0 c SIGN(n)= 1
ABS(n) MOD(m,n)
Trang 24
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 5 0 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 0 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
V d hm POWER(m,n)
SELECT SAL, POWER(SAL,2), FROM EMP WHERE DEPTNO =10; POWER(SAL,3), POWER(50,5)
Trang 25
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)
SAL SQRT(SAL) SQRT(40) SQRT(COMM) 5000 70.7106781 6.32455532 2450 49.4974747 6.32455532 1300 36.0555128 6.32455532
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 Cho chui vi k t u cc t l ch hoa, cc ch cn li l ch thng Thay tt c cc chui search_string c trong chui char bng chui replacement_string. Ging LPAD(char1, n [,char2]) nhng cn phi. B cc k t trng bn phi Cho chui ng m ca char. Cho chui con ca chui char ly t v tr m v phi n k t, nu khng ch n th ly cho n cui chui Cho chui trong mi k t trong chui from thay bng k t tng ng trong chui to, nhng k t trong chui from khng c tng ng trong chui to s b loi b. Cho chui ch hoa ca chui char Cho k t ASCII ca byte u tin ca chui char Tm v tr chui char2 trong chui char1 bt u t v tr n, ln xut hin th m. Cho chiu di ca chui 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;
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 ACCOUNTING RESEARCH SALES OPERATIONS LPAD(DEPTNO,20,'') 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) ACCOUNTING RESEARCH SALES OPERATIONS *** *** *** *** ACCOUNTING RESEARCH SALES OPERATIONS RPAD(DEPTNO,20,'') 10 20 30 40
V d hm SUBSTR(char, m [,n])
SELECT SUBSTR(ORACLE,2,4), FROM DEPT; SUBS SUBSTR(DNAME, SUBST RACL RACL RACL RACL CCOUNTING ESEARCH ALES PERATIONS COUNT SEARC LES ERATI SUBSTR(DNAME,2), SUBSTR(DNAME,3,5)
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 LTRIM(DNAME,'A LTRIM(DNAME,'A LTRIM(DNAME,'A 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 RTRIM(DNAME,'A RTRIM(DNAME,'A RTRIM(DNAME,'A 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 FORD SOUN F630
V d hm LENGTH(char)
SELECT LENGTH(SQL FROM DEPT; COURSE), LENGTH(DEPTNO), LENGTH(DNAME)
V d hm REPLACE(char,search_string[,replacement_string])
SELECT JOB, REPLACE(JOB, SALESMAN, SALESPERSON), ENAME, REPLACE(ENAME, CO,PR)
FROM EMP WHERE DEPTNO =30 OR DEPTNO =20; JOB REPLACE(JOB,'SALESMAN', ENAME 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
MANAGER MANAGER MANAGER MANAGER SALESMAN SALESPERSON SALESMAN SALESPERSON SALESMAN SALESPERSON CLERK CLERK SALESMAN SALESPERSON ANALYST ANALYST CLERK CLERK ANALYST ANALYST CLERK CLERK
V d cc hm lng nhau:
SELECT DNAME, LENGHT(DNAME), LENGHT(TRANSLATE,DNAME, AS,A)) FROM DEPT; DNAME ACCOUNTING RESEARCH SALES OPERATIONS LENGTH(DNAME) LENGTH(TRANSLATE(DNAME,'AS','A')) 14 14 14 14 14 13 12 13
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
V d hm ADD_MONTHS(d,n)
SELECT HIREDATE, FROM EMP WHERE DEPTNO=20; ADD_MONTHS(HIRE,3), ADD_MONTHS(HIREDATE,-3)
HIREDATE ADD_MONTHS ADD_MONTHS 02-04-1981 02-07-1981 02-01-1981 03-12-1981 03-03-1982 03-09-1981 17-12-1980 17-03-1981 17-09-1980 09-12-1982 09-03-1983 09-09-1982 12-01-1983 12-04-1983 12-10-1982
V d hm NEXT_DAY(d, char )
SELECT HIREDATE, FROM EMP WHERE DEPTNO = 10; NEXT_DAY(HIREDATE,FRIDAY), NEXT_DAY(HIREDATE,6)
HIREDATE NEXT_DAY(H NEXT_DAY(H 17-11-1981 20-11-1981 20-11-1981 09-06-1981 12-06-1981 12-06-1981 23-01-1982 29-01-1982 29-01-1982
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
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
ROUND(date1,YEAR)
TRUNC(date1,
MONTH)
TRUNC(date1, YEAR)
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.
DECODE(EXPR, SEARCH1, RESULT1, SEARCH2, RESULT2, DEFAULT): NVL(COL|VALUE, VAL) Greatest(col|value1, col|value2)
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 Th k; S ch ngy BC Nm; S ch ngy BC Ch nm vi 3,2,1 k t s Ch nm theo chun ISO Ch nm theo cch pht m ca ngi anh; Qu trong nm Gi tr thng vi 2 s (01-12) Tn y ca thng theo ting anh, di 9 Thng vi 3 k t vin tt (JAN, FEB...) Tun trong nm hoc trong thng Ngy trong nm, thng hoc tun Ch th trong tun Ch th trong tun vi 3 k t vit tt
Trang 32
Ngy Julian; bt u t ngy 31/12/4713 trc cng nguyn Ch nh sng, chiu Ch gi trong ngy (1-12) hoc (0-23) Pht (0-59) Giy (0-59) S giy n na m (0-86399) c t ng thm khi t trong khun dng on k t t trong nhy p c t ng thm khi t trong khun dng Thm phn th t (1st, 2nd, 4th ) Pht m s ( FOUR vi DDSP) Pht m v chuyn sang dng th t ( First, second, ...) Ngy chuyn giao thin nin k vi cc nm <1999.
Nm Nm hin t
0-49 50-99
Mt
khun
dng
s Din gii V d
999999 099999 $999999 L999999 999999.99 999,999 999999MI 999999PR 99.9999RRRR 9999V99 B9999.99
K t
9 0
Kt qu
1234 001234 $1234 FF1234 1234.00 1,234 1234<1234> 1.234E+03 123400 1234.00
, MI PR
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
Ch : Tt c cc hm trn nhm mu tin u b qua gi tr NULL tr hm COUNT. Dng hm NVL chuyn i v tnh gi tr NULL. C 2 cch dng cc cc hm ny Tc ng trn ton b cc dng d liu ca cu lnh truy vn Tc ng trn mt nhm d liu cng tnh cht ca cu lnh truy vn. Cng tnh cht c ch bi mnh :
[GROUP BY expr] [HAVING condition]
V d: Tc ng trn ton b cc dng d liu ca cu lnh truy vn: Tnh mc lng trung bnh ca ton b nhn vin
Select AVG(SAL) FROM EMP;
V d: Tc ng trn mt nhm d liu cng tnh cht ca cu lnh truy vn. Tnh mc lng trung bnh ca tng loi ngh nghip
SELECT JOB, AVG(SAL) FROM EMP GROUP BY JOB;
Ch : Ch c cng t trong mnh SELECT cc hm nhm hoc cc column t trong mnh GROUP BY. V d:
ng: SELECT MAX(SAL), JOB FROM EMP GROUP BY JOB;
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
SELECT JOB, MAX(SAL) FROM EMP GROUP BY JOB HAVING COUNT(*)>3; JOB CLERK SALESMAN MAX(SAL) 1300 1600
SELECT JOB, MAX(SAL) FROM EMP HAVING MAX(SAL)>=3000 GROUP BY JOB; JOB ANALYST PRESIDENT 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
Oracle c bn - SQL v PL/SQL 30 30 30 30 30 20 20 20 20 10 MARTIN ALLEN TURNER JAMES WARD FORD SMITH SCOTT ADAMS MILLER 1250 1600 1500 950 1250 3000 800 3000 1100 1300
Trang 37
5. Tm ngy th 6 u tin cch 2 thng so vi ngy hin ti hin th ngy di dng 09 February 1990. 6. Tm thng itn v tn nhn vin, ngy gia nhp cng ty ca nhn vin phng s 20, sao cho hin th nh sau:
ENAME JONES FORD SMITH SCOTT ADAMS DATE_HIRED 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 SMITH ALLEN WARD JONES BLAKE CLARK TURNER MARTIN KING JAMES FORD MILLER SCOTT ADAMS HIREDATE REVIEW 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
9. Cho bit th ca ngy hin ti 10. a chui di dng nn/nn, kim tra nu khng khun dng tr li l YES, ngc li l NO. Kim tra vi cc chui 12/34, 01/1a, 99\88
VALUE VALID?
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.
4. Tm tt c cc phng ban m s nhn vin trong phng >3 5. Tm ra mc lng nh nht ca mi nhn vin lm vic cho mt gim c no sp xp theo th t tng dn ca mc lng.
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 E.ENAME, D.DEPTNO, D.DNAME EMP E, DEPT D E.DEPTNO (+)=D.DEPTNO D.DEPTNO IN (30, 40); DEPTNO DNAME 30 30 30 30 30 30 40 SALES SALES SALES SALES SALES SALES OPERATIONS
Mnh USING (Tng t nh Natural Join, nhng cho php ch r tn ct c s dng trong php kt ni).
Trang 41
Oracle c bn - SQL v PL/SQL SELECT E.ENAME, D.DNAME FROM EMP E JOIN DEPT D USING (DEPTNO);
Mnh ON (Ch r tn ct tham gia trong php kt ni) SELECT E.ENAME, D.DNAME FROM EMP E JOIN DEPT D ON (E.DEPTNO = D.DEPTNO);
Kt ni tri LEFT OUTER JOIN SELECT E.ENAME, D.DNAME FROM EMP E LEFT OUTER JOIN DEPT D ON (E.DEPTNO = D.DEPTNO);
Kt ni tri RIGHT OUTER JOIN SELECT E.ENAME, D.DNAME FROM EMP E RIGHT OUTER JOIN DEPT D ON (E.DEPTNO= D.DEPTNO);
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
Ly phn giao cc kt qu ca nhiu cu hi Ly kt qu c trong cu hi th nht m khng c trong cu hi th hai (cu hi sau ton t 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
Din gii Khng thuc So snh mt gi tr vi mi gi tr trong mt danh sch hay trong kt qu tr v ca cu hi con, phi sau ton t = So snh mt gi tr vi mi gi tr trong danh sch hay trong kt qu tr v ca cu hi con. 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
Vi:
START WITH CONNECT BY PRIOR c t im u ca hnh cy. Khng th column gi level mnh ny. Ch column trong mi lin h tnh cy. nh hng cu trc. Nu prior xut hin trc mgr, Mgr s c tm trc sau n empno, y l hnh cy hng ln. Nu prior xut hin trc empno, empno s c tm trc sau n empno, y l hnh cy hng xung.
V d:
SELECT LEVEL, DEPTNO, EMPNO, ENAME, JOB, SAL FROM EMP CONNECT BY PRIOR MGR = EMPNO START WITH empno = 7876; LEVEL 1 2 3 4 DEPTNO 20 20 20 10 EMPNO ENAME 7876 7788 7566 7839 ADAMS SCOTT JONES KING JOB CLERK SALEMAN MANAGER PRESIDENT SAL 1100 3300 2975 5000
V d 2:
SELECT LEVEL, DEPTNO, EMPNO, ENAME, JOB, SAL FROM EMP CONNECT BY PRIOR EMPNO = MGR AND ENAME != SCOTT
Trang 45
Oracle c bn - SQL v PL/SQL START WITH MGR IS NULL; LEVEL 1 2 3 3 3 3 3 2 3 2 3 4 DEPTNO 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 KING BLAKE MARTIN ALLEN TURNER JAMES WARD CLARK MILLER JONES FORD SMITH JOB 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.
iu kin mc
Trang 46
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 MARTIN WARD ALLEN TURNER BLAKE CLARK JONES FORD SCOTT KING JOB SALESMAN SALESMAN SALESMAN SALESMAN MANAGER MANAGER MANAGER ANALYST ANALYST PRESIDENT SAL 1250 1250 1600 1500 2850 2450 2975 3000 3000 5000 GRADE DNAME 2 2 3 3 4 4 4 4 4 5 SALES SALES SALES SALES SALES ACCOUNTING RESEARCH RESEARCH RESEARCH ACCOUNTING
7. Hin th chi tit v nhng nhn vin kim c 36000 $ 1 nm hoc ngh l cleck. (gm cc trng tn, ngh, thu nhp, m phng, tn phng, mc lng)
ENAME JAMES SMITH ADAMS MILLER FORD SCOTT JOB CLERK CLERK CLERK CLERK ANALYST ANALYST ANUAL_SAL DNAME 11400 9600 13200 15600 36000 36000 SALES RESEARCH RESEARCH ACCOUNTING RESEARCH RESEARCH GRADE 1 1 1 2 4 4
Trang 47
11. Hin th ngh nghip c tuyn dng vo nm 1981 v khng c tuyn dng vo nm 1994.
12. Tm nhng nhn vin gia nhp cng ty trc gim c ca h. 13. Tm tt c cc nhn vin, ngy gia nhp cng ty, tn nhn vin, tn ngi gim c v ngy gia nhp cng ty ca ngi gim c y.
EMP_NAME EMP_SAL MGR_NAME 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 BLAKE MARTIN ALLEN TURNER JAMES WARD CLARK MILLER JONES FORD SMITH SCOTT ADAMS 13 rows selected.
14. Tm nhng nhn vin kim c lng cao nht trong mi loi ngh nghip.
JOB ANALYST CLERK MANAGER PRESIDENT SALESMAN MAX(SAL) 3000 1300 2975 5000 1600
15. Tm mc lng cao nht trong mi phng ban, sp xp theo th t phng ban.
ENAME KING JOB PRESIDENT DEPTNO 10 SAL 5000 Trang 48
17. Hin th nhng nhn vin c mc lng ln hn lng TB ca phng ban m h lm vic.
EMPNO ENAME 7839 7566 7902 7788 7698 7499 KING JONES FORD SCOTT BLAKE ALLEN SAL 5000 2975 3000 3300 2850 1600 DEPTNO 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
DEFINE condition = 'sal > 1000'
> 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 KING LENGTH OF SERVICE 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] [STORAGE storage_clause] Ghi mnh lu tr, n v mc nh l KB trong cc cc chn la l: INITIAL - dung lng khi to; NEXT - dung lng tng tip theo; MINEXTENTS - % m rng nh nht; MAXEXTENTS- % m rng ln nht; PCTINCREASE - Tc tng hng nm. To bng c cu trc ging mnh truy vn 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
[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
Oracle c bn - SQL v PL/SQL (GRADE NUMBER CONSTRAINT PK_SALGRADE PRIMARY LOSAL NUMBER, HISAL NUMBER) TABLESPACE USER STORAGE (INITIAL 6144 NEXT 6144 MINEXTENTS 1 MAXEXTENTS 5 PCTINCREASE 5) 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 ;
to mt table mi, chng ta cn phi chun b mt s thng tin sau: Table phi c chun ha. Nhng column m cho php null nn nh ngha sau tit kim ni lu tr. Gp cc table li nu c th. Ch nh cc thng s pcfree v pctused C th ch nh 2 thng s initstran, maxtrans C th ch nh tablespace cho table C th c lng kch thc table, v cc thng s cho storage.
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
3. Tnh ton khong a trng kt hp bng gi tr ca mi row. 4. Tnh ton kch thc trung bnh ca row:
Kch thc trung bnh ca row = row header +A+B+C A = Tng chiu di ca cc ct <= 250 byte B = Tng chiu di ca cc ct > 250 byte C = Khong a trng kt hp
Trong :
object Tn object
Trang 54
Oracle c bn - SQL v PL/SQL schema part dblink Schema cha object Thnh phn ca object Tn CSDL cha object
Oracle gii quyt vic tham chiu cc Object Khi tham chiu n mt object trong cu lnh SQL, Oracle phn tch cu lnh v v xc nh cc object trong khng gian tn. Sau khi xc nh cc object, Oracle thc hin cc thao tc m cu lnh quy nh trn object. Nu tn object truy cp khng thuc khng gian tn th cu lnh khng c thc hin v c thng bo li. Cu lnh sau thm mt mu tin vo bng DEPT
INSERT INTO Dept VALUES (50, 'SUPPOR', 'PARIS')
Theo ng cnh ca cu lnh, Oracle xc nh bng DEPT c th l: Mt table trong schema ca bn Mt view trong schema ca bn ng ngha ring cho table hoc view ng ngha chung cho table hoc view
Tham chiu n cc object khng thuc quyn s hu tham chiu n cc object khng thuc schema hin thi, phi ch ra tn ca schema cha object mun truy cp
schema.object
Tham chiu cc object t xa truy cp n mt CSDL xa, sau tn object phi ch ra tn lin kt CSDL (database link) ca CSDL cha object mun truy cp. Database link l mt schema object, Oracle dng thm nhp v truy xut CSDL t xa.
Trang 55
NUMBER
S vi du chm ng vi precision bng 38. Nh rng scale khng c p dng cho s vi du chm ng.
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
Mt table khng th cha nhiu hn mt ct kiu LONG D liu kiu LONG khng th tham gia vo cc rng buc ton vn, ngoi tr kim tra NULL v khc NULL Khng th index mt ct kiu LONG Khng th truyn tham s kiu LONG cho hm hoc th tc Cc hm khng th tr v d liu kiu LONG Trong cu lnh SQL c truy cp cc ct kiu LONG, th vic cp nht hoc kha cc bng ch cho php trong cng mt CSDL
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 Chui h hexa cho bit block cha row Chui h hexa cho bit row trong block Chui h hexa cho bit database file cha block
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
Oracle t ng chuyn chui '00002514.0001.0001' sang kiu ROWID trong php so snh
Ngi s dng t chuyn i Oracle cung cp cc hm chuyn i kiu, v d TO_NUMBER TO_CHAR TO_DATE Chuyn sang kiu s Chuyn sang kiu k t Chuyn sang kiu ngy
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
Oracle c bn - SQL v PL/SQL C php khi t CONSTRAINT mc TABLE [CONSTRAINT constraint_name] PRIMARY KEY (column, Column..) C php khi t CONSTRAINT mc COLUMN [CONSTRAINT constraint_name] PRIMARY KEY
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 Thm column hay constraint. Sa i kiu cc column B constraint. Che khut hoc a vo s dng cc CONSTRAINT m khng xa hn
Ch :
Trang 60
Kh dng mnh MODIFY khng th chuyn tnh cht ca COLUMN c ni dung l NULL chuyn thnh NOT NULL; Khng th a thm mt ct NOT NUL nu table c s liu. Phi thm ct NULL, in y s liu, sau chuyn thnh NOT NULL. Khng th chuyn i kiu khc nhau nu column cha s liu Khng th dng mnh MODIFY nh ngha cc CONSTRAINT tr rng buc NULL/NOT NULL. Mun sa CONSTRAINT cn xo chng sau ADD thm vo.
V d 1:
ALTER TABLE emp ADD (spouse_name CHAR(10);
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 xa tt c cc rng buc ton vn lin quan n table b xa.
V d:
DROP TALE emp
Khi drop table th: Xa tt c d liu View v synonymlin quan vn cn nhng khng c gi tr Cc giao dch cha gii quyt xong s c commit Ch ngi to ra table hay DBA mi c th xa table
Trang 61
Oracle c bn - SQL v PL/SQL COMMENT ON TABLE EMP IS THONG TIN NHAN VIEN; COMMENT ON COLUMN EMP.EMPNO IS MA SO NHAN VIEN;
Trong :
old new Tn c Tn mi
V d:
RENAME emp TO employee
Trong :
REUSE STORAGE gi li khung cha, ch xa d liu
Ngoi ra cn c cc view quan trng khc l: DICTIONARY: Thng tin v ton b cc table, view, snapshot trong t in d liu TABLE_PRIVILEGES: Thng tin v vic gn quyn trn cc i tng IND: ng ngha ca USER_INDEX.
Mun hin th ton b thng tin v cc table, view, snapshot trong t in d liu dng lnh
SELECT * FROM DICTIONARY;
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 Data Type Size. NUMBER VARCHAR2 DATE DATE NUMBER NUMBER 4 20 7,2 2
2. To bng ASSIGNMENTS vi cc column c ch ra di y, ng thi ct PROJID l foreign key ti bng PROJECT, ct EMPNO l foreign key ti bng EMP.
Column name PROJID EMPNO A_START_DATE A_END_DATE BILL_AMOUNT ASSIGN_TYPE Data Type Size. NUMBER NUMBER DATE DATE NUMBER VARCHAR2 4 4 4,2 2 NOT NULL NOT NULL
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
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
Bt u t phin bn Oracle 9i, ta c th thm mi dng d liu v t gi tr mc nh thng qua t kho DEFALT V d: INSERT INTO EMP (EMPNO, ENAME, DEPTNO) VALUES (8000,MIKE,DEFAULT);
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
FIRST: insert cho cu lnh u tin c gi tr iu kin ng ALL: insert cho mi cu lnh c gi tr iu kin l ng
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');
Ta cng c th s dng mnh DEFAULT trong cu lnh cp nht d liu V d: UPDATE EMP SET COMM = DEFAULT;
Ch thch:
- Cp nht cc nhn vin Dallas hoc Detroit - Thay DEPTNO ca cc nhn vin ny bng DEPTNO ca Boston - Thay lng mi nhn vin bng lng trung bnh ca b phn * 1.1 - Thay commission ca mi nhn vin bng commission trung bnh ca b phn * 1.5
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
T ng COMMIT
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; COMMIT; = MARKETING
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
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...]);
Trang 69
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 SAL COMM 2850 1250 1600 1500 950 1250 1400 300 0 500 DEPTNO 30 30 30 30 30 30 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
Trang 70
Trong :
OR REPLACE FORCE column, column WITH CHECK OPTION to view chn ln view cng tn to view c khi table hay view no khng tn ti trong cu lnh SELECT. Tn cc column ca view Nu c lnh insert hoc update ln vie, ql s kim tra iu kin ph hp trong mnh where ca view. Nu khng d liu s ch kim tra cc rng buc ton vn ca bng. Ch ra tn ca iu kin kim tra.
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
View c th thc hin cc lnh SQL sau: SELECT INSERT (insert trn view cng nh hng ln table) Update (nh hng ln table) Comment
Tuy nhin c nhng rng buc sau: Khng th insert, update trn view, khi query ca view cha cc ton t join, set, distinct, group by, group. Khng th no insert, update trn view, nu nh trong view c dng with check option. Khng th no insert trn view, trn table c nhng ct not Null m khng dng default value ( bi v trong trng hp ny view s c t colunm hn table table. Nn insert 1 row vo view, thc cht l insert row vo table s khng hp l). Khng th no insert trn view, nu view ny c dng biu thc decode. Nhng query ca view khng th no tham kho vo 2 column gi nextval, currval (nextval, currval dng cho sequence).
10.2.BI TP
1. To view c hin th nh sau:
select * from aggredates; DEPTNO AVERAGE MAXIMUN 5000 3300 2850 MINIMUN 1300 800 950 SUM 8750 11175 9400 NO_SALS NO_COMMS 3 5 6 0 0 4
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.
Quyn trn i tng: CREATE SESION: Truy nhp vo CSDL CREATE TABLE: to bng trong user CREATE SEQUENCE: To sequence CREATE VIEW: To view CREATE PROCEDURE: To procedure 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.
Gn privilege cho Role Gn Role c cc i tng Mt s Role hay dng: CONNECT RESOURCE
Lnh gn v xo Role ging nh lnh gn v xo Privilege. Chi tit xem trong phn qun tr Oracle.
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;
Dng Synonyms c nhng li im sau: Khng tn thm ni lu tr khc bi v n c ct trn t in d liu. Lm n gin on chng trnh SQL. Tng tnh bo mt cho database. C th cho php mi ngi (public) truy xut cc i tng ca Oracle.
V d: Chng ta c mt table EMPLY trong schema emp_01 Khi lp trnh th phi truy xut theo emp_01. EMPLY, tn di nh vy th on chng trnh s di s d lm ln. Nn chng ta phi dng synonym
CREATE SYNONYM EMP FOR EMP_01.EMPLY;
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 BEGIN UPDATE emp SET sal = 9000 WHERE empno = 0001; END; NUMBER(4):=7788;
V d 2:
DECLARE v_deptno v_loc BEGIN NUMBER(2); VARCHAR2(15);
Trang 76
Oracle c bn - SQL v PL/SQL SELECT deptno, loc INTO v_deptno, v_loc FROM dept WHERE dname = 'SALES'; EXCEPTION WHEN others THEN Message(SQLERRM); END;
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;
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;
V d2:
CURSOR c_Dept(p_Deptno NUMBER) SELECT deptno, dname FROM dept WHERE deptno>10; IS
M cursor:
OPEN Tn cursor | Tn cursor( danh sch bin);
V d1:
OPEN c_Dept;
V d2:
OPEN c_Dept(10);
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 tr li gi tr True nu cursor ang m
Trang 79
Oracle c bn - SQL v PL/SQL %notfound %found %rowcount tr li tr row tr li gi tr True nu lnh fetch hin thi tr khng c row li gi tri true cho n khi fetch khng cn no li s row c thc hin bng lnh fetch
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
Oracle c bn - SQL v PL/SQL UPDATE Dept SET loc='DALLAS' WHERE CURRENT OF c_Dept; -- m s lng bn ghi c cp nht v_sales_count := sales_count + 1; ELSIF (v_dept.dname != 'SALES')AND(v_Dept.loc!='NEWYORK') THEN -- Cp nht d liu trn cursor UPDATE Dept SET loc = 'NEWYORK' WHERE CURRENT OF c_Dept; -- m s lng bn ghi c cp nht v_non_sales := v_non_sales + 1; END IF; END LOOP; -- ng cursor CLOSE c_Dept; -- Lu gi cc thng s va xc nh vo bng INSERT INTO counts (sales_set, non_sales_set) VALUES (v_sales_count, v_non_sales); -- Ghi nhn cc thay i d liu trn COMMIT; END;
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 [NOT NULL{:=|DEFAULT} biu thc], Tn kiu [NOT NULL{:=|DEFAULT} biu thc]...);
Tn_kiu_Record;
V d:
TYPE t_Emp IS RECORD OF ( empno
Trang 81
Oracle c bn - SQL v PL/SQL ename job mgr hiredate sal comm deptno v_Emp_record t_Emp; char(10), char(9), number(4), date default sysdate, number(7,2), number(7,2), number(2) not null);
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, ...
V d:
v_Sal
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:
C phi mc lng ln hn 1200 Tn nhn vin c phi c cha ch T ngy gia nhp c quan c phi l thng 10 (DEC)
v a gi tr kim tra ny vo bng message ct charcol1 (th vi cc gi tr 7654, 7369, 7900, 7876) 4. a vo vng lp v t 1 n 10 lnh: UPDATE messages SET numcol2=100 WHERE numcol1 = v; nu bt k mt ln update no c s lng row >1 th exit khi vng lp.
Trang 83
Store Program Unit Editor To v son tho cc m ngun khi lnh PL/SQL trong cc Store Program thuc Server. Database Trigger Edditor To v son tho cc m ngun khi lnh PL/SQL trong cc Trigger thuc Server.
Cc thnh phn chnh ca Object Navigator bao gm: Navigator drop down litst: Danh sch s xung hin th tn cc th tc Subject indicator: nh v cc i tng cn son tho Type icon: Biu tng cho cc loi
Trang 84
Cc thnh phn chnh: Cc nt bm thc hin cng vic: Compile, Apply, Revert, New, Delete, Close v Help Danh sch tn cc hm, th tc khc Ni son tho hm, th tc
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.
Vic to hm, th tc c thc hin theo ba bc: Khai bo tn hm hay th tc Son tho ni dung ca hm hay thu tc Bin dich hm hay th tc va to v xc nh cc li nu c.
Ta thc hin vic to hm, th tc trn server theo hai bc: To hm, th tc Son tho v ghi li ni dung ca hm, th tc
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:
Cu trc ca mn hnh PL/SQL Interpreter c chia lm ba phn chnh: Phn m ngun hm, th tc Phn iu khin Phn tng tc trc tip vi d liu
Trang 87
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 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
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
WHEN v_User_exp THEN p_Error := Li: Phn trm nh hn 0; RETURN; WHEN others THEN p_Error := Li: || SQLERRM; END;
Vi vic to cc th tc thng qua cu lnh, ta c th d dng to cc script cha cc th tc cn thit khi to mi mt database. Mt cch khc, ta c th to mi hay sa i th tc thng qua cng c ca Oracle. Trong chng trc, ta bit cch s dng Procedure Builder to mi th tc.
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 V d: DROP PROCEDURE change_sal; Tn th tc;
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 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; 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
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 Thc hin ging nh thc hin cc cu lnh PL/SQL Khng c kiu gi tr tr v C th tr v mt hoc nhiu gi tr (thng qua tham s OUT) Hm C th c gi ging nh mt phn ca biu thc C cha gi tr tr v Tr v mt gi tr
Li ch ca vic s dng hm, th tc Nng cao hiu sut: Trnh vic ti s dng cc cu lnh nhiu ln bi nhiu User khc nhau. Gim thiu thi gian bin dch cu lnh PL/SQL trong pha phn tch cu lnh. Gim thiu s ln gi lnh thc hin trn database, t , lm gim lu lng truyn thng trn mng. Nng cao kh nng bo tr: Ta c th d dng sa ni dung bn trong cc hm, th tc m khng nh hng n vic giao tip ca chng (cc tham s v li gi vn y nguyn). Thay i ni dung ca mt hm, hay th tc c th ng dng c ngay cho nhiu user khc nhau. Tng tnh bo mt v ton vn ca d liu: Vi vic iu khin truy nhp d liu dn tip i vi cc i tng trong database s lm nng cao tnh bo mt ca d liu. Quan h gia cc cu lnh trong hm, th tc lun c m bo.
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 Phn khai bo cc bin, hng, cursor, ngoi l v kiu s dng trong ton b package Khai bo cc hm, th tc
Trang 93
subprogram bodies 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 number := 10; -- Khai bo bin c gi tr khi to
-- Khai bo th tc giao tip vi bn ngoi PROCEDURE reset_comm (p_comm IN number); END comm_package; -- Phn thn ca package CREATE OR REPLACE PACKAGE IS
BODY
comm_package
-- Hm ring phn ch s dng trong package FUNCTION validate_comm (v_comm IN number) RETURN BOOLEAN IS v_max_comm number; BEGIN SELECT max(comm) INTO v_max_comm FROM emp; IF v_comm > v_max_comm THEN RETURN FALSE; ELSE RETURN TRUE; END IF; END validate_comm; -- Th tc giao tip vi bn ngoi PROCEDURE reset_comm (p_comm IN number) IS
Trang 94
v_valid BEGIN
BOOLEAN;
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;
n gin trong vic thit k ng dng Tt c cc thng tin cn thit cho vic giao tip u c t trong phn c t ca package (package specification). Ni dung phn ny c th c son tho v bin dch c lp vi phn thn ca package (package body). Do , cc hm hay th tc c gi ti cc thnh phn ca package c th c bin dch tt. Phn thn ca package c th c tip tc pht trin cho n khi hon thnh ng dng.
n du thng tin (hiding information) Package cho php s dng cc thnh phn bn trong di dng public (cng cng) hay private (ring t). Tu theo yu cu thit k, ta c th cho php truy nhp hay n du thng tin. T , c th bo v c tnh ton vn d liu.
Nng cao hiu sut s dng Ngay khi gi mt hm hay th tc bt k trong package ln u tin. Ton b ni dung ca package s c np vo b nh. Do vy, cc hm v th tc con trong package gi n sau ny c th thc hin ngay m khng cn phi np li vo b nh. Vic ny lm gim thiu thao tc truy xut vo ra (I/O access) nng cao tc .
Trang 95
Thc hin qu ti (overloading) Package cho php thc hin qu ti i vi cc hm v th tc trong n. Theo , cc hm v th tc khc nhau c th c php t trng tn. Vic ny s nng cao tnh mm do ca vic s dng hm, th tc trong package.
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
C php lnh to trigger mc dng d liu: CREATE [OR REPLACE] TRIGGER trigger_name timing event1 [OR event2 OR event3] ON table_name [REFERENCING OLD AS old | NEW AS new] FOR EACH ROW [WHEN condition] BEGIN PL/SQL Block; END; Vi: trigger _name timing event referencing FOR EACH ROW WHEN table_name PL/SQL Block 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 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; secure_emp
Trang 99
15.2.QUN L TRIGGER
15.2.1. Phn bit database trigger
Trigger v th tc Trigger Lnh to CREATE TRIGGER Lu gi trong T in d liu di dng m ngun v dng p-code c gi ngm nh Khng cho php dng: COMMIT, ROLLBACK, SAVEPOINT Th tc Lnh to CREATE PROCEDURE Lu gi trong T in d liu di dng m ngun v dng p-code Thc hin theo li gi tng minh Cho php dng: COMMIT, ROLLBACK, SAVEPOINT.
Trang 100
Database Trigger v Form Trigger Database Trigger c thc hin khi c tc ng ln database do ng dng hoc do chnh cc cng c ca Oracle c kch hot bi cc lnh SQL Phn bit hai loi trigger trn cu lnh v trn dng d liu Tu theo li xy ra, trigger c th gy ra rollback cu lnh Form Trigger c thc hin ch bi cc tc ng ngay trn ng dng c kch bi cc s kin trn ng dng Khng phn bit Tu theo li xy ra, c th rollback ton b giao dch
15.2.3. Hu b trigger
S dng cu lnh SQL hu b trigger.
Trang 101
a. Thc hin trigger BEFORE ROW b. Thc hin cu lnh thao tc d liu v kim tra ton vn d liu trn dng d liu xem xt c. Thc hin trigger AFTER ROW
3. Thc hin cc php kim tra rng buc 4. Thc hin trigger AFTER STATMENT.
Cc quy tc rng buc i vi trigger: 1. Khng c php sa i d liu trong ct d liu c rng buc thuc loi kho chnh (primary key), kho ngoi (foreign key) hay duy nht. 2. Khng cho php c d liu t cc bng ang thao tc.
Trang 102
PH LC
A - TI LIU THAM KHO
[1] [2] [3] [4] [5] [6] [7] Gio trnh SQL v PL/SQL, Cng ty c phn ti ngn, 04/2001 Gio trnh kin trc v qun tr CSDL Oracle 8i, Cng ty c phn ti ngn, 04/2001 SQL - PL/SQL language, Oracle Corp - Gary Purcell, Shankar Raman, 2000 Oracle Architecture and Administration, Oracle Corp - Bruce Ernst, Hanne Rue Rasmussen, Ulrike Schwinn, Vijay Venkatachalam, 2000 Database Management With Oracle Enterprise Manager, Oracle Corp, 04/2001 Oracle 9i new features summary, Oracle Corp, 04/2001 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