Click here to load reader

SQL và PL/SQL

  • View
    4

  • Download
    1

Embed Size (px)

Text of SQL và PL/SQL

MC LC MC LC ... ...1
CHNG 1. GII THIU CHUNG ... ...5
1.1. NGÔN NG SQL ... ..5 1.1.1. Lch s phát trin ca ngôn ng SQL ... .5 1.1.2. Chun SQL ... ..5
1.2. CÁC KHÁI NIM C BN TRONG C S D LIU ... ...5 1.2.1. Các thành phn logic trong database... ..5 1.2.2. Các i tng trong database ... ...6 1.2.3. Các nhóm lnh SQL c bn ... .6
1.3. C S D LIU THC HÀNH... ..7 1.3.1. Mô hình d liu ... ..7 1.3.2. Cu trúc bng d liu ... .7
CHNG 2. LNH TRUY VN C BN ... .9
2.1. CÂU LNH TRUY VN ... ..9 2.1.1. Quy tc vit lnh ... ...9 2.1.2. Câu lnh truy vn c bn ... ..9 2.1.3. Các thành phn khác ca mnh SELECT ... ..9 2.1.4. Phân bit giá tr d liu tr v ... ..10 2.1.5. Giá tr NULL ... ..11
2.2. SQL*PLUS, CÔNG C TNG TÁC LNH SQL VI DATABASE ... ...11 2.2.1. Câu lnh tng tác ca SQL*Plus ... .11 2.2.2. Phân nhóm câu lnh trong SQL*Plus... ...12 2.2.3. Chi tit các lnh SQL*Plus c bn ... .13
2.3. BÀI TP ... ..15
CHNG 3. TRUY VN D LIU CÓ IU KIN ... ..17
3.1. CÁC GII HN TRONG TRUY VN D LIU ... ...17 3.1.1. Mnh WHERE... ...17 3.1.2. Các toán t s dng trong mnh WHERE ... ..18 3.1.3. Ví d s dng các toán t iu kin ... .19
3.2. SP XP D LIU TR V... ..20 3.2.1. Mnh ORDER BY ... ...20 3.2.2. Sp xp nhiu ct d liu tr v... ..20
3.3. BÀI TP ... ..21
CHNG 4. CÁC HÀM SQL ... ...23
4.1. TNG QUAN V HÀM SQL... ..23 4.1.1. Cu trúc hàm SQL ... .23 4.1.2. Phân loi hàm SQL ... ...23
4.2. HÀM SQL THAO TÁC TRÊN TNG DÕNG D LIU... .24 4.2.1. Các hàm thao tác trên kiu d liu s... ..24 4.2.2. Các hàm thao tác trên kiu d liu ký t... .26 4.2.3. Các hàm thao tác trên kiu d liu thi gian... .30 4.2.4. Các hàm chuyn i kiu ... ...32
4.3. HÀM THAO TÁC TRÊN TP HP ... ...34 4.3.1. Các hàm tác ng trên nhóm ... ...34 4.3.2. Mnh GROUP BY ... ...35
4.4. MT S HÀM MI B SUNG TRONG Oracle9i ... ..36 4.4.1. Hàm NULLIF ... .36 4.4.2. Hàm COALSCE ... ..36 4.4.3. Câu lnh case ... ..36
Trang 1
Oracle c bn - SQL và PL/SQL
4.5. BÀI TP ... ..36 4.5.1. Hàm trên tng dòng d liu ... ..36 4.5.2. Hàm trên nhóm d liu ... ...39
CHNG 5. LNH TRUY VN D LIU M RNG... .40
5.1. KT HP D LIU T NHIU BNG ... ...40 5.1.1. Mi liên kt tng ng ... ..40 5.1.2. Mi liên kt không tng ng ... .40 5.1.3. Mi liên kt cng ... .40 5.1.4. Liên kt ca bng vi chính nó (t thân)... .41 5.1.5. Cách biu din kt ni mi trong Oracle 9i ... ...41 5.1.6. Các toán t tp hp ... ..42
5.2. LNH TRUY VN LNG ... ...43 5.2.1. Câu lnh SELECT lng nhau. .. ...43 5.2.2. Toán t SOME/ANY/ALL/NOT IN/EXITS ... ..43
5.3. CU TRÖC HÌNH CÂY ... .44 5.3.1. Cu trúc hình cây trong 1 table ... ...44 5.3.2. K thut thc hin ... ..44 5.3.3. Mnh WHERE trong cu trúc hình cây... ..45
5.4. BÀI TP ... ..46
6.1. D LIU THAY TH TRONG CÂU LNH ... .50
6.2. LNH DEFINE ... ..50
6.3. LNH ACCEPT ... ...51
6.4. BÀI TP ... ..51
CHNG 7. TABLE VÀ CÁC LNH SQL V TABLE... ...52
7.1. LNH TO TABLE... 52 7.1.1. Cú pháp to bng ... 52 7.1.2. Tính toán kích thc table (tham kho) ... 53
7.2. MT S QUY TC KHI TO TABLE ... 54 7.2.1. Quy tc t tên Object ... 54 7.2.2. Quy tc khi tham chiu n Object ... 54
7.3. Các Kiu d liu c bn... 55 7.3.1. Kiu CHAR ... 55 7.3.2. Kiu VARCHAR2 ... 55 7.3.3. Kiu VARCHAR ... 56 7.3.4. Kiu NUMBER ... 56 7.3.5. Kiu FLOAT ... 56 7.3.6. Kiu LONG ... 56 7.3.7. Kiu DATE ... 57 7.3.8. Kiu RAW và kiu LONG RAW... 58 7.3.9. Kiu ROWID ... 58 7.3.10. Kiu MLSLABEL ... 58 7.3.11. Chuyn i kiu ... 58
7.4. RÀNG BUC D LIU TRONG TABLE ... 59 7.4.1. NULL/NOT NULL ... 59 7.4.2. UNIQUE ... 59 7.4.3. PRIMARY KEY ... 59 7.4.4. FOREIGN KEY ( Referential ) ... 60 7.4.5. CHECK ... 60
7.5. LNH DDL CAN THIP TI TABLE ... 60 7.5.1. Chnh sa cu trúc table ... 60 7.5.2. Các lnh DDL khác ... 61 7.5.3. Chú dn cho table ... 61 7.5.4. Thay i tên object... 62 7.5.5. Xóa d liu ca table ... 62
Trang 2
Oracle c bn - SQL và PL/SQL
7.6. THÔNG TIN V TABLE TRONG T IN D LIU... ...62
7.7. BÀI TP ... ..63
CHNG 8. CÁC LNH THAO TÁC D LIU... ..64
8.1. THAO TÁC D LIU TRONG TABLE ... .64 8.1.1. Thêm mi dòng d liu ... ...64 8.1.2. Cp nht dòng d liu ... .65 8.1.3. Lnh Merge... ...65 8.1.4. Xóa dòng d liu... .66 8.1.5. Li ràng buc d liu ... ...66
8.2. LNH IU KHIN GIAO DCH... ..66
8.3. BÀI TP ... ..67
CHNG 9. SEQUENCE VÀ INDEX... ...68
9.1. SEQUENCE... ...68 9.1.1. To Sequence... ..68 9.1.2. Thay i và hu sequence ... .69
9.2. INDEX... ...69 9.2.1. To index ... ...69 9.2.2. S dng index... ..69
9.3. BÀI TP ... ..70
CHNG 10. VIEWS ... ...71
10.1. VIEWS ... ...71 10.1.1. To view ... ..71 10.1.2. Xóa các view ... ..71
10.2. BÀI TP ... ...72
11.1. QUYN - PRIVILEGE ... .73
CHNG 12. GII THIU NGÔN NG PL/SQL... ..76
12.1. TNG QUAN V PL/SQL ... ...76 12.1.1. Cú pháp lnh PL/SQL ... ...76 12.1.2. Khi lnh PL/SQL ... ...76
12.2. LNH LP TRÌNH PL/SQL N GIN ... ...77 12.2.1. Lnh IF... ..77 12.2.2. Lnh lp LOOP không nh trc ... ...78 12.2.3. Lnh lp LOOP có nh trc ... ...78 12.2.4. Lnh lp WHILE ... ...78 12.2.5. Lnh GOTO, nhy vô iu kin ... .78
12.3. GII THIU CURSOR ... ...79
12.4. CÁC KIU D LIU THÔNG DNG... ..81 12.4.1. Kiu d liu Table ... ...81 12.4.2. Kiu d liu Record ... ...81 12.4.3. Sao kiu d liu mt dòng ... ..82 12.4.4. Sao kiu d liu ca mt ct ... ..82 12.4.5. Lnh SELECT... INTO... ...82
12.5. BÀI TP ... ...83
CHNG 13. GII THIU PROCEDURE BUILDER ... ..84
13.1. CÁC THÀNH PHN TRONG PROCEDURE BUILDER ... ...84 13.1.1. Object Navigator ... ..84 13.1.2. Program Unit Editor... .85 13.1.3. Store Program Unit Editor ... ...85
Trang 3
13.1.4. Database Trigger Edditor ... .85
13.2. CÁC HÀM, TH TC ... .86 13.2.1. To hàm, th tc trên Client ... ...86 13.2.2. To hàm, th tc trên Server ... .86 13.2.3. Dò li i vi các hàm, th tc ... ..87
CHNG 14. GII THIU CÁC TH TC, HÀM VÀ PACKAGE ... ...88
14.1. TH TC ... ..88 14.1.1. To th tc ... ..88 14.1.2. Hu b th tc ... ...89 14.1.3. Các bc lu gi mt th tc ... ...89
14.2. HÀM ... ...89 14.2.1. To hàm... ...90 14.2.2. Thc hin mt hàm ... .90 14.2.3. Li ích ca vic s dng hàm ... ...91 14.2.4. Mt s hn ch khi s dng hàm trong câu lnh SQL ... ..91 14.2.5. Hu b hàm... .91 14.2.6. Hàm và th tc ... ..92
14.3. PACKAGE... ...92 14.3.1. Cu trúc ca package ... ...92 14.3.2. To package ... ..93 14.3.3. Hu package ... ..95 14.3.4. Li ích ca vic s dng package ... ..95 14.3.5. Mt s package chun ca Oracle ... ..96
CHNG 15. DATABASE TRIGGER ... .97
15.1. TO TRIGGER ... ..97 15.1.1. Phân loi trigger ... ...97 15.1.2. Lnh to trigger ... .98 15.1.3. S dng Procedure builder to trigger ... ...99
15.2. QUN LÝ TRIGGER ... ...100 15.2.1. Phân bit database trigger ... ...100 15.2.2. Thay i trng thái ca database trigger ... ...101 15.2.3. Hu b trigger ... .101 15.2.4. Lu ý khi s dng trigger ... ..102
PH LC ... ...103
B - DANH MC CÁC HÌNH V... ..103
Trang 4
Chng 1. GII THIU CHUNG
1.1.NGÔN NG SQL
1.1.1. Lch s phát trin ca ngôn ng SQL
Mô hình c s d liu (CSDL) quan h - RDBMS, do E.F Codd a ra vào u thp k 70. T ó n nay,
nó liên tc phát trin tr thành mô hình CSDL ph bin bc nht. Mô hình quan h gm các thành phn sau:
Tp hp các i tng và / hoc các mi quan h Tp hp các
x lý tác ng ti các quan h
Ràng buc d liu m bo tính chính xác và nht quán.
SQL (Structured Query Language, c là "sequel") là tp lnh truy xut CSDL quan h.
Ngôn ng SQL c IBM s dng u tiên trong h qun tr CSDL System R vào gia
nhng nm 70. H ngôn ng SQL u tiên (SEQUEL2) c IBM công b vào tháng 11
nm 1976. Nm 1979, tp oàn Oracle gii thiu thng phm u tiên ca SQL. SQL cng
c cài t trong các h qun tr CSDL nh DB2 ca IBM và SQL/DS.
Ngày nay, SQL c s dng rng rãi và uc xem là ngôn ng chun truy cp CSDL
quan h.
1.1.2. Chun SQL
Nm 1989, vin tiêu chun quc gia Hoa K (ANSI) công nhn SQL là ngôn ng chun truy cp CSDL
quan h trong vn bn ANSI SQL89.
Nm 1989, t chc tiêu chun quc t (ISO) công nhn SQL ngôn ng chun truy cp CSDL quan h
trong vn bn ISO 9075-1989.
Tt c các h qun tr CSDL ln trên th gii cho phép truy cp bng SQL và hu ht theo chun ANSI.
1.2.CÁC KHÁI NIM C BN TRONG C S D LIU
1.2.1. Các thành phn logic trong database
Thành phn Din gii
Table Cu trúc lu tr c bn nht trong CSDL quan h (RDBMS), nó bao
gm 1 hoc nhiu columns (ct d liu) vi 0 hoc nhiu rows (dòng d liu).
Row T hp nhng giá tr ca Column trong bng. Mt row còn c gi
là 1 record (bn ghi).
Column Quy nh mt loi d liu trong bng. Ví d: loi d liu tên phòng
ban có trong bng phòng ban. Ta th hin th column này thông qua tên column
và có th kèm theo mt vài thông tin khác v column nh kiu d liu, dài
ca d liu.
Field Giao ca column và row. Field chính là ni cha d liu. Nu không
có d liu trong field ta nói field có gia tr là NULL.
Primary Key Là mt column hoc mt tp các column xác nh tính duy nht ca
các rows trong bng. Ví d DEPTNO là Primary Key ca bng DEPT
vì nó c dùng xác nh duy nht mt phòng ban trong bng
DEPT mà i din là mt row d liu.
Trang 5
Primary Key nht thit phi có s liu.
Foreign Key Là mt column hoc mt tp các columns có tham chiu ti chính
bng ó hoc mt bng khác.
Foreign Key xác nh mi quan h gia các bng.
Constraints Là các ràng buc i vi d liu trong các bng thuc database. Ví
d: Foreign Key, Primary Key...
Ví d: minh ho các thành phn logic trong database
EMP
7369 SMITH 20
Column
Hình v 1. Minh ho các thành phn logic trong database
1.2.2. Các i tng trong database
i tng Din gii
Table Cu trúc lu tr c bn nht trong CSDL quan h (RDBMS), gm
row và column
View Là cu trúc logic hin th d liu t 1 hoc nhiu bng
Sequence Lt sinh giá tr cho các primary key
Index Tng tính thc thi cho câu lnh truy vn
Synonym Tên tng ng ca i tng
Program unit Tp hp các câu lnh thc hin c vit bi ngôn ng SQL và
PL/SQL, bao gm Procedure, function, package...
1.2.3. Các nhóm lnh SQL c bn
Tên lnh
Din gii
Là lnh thông dng nht, dùng ly, xem d liu trong CSDL.
Là 3 lnh dùng nhp thêm nhng row mi, thay i ni dung
d liu trên các row hay xoá các row trong table. Nhng lnh này
c gi là các lnh thao tác d liu DML (Data Manipulation
Language)
CREATE
ALTER
DROP
RENAME
TRUNCATE
COMMIT
ROLLBACK
GRANT
REVOKE
Là 3 lnh dùng thit lp, thay i hay xoá b cu trúc d liu
nh là table, view, index. Nhng lnh này c gi là các lnh nh ngha d
liu DDL (Data Definition Language)
Qun lý vic thay i d liu bng các lnh DML. Vic thay i d liu có
th c nhóm li thành các transaction.
2 lnh này dùng gán hoc hu các quyn truy nhp vào CSDL Oracle và
các cu trúc bên trong nó. Nhng lnh này c gi là các lnh iu khin d
liu DCL (Data Control Language)
1.3.C S D LIU THC HÀNH
1.3.1. Mô hình d liu
DEPT EMP
1.3.2. Cu trúc bng d liu
Bng DEPT
DNAME VARCHAR2(14) Tên phòng ban
LOC VARCHAR2(13) a ch
GRADE NUMBER PRIMARY KEY Mc lng
LOSAL NUMBER Giá tr thp nht
HISAL NUMBER Giá tr cao nht
Trang 7
Bng EMP
EMPNO NUMBER(4) PRIMARY KEY
NULL, (DEPT.DEPTNO)
Din gii
Lng
Thng
Chng 2. LNH TRUY VN C BN
2.1.CÂU LNH TRUY VN
2.1.1. Quy tc vit lnh
Các câu lnh truy vn c biu din theo các quy tc sau:
Các lênh trong câu lnh SQL thuc loi không phân bit ch vit hoa hay thng. Ni
dung ca mt câu lnh SQL có th c tri dài trên nhiu dòng. Các t khoá không c phép
vit tt hay phân cách trên nhiu dòng Các mnh thông thng c t trên nhiu dòng
khác nhau
rõ ràng trong vic th hin câu lnh, ta nên s dng các du TAB khi vit lnh Ta có
th s dng các ký t c bit nh: +, -, \, *,... biu din giá tr trong câu
lnh.
Cú pháp:
SELECT Hin th ni dung ca mt hay nhiu ct
DISTINCT Phân bit ni dung gia các dòng d liu tr v
Ly tt các các ct trong bng
column Tên ct d liu cn tr v
alias Phn tiêu ca ct d liu tr v
FROM table Tên bng cha d liu truy vn
Ví d:
Cu trúc ca lnh truy vn gm có hai phn:
Mnh chn la bao gm Lnh SELECT và tên ct d liu tr v
Mnh biu din ni cha bao gm FROM và tên bng.
2.1.3. Các thành phn khác ca mnh SELECT Trong mnh SELECT
còn có th a vào các thành phn khác:
Biu thc toán hc
Literal
Biu thc toán hc
Trong mnh SELECT biu thc toán hc có th các giá tr (column hoc hàng s), các toán t, các hàm.
Các toán t c dùng là (+), (-), (*), (/). u tiên ca các toán t ging trong phn s hc.
Ví d:
Trang 9
SELECT ename, sal *12, comm FROM emp;
SELECT ename, (sal+250)*12 FROM emp;
Tiêu ca ct (column alias)
Trong mnh SELECT, column alias là phn nhãn hin th ca column khi ly s liu ra. Trong column
alias không c có du cách và vit cách sau tên column mt du cách. Column alias c chp nhn có
du cách khi c t trong du nháy kép (“ “).
Ví d: (ANUAL chính là column alias)
SELECT ename, SAL*12 ANUAL, comm
FROM emp;
Ghép tip các ct d liu
Toán t ghép tip chui (||) cho phép ghép tip d liu trong các ct khác nhau ca cùng mt dòng d liu
vi nhau thành mt chui. Ta có th có nhiu toán t ghép chui trong cùng mt column alias.
Ví d:
Ghép tip chui ký t
Trong mnh SELECT, ta có th thc hin ghép tip bt k ký t nào, biu thc hay s nào mà không phi
là column hoc column alias.
Ví d:
|| deptno „Employee Detail
2.1.4. Phân bit giá tr d liu tr v
Trong thc t nhiu khi giá tr d liu trên các dòng d liu kt xut trùng nhau. Gây nhiu bt tin. có
th ly c ch các dòng d liu phân bit vi nhau. Ta s dng mnh DISTINCT trong câu lnh truy
vn.
DEPTNO
10
30
10
20
DEPTNO
10
30
20
2.1.5. Giá tr NULL
Ct có giá tr rng (NULL) là ct cha c gán giá tr, nói cách khác nó cha c khi to giá tr. Các ct
vi bt c kiu d liu nào cng có th có tr NULL, tr khi c nó là khóa hay có ràng buc toàn vn NOT
NULL. Trong biu thc có bt k giá tr NULL nào kt qu cng là NULL.
Ví d:
FROM emp;
NULL trong các hàm ca SQL
Trong các hàm làm vic vi tng ct hay hàm vô hng (scalar function). Các hàm loi này tr v tr null
khi có tham s NULL, tr hàm NVL và TRANSLATE có th tr v giá tr thc.
Cú pháp ca hàm NVL:
NVL (DATECOLUMN,01-01-2001)
SELECT ename, sal*12 + NVL(comm,0) ANUAL_SAL FROM emp;
Trong các hàm làm vic vi nhóm các ct (group function): Hu ht các hàm làm vic trên nhóm b qua tr
null, ví d nh khi s dng hàm AVG tính trung bình cho mt ct có các giá tr 1000, NULL, NULL,
NULL, 2000. Khi ó trung bình c tính là (1000+2000)/2=1500, nh vy tr null b b qua ch
không phi xem là tr 0.
NULL trong các biu thc so sánh, iu kin
kim tra có phi NULL hay không dùng các toán t IS NULL hoc IS NOT NULL. Nu trong biu
thc so sánh có tr null tham gia và kt qu ca biu thc ph thuc vào tr null thì kt qu là không xác
nh, tuy nhiên trong biu thc DECODE, hai giá tr null c xem là bng nhau trong phép so sánh.
Oracle xem các biu thc vi kt qu không xác nh tng ng vi FALSE. (Ví d: comm = NULL)
có kt qu không xác nh và do ó biu thc so sánh xem nh cho kt qu FALSE. Trong câu lnh sau
không có mu tin nào c chn
SELECT * FROM emp WHERE comm=NULL; Nu mun chn các nhân viên có comm là NULL thì phi dùng toán t IS NULL
SELECT * FROM emp WHERE comm IS NULL;
2.2.SQL*PLUS, CÔNG C TNG TÁC LNH SQL VI DATABASE
2.2.1. Câu lnh tng tác ca SQL*Plus
Oracle h tr công c SQL*Plus cho phép ngi s dng có th tng tác trc tip vi Oracle Server thông
qua các câu lnh SQL và PL/SQL.
Theo ó ngi s dng có th tng tác vi Oracle Server thông qua hai loi câu lnh:
Câu lnh SQL
Trang 11
Hình v 3. Câu lnh ca SQL*Plus
Khác bit gia lnh SQL và SQL*Plus
SQL
trong vic truy xut d liu
Câu lnh da trên b ký t chun ASCII
Thao tác trên các d liu có trong các bng
ã c…

Search related