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