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.
.
.
.
.
.
.
.
.
.
93 trang |
Chia sẻ: tlsuongmuoi | Lượt xem: 2169 | Lượt tải: 0
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:
- Giáo trình SQL server 70.pdf