Giáo trình SQL server 7.0

Microsoft SQL Server 7.0 là một CSDL kiểu quan hệ được nâng cấp từ phiên bản Microsoft SQL Server 6.5 Hệ quản trị CSDL Microsoft SQL Server 7.0 là hệ CSDL đáp ứng tính tăng trưởng, hiệu suất cao cho môi trường tính toán khách chủ phân tán. . . . . . . . . .

pdf93 trang | Chia sẻ: tlsuongmuoi | Lượt xem: 2154 | Lượt tải: 0download
Bạn đang xem trước 20 trang tài liệu Giáo trình SQL server 7.0, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
QL Server: D÷ liÖu d¹ng table SQL server +Respository: §ãng gãi vµo DTS->Respository package +File: D¹ng file TiÕp tôc -> NhÊn Next (hoµn thµnh). 38 S¸ch ®iÖn tö, luËn v¨n tèt nghiÖp CNTT – http:/www.diachiweb.com PhÇn IV: C¸c thµnh phÇn cña CSDL 4.1. B¶ng (bao gåm c¸c thµnh phÇn ®i cïng) Lµm thÕ nµo ®Ó t¹o 1 TABLE? B¶ng (table) lµ thµnh viªn cÊu thµnh CSDL chÝnh v× vËy nã ®ãng mét vai trß rÊt quan träng trong viÖc t¹o mét hÖ CSDL. - Chän Table-> NhÊn nót ph¶i chuét-> chän New database NhËp tªn cña b¶ng(table_name) b¹n cÇn t¹o vµo dßng sau ->chän OK Sau ®ã lÇn l−ît thùc hiÖn c¸c c«ng viÖc sau: 1) NhËp tªn cét (column name) 2) Chän kiÓu d÷ liÖu cho cét (field): (data type) SQL server cung cÊp cho ng−êi dïng c¸c d¹ng d÷ liÖu sau: Data type Desciption -Varbinary -Image -Binary KiÓu nhÞ ph©n Max 2 G bytes -Char -Varchar -Text KiÓu ký tù (char –1 bytes) Varchar 0..n bytes Text Max 2 G Bytes 39 S¸ch ®iÖn tö, luËn v¨n tèt nghiÖp CNTT – http:/www.diachiweb.com -nChar -nVarchar -nText -DateTime KiÓu thêi gian (8Byte) - Smalldatetime (4byte) -Int (-2.147.483.648,+ 2.147.483.647) -Smallint (-32.768,+ 32.767) -Tinyint 0..255 -Decimal - Numeric -Float -Real KiÓu sè thùc (8 bytes) -Timestamp -Bit(On,OFF) -(Tru,false) (0,1) 3) Length: ChiÒu dµi cña tr−êng d÷ liÖu 4) Precision: §é chÝnh x¸c cña tr−êng d÷ liÖu 5) Allow null cã gi¸ trÞ null hay kh«ng Nªn nhí r»ng tr−êng d÷ liÖu nµo lµ kho¸ th× nã nhÊt ®Þnh kh«ng tån t¹i gi¸ trÞ null 40 S¸ch ®iÖn tö, luËn v¨n tèt nghiÖp CNTT – http:/www.diachiweb.com 6) Default value: Gi¸ trÞ ngÇm ®Þnh cña tr−êng d÷ liÖu. Khi mµ b¹n ®· hoµn thµnh qu¸ tr×nh trªn tr−íc khi ®ãng l¹i b¹n nhí lµ ph¶i ghi l¹i. • Mét table lµ mét thµnh viªn cña mét CSDL(database); ®Ó cã ng÷ nghÜa vÒ ng«n ng÷ qu¶n trÞ CSDL th× bÊt cø mét table nµo còng ph¶i cã nghÜa trong CSDL ®ã. • D÷ liÖu ®−îc t¹o ra kh«ng ph¶i user nµo còng cã thÓ truy cËp ®−îc chÝnh v× vËy mµ b¹n ph¶i cÇn thiÕt lËp quyÒn truy cËp cho tõng lo¹i table mµ b¹n ®· t¹o ra tõng chøc n¨ng riªng biÖt th× cµng tèt. 4.2. Quan s¸t. ThÕ nµo gäi lµ Views? Lµ tËp hîp c¸c “thñ tôc” chøa c¸c ®o¹n m· Transact SQL l−u tr÷ toµn bé néi dung ®−îc ®Þnh nghÜa trong c¸c VIEW ®ã d−íi d¹ng c¸c query ®éng(real) thùc sù. Mét View chÝnh lµ tËp hîp c¸c cét cña c¸c table trong CSDL. Tuy nhiªn nÕu database rçng th× View kh«ng thùc sù tån t¹i T¹i sao ta ph¶i dïng VIEWS? + Trong mét CSDL : mçi lo¹i CSDL ®iÒu cã nh÷ng ®Æc tr−ng quan träng cña nã, chÝnh v× vËy ®Ó gi¶m bít c¸c b·ng l−u tr÷ c¸c th«ng tin ®ã trong CSDL ng−êi Sö Dông cã thÓ t¹o ra c¸c query trung gian ®−îc l−u gi÷ ngay trung t©m ®Ó khi cÇn d÷ liÖu chóng ta cã thÓ khai th¸c ngay mµ kh«ng tèn bé nhí ®Ó l−u tr÷. + VIEWS còng cã nh÷ng chøc n¨ng nh− mét database cã nghÜa lµ nã cã thÓ chia sÎ nhiÒu møc kh¸c nhau. 41 S¸ch ®iÖn tö, luËn v¨n tèt nghiÖp CNTT – http:/www.diachiweb.com -Lµm thÕ nµo thiÕt lËp ®−îc VIEWS? 1) Chän Views - > NhÊn nót ph¶i chuét -> New Views 2) Chän c¸c table mµ b¹n ®Þnh lÊy lµm CSDL cña VIEWS. (Hoµn toµn t−¬ng tù nh− lóc b¹n chän c¸c table ®Ó thiÕt kÕ CSDL trong Diagram) 3) Dïng c¸c lÖnh trong bé Transact SQL ®Ó so¹n th¶o trong « TEXT: Khi so¹n th¶o xong b¹n nªn thùc hiÖn CHECK Syntax. B¹n h·y dïng c¸c c«ng cô hç trî trªn thanh Toolbar ®Ó lµm viÖc víi Views. V× Views lµ d¹ng query nªn ta còng thiÕt lËp quyÒn Permission cho nã. 42 S¸ch ®iÖn tö, luËn v¨n tèt nghiÖp CNTT – http:/www.diachiweb.com ThiÕt lËp quyÒn cho Views hoµn toµn t−¬ng tù nh− thiÕt lËp quyÒn cho database, nã gåm cã c¸c b−íc chÝnh nh− vËy. Trong nhãm 1: user/DB roles/Public Gåm c¸c login_ID vµ c¸c nhãm lµm viÖc . Nhãm 2: TËp c¸c lÖnh trong Transact SQL NÕu b¹n check vµo « nµo cña user/nhãm nµo th× user/nhãm ®ã ®−îc quyÒn sö dông lÖnh ®ã. Sau khi ®· check c¸c quyÒn hoµn thµnh -->TiÕp tôc nhÊn nót OK (cã thÓ nhÊn Apply) TiÕp theo (l¸t c¾t thø hai trong Views) lµ chän c¸c tªn cét d÷ liÖu (field_name) trong c¸c b¶ng ®· ®−îc chän ®Ó ®−a ra trong Views .(h×nh sau) Sau khi chän xong c¸c cét d÷ liÖu, SQL server tù ®éng biªn dÞch c¸c thao t¸c cña b¹n thµnh ng«n ng÷ Transact SQL ®−îc l−u gi÷ trong (nguån –Text) cña Views. 43 S¸ch ®iÖn tö, luËn v¨n tèt nghiÖp CNTT – http:/www.diachiweb.com Ngoµi ra b¹n còng cã thÓ check trªn c¸c table ®· ®−îc thªm (Add) vµo trªn l¸t c¾t thø nhÊt. (trªn s¬ ®å quan hÖ cña CSDL) 4.3. Kho¸. Kho¸ lµ tËp hîp c¸c tuéc tÝnh ®éc lËp víi nhau cã ng÷ nghÜa nhÊt ®Þnh, ®−îc m« t¶ trong c¸c b¶ng (table) cña CSDL co môc ®Ých liªn kÕt gi÷a c¸c b¶ng(table) víi nhau. Cã hai møc kho¸ chÝnh lµ + Primary Keys: Kho¸ trong (Xem phÇn kho¸) + Foreign Keys: Kho¸ ngoµi + Primary key: “Kho¸ trong” lµ tr−êng d÷ liÖu (kho¸) chØ tån t¹i duy nhÊt trong hµng d÷ liÖu cña mét table. Kho¸ trong kh«ng chÊp nhËn gi¸ trÞ NULL + Foreign key : “Kho¸ ngoµi” lµ 1 hay nhiÒu tr−êng d÷ liÖu ®−îc thiÕt lËp ®Ó kÕt nèi quan hÖ (liªn kÕt) gi÷a c¸c table víi nhau 4.4. Thñ tôc ghi nhí -ThÕ nµo lµ Stored procedure? Lµ tËp hîp c¸c thñ tôc ®−îc thiÕt lËp ®Ó qu¶n lý, xö lý vµ trao ®æi th«ng tin víi c¸c øng dông víi SQL server. 44 S¸ch ®iÖn tö, luËn v¨n tèt nghiÖp CNTT – http:/www.diachiweb.com Mçi khi b¹n thiÕt lËp c¸c øng dông trªn SQl Server, Transact SQl lµ giao diÖn quan träng nhÊt gi÷a SQL Server database vµ øng dông, khi ®ang sö dông ch−¬ng tr×nh Transact SQL cã hai kh¶ n¨ng thuéc tÝnh x¶y ra nh− sau: + Mçi ch−¬ng tr×nh sÏ ®−îc g¸n trong ph¹m vi côc bé ë client . VÝ dô Visual Basic göi mét lÖnh ®Õn SQl Server th× nã ®· ®−îc xö lý. + HoÆc lµ ch−¬ng tr×nh nµy sÏ tËp trung t¹i SP trong SERVER. • Sö dông SP cã lîi Ých h¬n lµ sö dông lÖnh Transact SQL ë m¸y client lµ bëi v×: 1) Thùc hiÖn nhanh 2) Gi¶m l−u l−îng giao dÞch trªn m¹ng 3) B¶o mËt tèt ngay t¹i Server 4) M· nguån l−u tr÷ ngay t¹i trung t©m 5) Cã thÓ sö dông cho nhiÒu øng dông kh¸c nhau còng nh− c¸c client kh¸c nhau. Lµm thÕ nµo ®Ó t¹o SP? 1) Chän Stored procedure -> nhÊn nót ph¶i chuét -> chän New SP 2) Dïng ng«n ng÷ Transact SQL ®Ó so¹n th¶o SP. 3) Save SP còng t−¬ng tù nh− Views: ng−êi thiÕt lËp ra SP cã thÓ chia sÎ tµi nguyªn nÕu cung cÊp quyÒn sö dông c¸c SP nµy cho c¸c client hay mét sè c¸c øng dông kh¸c trong c¸c Server kh¸c ( gÇn hay xa) 4.5. ThÕ nµo lµ Trigger? Lµ d¹ng ®Æc biÖt cña Stored procedure, còng lµ d¹ng thñ tôc ®−îc chia sÎ nh− SP nh−ng thùc hiÖn (ngÇm ®Þnh lµ automatic ) khi ®¸p l¹i c¸c lÖnh (Insert, Update, Delete) mçi khi ®−îc thùc hiÖn. Mét Trigger cã thÓ lµ mét query vµ còng cã thÓ lµ mét ®o¹n m· lÖnh cña Transact SQL. T¹o mét Trigger. 45 S¸ch ®iÖn tö, luËn v¨n tèt nghiÖp CNTT – http:/www.diachiweb.com Chän All tasks 1) Chän manager trigger 2) Chän New 3) Dïng c¸c lÖnh cña Transact SQL ®Ó so¹n th¶o 4) Check Syntax 5) Save 4.6. ChØ sè - Indexes: SQL Server tù ®éng qu¶n lý indexes cho c¸c kho¸ trong còng nh− c¸c th«ng sè: UNIQUE constraint. Tuy nhiªn mçi khi thùc hiÖn INDEXES mét b¶ng nµo ®ã th× b¶ng nµy cÇn nhiÒu h¬n bé nhí mµ nã ®ang cã ®Ó thùc hiÖn index. NÕu mçi lÇn thùc hiÖn c¸c d¹ng lÖnh INSERT, UPDATE, DELETE cã index th× cÇn mét thêi gian l©u h¬n ®Ó xö lý. Cã hai d¹ng INDEXES sau: Clustered-Index: Lµ d¹ng index theo hµng c¸c b¶ng ghi d÷ liÖu NonClustered-Index: Lµ d¹ng index theo cét c¸c b¶ng ghi d÷ liÖu 46 S¸ch ®iÖn tö, luËn v¨n tèt nghiÖp CNTT – http:/www.diachiweb.com -Edit Indexes: NÕu b¹n muèn thay ®æi c¸c cét gi¸ trÞ cÇn indexes, b¹n chän cét d÷ liÖu - > click vµo nót EDIT (index). Tõ ®©y b¹n cã thÓ cËp nhËt (modify) cét cÇn s¾p xÕp. T¹i d©y b¹n cã c¸c lùa chän vÒ indexes: + To¸n tö unique : Khö trïng + Clustered index : kiÓu s¨p xÕp 47 S¸ch ®iÖn tö, luËn v¨n tèt nghiÖp CNTT – http:/www.diachiweb.com + Ignore duplicate value: Bá qua gi¸ trÞ nh©n b¶n + Filegroup: Chän nhãm file lµ bao nhiªu? + Ngoµi ra b¹n cã kh¶ n¨ng kÕt hîp víi lÖnh SQL b»ng c¸ch nhÊn EDIT SQL. 48 S¸ch ®iÖn tö, luËn v¨n tèt nghiÖp CNTT – http:/www.diachiweb.com PhÇn V. Qu¶n trÞ vµ Khai th¸c CSDL 5.1. C¸c c«ng cô qu¶n trÞ CSDL . Giíi thiÖu vÒ Microsoft SQL Server Roles: ý nghÜa: ThiÕt lËp c¸c vai trß ®Æc biÖt c¸c quyÒn mÆc nhiªn mµ kh«ng ®−îc g¸n cho c¸c User Account. NÕu b¹n cã quyÒn ®ã th× ph¶i thªm (Add) c¸c User Account ®ã vµo Roles . Roles cã hai d¹ng: 1) Fixed Server Roles: + SysAdmin + Server Admin + Setup Admin + Security Admin + ProccessAdmin + Dbcreator + DiskAdmin 2) Fixed database roles + Public + DB_Owner + DB_AccessAdmin + DB_ dataReader + DB_dataWriter + DB_ddlAdmin + DB_SecurityAdmin + DB_BackupAdmin + DB_Denydatareader 49 S¸ch ®iÖn tö, luËn v¨n tèt nghiÖp CNTT – http:/www.diachiweb.com + DB_DenydataWriter NÕu b¹n muèn huû bá ROLES th× b¹n ph¶i xo¸ toµn bé c¸c User trong database ROLES. T¹i sao ph¶i dïng database Roles? + Lµ v× nã gióp b¹n më réng database, t¹o hiÖu suÊt truy nhËp.. . + C¸c user cã cïng chung c¸c ®Æc tr−ng nªn ng−êi qu¶n lý ph¶i t¹o ra c¸c nhãm, hay c¸c ROLES ®Ó qu¶n lý dÔ dµng h¬n. Lµm thÕ nµo ®Ó t¹o mét User Roles? 1) Chän ROLESÆ NhÊn nót ph¶i chuét-> chän New Roles Tõ ®©y: nhËp tªn database roles Add c¸c user cÇn t¹o ra Æ thùc hiÖn song nhÊn OK NÕu lµ c¸c øng dông th× b¹n chän Application Roles -T¹o kiÓu d÷ liÖu do ng−êi dïng ®Þnh nghÜa - user defined data types. KiÓu d÷ liÖu do ng−êi dïng ®Þnh nghÜa nh»m më réng cho ng−êi sö dông dÔ dµng t¹o ra riªng cho m×nh c¸c lo¹i d÷ liÖu t−¬ng øng víi nhu cÇu ®Æt ra 50 S¸ch ®iÖn tö, luËn v¨n tèt nghiÖp CNTT – http:/www.diachiweb.com Lµm thÕ nµo ®Ó t¹o user defined data types ? 2) Chän user defined data types 3) NhÊn nót ph¶i chuét 4) Chän New user defined data types NhËp tªn lo¹i d÷ liÖu cÇn t¹o : (Name) KiÓu d÷ liÖu: Data type ChiÒu dµi: Length Gi¸ trÞ NULL: Allow nulls DTS (data transformation services) Lµ c¸c dÞch vô cña Microsoft SQL Server cung Êp cho ng−êi dïng chuyÓn ®æi d÷ liÖu nh− trong phÇn Import and export data 51 S¸ch ®iÖn tö, luËn v¨n tèt nghiÖp CNTT – http:/www.diachiweb.com Ngoµi ra ta còng cã thÓ sö dông mét sè lÖnh cña Transact SQL ®Ó thùc hiÖn trªn SQL Server Analyzer VÝ dô nh− lÖnh : BCp database_name..Tablename {IN| OUT} dataFile [/F firstrow][/L lastrow][/b batchsize][/C ][/U login_ID] [/P Password] [/S Servername]. 5.2. C¸c nhiÖm vô vµ quyÒn h¹n trong viÖc qu¶n trÞ vµ së h÷u CSDL (Management). 1) SQL server Agent- C¸c t¸c nh©n qu¶n lý server: + C¶nh b¸o: Alert +Operator: Ng−êi ®iÒu hµnh c«ng viÖc trong c¸c ngµy trong tuÇn +Jobs: C¸c c«ng viÖc ®−îc ®Þnh ra trong c¸c ngµy trong tuÇn. Ai lµm viÖc ? 52 S¸ch ®iÖn tö, luËn v¨n tèt nghiÖp CNTT – http:/www.diachiweb.com 2) Current Ativity 10/23/00 NhËt ký lµm viÖc h»ng ngµy cña SQL server. NÕu b¹n lµ Admin th× b¹n cã thÓ nh×n thÊy tÊt c¶ c¸c th«ng tin mµ SQL Server ®· vµ ®ang lµm viÖc. 3) SQL Server Log: Ghi l¹i toµn bé c«ng viÖc mµ SQL server ®· thùc hiÖn nh»m gióp ng−êi qu¶n trÞ m¹ng hiÓu biÕt thªm vÒ th«ng tin ®−îc xö lý trªn m¸y còng nh− theo dâi c¸c vÊn ®Ò cã liªn quan. VÝ dô nh− ai ®· truy nhËp vµo database LUUTRU vµo lóc 10:22:40 AM ngµy 20 th¸ng 10 n¨m 2000 vµ ®· xo¸ ®i mét sè d÷ liÖu quan träng. Security: 1) Login: T¹o logon_id ®Ó login vµo m¹ng SQL server. + Name: NhËp login_name + Password: nhËp mËt khÈu vµo (hai lÇn nhËp) + Chän database cho user cÇn truy nhËp. (Ng«n ng÷ ngÇm ®Þnh lµ English.) 53 S¸ch ®iÖn tö, luËn v¨n tèt nghiÖp CNTT – http:/www.diachiweb.com TiÕp theo b¹n ph¶i chän c¸c quyÒn truy xuÊt cho user ®ã khi truy xuÊt vµo database. Database access: Chän quyÒn truy xuÊt vµo c¸c database + Link Servser. ChØ ®Þnh c¸c mèi liªn kÕt víi c¸c server kh¸c. Remote server: Tªn m¸y Server truy nhËp tõ xa. 54 S¸ch ®iÖn tö, luËn v¨n tèt nghiÖp CNTT – http:/www.diachiweb.com 4) Support Servic: Cung cÊp c¸c dÞch vô, t¹o hiÖu suÊt truy nhËp cao, ®a d¹ng. - Distributed Transaction Coordinator - SQl Mail SQL Server ProFile T¹o c¸c Trace nh»m theo dâi chÝnh x¸c lóc cã c¸c t¸c nh©n t¸c ®éng vµo CSDL. 55 S¸ch ®iÖn tö, luËn v¨n tèt nghiÖp CNTT – http:/www.diachiweb.com Lµm thÕ nµo ®Ó t¹o ra TRACE? 1) Vµo menu File Chän New TRACE 2) NhËp tªn TRACE cÇn t¹o 3) NhËp tªn Server 4) Capture to file: Tªn file l−u tr÷ l¹i c¸c th«ng tin mµ trace n¾m b¾t ®−îc 5) Capture to table: Tªn table l−u tr÷ l¹i c¸c th«ng tin mµ trace n¾m b¾t ®−îc . 6) Chän kiÓu cña Trace : (Share type, Private type) trong ph¹m vi cã chia sÎ hay chØ t¹i m¸y ®¬n 5.3. TÝnh toµn vÑn vµ tÝnh an toµn CSDL - Toµn vÑn møc b¶ng, møc tr−êng, møc quan hÖ, møc rµng buéc logic An toµn d÷ liÖu hay tÝnh toµn vÑn d÷ liÖu lµ ®iÓm mÊu chèt trong c«ng cuéc b¶o vÖ th«ng tin d÷ liÖu. + ë d¹ng b¶ng: C¸c b¶ng th−êng ®−îc b¶o mËt bëi c¸c quyÒn ®−îc Adminstrator g¸n cho kÕt hîp víi viÖc ®−îc sö dông nh÷ng c©u lÖnh nµo cho tõng lo¹i b¶ng trong CSDL. 56 S¸ch ®iÖn tö, luËn v¨n tèt nghiÖp CNTT – http:/www.diachiweb.com + Field: Tr−êng d÷ liÖu lµ c¸c cét d÷ liÖu hay c¸c thuéc tÝnh cña b¶ng, tËp hîp c¸c cét cña b¶ng t¹o thµnh 1 b¶n ghi hay cßn gäi lµ hµng d÷ liÖu ®−îc b¶o vÖ bëi quyÒn ®−îc g¸n cho b¶ng vµ còng nh− c¸c mèi liªn kÕt trong b¶ng ë møc quan hÖ, kÕt nèi gi÷a c¸c kho¸ víi nhau cña c¸c b¶ng kh¸c nhau (kho¸ trong vµ kho¸ ngoµi). - An toµn vÒ sù kÕt nèi truy nhËp ®Õn CSDL (authentication) vµ quyÒn thao t¸c (permission) trªn c¸c ®èi t−îng cña CSDL • NÕu muèn g¸n quyÒn b¹n chän Permission. Click vµo ®©y Trong nhãm 1: user/DB roles/Pulic Gåm c¸c login_ID vµ c¸c nhãm lµm viÖc . Nhãm 2: TËp c¸c lÑnh trong Transact SQL NÕu b¹n check vµo « nµo cña user/nhãm nµo th× user/nhãm ®ã ®−îc quyÒn sö dông lÖnh ®ã. Sau khi ®· check song “quyÒn “ TiÕp tôc nhÊn nót OK (cã thÓ Apply) 57 S¸ch ®iÖn tö, luËn v¨n tèt nghiÖp CNTT – http:/www.diachiweb.com NÕu b¹n muèn thay ®æi bÊt cø mét ®iÒu g× trong table nµo ®ã th× b¹n h·y lµm nh− sau: 1) Chän table cÇn modify 2) Click nót ph¶i chuét 3) Chän Design database Ngoµi ra b¹n cßn cã rÊt nhiÒu chøc n¨ng ë ®©y khi nhÊn nót ph¶i chuét (Open table, Full text index table, All task , copy, delete , rename, property.. . ) - Sao l−u CSDL - Backup d÷ liÖu: NÕu b¹n muèn t¹o b¶n d÷ liÖu nh©n b¶n th× sö dông chøc n¨ng backup: - Backup gåm hai b−íc: T¹o thiÕt bÞ backup vµ chän CSDL cÇn backup. 58 S¸ch ®iÖn tö, luËn v¨n tèt nghiÖp CNTT – http:/www.diachiweb.com 5.4. C¸c h×nh thøc khai th¸c CSDL: - C©u lÖnh Microsoft SQL Server. LÖnh Microsoft SQL Server (Trong Transact SQL ) lµ tËp hîp c¸c c©u hái (truy vÊn) “th«ng minh” nh»m ®¸p øng nhanh, chÝnh x¸c vµ ®¸p øng cho nhiÒu ng−êi dïng tin. Ng«n ng÷ SQL ng−êi ta th−êng gäi lµ ng«n ng÷ “Th«ng minh”. i) C¸c c©u lÖnh chÝnh th−êng hay dïng trong Microsoft SQL Server còng nh− trong DMO (c¸c øng dông khai th¸c CSDL cña SQL ). 1. C©u lÖnh SELECT: LÊy d÷ liÖu tõ b¶ng (table) trong c¬ së d÷ liÖu. Có ph¸p: SELECT [ALL | DISTINCT] select_list [INTO [new_table_name]] [FROM {table_name | view_name}[(optimizer_hints)] [[, {table_name2 | view_name2}[(optimizer_hints)] [..., {table_name16 | view_name16}[(optimizer_hints)]]] [WHERE clause] [GROUP BY clause] [HAVING clause] [ORDER BY clause] [COMPUTE clause] [FOR BROWSE] Trong ®ã: ALL: LÊy tÊt c¶ c¸c gi¸ trÞ theo kho¸. ALL lµ tham sè ngÇm ®Þnh cña truy vÊn lùa chän. DISTINCT: ChØ lÊy c¸c gi¸ trÞ duy nhÊt. Gi¸ trÞ NULL còng ®−îc lÊy vµo kÕt qu¶ nh−ng chØ cã mét gi¸ trÞ NULL ®−îc lùa chän mµ th«i. 59 S¸ch ®iÖn tö, luËn v¨n tèt nghiÖp CNTT – http:/www.diachiweb.com select_list: X¸c ®Þnh c¸c cét ®−îc lùa chän lÊy d÷ liÖu. Select_list cã thÓ lµ : - DÊu sao (*): TÊt c¶ c¸c cét theo thø tù ®−îc t¹o b»ng c©u lÖnh CREATE TABLE cña c¸c b¶ng trong mÖnh ®Ò FROM cña truy vÊn lùa chän. - Danh s¸ch tªn cña c¸c cét theo thø tù mong muèn, dïng dÊu phÈy (,) ®Ó t¸ch tªn cña c¸c cét nÕu select_list cã nhiÒu h¬n mét cét. - Tªn cét ngÇm ®Þnh lµ tiªu ®Ò cét. Cã thÓ thay ®æi tiªu ®Ò cét theo có ph¸p: Tiªu_®Ò_cét = Tªn_cét hoÆc Tªn_cét Tiªu_®Ò_cét NÕu cã dÊu c¸ch (space) trong tªn cña tiªu ®Ò cét th× ph¶i dïng dÊu ngoÆc kÐp (' ' hoÆc " ") ®èi víi tiªu ®Ò cét. VÝ dô: SELECT 'Tªn t¸c gi¶' = au_lname FROM authors - Mét biÓu thøc (tªn cét, h»ng sè, hµm hoÆc lµ sù kÕt hîp cña tªn c¸c cét, c¸c h»ng sè, c¸c hµm b»ng c¸c to¸n tö hoÆc c¸c truy vÊn con). - Cã thÓ dïng tõ kho¸ IDENTITYCOL thay cho tªn cña cét cã thuéc tÝnh IDENTITY (gi¸ trÞ cña cét lµ NOT NULL). - BiÕn côc bé hoÆc biÕn toµn côc. - G¸n biÕn côc bé theo có ph¸p: @variable = BiÓu thøc Chó ý: NÕu select_list gåm viÖc g¸n biÕn th× kh«ng thÓ thùc hiÖn lÊy d÷ liÖu. INTO Tªn_b¶ng_míi: T¹o ra mét b¶ng míi víi c¸c cét ®−îc chØ ra trong select_list vµ c¸c gi¸ trÞ tho¶ m·n mÖnh ®Ò WHERE. §Ó chän d÷ liÖu 60 S¸ch ®iÖn tö, luËn v¨n tèt nghiÖp CNTT – http:/www.diachiweb.com vµ ®−a vµo mét b¶ng cè ®Þnh, lùa chän select into/bulkcopy ph¶i ®−îc ho¹t ®éng (b»ng c¸ch thùc hiÖn thñ tôc l−u tr÷ cña hÖ thèng sp_dboption). Khi mét c¬ së d÷ liÖu ®−îc t¹o míi, lùa chän select into/bulkcopy ngÇm ®Þnh lµ kh«ng ho¹t ®éng. Tªn b¶ng míi ph¶i tu©n theo c¸c qui t¾c gièng tªn b¶ng gèc, gåm: - NÕu select into/bulkcopy ®ang ho¹t ®éng trong c¬ së d÷ liÖu mµ b¶ng sÏ ®−îc t¹o ra, b¶ng cè ®Þnh ph¶i ®−îc t¹o ra tr−íc ®ã. Tªn b¶ng ph¶i duy nhÊt trong c¬ së d÷ liÖu vµ ph¶i tu©n theo c¸c qui t¾c nhËn d¹ng. - NÕu select into/bulkcopy kh«ng ho¹t ®éng trong c¬ së d÷ liÖu mµ b¶ng sÏ ®−îc t¹o ra th× kh«ng thÓ t¹o ra ®−îc b¶ng cè ®Þnh b»ng lÖnh SELECT INTO; chØ cã thÓ t¹o ra c¸c b¶ng t¹m thêi côc bé hoÆc toµn côc. §Ó t¹o b¶ng t¹m thêi, tªn cña b¶ng t¹m thêi ph¶i ®−îc b¾t ®Çu b»ng dÊu # (#Tªn_b¶ng) ®èi víi b¶ng t¹m thêi côc bé vµ hai dÊu ## (##Tªn_b¶ng) ®èi víi b¶ng t¹m thêi toµn côc khi t¹o b¶ng b»ng CREATE TABLE. - Ho¹t ®éng cña SELECT INTO gåm hai b−íc. B−íc ®Çu tiªn lµ t¹o b¶ng, ng−êi sö dông ph¶i cã quyÒn t¹o b¶ng trong c¬ së d÷ liÖu ®Ých. B−íc thø hai lµ thªm c¸c dßng gi¸ trÞ vµo b¶ng míi. NÕu b−íc thø hai kh«ng thùc hiÖn ®−îc v× bÊt kú lý do g× (lçi phÇn cøng, v−ît qu¸ dung l−îng ®Üa cña c¬ së d÷ liÖu, ...) th× b¶ng míi vÉn tån t¹i nh−ng kh«ng cã gi¸ trÞ. - Cã thÓ dïng SELECT INTO ®Ó t¹o ra mét b¶ng cã cÊu tróc gièng nhau (kh¸c tªn b¶ng) b»ng c¸ch ®−a ®iÒu kiÖn sai trong mÖnh ®Ò WHERE. - Kh«ng thÓ dïng SELECT INTO cïng víi mÖnh ®Ò COMPUTE hoÆc trong mét giao dÞch do ng−êi dïng ®Þnh nghÜa. - NÕu chän cét cã gi¸ trÞ NOT NULL vµo b¶ng míi th× cét míi sÏ cã thuéc tÝnh IDENTITY (cã gi¸ trÞ NOT NULL) trõ khi mét trong sè c¸c ®iÒu kiÖn sau ®−îc tho¶ m·n: . C©u lÖnh SELECT bao gåm mÖnh ®Ò liªn kÕt (join), mÖnh ®Ò GROUP BY hoÆc c¸c hµm tæng hîp. 61 S¸ch ®iÖn tö, luËn v¨n tèt nghiÖp CNTT – http:/www.diachiweb.com . NhiÒu c©u lÖnh SELECT ®−îc kÕt hîp víi nhau b»ng to¸n tö UNION. . Cét cã gi¸ trÞ NOT NULL ®−îc liÖt kª nhiÒu h¬n trong select_list. . Cét cã gi¸ trÞ NOT NULL lµ mét phÇn cña biÓu thøc. FROM: ChØ ra c¸c b¶ng ®−îc sö dông trong lÖnh SELECT. NÕu select_list chØ lµ h»ng sè, biÕn vµ c¸c biÓu thøc sè mµ kh«ng cã tªn cét th× kh«ng cÇn mÖnh ®Ò FROM. Sè l−îng b¶ng tèi ®a trong mÖnh ®Ò FROM lµ 16 b¶ng, kÓ c¶ c¸c truy vÊn con. - Tªn_b¶ng = [[Tªn_c¬ së_d÷_liÖu.]Chñ_c¬_së_d÷_liªu.]{Tªn_b¶ng} NÕu cã nhiÒu b¶ng trong mÖnh ®Ò FROM th× dïng dÊu phÈy (,) ®Ó ph©n t¸ch c¸c b¶ng. NÕu c¸c b¶ng tån t¹i trong c¬ së d÷ liÖu kh¸c th× ph¶i ®−a ra tªn b¶ng ®Çy ®ñ (Tªn_c¬_së_d÷_liÖu.Chñ_c¬_së_d÷_liÖu.Tªn_b¶ng). Mçi tªn b¶ng cã thÓ cã bÝ danh ®Ó sö dông cho thuËn lîi hoÆc ®Ó ph©n biÖt c¸c vai trß kh¸c nhau cña c¸c b¶ng khi liªn kÕt hoÆc thùc hiÖn c¸c truy vÊn con. §Ó dïng bÝ danh, tr−íc hÕt ph¶i chØ ra tªn b¶ng, sau ®ã lµ mét kho¶ng tr»ng (space) vµ cuèi cïng lµ tªn bÝ danh, vÝ dô: SELECT au_lname, au_fname, title FROM titles t, authors a, titleauthor ta WHERE ta.title_id = t.title_id AND ta.au_id = a.au_id ORDER BY title, au_lname, au_fname Thø tù cña c¸c b¶ng sau tõ kho¸ FROM kh«ng ¶nh h−ëng ®Õn kÕt qu¶ cña c©u lÖnh. WHERE: X¸c ®Þnh c¸c ®iÒu kiÖn ®Ó lùa chän d÷ liÖu trong c©u lÖnh. Sè l−îng c¸c ®iÒu kiÖn lµ kh«ng h¹n chÕ (trong c©u lÖnh cña ng«n ng÷ hái ®¸p cã cÊu tróc SQL). WHERE search_conditions 62 S¸ch ®iÖn tö, luËn v¨n tèt nghiÖp CNTT – http:/www.diachiweb.com GROUP BY: X¸c ®Þnh c¸c nhãm trong b¶ng, nÕu trong select_list cã c¸c hµm tæng hîp th× x¸c ®Þnh gi¸ trÞ tæng qu¸t cho mçi nhãm. C¸c d÷ liÖu kiÓu v¨n b¶n (text) vµ ¶nh (image) kh«ng ®−îc dïng trong mÖnh ®Ò GROUP BY. GROUP BY [ALL] aggregate_free_expression [, aggregate_free_expression]... HAVING: X¸c ®Þnh c¸c kiÓu h¹n chÕ kh¸c nhau ®èi víi c¸c hµm tæng hîp trong select_list. HAVING search_conditions search_conditions h¹n chÕ c¸c dßng gi¸ trÞ kÕt qu¶ cña truy vÊn mµ kh«ng ¶nh h−ëng ®Õn viÖc tÝnh to¸n cña c¸c hµm tæng hîp. Khi dïng mÖnh ®Ò WHERE, search_conditions h¹n chÕ c¸c dßng gi¸ trÞ ®−îc tÝnh to¸n trong c¸c hµm tæng hîp nh−ng kh«ng h¹n chÕ c¸c dßng gi¸ trÞ kÕt qu¶ cña truy vÊn. C¸c d÷ liÖu kiÓu v¨n b¶n (text) vµ ¶nh (image) kh«ng ®−îc dïng trong mÖnh ®Ò HAVING. Sè l−îng ®iÒu kiÖn kh«ng h¹n chÕ trong search_conditions. MÖnh ®Ò HAVING cã thÓ ®−îc dïng ®éc lËp víi mÖnh ®Ò GROUP BY. NÕu mÖnh ®Ò HAVING ®−îc dïng víi mÖnh ®Ò GROUP BY ALL th× HAVING sÏ phñ nhËn ý nghÜa cña tõ kho¸ ALL. ORDER BY: S¾p xÕp kÕt qu¶ theo cét, cã thÓ s¾p xÕp tèi ®a lµ 16 cét. ORDER BY {{table_name. | view_name.}column_name | select_list_number | expression} [ASC | DESC] [...{{table_name16. | view_name16.}column_name | select_list_number | expression} [ASC | DESC]] C¸c gi¸ trÞ Null ®−îc xÕp tr−íc c¸c gi¸ trÞ kh¸c, c¸c cét cã gi¸ trÞ v¨n b¶n (text) hoÆc ¶nh (image) kh«ng ®−îc dïng trong mÖnh ®Ò ORDER BY. COMPUTE: §−îc dïng víi c¸c hµm tæng hîp theo dßng (SUM, AVG, MIN, MAX, vµ COUNT). 63 S¸ch ®iÖn tö, luËn v¨n tèt nghiÖp CNTT – http:/www.diachiweb.com COMPUTE row_aggregate(column_name) [, row_aggregate(column_name)...] [BY column_name [, column_name]...] FOR BROWSE: Cho phÐp cËp nhËt b»ng c¸ch sö dông th− viÖn c¬ së d÷ liÖu (DB_Library) khi xem d÷ liÖu trong c¸c ch−¬ng tr×nh øng dông cña m¸y kh¸ch. 2. C©u lÖnh INSERT: Thªm mét dßng gi¸ trÞ míi vµo b¶ng d÷ liÖu®ang tån t¹i trong CSDL. Có ph¸p: INSERT [INTO] {table_name | view_name} [(column_list)] {DEFAULT VALUES | values_list | select_statement} where Trong ®ã: INTO: Lµ tõ kho¸ lùa chän. table_name | view_name: Tªn cña b¶ng ®−îc dïng trong c©u lÖnh INSERT. NÕu b¶ng kh«ng tån t¹i trong c¬ së d÷ liÖu hiÖn thêi th× ph¶i chØ ra ®Çy ®ñ tªn b¶ng (database_name.owner.object_name). column_list: Danh s¸nh c¸c cét ®−îc thªm d÷ liÖu. Cã thÓ liÖt kª c¸c cét theo bÊt kú thø tù nµo nh−ng d÷ liÖu ®−îc thªm vµo b¶ng ph¶i cã cïng thø tù víi thø tù cña cét. NÕu column_list kh«ng ®−îc chØ ra th× tÊt c¶ c¸c cét (theo thø tù ®−îc t¹o ra b»ng lÖnh CREATE TABLE) cña b¶ng sÏ ®−îc thªm d÷ liÖu. DEFAULT VALUES: Thªm gi¸ trÞ ngÇm ®Þnh cho tÊt c¶ c¸c cét. §èi víi c¸c cét cã gi¸ trÞ NOT NULL, gi¸ trÞ phï hîp tiÕp theo sÏ ®−îc thªm vµo. §èi víi c¸c cét ®−îc nhËn gi¸ trÞ NULL th× gi¸ trÞ ngÇm ®Þnh ®−îc thªm vµo lµ NULL. 64 S¸ch ®iÖn tö, luËn v¨n tèt nghiÖp CNTT – http:/www.diachiweb.com values_list: §Ó liÖt kª c¸c gi¸ trÞ cho mçi cét theo thø tù trong column_list hoÆc trong b¶ng. VALUES (DEFAULT | constant_expression [, DEFAULT | constant_expression]...) select_statement: Lµ c©u lÖnh SELECT dïng ®Ó nhËn d÷ liÖu mµ sÏ ®−îc thªm vµo b¶ng tõ mét b¶ng ®ang tån t¹i. VÝ dô: A. Thªm gi¸ trÞ cho tÊt c¶ c¸c cét INSERT titles VALUES('BU2222', 'Faster!', 'business', '1389', NULL, NULL, NULL, NULL, 'ok', '06/17/87') B. Thªm gi¸ trÞ cho c¸c cét ®−îc liÖt kª trong column_list: INSERT titles(title_id, title, type, pub_id, notes, pubdate) VALUES ('BU1237', 'Get Going!', 'business', '1389', 'great', '06/18/86') C. Thªm gi¸ trÞ cho tÊt c¶ c¸c cét tõ mét b¶ng kh¸c: INSERT INTO newauthors SELECT * FROM authors WHERE city = 'San Francisco' D. Thªm c¸c gi¸ trÞ ngÇm ®Þnh: INSERT publishers DEFAULT VALUES V× gi¸ trÞ cña cét pub_id trong b¶ng publishers lµ NOT NULL nªn xuÊt hiÖn th«ng b¸o lçi: Msg 233, Level 16, State 2 The column pub_id in table publishers may not be null. E. Thªm gi¸ trÞ cho c¸c cét sö dông tõ kho¸ DEFAULT INSERT employee 65 S¸ch ®iÖn tö, luËn v¨n tèt nghiÖp CNTT – http:/www.diachiweb.com VALUES ('KLT91469F', 'Katrina', 'L', 'Thompson', DEFAULT, DEFAULT,DEFAULT, '01/14/95') 3. C©u lÖnh UPDATE: Thay ®æi d÷ liÖu dßng trong b¶ng ®ang tån t¹i b»ng c¸ch thªm d÷ liÖu míi hoÆc söa ®æi d÷ liÖu ®ang cã. Có ph¸p: UPDATE {table_name | view_name} SET [{table_name | view_name}] {column_list | variable_list | variable_and_column_list} [, {column_list2 | variable_list2 | variable_and_column_list2} ... [, {column_listN | variable_listN | variable_and_column_listN}]] [WHERE clause] Trong ®ã: table_name | view_name: Tªn b¶ng ®−îc thay ®æi d÷ liÖu. NÕu b¶ng kh«ng thuéc c¬ së d÷ liÖu hiÖn t¹i th× ph¶i chØ ra ®−êng dÉn ®Çy ®ñ cña b¶ng ®ã (Tªn_c¬_së_d÷_liÖu.Tªn_chñ_c¬_së_d÷_liÖu.tªn_b¶ng). SET: Lµ tõ kho¸ dïng ®Ó liÖt kª danh s¸ch c¸c cét hoÆc biÕn sÏ ®−îc thay ®æi. NÕu cã h¬n mét cét hoÆc biÕn ®−îc liÖt kª th× dïng dÊu phÈy ®Ó t¸ch chóng. column_list: bao gåm c¸c biÓu thøc g¸n 66 S¸ch ®iÖn tö, luËn v¨n tèt nghiÖp CNTT – http:/www.diachiweb.com Tªn_cét = {BiÓu thøc | DEFAULT | NULL} variable_list: bao gåm c¸c biÓu thøc g¸n Tªn_biÕn = {BiÓu thøc | NULL} Trong ®ã: Tªn_cét: ChØ ra cét trong b¶ng. BiÓu thøc: Lµ tªn cét, h»ng sè, hµm (ngo¹i trõ hµm tæng hîp), hoÆc lµ sù kÕt hîp cña c¸c tªn cét, h»ng sè, vµ c¸c hµm b»ng c¸c to¸n tö hoÆc c¸c truy vÊn con. DEFAULT: Thªm c¸c gi¸ trÞ ngÇm ®Þnh cho c¸c cét ®ã. variable_and_column_list: Bao gåm c¸c biÓu thøc g¸n: Tªn_biÕn = Tªn_cét = {BiÓu thøc | NULL} WHERE: X¸c ®Þnh ®iÒu kiÖn ®Ó thay ®æi d÷ liÖu trong b¶ng. NÕu kh«ng cã mÖnh ®Ò WHERE th× c©u lÖnh UPDATE sÏ thay ®æi tÊt c¶ d÷ liÖu trong b¶ng. WHERE {§iÒu_kiÖn_t×m_kiÕm} §iÒu_kiÖn_t×m_kiÕm: X¸c ®Þnh c¸c chØ tiªu ®−îc thay ®æi d÷ liÖu. §iÒu kiÖn t×m kiÕm cã thÓ lµ mét biÓu thøc, mét truy vÊn con, mét h»ng sè, ... VÝ dô: A. C©u lÖnh UPDATE chØ sö dông mÖnh ®Ò SET: UPDATE publishers SET city = 'Atlanta', state = 'GA' UPDATE publishers SET pub_name = NULL UPDATE titles SET price = price * 2 67 S¸ch ®iÖn tö, luËn v¨n tèt nghiÖp CNTT – http:/www.diachiweb.com B. C©u lÖnh UPDATE cã sö dông mÖnh ®Ò WHERE: UPDATE authors SET state = 'PC', city = 'Bay City' WHERE state = 'CA' AND city = 'Oakland' C. C©u lÖnh UPDATE sö dông lÖnh SELECT: UPDATE titles SET ytd_sales = ytd_sales + qty FROM titles, sales WHERE titles.title_id = sales.title_id AND sales.date = (SELECT MAX(sales.date) FROM sales) 4. C©u lÖnh DELETE: Xo¸ c¸c dßng gi¸ trÞ trong b¶ng d÷ liÖu ®ang tån t¹i. Có ph¸p: DELETE [FROM] {table_name | view_name} [WHERE clause] Trong ®ã: table_name | view_name: Tªn b¶ng ®−îc xo¸ d÷ liÖu. NÕu b¶ng kh«ng thuéc c¬ së d÷ liÖu hiÖn t¹i th× ph¶i chØ ra ®−êng dÉn ®Çy ®ñ cña b¶ng ®ã: (Tªn_c¬_së_d÷_liÖu.Tªn_chñ_c¬_së_d÷_liÖu.tªn_b¶ng). WHERE: X¸c ®Þnh ®iÒu kiÖn ®Ó xo¸ d÷ liÖu trong b¶ng. NÕu c©u lÖnh DELETE kh«ng cã mÖnh ®Ò WHERE th× tÊt c¶ c¸c dßng trong b¶ng sÏ bÞ xo¸. WHERE {search_conditions | CURRENT OF cursor_name} search_conditions: §iÒu kiÖn ®Ó xo¸ d÷ liÖu. VÝ dô: A. C©u lÖnh DELETE kh«ng cã tham sè: Xo¸ tÊt c¶ c¸c dßng d÷ liÖu trong b¶ng authors. 68 S¸ch ®iÖn tö, luËn v¨n tèt nghiÖp CNTT – http:/www.diachiweb.com DELETE authors B. Dïng lÖnh DELETE ®Ó xo¸ mét sè dßng d÷ liÖu: DELETE FROM authors WHERE au_lname = 'McBadden' 5. C¸c hµm tæng hîp: C¸c hµm tæng hîp tÝnh to¸n c¸c gi¸ trÞ nh− gi¸ trÞ trung b×nh, tæng sè theo gi¸ trÞ cña c¸c cét ®−îc chØ ra vµ tr¶ vÒ mét gi¸ trÞ. Có ph¸p: Tªn_hµm_tæng hîp ([ALL | DISTINCT] BiÓu thøc) Trong ®ã: Tªn_hµm_tæng hîp gåm: AVG: Tr¶ vÒ gi¸ trÞ trung b×nh cña tÊt c¶ c¸c gi¸ trÞ hoÆc chØ ®èi víi c¸c gi¸ trÞ kh«ng lÆp trong biÓu thøc. AVG chØ dïng cho c¸c cét cã gi¸ trÞ sè. COUNT: Tr¶ vÒ sè l−îng c¸c gi¸ trÞ NOT NULL cña biÓu thøc. NÕu dïng tõ kho¸ DISTINCT th× hµm COUNT chØ ®Õm sè gi¸ trÞ NOT NULL duy nhÊt. Hµm COUNT ®−îc dïng víi c¶ cét cã gi¸ trÞ sè vµ ký tù. COUNT(*): Tr¶ vÒ sè dßng trong b¶ng. COUNT(*) kh«ng cã tham sè vµ kh«ng ®−îc dïng víi tõ kho¸ DISTINCT. COUNT(*) ®Õm tÊt c¶ c¸c dßng, c¶ c¸c dßng cã gi¸ trÞ NULL. MAX: Tr¶ vÒ gi¸ trÞ lín nhÊt trong biÓu thøc. Hµm MAX ®−îc dïng víi c¸c cét cã gi¸ trÞ sè, ký tù, vµ ngµy giê nh−ng kh«ng dïng víi cét cã gi¸ trÞ bit. MIN: Tr¶ vÒ gi¸ trÞ nhá nhÊt trong biÓu thøc. Hµm MIN ®−îc dïng víi c¸c cét cã gi¸ trÞ sè, ký tù, vµ ngµy giê nh−ng kh«ng dïng víi cét cã gi¸ trÞ bit. 69 S¸ch ®iÖn tö, luËn v¨n tèt nghiÖp CNTT – http:/www.diachiweb.com SUM: Tr¶ vÒ gi¸ trÞ tæng cña tÊt c¶ c¸c gi¸ trÞ hoÆc chØ ®èi víi c¸c gi¸ trÞ kh«ng lÆp trong biÓu thøc. SUM chØ dïng cho c¸c cét cã gi¸ trÞ sè. ALL: Hµm tæng hîp cã t¸c dông ®èi víi tÊt c¶ c¸c gi¸ trÞ vµ ALL lµ gi¸ trÞ ngÇm ®Þnh. DISTINCT: Lo¹i bá c¸c gi¸ trÞ ®óp tr−íc khi thùc hiÖn hµm tæng hîp. BiÓu thøc: Lµ tªn cét, h»ng sè, hµm, hoÆc lµ sù kÕt hîp cña c¸c tªn cét, h»ng sè, vµ c¸c hµm b»ng c¸c to¸n tö sè häc hoÆc c¸c to¸n tö bÝt. VÝ dô: A. Hµm SUM vµ hµm AVG SELECT AVG(advance), SUM(ytd_sales) FROM titles WHERE type = 'business' B. Hµm SUM vµ AVG dïng víi mÖnh ®Ò GROUP BY SELECT type, AVG(advance), SUM(ytd_sales) FROM titles GROUP BY type C. Hµm COUNT sö dông DISTINCT: SELECT COUNT(DISTINCT city) FROM authors D. Hµm COUNT(*) trong GROUP BY HAVING: SELECT type FROM titles GROUP BY type HAVING COUNT(*) > 1 E. Hµm SUM vµ AVG trong HAVING: SELECT pub_id, SUM(advance), AVG(price) FROM titles 70 S¸ch ®iÖn tö, luËn v¨n tèt nghiÖp CNTT – http:/www.diachiweb.com GROUP BY pub_id HAVING SUM(advance) > $25000 AND AVG(price) > $15 6. C¸c kÕt nèi b¶ng: C¸c mÖnh ®Ò kÕt nèi b¶ng chuÈn cña ANSI gåm; -INNER JOIN -LEFT JOIN -LEFT [OUTER] JOIN -RIGHT JOIN -RIGHT [OUTER] JOIN -FULL JOIN -FULL [OUTER] JOIN Trong ®ã: INNER JOIN: X¸c ®Þnh gi¸ trÞ tr¶ vÒ gåm nh÷ng dßng gi¸ trÞ cïng thuéc c¶ hai b¶ng. LEFT JOIN: X¸c ®Þnh dßng gi¸ trÞ tr¶ vÒ thuéc b¶ng bªn tr¸i cña liªn kÕt. 71 S¸ch ®iÖn tö, luËn v¨n tèt nghiÖp CNTT – http:/www.diachiweb.com LEFT OUTER JOIN: X¸c ®Þnh dßng gi¸ trÞ tr¶ vÒ thuéc b¶ng bªn tr¸i cña liª IGHT JOIN: X¸c ®Þnh dßng gi¸ trÞ tr¶ vÒ thuéc b¶ng bªn ph¶i cña liªn kÕt. IGHT OUTER JOIN: X¸c ®Þnh dßng gi¸ trÞ tr¶ vÒ thuéc b¶ng bªn ph¶i c ULL JOIN: X¸c ®Þnh dßng gi¸ trÞ tr¶ vÒ thuéc c¶ hai b¶ng cña liªn kÕt. n kÕt mµ kh«ng cã trong b¶ng bªn ph¶i cña liªn kÕt. R R ña liªn kÕt mµ kh«ng cã trong b¶ng bªn tr¸i cña liªn kÕt. F 72 S¸ch ®iÖn tö, luËn v¨n tèt nghiÖp CNTT – http:/www.diachiweb.com FULL OUTER JOIN: X¸c ®Þnh dßng gi¸ trÞ tr¶ vÒ kh«ng thuéc c¶ hai b¶ng ) Sau ®©y lµ mét sè lÖnh vµ hµm th−êng hay dïng trong Transact Önh trong Microsoft SQL Server th−êng hay cã c¸c to¸n tö ®iÒu kiÖ reates a new table.): cã hai lo¹i table Có ABLE e.[owner]. | owner.] table_name _expression DEFAULT} ] cña liªn kÕt. ii SQL . Chó ý : C¸c c©u l n, biÓu thøc logic, tõ kho¸, to¸n tö chØ ®Þnh vµ c¸c tiªu thøc lÖnh s¾p nhãm , s¾p xÕp indexes hay mét sè to¸n tö kh¸c... Th−êng ®i theo sau c¸c tõ kho¸ lÖnh mµ c¸c tõ kho¸ nµy ®· diÔn gi¶i râ ë trªn c¸c c©u lÖnh trªn(Select, insert, update .. ..) 1) T¹o table (C - C¸c d¹ng table t¹m thêi - C¸c d¹ng table cè ®Þnh ph¸p: CREATE T [ database_nam { | column_name AS computed_column | } [,...n] ) [ON {filegroup | DEFAULT} ] [TEXTIMAGE_ON {filegroup | 73 S¸ch ®iÖn tö, luËn v¨n tèt nghiÖp CNTT – http:/www.diachiweb.com DiÔn gi¶i: ::= { column_name data_type } OT FOR REPLICATION] ] ] OWGUIDCOL ] t>] [ ...n] column_constraint> ::= [CONSTRAINT constraint_name] [ NULL | NOT NULL ] | UNIQUE } D] ] [FOREIGN KEY] table [(ref_column) ] ECK [NOT FOR REPLICATION] table_constraint> ::= [CONSTRAINT constraint_name] TERED] [ [ DEFAULT constant_expression ] | [ IDENTITY [(seed, increment ) [N ] [ R [ <column_constrain < { | [ { PRIMARY KEY [CLUSTERED | NONCLUSTERE [WITH FILLFACTOR = fillfactor] [ON {filegroup | DEFAULT} ]] | [ REFERENCES ref_ [NOT FOR REPLICCTION] ] | CH (logical_expression) } < { [ { PRIMARY KEY | UNIQUE } [ CLUSTERED | NONCLUS { ( column[,...n] ) } 74 S¸ch ®iÖn tö, luËn v¨n tèt nghiÖp CNTT – http:/www.diachiweb.com [ WITH FILLFACTOR = fillfactor] mn[,...n])] le [(ref_column[,...n])] ¸c tham sè : [ON {filegroup | DEFAULT} ] ] | FOREIGN KEY [(colu REFERENCES ref_tab [NOT FOR REPLICATION] | CHECK [NOT FOR REPLICATION] (search_conditions)} C e: Tªn database able m trong Table Vµ computed_column_expression: lµ c¸c tªn cét n»m trong c¸c thµnh phÇn filegroup | DEFAULT} : Nhãm fie –trong phÇn database mµ b¹n ®· liÖu gi¸ trÞ NULL hay kh«ng cã ERED : S¾p xÕp a) database_nam b) owner : quyÒn Owner d) table_name: Tªn T e) column_name: Sè cét n» sau d©y lµ mét sè th«ng sè quan träng: + sau : PRIMARY KEY, UNIQUE, FOREIGN KEY, DEFAULT ®−îc ®Þnh nghÜa. + ON { biÕt khi t¹o CSDL. + TEXTIMAGE_ON + data_type : KiÓu d÷ + NULL | NOT NULL : Cã + PRIMARY KEY : Kho¸ trong + UNIQUE : H¹n chÕ trïng lÆp + CLUSTERED | NONCLUST 75 S¸ch ®iÖn tö, luËn v¨n tèt nghiÖp CNTT – http:/www.diachiweb.com + [WITH FILLFACTOR = fillfactor] + FOREIGN KEY...REFERENCES : Kho¸ ngoµi Önh nµy cÇn liªn kÕt víi c¸c n[,...n]) : tõng cét cña Table ®−îc chØ ®Þnh + C kh«ng ? tatemant er. hiÕt lËp CSDL g tù nh− lÖnh thiÕt lËp b¶ng tuy nhiªn cã mét CREATE DATABASE database [PRIMARY] [ [,...n] [,...n]} ] name: Tªn datatbase ..n] : ChØ ®Þnh kho¸ trong - ref_table : Tªn cña b¶ng TABLE kh¸c khi c©u l kho¸ ngoµi - (ref_colum HECK : cã dïng tõ kho¸ CHECK (h¹n chÕ trïng lÆp) hay + logical_expression: BiÓu thøc logic kÌm theo Ngoµi ra con cã c¸c d¹ng thiÕt lËp kh¸c: + Create View View_name AS Select S + Create Procedure + Create default + Create Index + Create Rule + Create Trigg + Create Database :T D¹ng lÖnh: T−¬n sè th«ng sè kh¸c. Có ph¸p: _name [ ON [, [,...n] ]] [ LOG ON { [ FOR LOAD | FOR ATTACH ] DiÓn gi·i: +database_ + ON [PRIMARY] [ [,. 76 S¸ch ®iÖn tö, luËn v¨n tèt nghiÖp CNTT – http:/www.diachiweb.com + [ LOG ON { [,...n]} ] : ChØ ®Þnh LOGON_name ::= ( [ NAME = logical_file_name, ] { max_size | UNLIMITED } ] ] egroup_name [,...n] ¸c nhãm lÖnh xo¸ : cã tån t¹i lÖnh thiÕt lËp th× sÏ tån t¹i lÖnh xo¸ . er. 2) D¹ng lÖnh: mét sè cét cña b¶ng(table) hay h¹n chÕ mét sè thuéc tÝnh cña BLE table N column_name , scale] ) ] FILENAME = 'os_file_name' [, SIZE = size] [, MAXSIZE = [, FILEGROWTH = growth_increment] ) [,...n ::= FILEGROUP fil C T−¬ng tù nh− trªn nÕu + DROP View View_name AS Select Statemant + DROP Procedure + DROP default + DROP Index + DROP Rule + DROP Trigg Thªm hoÆc xo¸ CHECK, TRIGGER.. Có ph¸p: ALTER TA { [ALTER COLUM { new_data_type [ (precision[ [ NULL | NOT NULL ] 77 S¸ch ®iÖn tö, luËn v¨n tèt nghiÖp CNTT – http:/www.diachiweb.com | {ADD | DROP} ROWGUIDCOL } ] column_expression ITH NOCHECK] ADD ONSTRAINT] constraint_name CK} CONSTRAINT nh nµy còng cã c¸c thèng sè nh− c¸c c©u lÖnh Create table Có e “Tªn cò”,”Tªn míi” Có [@dbname=] 'name'] [@dbname=] 'name': Cung cÊp tªn database ] | ADD { [ | column_name AS computed_ }[,...n] | [WITH CHECK | W { }[,...n] | DROP { [C | COLUMN column }[,...n] | {CHECK | NOCHE {ALL | constraint_name[,...n]} | {ENABLE | DISABLE} TRIGGER {ALL | trigger_name[,...n]} } LÖ 3) §æi tªn Table hay ®æi tªn CSDL: ph¸p: SP_Renam 4) Xem th«ng tin vÒ Database: ph¸p: sp_helpdb [ + 78 S¸ch ®iÖn tö, luËn v¨n tèt nghiÖp CNTT – http:/www.diachiweb.com 5) Cho biÕt th«ng sè : sè hµng trong table, dung l−îng ®ang dïng trong æ ®Üa cña database. Có ph¸p: sp_spaceused [[@objname =] 'objname'] [,[@updateusage =] 'updateusage'] + [@objname =] 'objname': Tªn database + [@updateusage =] 'updateusage': 6) Xem th«ng tin vÒ c¸c ®èi t−îng trong database Có ph¸p: sp_help [[@objname =] name] 7) Cung cÊp th«ng tin vÒ user ®ang truy nhËp vµo Microsoft SQL Server Có ph¸p: sp_who [[@login_name =] 'login'] 8) Excutive: Lêi gäi mét thñ tôc trong Stored Procedure: [[EXEC[UTE]] [@return_status =]{procedure_name [;number] | @procedure_name_var}[[@parameter =] {value | @variable [OUTPUT] | [DEFAULT]] [,...n][WITH RECOMPILE] Thùc hiÖn trong c¸c x©u ký tù: EXEC[UTE] ({@string_variable | [N]'tsql_string'} [+...n]) 9) ChuyÓn ®æi sè liÖu: t¹o b¶ng sao d÷ liÖu hay chuyÓn ®æi d÷ liÖu vµo thiÕt bÞ kh¸c th× dïng lÖnh DUMP Có ph¸p: DUMP Database Database_name to Disk = “path\filename” DUMP table table_name to Disk = “path\filename” DUMP Transacttion Database_name to Disk = “path\filename” NÕu muèn xo¸ d÷ liÖu khi bÞ trµn « nhí: 79 S¸ch ®iÖn tö, luËn v¨n tèt nghiÖp CNTT – http:/www.diachiweb.com DUMP Transacttion Database_name with [Truncate_opnly | No_log ] Khi muèn LOAD vµo hay phôc håi d÷ liÖu ®−îc BACKUP ra dïng lÖnh LOAD . LOAD Table Dbname..Tablename from DISK =”Path\FileName” Ngoµi ra b¹n cã thÓ dïng lÖnh: + BACKUP DATABASE {database_name | @database_name_var} TO [,...n] [WITH .. ..] + RESTORE DATABASE {database_name | @database_name_var} [FROM [,...n]] [WITH [DBO_ONLY].. ..] Chó ý: Tr−íc khi backup d÷ liÖu b¹n nªn l−u l¹i c¸c th«ng tin vÒ CSDL hay c¸c TABLE mµ b¹n muèn BACKUP ®Ó sau nµy khi phôc håi cÇn th«ng sè chÝnh x¸c. 10) LÖnh SP_DBOPTION: Xem hoÆc thay ®æi quyÒn truy cËp cña c¸c lÖnh trong OPTION Có ph¸p: sp_dboption [[@dbname =] 'database'] [, [@optname =] 'option_name'] [, [@optvalue =] 'value'] 11) Xem th«ng tin ®ang hiÖn hµnh vÒ c¸c user: Có ph¸p: sp_helpuser [[@name_in_db =] 'security_account'] 12) LÖnh SP_Password: Thªm hay chuyÓn ®æi mét PASSWORD cho mét LOGIN_ID Có ph¸p: 80 S¸ch ®iÖn tö, luËn v¨n tèt nghiÖp CNTT – http:/www.diachiweb.com sp_password [[@old =] 'old_password',] {[@new =] 'new_password'} [,[@loginame =] 'login'] 13) D¹ng lÖnh SP_AddType: ThiÕt lËp kiÓu d÷ liÖu do ng−êi sö dông ®Þnh nghÜa Có ph¸p: sp_addtype [@typename =] type, [@phystype =] system_data_type [, [@nulltype =] 'null_type'] 14) Hµm RAISERROR(): Th«ng b¸o, c¶nh b¸o lçi ®ang x¶y ra tõ Microsoft SQL Server Có ph¸p: RAISERROR ({msg_id | msg_str}{, severity, state} [, argument [,...n]] ) [WITH option[,...n]] 15) Hµm USER_ID(): Tr¶ vÒ th«ng sè cña USER_ID ®ang lµm viÖc Có ph¸p: USER_ID(['user']) T−¬ng tù nh− c¸c hµm cßn l¹i : + Object_ID(), User_name(), DB.Name() 16) C©u lÖnh SP_ATTACH_DB: G¸n d÷ liÖu vµo SERVER. Có ph¸p: sp_attach_db [@dbname =] 'dbname', [@filename1 =] 'filename_n' [,...16] 17) C©u lÖnh SP_AddGroup: 81 S¸ch ®iÖn tö, luËn v¨n tèt nghiÖp CNTT – http:/www.diachiweb.com Thªm nhãm USER vµo DATABASE Có ph¸p: sp_addgroup [@grpname =] 'group' 18) C©u LÖnh SP_AddUSER: Thªm c¸c USER vµo ACCOUNT trong SERVER. Có ph¸p: sp_adduser [@loginame =] 'login' [,[@name_in_db =] 'user'] [,[@grpname =] 'group'] 19) C©u lÖnh GRANT: G¸n quyÒn thùc hiÖn c¸c c©u lÖnh cho c¸c Table trong database. Có ph¸p: GRANT {ALL | statement[,...n]} TO security_account[,...n] øng dông cho permissions: GRANT {ALL [PRIVILEGES] | permission[,...n]}{ [(column[,...n])] ON {table | view}| ON {table | view}[(column[,...n])] | ON {stored_procedure | extended_procedure}}TO security_account[,...n] [WITH GRANT OPTION] [AS {group | role}] 20) Huû bá c¸c c©u lÖnh võa ®−îc g¸n hay c¸c quyÒn ®−îc thiÕt lËp trong PERMISSION: Có ph¸p: REVOKE {ALL | statement[,...n]} FROM security_account[,...n] øng dông cho permissions: 82 S¸ch ®iÖn tö, luËn v¨n tèt nghiÖp CNTT – http:/www.diachiweb.com REVOKE [GRANT OPTION FOR]{ALL [PRIVILEGES] | permission[,...n]}{[(column[,...n])] ON {table | view}| ON {table | view}[(column[,...n])]| {stored_procedure | extended_procedure}} {TO | FROM}security_account[,...n][CASCADE][AS {group | role}] 21) C©u lÖnh Truncate: Lµm s¹ch (xo¸ d÷ liÖu) table mµ b¹n chØ ®Þnh Có ph¸p: TRUNCATE TABLE table_name - KÕt nèi víi Excel, kÕt nèi víi SPSS C¸c tr×nh duyÖt Microsoft office nh− WORD, EXCEL còng nh− SPSS còng cã thÓ cËp nhËt CSDL cña Microsoft SQL Server: EXCEL tr×nh duyÖt lÊy d÷ liÖu tõ CSDL cña Microsoft SQL Server vµ lËp thµnh c¸c biÓu tÝnh to¸n theo ng−êi lËp biÓu. T−¬ng tù nh− phÇn mÒm ph©n tÝch sè liÖu thèng kª SPSS còng vËy. LÊy d÷ liÖu tõ database b»ng EXCEL: Tr−íc khi thùc hiÖn c¸c b−íc sau b¹n ®· ph¶I ®Þnh nghÜa cÊu h×nh database trong ODBC qua FSN. 1) Më EXCEL -> vµo menu data -> Chän Get External data -> Chän tiÕp Create New Query Nh×n vµo h×nh trªn b¹n ph¶I chän database cÇn lÊy d÷ liÖu. Sau ®ã b¹n ph¶I kÕt nèi víi database nµy b»ng c¸ch sö dông Logon_ID vµ Password. 83 S¸ch ®iÖn tö, luËn v¨n tèt nghiÖp CNTT – http:/www.diachiweb.com 2) TiÕp theo b¹n ph¶I chän c¸c b¶ng (Table) vµ c¸c cét (tr−êng) trong mçi b¶ng ®ã ®Ó t¹o ra Query. 3) Sau khi chän xong table vµ c¸c cét tiÕp theo b¹n nhÊn NEXT 4) NÕu b¹n muèn s¨p xÕp (SORT ORDER) th× b¹n chän c¸c cét cÇn s¨p xÕp ë ®©y. B−íc tiÕp b¹n chän lo¹i d÷ liÖu cÇn ®−a ra (EXCEL, QUERY, OLAP) - > NhÊn Finish. T¹o c¸c table d−íi d¹ng cét b»ng EXCEL: Gåm 3 b−íc chÝnh 1) Më EXCEL -> vµo menu data -> Chän Pivot table and Pivotchart Report 84 S¸ch ®iÖn tö, luËn v¨n tèt nghiÖp CNTT – http:/www.diachiweb.com Chän lo¹i d÷ liÖu cÇn lÊy ®Ó lµm biÓu 2) Get data: NhÊn vµo get data b¹n ph¶I chän database cÇn truy nhËp (t−¬ng tù nh− trªn). TiÕp theo lµ b¹n ph¶i kÕt nèi vµo database b»ng c¸ch dïng Logon_ID vµ Password. (t−¬ng tù nh− ë trªn) Sau khi kªt nèi vµo database b¹n ph¶I chän c¸c table vµ c¸c cét cÇn truy xuÊt. -> tiÕp theo nhÊn NEXT 3) Dïng hiÖu øng LAYOUT ®Ó bè trÝ hµng cét cña biÓu dÇu ra Dïng chuét ®Ó kÐo vµ th¶ c¸c tr−êng n»m trong cét cña b¸o biÓu lµm sao cho tho¶ yªu cÇu ®Æc ra -> tiÕp thªo nhÊn OK . TiÕp nhÊn FINISH ®Ó hoµn thµnh c«ng viÖc. LÊy d÷ liÖu b»ng SPSS: Gåm 6 b−íc chÝnh 85 S¸ch ®iÖn tö, luËn v¨n tèt nghiÖp CNTT – http:/www.diachiweb.com T−¬ng tù nh− EXCEL tr−íc khi lÊy d÷ liÖu b¹n ph¶I thiÕt lËp database trong ODBC. 1) Më SPSS-> Chän menu FILE-> Chän Open data -> Chän New Query Tõ ®©y b¹n chän CSDL cÇn truy xuÊt. Tuy nhiªn ngay t¹i ®©y b¹n còng cã thÓ thªm data source (database) vµo ODBC. Khi chän ®−îc database b¹n nhÊn NEXT (cho b¹n h×nh sau). Hoµn toµn t−¬ng tù nh− EXCEL,b¹n còng ph¶i kÕt nèi vµo Database qua ODBC b»ng login_ID vµ password. (nhÊn OK vµ chê mét chót xÝu) 2) Chän d÷ liÖu (Select data): T¹i ®©y b¹n chän c¸c table vµ c¸c tr−êng n»m trong c¸c table ®Ó ®−a ra b¸o biÓu. ë ®©y, khi b¹n cÇn s¾p xÕp mét cét nµo ®ã b¹n check vµo « “sort field names”. 86 S¸ch ®iÖn tö, luËn v¨n tèt nghiÖp CNTT – http:/www.diachiweb.com 3) ChØ ®Þnh c¸c mèi quan hÖ vÒ d÷ liÖu, nÕu b¹n muèn ®iÒu khiÓn tù ®éng b¹n check vµo « Auto Join Tables. tiÕp theo nhÊn NEXT. 4) Sö dông c¸c hµm(function) vµ c¸c to¸n tö logic ®Ó giíi h¹n d÷ liÖu theo nh cÊu cña b¸o biÓu. tiÕp theo nhÊn NEXT. 5) §Þnh nghÜa c¸c biÕn t−¬ng øng víi c¸c cét d÷ liÖu cÇn ®−a ra b¸o biÓu. NhËp tªn biÕn vµo « Result Variable name: TiÕp nhÊn NEXT 87 S¸ch ®iÖn tö, luËn v¨n tèt nghiÖp CNTT – http:/www.diachiweb.com 6) Xem l¹i lÇn cuèi b»ng c©u lÖnh (ng«n ng÷ SQL) cã ®iÒu g× cÇn söa. Sau ®ã, nÕu b¹n muèn ghi l¹i vµo query th× b¹n ph¶i chän tªn query (cÇn ghi l¹i) vµo « Save Query to File. nhÊn FINISH ®Ó hoµn thµnh. (Tr×nh ¸p dông). 5.5. Mét vÝ dô minh ho¹ (thÓ hiÖn theo thiÕt kÕ ë phÇn II). VÝ dô: T¹o CSDL l−u tr÷ cña ngµnh thèng kª, hiÖn nay CSDl nµy ®ang ®−îc khai th¸c vµ cËp nhËt t¹i Tæng Côc Thèng kª (V¨n phßng Tæng Côc ®ang qu¶n lý tµi liÖu l−u tr÷). 1) T¹o database cã tªn lµ LUUTRU: CREATE DATABASE LUUTRU ON ( NAME = luutru_dat, FILENAME = 'c:\mssql7\data\luutrudat.mdf', SIZE = 10, MAXSIZE = 50, FILEGROWTH = 5 ) LOG ON ( NAME = 'luutru_log', FILENAME = 'c:\mssql7\data\luutrulog.ldf', SIZE = 5MB, MAXSIZE = 25MB, FILEGROWTH = 5MB ) 2) T¹o c¸c table trong CSDL vµ thiÕt lËp c¸c chØ sè index: + create table dmluutru (ma1 char(1) null, ma2 char(1) null, ma3 char(1) null, ma4 char(1) null, ma5 char(1) null, tenPl varchar(120) not null) + create table NoiBH( mabh char(2) not null, tenbh varchar(50) not null) + insert NoiBH values("01","Tæng Côc Thèng Kª") 88 S¸ch ®iÖn tö, luËn v¨n tèt nghiÖp CNTT – http:/www.diachiweb.com + DELETE FROM DMLUUTRU WHERE TENPL="Tµi liÖu l−u tr÷ TCTK" + create table dmlydo( lydo char(1) not null, tenlydo varchar(40) not null) + create table dmbiendong( mabd char(1) not null, tenbd varchar(20) not null) + insert dmbiendong values("1","Thanh lý") + insert dmlydo values("1","HÕt thêi h¹n b¶o qu¶n") + update dmlydo set tenlydo="HÕt gi¸ trÞ sö dông" where lydo="2" + truncate table luu_file + create table HOSO (hoso_id char(10) not null, ngay char(2) null, thang char(2) null, nam char(4) not null, ten varchar(255) not null, soto smallint null, gia char(2) not null, ngan char(2) not null, cap char(3) null, kyhieu varchar(15) null, noibh char(2) null, khoi char(1) not null, loai char(1) not null, nhom char(1) null, vande char(1) null,) + create table HOSOCU (hoso_id char(10) not null, ngay char(2) null, thang char(2) null, nam char(4) not null, ten varchar(255) not null, soto smallint null, kyhieu varchar(15) null, noibh char(2) not null, khoi char(1) not null, loai char(1) not null, nhom char(1) null, vande char(1) null, ngaybo char(2) not null, thangbo char(2) not null, nambo char(4) not null, loaibd char(1) not null, lydo char(1) not null, nduyet varchar(25) not null) + create table MUON (hoso_id char(10) not null, ngaym char(2) not null, thangm char(2) not null, namm char(4) not null, nguoim varchar(25) not null, donvi char(2) not null, chatluong char(1), ngayh char(2) null, thangh char(2) not null, namh char(4) not null, ngayt char(2) not null, thangt char(2) not null, namt char(4) not null) + create table IN_HS( nam char(4) null, khoi char(1) null, loai char(1) null, nhom char(1) null, vande char(1) null, sodem smallint not null) + create unique clustered index hosoId_ind on hoso(hoso_id) 89 S¸ch ®iÖn tö, luËn v¨n tèt nghiÖp CNTT – http:/www.diachiweb.com + create index maphanloai_ind on hoso(khoi,loai,nhom,vande) + create index nambh_ind on hoso(nam) + create unique clustered index manoibh_ind on noibh(mabh) + create unique clustered index macl_ind on chatluong(macl) + create unique clustered index mabd_ind on dmbiendong(mabd) + create unique clustered index mapl_ind on dmluutru(ma1,ma2,ma3,ma4) + create unique clustered index mald_ind on dmlydo(lydo) + create unique clustered index madv_ind on donvi(madv) + create index hoso_ind on muon(hoso_id) + create index hoso_ind on hosocu(hoso_id) Sau khi thùc hiÖn song c¸c lÖnh trªn b¹n dïng lÖnh: sp_help ®Ó xem vµ kiÓm tra l¹i cã ®ñ tÊt c¶ table trong CSDL ch−a? 3) B¶o mËt CSDL: t¹o nhãm lµm viÖc vµ thªm c¸c user vµo nhãm, g¸n quyÒn thao t¸c trªn CSDL ®ã. + sp_addgroup dbCSDL + sp_adduser khanht,khanht,dbCSDL + grant select on dmluutru to dbCSDL + grant select,update,delete,insert on NOIBH to dbCSDL + revoke update,delete,insert on HOSO to dbCSDL .. 90 S¸ch ®iÖn tö, luËn v¨n tèt nghiÖp CNTT – http:/www.diachiweb.com PhÇn VI. T×nh h×nh ph¸t triÓn CSDL Thèng kª trªn SQL Server trong thêi gian qua vµ KÕt luËn Chó ý : nh¾c l¹i mét sè tiªu thøc quan träng khi sö dông Microsoft SQL Server . ThiÕt kÕ CSDL cho Microsoft SQL Server : NÕu b¹n cã mét CSDL tèt : Tøc lµ tõ lóc thiÕt kÕ - b¹n ph¶i ®Æt ra yªu cÇu mµ b¹n cÇn khai th¸c ë CSDL. Tõ ®ã thu thËp th«ng tin vÒ c¸c ®èi t−îng cña CSDL; ®Çy ®ñ, chÝnh x¸c, kh«ng d− thõa, ®óng thêi ®iÓm. Tõ ®ã thiÕt kÕ m« h×nh quan hÖ cña c¸c thuéc tÝnh th«ng tin cã liªn quan (Gäi lµ cã phô thuéc hµm gi÷a c¸c thuéc tÝnh). ThiÕt lËp c¸c kho¸: Kho¸ trong vµ kho¸ ngoµi. T¹o ra bao nhiªu b¶ng(table) trong CSDL? Khi ®· chuÈn bÞ ®Çy ®ñ th× chóng ta b¾t ®Çu thiÕt kÕ database. C¸c øng dông ®−îc ¸p dông vµo ®Ó khai th¸c th«ng tin trªn CSDL cña Microsoft SQL Server : Microsoft SQL Server cung cÊp cho b¹n bé lÖnh trong TRANSACT SQL ®Ó khai th¸c d÷ liÖu trong CSDL. Ngoµi ra b¹n còng cã thÓ dïng DMO (c¸c øng dông OLE hç trî 32 bit) ®Ó t¹o ra c«ng cô nh»m khai th¸c d÷ liÖu. VÝ dô nh− VB, VC++.. .. Tuy nhiªn nÕu dïng VB th× ph¶i qua ODBC(16-32bit) vµ ph¶i viÕt c¸c hµm truy cËp nµy( gäi lµ DAO FUNCTION) vµ rÊt dÓ sö dông, nh−ng nÕu b¹n dïng Delfi hay VC++ th× kh«ng nhÊt thiÕt ph¶i qua ODBC (32bit). Vµ rÊt tiÖn lîi cho viÖc më réng c¸c chøc n¨ng thiªn vÒ kü thuËt chuyªn s©u (tuy nhiªn khã 91 S¸ch ®iÖn tö, luËn v¨n tèt nghiÖp CNTT – http:/www.diachiweb.com sö dông h¬n Visual Basic), tèc ®é truy nhËp nhanh h¬n nhiÒu so víi c¸ch sö dông Visual Basic. HiÖn nay, Tæng Côc Thèng Kª ®· x©y dùng mét sè CSDL cho ngµnh nh−: + CSDL C«ng nghiÖp + CSDL doanh nghiÖp + D©n sè vµ nhµ ë + Qu¶n lý c«ng v¨n ®i ®Õn + CSDL l−u tr÷ .. c¸c CSDL nµy lu«n lu«n ®−îc ph¸t triÓn theo thêi gian ngµy mét lín h¬n. 92 S¸ch ®iÖn tö, luËn v¨n tèt nghiÖp CNTT – http:/www.diachiweb.com §−a lªn m¹ng bë Nghiªm Phó C−êng, 93

Các file đính kèm theo tài liệu này:

  • pdfGiáo trình SQL server 70.pdf
Tài liệu liên quan