Giáo trình Thực hành SQL - Trần Nguyên Phong (Phần 2)
Tóm tắt Giáo trình Thực hành SQL - Trần Nguyên Phong (Phần 2): ...‘Division by zero’ ELSE SELECT @kqua = @sobichia / @sochia Khi đó nếu ta thực hiện như sau: DECLARE @ketqua real EXEC Chia 100, 2, @ketqua OUT SELECT @ketqua Sẽ cho kết quả là: ---------------------- 50.0 Còn nếu thực hiện DECLARE @ketqua real EXEC Chia 100, 2, @ketqua SELECT @ket... có cú pháp như sau: CREATE TRIGGER trigger_name ON table_name FOR {INSERT, UPDATE, DELETE} AS sql_statements Hoặc sử dụng mệnh đề IF UPDATE: CREATE TRIGGER trigger_name ON table_name FOR {INSERT, UPDATE} AS IF UPDATE (column_name) [{ANDOR}UPDATE (column_name)...] sql_statement...SKDS'$7(',))GDWHSDUWVWDUWGDWHHQGGDWH &KFQQJ+DPWUDYNKRDQJWKLJLDQJLDKDLJLDWUNL XQD\ÔFFKQK WX\WKXÔFYDRWKDPVÂGDWHSDUW 9GXKDP'DWHGLII\HDU FKRNÂWTXDOD F+DP'$7(3$57 &XSKDS'$7(3$57GDWHSDUWGDWH...
Þnh nghÜa OUTPUT cho mét tham sè trong thñ tôc nhng kh«ng chØ ®Þnh
OUTPUT khi thùc hiÖn th× vÉn kh«ng bÞ lçi (gi¸ trÞ tham sè khi ®ã sÏ kh«ng ®îc tr¶
vÒ).
VÝ dô 4.6:
CREATE PROC Chia @sobichia real,@sochia real,
@kqua real OUTPUT
AS
IF (@sochia =0)
Print ‘Division by zero’
ELSE
SELECT @kqua = @sobichia / @sochia
Khi ®ã nÕu ta thùc hiÖn nh sau:
DECLARE @ketqua real
EXEC Chia 100, 2, @ketqua OUT
SELECT @ketqua
SÏ cho kÕt qu¶ lµ:
----------------------
50.0
Cßn nÕu thùc hiÖn
DECLARE @ketqua real
EXEC Chia 100, 2, @ketqua
SELECT @ketqua
Tráön Nguyãn Phong
SÏ cho kÕt qu¶ lµ:
----------------------
(null)
I.3. C¸c qui t¾c sö dông cho sp
Sau ®©y lµ mét sè qui t¾c cÇn lu ý khi t¹o c¸c thñ tôc lu tr÷
• C©u lÖnh CREATE PROCEDURE kh«ng thÓ kÕt hîp víi c¸c c©u lÖnh SQL
kh¸c trong mét khèi lÖnh ®¬n (single batch).
• B¶n th©n ®Þnh nghÜa CREATE PROCEDURE cã thÓ bao gåm bÊt kú sè
lîng còng nh c©u lÖnh SQL nµo ngo¹i trõ nh÷ng c©u lÖnh sau:
CREATE VIEW CREATE TRIGGER
CREATE DEFAULT CREATE PROCEDURE
CREATE RULE
• C¸c ®èi tîng CSDL kh¸c cã thÓ ®îc t¹o bªn trong mét thñ tôc lu tr÷. Ta
cã thÓ tham chiÕu mét ®èi tîng ®îc t¹o trong cïng thñ tôc miÔn lµ nã ®∙
®îc t¹o tríc khi tham chiÕu.
• Bªn trong mét thñ tôc, ta kh«ng thÓ t¹o mét ®èi tîng, xo¸ nã vµ sau ®ã t¹o
mét ®èi tîng míi víi cïng tªn.
• Ta cã thÓ tham chiÕu c¸c b¶ng t¹m thêi bªn trong mét thñ tôc.
• NÕu ta thùc thi mét thñ tôc mµ gäi ®Õn thñ tôc kh¸c, thñ tôc ®îc gäi cã thÓ
truy cËp ®Õn mäi ®èi tîng ngo¹i trõ c¸c b¶ng t¹m thêi ®îc t¹o bëi thñ tôc
®Çu tiªn.
• NÕu ta t¹o mét b¶ng t¹m thêi riªng (private temporary table) bªn trong mét
thñ tôc, b¶ng t¹m thêi chØ tån t¹i cho nh÷ng môc ®Ých cña thñ tôc ®ã; nã sÏ
mÊt ®i khi tho¸t ra khái thñ tôc.
• Sè tham sè tèi ®a cña mét thñ tôc lµ 255.
• Sè biÕn côc bé vµ toµn côc trong mét thñ tôc chØ bÞ giíi h¹n bëi kh¶ n¨ng bé
nhí.
• C¸c thñ tôc t¹m thêi côc bé (private) vµ toµn côc (public), t¬ng tù nh c¸c
b¶ng t¹m thêi, cã thÓ ®îc t¹o víi dÊu # vµ ## ®øng tríc tªn thñ tôc. # biÓu
diÔn thñ tôc t¹m thêi côc bé cßn ## biÓu diÔn thñ tôc t¹m thêi toµn côc.
I.4 X¸c ®Þnh tªn bªn trong c¸c thñ tôc
Bªn trong mét thñ tôc, tªn c¸c ®èi tîng ®îc sö dông víi c©u lÖnh ALTER
TABLE, CREATE TABLE, DROP TABLE, TRUNCATE TABLE, CREATE INDEX,
DROP INDEX, UPDATE STATISTICS vµ DBCC ph¶i ®îc x¸c ®Þnh víi tªn cña
ngêi së h÷u ®èi tîng (object owner’s name) nÕu nh nh÷ng ngêi dïng (user) kh¸c
sö dông thñ tôc. VÝ dô, ngêi dïng Mary, lµ së h÷u chñ cña b¶ng marytab, ph¶i chØ
®Þnh tªn cña b¶ng cña m×nh khi nã ®îc sö dông víi mét trong nh÷ng c©u lÖnh nµy
nÕu c« ta muèn nh÷ng user kh¸c cã thÓ thùc hiÖn thñ tôc mµ trong ®ã b¶ng ®îc sö
dông.
Qui t¾c nµy lµ cÇn thiÕt v× tªn ®èi tîng ®îc ph©n tÝch khi c¸c thñ tôc ®îc
ch¹y. NÕu marytab kh«ng ®îc chØ ®Þnh vµ user John t×m c¸ch thùc hiÖn thñ tôc, SQL
Giaïo trçnh thæûc haình SQL
7UDQJ
sÏ t×m b¶ng marytab do John së h÷u. VÝ dô díi ®©y lµ mét c¸ch dïng ®óng, nã chØ ra
cho SQL Server t×m b¶ng marytab do Mary së h÷u:
CREATE PROC p1
AS
CREATE INDEX marytab_ind
ON mary.marytab(col1)
I.5 §æi tªn c¸c thñ tôc:
Sö dông thñ tôc:
sp_rename old_name, new_name
Ta chØ cã thÓ ®æi tªn nh÷ng thñ tôc mµ ta së h÷u. Ngêi së h÷u CSDL cã thÓ
thay ®æi tªn cña bÊt kú thñ tôc nµo cña ngêi sö dông. Thñ tôc ®îc ®æi tªn ph¶i n»m
trong CSDL hiÖn thêi.
Ta ph¶i xo¸ vµ t¹o l¹i mét thñ tôc nÕu ta thay ®æi tªn cña mét ®èi tîng ®îc
tham chiÕu bëi thñ tôc ®ã.
§Ó cã ®îc b¸o c¸o vÒ nh÷ng ®èi tîng ®îc tham chiÕu bëi mét thñ tôc, ta sö
dông thñ tôc hÖ thèng: sp_depends.
§Ó xem néi dung cña ®Þnh nghÜa mét thñ tôc, ta sö dông thñ tôc hÖ thèng:
sp_helptext.
I.6. Xo¸ thñ tôc:
§Ó xo¸ mét thñ tôc, ta sö dông c©u lÖnh:
DROP PROCEDURE proc_name
II. Sö dông c¸c Trigger
Mét trigger lµ mét d¹ng ®Æc biÖt cña thñ tôc lu tr÷ vµ nã ®îc thùc hiÖn tù
®éng khi ngêi dïng ¸p dông c©u lÖnh söa ®æi d÷ liÖu lªn mét b¶ng ®îc chØ ®Þnh.
C¸c trigger thêng ®îc sö dông cho viÖc Ðp buéc c¸c qui t¾c lµm viÖc vµ toµn vÑn d÷
liÖu. TÝnh toµn vÑn tham chiÕu cã thÓ ®îc ®Þnh nghÜa b»ng c¸ch sö dông rµng buéc
FOREIGN KEY víi c©u lÖnh CREATE TABLE. NÕu c¸c rµng buéc tån t¹i trong
b¶ng cã sù t¸c ®éng cña trigger, nã ®îc kiÓm tra tríc viÖc thùc hiÖn trigger. NÕu
c¸c rµng buéc bÞ vi ph¹m, trigger sÏ kh«ng thùc thi.
C¸c trigger ®îc sö dông trong nh÷ng c¸ch sau:
• C¸c trigger cã thÓ thay ®æi ®ång lo¹t (cascade change) c¸c b¶ng cã liªn hÖ
trong mét CSDL.
• C¸c trigger cã thÓ kh«ng cho phÐp hoÆc roll back nh÷ng thay ®æi vi ph¹m
tÝnh toµn vÑn tham chiÕu, hñy bá giao t¸c söa ®æi d÷ liÖu.
• C¸c trigger cã thÓ ¸p ®Æt c¸c giíi h¹n phøc t¹p h¬n nh÷ng giíi h¹n ®îc ®Þnh
nghÜa b»ng rµng buéc CHECK. Kh¸c víi rµng buéc CHECK, c¸c trigger cã
thÓ tham chiÕu ®Õn c¸c cét trong c¸c b¶ng kh¸c.
• C¸c trigger cßn cã thÓ t×m sù kh¸c biÖt gi÷a c¸c tr¹ng th¸i cña mét b¶ng
tríc vµ sau khi s÷a ®æi d÷ liÖu vµ lÊy ra nh÷ng t¸c ®éng dùa trªn sù kh¸c
biÖt ®ã.
Tráön Nguyãn Phong
II.1 T¹o c¸c trigger
Mét trigger lµ mét ®èi tîng CSDL. Ta t¹o mét trigger b»ng viÖc chØ ®Þnh b¶ng
hiÖn hµnh vµ c©u lÖnh söa ®æi d÷ liÖu kÝch ho¹t trigger. Sau ®ã ta x¸c ®Þnh c¸c c«ng
viÖc mµ trigger lµm.
Mét b¶ng cã thÓ cã tèi ®a 3 lo¹i trigger: mét trigger cËp nhËt (update trigger),
mét trigger chÌn (insert trigger) vµ mét trigger xãa (delete trigger). Tuy nhiªn, mçi
trigger cã thÓ thùc hiÖn nhiÒu hµm vµ gäi ®Õn 16 thñ tôc. Mçi trigger chØ cã thÓ ¸p
dông cho mét b¶ng. Tuy nhiªn, mét trigger ®¬n cã thÓ ¸p dông cho c¶ 3 c«ng viÖc
(UPDATE, INSERT vµ DELETE).
Ta kh«ng thÓ t¹o mét trigger trªn mét khung nh×n hay mét b¶ng t¹m thêi mÆc dï
c¸c trigger cã thÓ tham chiÕu c¸c khung nh×n hay c¸c b¶ng t¹m thêi.
C©u lÖnh TRUNCATE TABLE mÆc dï gièng c©u lÖnh DELETE khi kh«ng cã
mÖnh ®Ò WHERE nhng nã kh«ng thÓ kÝch ho¹t mét trigger.
§Ó t¹o míi mét trigger, ta sö dông c©u lÖnh cã có ph¸p nh sau:
CREATE TRIGGER trigger_name
ON table_name
FOR {INSERT, UPDATE, DELETE}
AS sql_statements
HoÆc sö dông mÖnh ®Ò IF UPDATE:
CREATE TRIGGER trigger_name
ON table_name
FOR {INSERT, UPDATE}
AS
IF UPDATE (column_name)
[{ANDOR}UPDATE (column_name)...] sql_statements
VÝ dô 4.7: NÕu chóng ta muèn sau khi ta cËp nhËt d÷ liÖu cho b¶ng nhanvien,
SQL Server sÏ hiÓn thÞ néi dung cña b¶ng ®Ó xem th× ta t¹o mét trigger nh sau:
CREATE TRIGGER tgr_check
ON nhanvien
FOR INSERT, UPDATE
AS
print '*** Ket qua sau khi cap nhat ***'
SELECT * FROM nhanvien
II.2 C¸c gi¸ trÞ null ngÇm ®Þnh vµ hiÓn (implicit and explicit null values)
MÖnh ®Ò IF UPDATE(tªn_cét) lµ ®óng cho mét c©u lÖnh INSERT khi mµ cét
®îc g¸n mét gi¸ trÞ trong danh s¸ch chän hay trong mÖnh ®Ò VALUES. Mét NULL
hiÓn (explicit) hay mét mÆc ®Þnh g¸n mét gi¸ trÞ cho mét cét vµ v× thÕ kÝch ho¹t
trigger. Víi mét NULL ngÇm ®Þnh, nÕu gi¸ trÞ kh«ng ®îc x¸c ®Þnh bëi c©u hái hoÆc
bëi mÆc ®Þnh ®îc g¸n, trigger trªn cét ®ã kh«ng ®îc kÝch ho¹t.
VÝ dô 4.8:
CREATE TABLE vidu(col1 int NULL,col2 int NOT NULL)
GO
CREATE TRIGGER tgr_vidu
ON vidu
Giaïo trçnh thæûc haình SQL
7UDQJ
FOR INSERT
AS
IF UPDATE(col1) AND UPDATE(col2)
Print ‘Firing’
GO
CREATE DEFAULT col2_default
AS 99
GO
/* IF UPDATE lµ ®óng cho c¶ hai cét, trigger ®îc kÝch ho¹t */
INSERT vidu(col1,col2) VALUES(1, 2)
/* IF UPDATE lµ ®óng cho c¶ hai cét, trigger ®îc kÝch ho¹t */
INSERT vidu VALUES(1, 2)
/* NULL hiÓn: IF UPDATE lµ ®óng cho c¶ hai cét, trigger ®îc kÝch ho¹t */
INSERT vidu VALUES(null, 2)
/* Kh«ng cã mÆc ®Þnh trªn cét col1, IF UPDATE kh«ng ®óng cho c¶ hai cét, trigger
kh«ng ®îc kÝch ho¹t */
INSERT vidu(col2) VALUES(2)
/* Kh«ng cã mÆc ®Þnh trªn cét col2, IF UPDATE kh«ng ®óng cho c¶ hai cét, trigger
kh«ng ®îc kÝch ho¹t */
INSERT vidu(col1) VALUES(2)
KÕt qu¶ t¬ng tù ®îc s¶n sinh víi viÖc sö dông chØ mÖnh ®Ò
IF UPDATE(col1)
§Ó t¹o mét trigger kh«ng cho phÐp viÖc chÌn c¸c gi¸ trÞ null ngÇm ®Þnh, ta sö
dông:
IF UPDATE(col2) OR UPDATE(col2)
C©u lÖnh SQL trong trigger cã thÓ sau ®ã kiÓm tra xem col1 lµ NULL hay
kh«ng.
II.3 ViÖc ®æi tªn vµ c¸c trigger
NÕu mét b¶ng ®îc tham chiÕu bëi mét trigger bÞ ®æi tªn, ta ph¶i xo¸ trigger ®ã
®i vµ t¹o l¹i nã ®Ó phï hîp viÖc tham chiÕu cña nã ®Õn b¶ng.
Thñ tôc sp_depends cã chøc n¨ng liÖt kª tÊt c¶ c¸c trigger tham chiÕu ®Õn ®èi
tîng (ch¼ng h¹n b¶ng hay khung nh×n) hoÆc tÊt c¶ c¸c b¶ng hay khung nh×n mµ
trigger t¸c ®éng. VÝ dô sau ®©y liÖt kª c¸c ®èi tîng ®îc tham chiÕu bëi trigger
tgr_check:
sp_depends tgr_check
II.4 HiÓn thÞ th«ng tin vÒ c¸c trigger
Do c¸c trigger lµ c¸c ®èi tîng CSDL nªn chóng ®îc liÖt kª trong b¶ng hÖ
thèng sysobjects. Cét type trong sysobjects x¸c ®Þnh c¸c trigger víi ch÷ viÕt t¾t TR. S¬
®å thùc thi c¸c trigger ®îc lu tr÷ trong b¶ng sysprocedures.
Truy vÊn díi ®©y t×m c¸c trigger trong mét CSDL:
SELECT * FROM sysobjects WHERE type=’TR’
§Ó hiÓn thÞ th«ng tin vÒ mét trigger ta thùc hiÖn thñ tôc:
Tráön Nguyãn Phong
sp_help trigger_name
C©u lÖnh CREATE TRIGGER cho mçi trigger ®îc lu tr÷ trong b¶ng hÖ thèng
syscomments. Ta cã thÓ hiÓn thÞ lêi ®Þnh nghÜa trigger b»ng c¸ch sö dông thñ tôc
sp_helptext.
VÝ dô 4.9: thùc hiÖn sp_helptext tgr_check ta ®îc kÕt qu¶ nh sau:
text
--------------
create trigger tgr_check
on nhanvien
for insert,update
as
print '***** Ket qua sau khi cap nhat *****'
select * from nhanvien
II.5 Xo¸ trigger
Ta cã thÓ xo¸ mét trigger b»ng c¸ch xo¸ nã hoÆc xo¸ b¶ng trigger. Khi mét
b¶ng ®îc xãa, nh÷ng trigger nµo cã liªn quan víi nã còng ®ång thêi bÞ xãa. DROP
TRIGGER mÆc ®Þnh cho phÐp ®èi víi ngêi sö dông b¶ng trigger vµ kh«ng thÓ
chuyÓn cho ngêi kh¸c.
Ta cã thÓ xãa mét trigger b»ng c¸ch sö dông c©u lÖnh DROP TRIGGER
Giaïo trçnh thæûc haình SQL
7UDQJ
Chæång 5: PHUÛÛ LUÛÛC
7URQJFKQJQD\FKXQJWLJLLWKL£XF¢XWUXFYDGOL£XFXDFDFEDQJ¤FV
GX£QJWURQJFDFYGX£WURQJFKQJ6DXRJLLWKL£XP¤WV¢KDPWKQJVGX£QJ
WURQJ64/6HUYHU JLXSFDFED£QWKDPNKDRWURQJTXDWUQKWK£FKDQK
&XWUXFYDGOL
XFXDEDQJ1+$19,(1YD'219,
1+$19,(1 '219,
0$19 0$'219,
+27(1 7(1'219,
1*$<6,1+ ',(17+2$,
',$&+,
',(17+2$,
+6/821*
0$'219, ∞
%DQJ1+$19,(1
0$19 +27(1 1*$<6,1+ ',$&+, ',(17+2$, +6/821* 0$'219,
19 1JX\¡Q7K+RD /'X Q
19 /+RDL1DP 7UQ3KX
19 +RDQJ1DP3KRQJ +RDQJ'L£X
19 7UQ1JX\Q3KRQJ +D1¤L
19 1JX\¡Q+X7QK +D1¤L
19 1JX\¡Q7UXQJ.LQ 1JX\¡Q+X£
%DQJ'219,
0$'219, 7(1'219, ',(17+2$,
3KRQJ.¢WRDQ
3KRQJ7 FKF
3KRQJLXKDQK
3KRQJ¢LQJRD£L
3KRQJ7DLYX£
0WVKDPWKQJVGXQJWURQJ64/6HUYHU
&DFKDPWU
QGOL
XNL
XQJD\YDJL
D+DP'$7($''
Tráön Nguyãn Phong
&XSKDS'$7($''GDWHSDUWQXPEHUGDWH
&KFQQJ+DP WUDYP¤WJLD WUNL X'DWH7LPHEQJFDFKF¤QJ WKPP¤W
NKRDQJJLDWUODQXPEHUYDRQJD\GDWH¤FFKQK
'DWHSDUW WKDP V¢ FK QK WKDQK SKQ VH ¤F F¤QJ ¢L YL JLD WUGDWH EDR
JP
'DWHSDUW 9L
WWW
\HDU \\\\\\
TXDUWHU TTT
PRQWK PPP
GD\RI\HDU G\\
GD\ GGG
ZHHN ZNZZ
KRXU KK
PLQXWH PLQ
VHFRQG VVV
PLOOLVHFRQG PV
E+DP'$7(',))
&XSKDS'$7(',))GDWHSDUWVWDUWGDWHHQGGDWH
&KFQQJ+DPWUDYNKRDQJWKLJLDQJLDKDLJLDWUNL XQD\¤FFKQK
WX\WKX¤FYDRWKDPV¢GDWHSDUW
9GXKDP'DWHGLII\HDU
FKRN¢WTXDOD
F+DP'$7(3$57
&XSKDS'$7(3$57GDWHSDUWGDWH
&KFQQJ+DPWUDYP¤W V¢QJX\Q¤F WUFK UD W WKDQKSKQ ¤FFK
QKELWKDPV¢SDUWGDWHWURQJJLDWUNL XQJD\¤FFKQK
9GX+DP'DWH3DUW\HDU
FKRN¢WTXDOD
G+DP*(7'$7(
&XSKDS*(7'$7(
&KFQQJ+DPWUDYQJD\KL£QWD£L
H+DP'$<0217+<($5
&XSKDS'$<GDWH0217+GDWH<($5GDWH
&KFQQJ+DP WUD Y JLD WU QJD\ WQJQJ WKDQJ QP FXD JLD WU NL X
QJD\¤FFKQK
&DFKDPY
FKXL
Giaïo trçnh thæûc haình SQL
7UDQJ
D+DP/()7
&XSKDS/()7VWULQJQ
&KFQQJ+DPWUFKUDWFKX¡LVWULQJQN\W£WQKWEQWUDL
E+DP5,*+7
&XSKDS/()7VWULQJQ
&KFQQJ+DPWUFKUDWFKX¡LVWULQJQN\W£WQKWEQSKDL
F+DP68%675,1*
&XSKDS68%675,1*VWULQJPQ
&KFQQJ+DPWUFKUDWFKX¡LVWULQJQN\W£WQKWN\W£WKP
G+DP/75,0575,0
&XSKDS/75,0VWULQJ575,0VWULQJ
&KFQQJ+DPFWERFDFNKRDQJWUQJWKDEQWUDLEQSKDLFKX¡LVWULQJ
H+DP/(1
&XSKDS/(1VWULQJ
&KFQQJ+DPWUDY¤GDLFXDFKX¡LVWULQJ
Tráön Nguyãn Phong
MUÛÛC LUÛÛC
&+ml1*1*k11*muir1+1*+p$'mu/,j8
7$2%$u1*'nv/,k8
&DFWKX¤FWQKOLQTXDQ¢QEDQJ
7D£REDQJEQJWUX\Y¢Q64/
6D LEDQJ
&+p08&,1'(;
.+81*1+o19,(:
&+ml1*1*k11*mu7+$27$v&'mu/,j8
758<;8i7'nv/,k8
1.1 X¸c ®Þnh b¶ng b»ng mÖnh ®Ò FROM ...................................................................................................12
1.2 MÖnh ®Ò WHERE.................................................................................................................................13
1.3 Danh s¸ch chän trong c©u lÖnh SELECT ............................................................................................14
1.4 TÝnh to¸n c¸c gi¸ trÞ trong c©u lÖnh SELECT .....................................................................................16
1.5 Tõ kho¸ DISTINCT .............................................................................................................................16
1.6 T¹o b¶ng míi b»ng c©u lÖnh SELECT ... INTO ..................................................................................17
1.7 S¾p xÕp kÕt qu¶ truy vÊn b»ng ORDER BY..........................................................................................17
1.8 PhÐp hîp vµ to¸n tö UNION...............................................................................................................18
1.9 PhÐp nèi...............................................................................................................................................20
1.10 T¹o c¸c dßng thèng kª d÷ liÖu víi COMPUTE ... BY........................................................................24
1.11 Thèng kª d÷ liÖu víi GROUP BY vµ HAVING...................................................................................26
1.12 Truy váún con (subquery)..................................................................................................................27
%l681*&i31+i79$t;2$w'nv/,k8
% VXQJGOL£X
&£SQK£WGOL£X
;RDGOL£X
&+ml1*1*k11*mui,j|8.+,j}1
&i8/k1+*5$17
&i8/k1+5(92.(
&+ml1*7+8t78&/m875mu9$s75,**(5
,6nu'81*7+8u78&/n875nv6725('352&('85(
I.1. T¹o c¸c thñ tôc lu tr÷ ........................................................................................................................35
I.2. Th«ng tin tr¶ vÒ tõ c¸c thñ tôc lu tr÷.................................................................................................36
I.3. C¸c qui t¾c sö dông cho sp .................................................................................................................38
I.4 X¸c ®Þnh tªn bªn trong c¸c thñ tôc .......................................................................................................38
I.5 §æi tªn c¸c thñ tôc:..............................................................................................................................39
I.6. Xo¸ thñ tôc: .........................................................................................................................................39
II. SÖ DÔNG C¸C TRIGGER
II.1 T¹o c¸c trigger....................................................................................................................................40
II.2 C¸c gi¸ trÞ null ngÇm ®Þnh vµ hiÓn (implicit and explicit null values)................................................40
II.3 ViÖc ®æi tªn vµ c¸c trigger ..................................................................................................................41
II.4 HiÓn thÞ th«ng tin vÒ c¸c trigger .........................................................................................................41
II.5 Xo¸ trigger .........................................................................................................................................42
&+ml1*3+8/8&
&i8758w&9$t'nv/,k8&8u$%$u1*1+$19,(19$t'219,
0l76l+$t07+nmt1*6nu'81*7521*64/6(59(5
&DFKDPWUQGOL£XNL XQJD\YDJL
2.2 Caïc haìm vãö chuäùi..........................................................................................................................44
File đính kèm:
giao_trinh_thuc_hanh_sql_tran_nguyen_phong.pdf



