Tài liệu này dành cho sinh viên, giáo viên khối ngành công nghệ thông tin tham khảo và có những bài học bổ ích hơn, bổ trợ cho việc tìm kiếm tài liệu, giáo án, giáo trình, bài giảng các môn học khối ngành công nghệ thông tin
TRѬӠ1*ĈҤ,+Ӑ&+¬1*+Ҧ, 9,ӊ71$0 .+2$&Ð1*1*+ӊ7+Ð1*7,1 %Ӝ0Ð1+ӊ7+Ӕ1*7+Ð1*7,1 *** %¬,*,Ҧ1* +ӊ48Ҧ175ӎ&Ѫ6Ӣ'Ӳ/,ӊ8 7Ç1+Ӑ&3+Ҫ1 : +ӊ48Ҧ175ӎ &Ѫ6Ӣ'Ӳ/,ӊ8 0+Ӑ&3+Ҫ1 : 17402 TRÌNH ĈӜĈ¬27Ҥ2 : ĈҤ,+Ӑ&&+Ë1+48< DÙNG CHO SV NGÀNH : &Ð1*1*+ӊ7+Ð1*7,1 +Ҧ,3+Ñ1*- 2011 2 0Ө&/Ө& &KѭѫQJ*LӟLWKLӋX 5 1.1. +ӋTXҧQWUӏFѫVӣGӳOLӋX0LFURVRIWSQL Server 5 1.2&iFWKjQKSKҫQFѫEҧQWrong Microsoft SQL Server 18 1J{QQJӳWUX\YҩQGӳOLӋXFyFҩXWU~F64/ 24 &KѭѫQJ7ҥRYjTXҧQOêFѫVӣGӳOLӋX 26 2.1. &iFWӋSWLQFѫVӣGӳOLӋX'DWDEDVHILOHV 26 2.2. 7ҥRFѫVӣGӳOLӋX'DWDEDVH 26 2.3. 4XҧQOêFѫVӣGӳOLӋX 30 2.4. Xóa FѫVӣGӳOLӋX 32 &KѭѫQJ7ҥRYjTXҧQOêFiFEҧQJ 35 3.1. 7ҥREҧQJ7DEOHV 35 3.2. ĈӏQKQJKƭDFiFFӝW&ROXPQV 36 3.3. ĈӏQKQJKƭDFiFUjQJEXӝF&RQVWUDLQV 37 3.4. 6ӱDEҧQJ$/7(57$%/( 38 ;yDEҧQJ'5237$%/( 39 7KrPEҧQJKLPӟL,1SERT) 39 &ұSQKұWEҧQJKL83'$7( 41 ;yDEҧQJKL'(/(7( 42 &KѭѫQJ7UX\YҩQGӳOLӋX 44 7UX\YҩQFѫEҧQ 44 7UX\YҩQWӯQKLӅXEҧQJ 51 4.2.1. Inner Joins 51 4.2.2. Outer Joins 51 7UX\YҩQOӗQJQKDX6XETXHULHV 51 ChѭѫQJ. 7ҥRYjTXҧQOêFiFFKӍPөF 54 5.1. &iFNLӇXFKӍPөF,QGH[HV 54 5.2. 7ҥRFiFFKӍPөF 54 5.3. 4XҧQOêFiFFKӍPөF 58 ;yDFiFFKӍPөF 58 &KѭѫQJ. 7ҥRYjTXҧQOêNKXQJQKuQ 60 6.1. ĈӏQKQJKƭD 60 6.2. 7ҥRFiFNKXQJQKuQ9LHZV 60 6.3. 4XҧQOêFiFNKXQJQKuQ 61 3 6.4. Xóa các khung nhìn 61 &KѭѫQJ 7ҥRYjTXҧQOêFiFWKӫWөFWKѭӡQJWU~ 62 7.1. 7ҥRFiFWKӫWөFWKѭӡQJWU~6WRUHGSURFHGXUHV 62 7.2. 7KӵFWKLFiFWKӫWөFWKѭӡQJWU~ 64 7.3. ;HPYjVӱDFiFWKӫWөFWKѭӡQJWU~ 64 7.4. Tham VӕYjRYjUD3DUDPHWHUV 65 &iFWKӫWөFWKѭӡQJWU~FӫDKӋWKӕQJ 65 &KѭѫQJ. 7ҥRYjTXҧQOêKjPQJѭӡLGQJÿӏQKQJKƭD 68 &iFNLӇXKjPQJѭӡLGQJÿӏQKQJKƭD8VHU-defined functions) 68 7ҥRKjPQJѭӡLGQJÿӏQKQJKƭD 68 4XҧQOêKjPQJѭӡLGQJÿӏQKQJKƭD 69 &KѭѫQJ7ҥRYjTXҧQOêFiF7ULJJHU 70 7ҥRFiF7ULJJHUWKDRWiFGӳOLӋX'0/7ULJJHUV 70 7ҥRFiF7ULJJHUÿӏQKQJKƭDGӳOLӋX''/7ULJJHUV 70 6ӱGөQJFiF7ULJJHUOӗQJQKDX1HVWHG7ULJJHUV 71 6ӱGөQJFiF 7ULJJHUÿӋTX\5HFXUVLYH7ULJJHUV 74 0ӝWVӕÿӅWKLPүX 76 4 7rQKӑFSKҫQ+ӋTXҧQWUӏ&ѫVӣGӳOLӋX /RҥLKӑFSKҫQ: 4 %ӝP{QSKөWUiFKJLҧQJGҥ\+ӋWKӕQJ7K{QJWLQ .KRDSKөWUiFK: CNTT. 0mKӑFSKҫQ: 17402 7әQJVӕ7&: 4 TәQJVӕWLӃW /êWKX\ӃW 7KӵFKjQK;HPLQD 7ӵKӑF %jLWұSOӟQ ĈӗiQP{QKӑF 90 45 30 0 có không +ӑFSKҫQKӑFWUѭӟF.K{QJ\rXFҫX. +ӑFSKҫQWLrQTX\ӃW.K{QJ\rXFҫX +ӑFSKҫQVRQJVRQJ.K{QJ\rXFҫX 0өFWLrXFӫDKӑFSKҫQ: &XQJFҩSFKRVLQKYLrQQKӳQJNLӃQWKӭF FѫEҧQYӅKӋTXҧQWUӏFѫVӣGӳOLӋX&iFFKӭFQăQJ YjF{QJFөFҫQWKLӃWÿӇTXҧQWUӏFѫVӣGӳOLӋXFKRQJѭӡLSKiWWULӇQKӋWKӕQJ 1ӝLGXQJFKӫ\ӃX *LӟLWKLӋXYӅKӋTXҧQWUӏFѫVӣGӳOLӋX7ҥRYjTXҧQOêFѫVӣGӳOLӋX7ҥRYjTXҧQOêFiF EҧQJ7UX\YҩQGӳOLӋX7ҥRYjTXҧQOêFiFFKӍPөF7ҥRYjTXҧQOêFiFNKXQJQKuQ7ҥRYjTXҧQOê FiFWKӫWөFWKѭӡQJWU~7ҥRYjTXҧQOêFiFKjPQJѭӡLGQJÿӏQKQJKƭD7ҥRYjTXҧQOêFiF7ULJJHU 1ӝLGXQJFKLWLӃW 7Ç1&+ѬѪ1*0Ө& 3+Æ13+Ӕ,6Ӕ7,ӂ7 TS LT BT TH KT &KѭѫQJ*LӟLWKLӋX 5 3 2 1.1. +ӋTXҧQWUӏFѫVӣGӳOLӋX0LFURVRIWSQL Server (2005) 1.2&iFWKjQKSKҫQFѫEҧQWURQJMicrosoft SQL Server (2005) 1J{QQJӳWUX\YҩQGӳOLӋXFyFҩXWU~F64/ &KѭѫQJ7ҥRYjTXҧQOêFѫ VӣGӳOLӋX 10 6 4 2.1. &iFWӋSWLQFѫVӣGӳOLӋX'DWDEDVHILOHV 2.2. 7ҥRFѫVӣGӳOLӋX'DWDEDVH 2.3. 4XҧQOêFѫVӣGӳOLӋX ;yDFѫVӣGӳOLӋX &KѭѫQJ7ҥRYjTXҧQOêFiFEҧQJ 15 9 6 3.1. 7ҥREҧQJ7DEOHV 3.2. ĈӏQKQJKƭDFiFFӝW&ROXPQV 3.3. ĈӏQKQJKƭDFiFUjQJEXӝF&RQVWUDLQV 3.4. 6ӱDEҧQJ$/7(57$%/( ;yDEҧQJ'5237$%/( 7KrPEҧQJKLPӟL,16(57 5 7Ç1&+ѬѪ1*0Ө& 3+Æ13+Ӕ,6Ӕ7,ӂ7 TS LT BT TH KT &ұSQKұWEҧQJKL83'$7( ;yDEҧQJKL'(/(7( &KѭѫQJ7UX\YҩQGӳOLӋX 20 12 8 7UX\YҩQFѫEҧQ 4.1.1. 0ӋQKÿӅ6(/(&7 0ӋQKÿӅ)520 4.1.3. 0ӋQKÿӅ:+(5( 0ӋQKÿӅ*5283%<Yj+$9,1* 0ӋQKÿӅ25'(5%< .ӃWKӧSNӃWTXҧWӯQKLӅXWUX\YҩQNKiFQKDX 7UX\YҩQWӯQKLӅXEҧQJ 4.2.1. Inner Joins 4.2.2. Outer Joins 7UX\YҩQOӗQJQKDX6XETXHULHV &KѭѫQJ. 7ҥRYjTXҧQOêFiFFKӍPөF 5 3 2 5.1. &iFNLӇXFKӍPөF,QGH[HV 5.2. 7ҥRFiFFKӍPөF 5.3. 4XҧQOêFiFFKӍPөF ;yDFiFFKӍPөF &KѭѫQJ. 7ҥRYjTXҧQOêNKXQJQKuQ 5 3 2 6.1. ĈӏQKQJKƭD 6.2. 7ҥRFiFNKXQJQKuQ9LHZV 4XҧQOêFiFNKXQJQKuQ 6.4. Xóa các khung nhìn &KѭѫQJ7ҥRYjTXҧQOêFiFWKӫWөFWKѭӡQJWU~ 5 3 2 7.1. 7ҥRFiFWKӫWөFWKѭӡQJWU~6WRUHGSURFHGXUHV 7.2. 7KӵFWKLFiFWKӫWөFWKѭӡQJWU~ 7.3. ;HPYjVӱDFiFWKӫWөFWKѭӡQJWU~ 7KDPVӕYjRYjUD3DUDPHWHUV &iFWKӫWөFWKѭӡQJ WU~FӫDKӋWKӕQJ &KѭѫQJ. 7ҥRYjTXҧQOêKjPQJѭӡLGQJÿӏQKQJKƭD 5 3 2 &iF NLӇX KjP QJѭӡL GQJ ÿӏQK QJKƭD 8VHU-defined functions) 6 7Ç1&+ѬѪ1*0Ө& 3+Æ13+Ӕ,6Ӕ7,ӂ7 TS LT BT TH KT 7ҥRKjPQJѭӡLGQJÿӏQKQJKƭD 4XҧQOêKjPQJѭӡLGQJÿӏQKQJKƭD &KѭѫQJ7ҥRYjTXҧQOêFiF7ULJJHU 5 3 2 7ҥRFiF7ULJJHUWKDRWiFGӳOLӋX'0/7ULJJHUV 7ҥRFiF7ULJJHUÿӏQKQJKƭDGӳOLӋX''/7ULJJHUV 6ӱGөQJFiF7ULJJHUOӗQJQKDX1HVWHG7ULJJHUV 6ӱGөQJFiF7ULJJHUÿӋTX\5HFXUVLYH7ULggers) 1KLӋPYөFӫDVLQKYLrQ 7KDPGӵFiFEXәLKӑFOêWKX\ӃWYjWKӵFKjQKOjPFiFEjLWұSÿѭӧFJLDROjPFiFEjLWKL JLӳDKӑFSKҫQYjEjLWKLNӃWWK~FKӑFSKҫQWKHRÿ~QJTX\ÿӏQK 7jLOLӋXKӑFWұS 1. 'ѭѫQJ4XDQJ7KLӋQ64/6HUYHU/̵SWUuQK7- SQL1;%9ăQKyD6jL*zQ 2. Ray Rankins, Paul Bertucci, Chris Gallelli, Alex T.Silverstein, Microsoft SQL Server 2005 Unleashed, Sams Publishing, 2007. 3. Brian Knightet al , Professional SQL Server 2005 Administration, Wrox Press, 2007. 4. Paul Turley & Dan Wood, Beginning Transact-SQL with SQL Server 2000 and 2005, Wrox Press, 2006. +uQKWKӭFYjWLrXFKXҭQÿiQKJLiVLQKYLrQ: +uQKWKӭFWKLWKLYLӃWKRһFYҩQÿiS 7LrXFKXҭQÿiQKJLiVLQKYLrQFăQFӭYjRVӵWKDPJLDKӑFWұSFӫDVLQKYLrQWURQJFiFEXәL KӑFOêWKX\ӃWYjWKӵFKjQKNӃWTXҧOjPFiFEjLWұSÿѭӧFJLDRNӃWTXҧFӫDFiFEjLWKLJLӳD KӑFSKҫQYjEjLWKLNӃWWK~FKӑFSKҫQ 7KDQJÿLӇP7KDQJÿLӇPFKӳ$%&') ĈLӇPÿiQKJLiKӑFSKҫQZ = 0,4X + 0,6Y. %jLJLҧQJQj\OjWjLOLӋXFKtQKWKӭFYjWKӕQJQKҩW FӫD%ӝP{Q+ӋWKӕQJ7K{QJWLQ .KRD&{QJQJKӋ7K{QJWLQYjÿѭӧFGQJÿӇJLҧQJGҥ\FKRVLQKYLrQ 1Jj\SKrGX\ӋW 7UѭӣQJ%ӝP{Q 7 &KѭѫQJ*LӟLWKLӋX +ӋTXҧQWUӏFѫVӣGӳOLӋX0LFURVRIt SQL Server .KiLQLӋPYӅ&6'/Yj&6'/TXDQKӋ A. Khái niӋm vӅ cѫ sӣ dӳ liӋu (Database) Cѫ sӣ dӳ liӋu là mӝt tұp hӧp có tә chӭc các dӳ liӋu có liên quan luұn lý vӟi nhau. Nói cách khác ÿyOjPӝt hӋ thӕng các thông tin có cҩXWU~FÿѭӧFOѭXWUӳ trên các thiӃt bӏ OѭXWUӳ thông tin thӭ cҩp, ví dө nhѭÿƭDWӯEăQJWӯ, bӝ nhӟ IODVK«QKҵm mөFÿtFKWKӓa mãn yêu cҫu t͝ chͱc dͷ li͏u ÿӇ giúp cho viӋc khai thác dӳ liӋXÿѭӧc nhanh chóng và chính xác. Cѫ sӣ dӳ liӋu phҧLÿѭӧ c thiӃt kӃ sao cho có thӇ cho phép nhiӅXQJѭӡi dùng và nhiӅu ӭng dөng khác nhau cùng khai thác. Hình 1: S˯ ÿ͛ t͝ng quát v͉ m͡t h͏ c˯ sͧ dͷ li͏u B. Khái niӋm vӅ FѫVӣ dӳ liӋu quan hӋ &ѫ Vӣ dӳ liӋu quan hӋ Oj Fѫ Vӣ dӳ liӋu ÿѭӧc tә chӭc dӵa trên mô hình cӫD ÿҥi sӕ quan hӋ (Relational Model). TroQJÿyGӳ liӋu ÿѭӧc tә chӭc thành các bҧng dӳ liӋu (tables). Mӛi bҧng dӳ liӋu gӗm có các cӝt (column) hay còn gӑi là các trѭӡng (field) và các dòng (row) hay còn gӑi là các bҧn ghi (record). Ví dө: Mã Sinh viên Tên Sinh viên /ӟS HHA01 Lê Hoàng Long K7%Ĉ+ HHA02 7UҫQ%uQK0LQK .7%Ĉ+ 8 VӅ phѭѫng diӋn toán hӑc, mӝt bҧng dӳ liӋu gӗm có n cӝt: A 1 , A 2 , A 3 «$ n có thӇ coi là mӝt tұp con R cӫDWtFKĈӅ các dom(A 1 ) x dom(A 2 «[GRP$ n ): R GRP$[GRP$«[GRP$Q Ngѭӡi ta gӑi ÿy là quan hӋ R xác ÿӏnh trên tұp thuӝc tính {A 1 , A 2 «$ n }. Trong ÿy dom(A i ) là ký hiӋu miӅn giá trӏ (domain) cӫa cӝt A i . Giӳa các cӝt trong bҧng có nhӳng mӕi quan hӋ ràng buӝc phө thuӝc lүn nhau gӑi là các phө thuӝc hàm. Ví dө: Trong bҧng sinh viên có phө thuӝc hàm: Mã Sinh Viên ĺ7rQ6LQK9LrQ/ӟp Trong mӝt bҧng dӳ liӋu, có thӇ có mӝt cӝt (hoһc mӝt sӕ tӕi thiӇu các cӝt) mà giá trӏ trên mӛi dòng cӫa nó là duy nhҩt. Ta gӑi ÿy là khóa (Key). Khi biӃt giá trӏ cӫa trѭӡng khóa ta có thӇ suy ra các trѭӡng còn lҥi. Ví dө: Trong bҧng Sinh Viên thì Mã Sinh Viên là khóa. Khi biӃt Mã Sinh Viên ta có thӇ tra cӭu ra các thuӝc tính nhѭ Tên Sinh Viên và Lӟp. Giӳa hai bҧng trong cѫ sӣ dӳ liӋXFNJQJWӗn tҥi các mӕi quan hӋ ràng buӝc lүn nhau (bҳt nguӗ n tӯ mô hình ER): Quan h͏ 1 ± 1 : Mӝt bҧn ghi thuӝc bҧng này tѭѫng ӭng vӟi mӝt và chӍ mӝt bҧn ghi ӣ bҧng kia và ngѭӧc lҥi. Trong trѭӡng hӧp này ngѭӡi ta thѭӡng nhұp 2 bҧng vào làm mӝt. Quan h͏ 1 ± n : Mӝt bҧn ghi thuӝc bҧng này tѭѫng ӭng vӟi n bҧn ghi ӣ bҧQJNLDQQKѭng ngѭӧc lҥi mӝt bҧn ghi ӣ bҧng kia chӍ tѭѫng ӭng vӟi không quá 1 bҧn ghi ӣ bҧng này. Bҧng ӣ phía ӭng vӟi ӭng sӕ nhiӅu n gӑi là bҧng con (child) còn bҧng ӣ phía ӭng vӟi ӭng sӕ 1 gӑi là bҧng cha (parents). Bҧng cha phҧi có mӝt trѭӡng khóa gӑi là khóa chính (PK - Primary Key) còn bҧng con phҧi có mӝt trѭӡng tham chi͇u ÿӃn khóa chính cӫa bҧng cha gӑi là khóa ngoҥi (FK - Foreign Key). Hình 24XDQK͏- 1 9 Hình 3: Quan h͏ 1 - n Quan h͏ n ± n: Quan hӋ n ± QNK{QJÿѭӧc biӇu diӉQWѭӡQJPLQKWURQJ&6'/1Jѭӡi ta thѭӡng tách quan hӋ n ± n vӅ thành các quan hӋ 1 ± n dӵa trên mô hình thӵc thӇ liên kӃt (ER). .KiLQLӋPYӅKӋTXҧQWUӏ&ѫ VӣGӳOLӋX A. HӋ quҧn trӏ CSDL là gì? HӋ quҧn trӏ FѫVӣ dӳ liӋu là mӝt tұp hӧp chѭѫng trình giúp cho ngѭӡi sӱ dөng tҥo ra, duy trì và khai thác mӝt cѫ sӣ dӳ liӋXĈyOjPӝt hӋ thӕng phҫn mӅm phә dөng, cung cҩp môi trѭӡng và công cө giúp cho viӋc ÿӏnh QJKƭD, xây dӵng và thao tác cѫ sӣ dӳ liӋu cho các ӭng dөng khác nhau mӝt cách dӉ dàng. ĈӏQKQJKƭD mӝWFѫVӣ dӳ liӋu là ÿһc tҧ các kiӇu dӳ liӋu, các cҩu trúc, các ràng buӝc cho các dӳ liӋu sӁ ÿѭӧc lѭu trӳ. Xây dӵng FѫVӣ dӳ liӋu là lѭu trӳ dӳ liӋu lên các phѭѫng tiӋn lѭu trӳ ÿѭӧc hӋ quҧn trӏ FѫVӣ dӳ liӋu kiӇm soát. Thao tác trên mӝWFѫVӣ dӳ liêu là quá trình truy vҩQFѫVӣ dӳ liӋXÿӇ lҩy ra các dӳ liӋu cө thӇ, cұp nhұWFѫVӣ dӳ liӋu, tҥo ra các báo cáo tӯ dӳ liӋu. 10 Hình 4: Mô hình H͏ qu̫n tr͓ F˯Vͧ dͷ li͏u Mӛi hӋ quҧn trӏ Fѫ Vӣ dӳ liӋu có mӝt ngôn ngӳ ÿӏnh QJKƭD Gӳ liӋu riêng (DDL - Data 'HILQLWLRQ/DQJXDJXHĈk\OjQJ{QQJӳ dùng ÿӇ ÿӏnh QJKƭD, khai báo cҩu trúc cӫa cӫDFѫVӣ dӳ liêu. NhӳQJQJѭӡi thiӃt kӃ và quҧn trӏ FѫVӣ dӳ liӋu thӵc hiӋn các công viӋc khai báo cҩu trúc FѫVӣ dӳ liӋu. &iFFKѭѫQJWUuQKNKDLEiRFҩXWU~F&6'/ÿѭӧc viӃt bҵng ngôn ngӳ DDL mà hӋ quҧn trӏ CSDL cho phép. Các chѭѫng trình ӭng dөng ÿѭӧc viӃt bҵng các ngôn ngӳ lұSWUuQK&&-DYD'HOSKL«NӃt hӧp vӟi các ngôn ngӳ thao tác dӳ liӋu (DML - Data Manipulation Language) thông qua các thѭ viӋn hoһc ÿӕi tѭӧng kӃt nӕi CSDL ÿѭӧc ngôn ngӳ lұp trình hӛ trӧ: ODBC, RDO, ADO,« Các hӋ quҧn trӏ FѫVӣ dӳ liӋu quan hӋ ngày nay phә biӃn sӱ dөng các ngôn ngӳ DDL và DML dӵa trên ngôn ngӳ SQL. Ĉӕi vӟi h Ӌ quҧn trӏ FѫVӣ dӳ liӋu SQL Server thì ngôn ngӳ dùng ÿӇ tѭѫng tác vӟi cѫ sӣ dӳ liӋu là T ± 64/Ĉk\OjPӝt phiên bҧn cӫa ngôn ngӳ SQL. Ngôn ngӳ T ± SQL trên SQL Server bao gӗm nhiӅu câu lӋnh khác nhau, có thӇ chia thành 2 nhóm: o Nhóm ngôn ngͷ ÿ͓nh QJKƭDGͷ li͏u DDL: vӟi các lӋnh cho phép tҥo, thay ÿәi cҩu trúc và xóa các ÿӕi tѭӧng &6'/GDWDEDVHWDEOHYLHZ« o Nhóm ngôn ngͷ thao tác dͷ li͏u DML: vӟi các lӋnh nhѭ SELECT/INSERT/UPDATE/DELETE cho phép lҩy vӅ dӳ liӋu cө thӇ, thay ÿәi giá trӏ cӫa dӳ liӋu.