You are on page 1of 93

S¸ch ®iÖn tö, luËn v¨n tèt nghiÖp CNTT – http:/www.diachiweb.

com

Tæng Côc Thèng Kª


Trung t©m tÝnh to¸n thèng Kª Trung ¦¬ng

Gi¸o tr×nh Microsoft SQL Server 7.0

HÖ qu¶n trÞ c¬ së d÷ liÖu


SQL Server

1
S¸ch ®iÖn tö, luËn v¨n tèt nghiÖp CNTT – http:/www.diachiweb.com

Môc Lôc
I. Giíi thiÖu chung - Tæng quan vÒ SQL Server (4 - tiÕt).
II. ThiÕt kÕ CSDL (4 - tiÕt).
III. C¬ së d÷ liÖu trong Microsoft SQL Server (8 - tiÕt)..
IV. C¸c thµnh phÇn cña CSDL(12 - tiÕt)..
V. Qu¶n trÞ vµ khai th¸c CSDL (8 - tiÕt).
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 (4 - tiÕt).

2
S¸ch ®iÖn tö, luËn v¨n tèt nghiÖp CNTT – http:/www.diachiweb.com

PhÇn I: Tæng quan vÒ SQL Server.


1.1. Kh¸i niÖm chung, ph©n biÖt CSDL ®éng (qu¶n lý, xö lý c¸c giao
t¸c) vµ CSDL tÜnh (l−u tr÷ d÷ liÖu ®iÒu tra).
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.
1.2. C¸c ®Æc ®iÓm cña hÖ qu¶n trÞ CSDL SQL Server.
C¸c tÝnh n¨ng quan träng chñ yÕu nh− sau:
+ TÝch hîp Windows NT gåm c¸c dÞch vô ®a luång vµ lËp lÞch,
Performance Monitor, Event Viewer. T−¬ng thÝch m¹ng ®¬n, qu¶n lý c¸c
kho¶ng môc thèng nhÊt, gi¶n tiÖn trong sö dông.
+ Sö dông ph¸t t¸n d÷ liÖu ®Ó trao ®æi d÷ liÖu víi c¸c m¸y ch¹y trªn
Windows NT, vµ ph¸t hµnh cung cÊp d÷ liÖu cho c¸c m¸y kh¸c qua ODBC.
Nh»m cung cÊp cho ng−êi sö dông (Kh¸ch hµng) th«ng tin chÝnh x¸c vµ cã
tÝnh thêi ®iÓm.
+ Qu¶n trÞ tËp trung víi khung ph©n t¸n toµn diÖn
+ LËp lÞch cho c¸c nhiÖm vô, tù ®éng ho¸ thùc hiÖn theo chu tr×nh cã
c¶nh b¸o
+ Sö dông kiÕn tróc song song cho c¸c chøc n¨ng néi t¹i
+ Sö dông kiÕn tróc song song cho c¸c CSDL cùc lín
+ Sö dông OLE DMO (Distributed Management Object) nh»m cho
phÐp c¸c nhµ ph¸t triÓn phÇm mÒm lËp tr×nh cho mäi c«ng cô cÇn thiÕt còng
nh− c¸c tiÖn Ých gióp ®ì cho c¸c øng dông CSDL ho¹t ®éng tèt, hiÖu suÊt cao
khi sö dông.
1.3. C¸c phiªn b¶n.

3
S¸ch ®iÖn tö, luËn v¨n tèt nghiÖp CNTT – http:/www.diachiweb.com

Microsoft SQL Server cã c¸c d¹ng sau:


+ Microsoft SQL Server 7.0 Standard Edition
+ Microsoft SQL Server 7.0 Enterprise Edition
Ngoµi ra c¸c phiªn b¶n sau :
+ Microsoft SQL Server 7.0 office 2000 Edition
+ Microsoft SQL Server 7.0 Desktop Edition
1) Microsoft SQL Server enterprise Edition
Cã giao diªn ®å ho¹ cho phÐp ng−êi qu¶n trÞ dÔ dµng sö dông vµ thùc
hiÖn c¸c thao t¸c cÇn thiÕt nh»m duy tr× ho¹t ®éng.
2) Transact SQL :
Hoµn toµn phï hîp víi chuÈn ANSI SQL 92
Tuy vËy, cã thªm c¸c më réng cho phÐp t¨ng c¸c chøc n¨ng ®¸p øng nhu
cÇu thùc tÕ.
+ SQL Web Assistant
+ Hai to¸n tö Cube vµ Rollup: Tæng kÕt th«ng tin trªn Server, gi¶m l−u
l−îng truyÒn tin trªn m¹ng, xö lý t¹i m¸y tr¹m vµ øng dông “Kho d÷ liÖu
lín”.
3) SQL Server DMO (Distributed Management Object ):
Cung cÊp c¸c ®èi t−îng bæ Ých nh− sau:
+ Tranfer
+ Bulk copy
+ Server Group
+ Registered Server.
4) Microsoft DTC:
Cung cÊp c¬ chÕ “ l−u tr÷ hai giai ®o¹n an toµn” ®Ó qu¶n lý xö lý giao
dÞch gióp :
+ øng dông cËp nhËt hai hay nhiÒu h¬n SQL Server

4
S¸ch ®iÖn tö, luËn v¨n tèt nghiÖp CNTT – http:/www.diachiweb.com

+ Dïng lÖnh Transact SQL viÕt c¸c thñ tôc l−u tr÷ nh»m gäi tõ xa ®Ó
cËp nhËt vµo CSDL cña SQL Server.
5) SNMP :
Hç trî cho giao thøc qu¶n trÞ m¹ng, cho phÐp bÊt cø øng dông nµo còng
cã thÓ cËp nhËt ®iÒu khiÓn SQL Server th«ng qua SNMP.
6) Database Maintenance Plan Wizard:
Cho phÐp tiÕn hµnh viÖc b¶o tr× CSDL theo kÕ ho¹ch.
7) OLAP Server:
Cung cÊp cho ng−êi dïng c¸c dÞch vô ®Ó thiÕt lËp ®Çu ra (report) theo
nhu cÇu cña ng−êi dïng tin. RÊt tiÖn lîi cho ng−êi ph©n tÝch sè liÖu.
Chó ý:
+ Kh«ng h¹n chÕ sè l−îng m¸y tr¹m truy nhËp vµo Microsoft SQL Server vµ
mäi m¸y tr¹m ®iÒu ph¶i cã giÊy phÐp truy nhËp, l−u l−îng giao dÞch cao, æn
®Þnh.
+ Phï hîp cho c¸c m«i tr−êng mµ t¹i thêi ®iÓm chØ cã mét sè nhÊt ®Þnh c¸c
m¸y tr¹m truy nhËp vµo Microsoft SQL Server. M¸y cung cÊp dÞch vô trùc
tuyÕn lµ mét vÝ dô: NÕu ta chØ cã 32 ®−êng ®iÖn tho¹i cho kh¸ch hµng th× t¹i
mét thêi ®iÓm chØ cã nhiÒu nhÊt 32 kh¸ch sö dông Microsoft SQL Server .
1.4. Cµi ®Æt.
VÞ trÝ cµi ®Æt ngÇm ®Þnh Microsoft SQL Server 7.0 lµ c:\MSSQL7\
Tr−íc khi cµi ®Æt Microsoft SQL Server b¹n ph¶i biÕt Ph©n bæ ®Üa víi
c¸c møc ®é RAID: RAID 1 vµ RAID 0+1 b¶o vÖ d÷ liÖu vµ cã hiÖu suÊt tèt
nhÊt trong c¸c møc ®é RAID nh−ng gi¸ thµnh l¹i cao h¬n giíi h¹n ®Üa yªu
cÇu. RAID 5 cã gi¸ thµnh phï hîp nhÊt nh−ng l¹i lµ sù kÕt hîp cña RAID 1
vµ RAID 0+1 bëi viÖc t¨ng thªm phÇn vµo/ra nªn RAID 5 ph¶i ®äc vµ ghi
th«ng tin vµo ®Üa víi sè lÇn t−¬ng ®−¬ng nhau. Do ®ã, viÖc sö dông RAID 5
kh«ng hiÖu qu¶ b»ng RAID 1 vµ 0+1.

5
S¸ch ®iÖn tö, luËn v¨n tèt nghiÖp CNTT – http:/www.diachiweb.com

HiÖu suÊt vµo/ra ®Üa tèt nhÊt ®¹t ®−îc víi RAID 0 (®Üa kh«ng ®−îc
b¶o vÖ), chó ý sù kh¸c nhau gi÷a RAID 0, RAID 1, RAID 5 vµ RAID 0+1 vµ
®Ó chøa ®−îc néi dung cña 4 ®Üa d÷ liÖu, RAID 1 (vµ RAID 0+1) cÇn 8 ®Üa,
trong khi ®ã RAID 5 cÇn 5 ®Üa.
Tempdb lµ mét c¬ së d÷ liÖu néi bé ®−îc sö dông nh− mét vïng lµm
viÖc ®−îc chia sÎ cho nhiÒu ho¹t ®éng, bao gåm c¸c b¶ng t¹m thêi, s¾p xÕp
vµ c¸c hµm tæng hîp. Tempdb lµ mét vïng hçn hîp ®−îc t¹o l¹i mçi lÇn
khëi ®éng SQL Server vµ mçi lÇn cËp nhËt. RAID 1 hoÆc 0+1 lµ lùa chän tèt
h¬n RAID 5 cho tempdb. V× tempdb ®−îc x©y dùng l¹i mçi lÇn khëi ®éng
l¹i m¸y chñ c¬ së d÷ liÖu. RAID 0 cung cÊp hiÖu suÊt RAID cao nhÊt cho
tempdb víi sè lÇn ghi vËt lý Ýt nhÊt. Lý do chÝnh liªn quan ®Õn viÖc sö dông
RAID 0 cho tempdb trong m«i tr−êng ho¹t ®éng lµ SQL Server cÇn dõng l¹i
vµ khëi ®éng l¹i bÊt cø khi nµo x¶y ra lçi ghi vËt lý trong ph©n bè RAID 0,
®iÒu nµy kh«ng ®óng cho tr−êng hîp tempdb trong ph©n bè RAID 1 hoÆc
0+1.
Master device: C:\MSSQL7\data\master.dat
8) Book online:
TËp c¸c trî gióp cho c¸c thµnh phÇn cÊu thµnh Microsoft SQL Server.
H−íng dÉn cho b¹n sö dông nh− thÕ nµo Microsoft SQL Server 7.0.
C¸c lùa chän cµi ®Æt cã ®Æt tr−ng:
TËp ký tù: Kh«ng thÓ ®æi l¹i mµ kh«ng x©y dùng CSDL gåm 256 ch÷,
sè ký tù ®Æt biÖt ®Æt tr−ng cho mçi quèc gia hay cho mét ng«n ng÷ nµo ®ã.
ChuÈn Latin1-ANSI: NgÇm ®Þnh cho:
+ UNIX
+ VMS víi Sybase
+ Window, Windows Windows NT

6
S¸ch ®iÖn tö, luËn v¨n tèt nghiÖp CNTT – http:/www.diachiweb.com

ChuÈn CP 850: Gåm mäi ký tù cho hÇu hÕt c¸c quèc gia ch©u ¢u, B¾c, Nam
Mü.
ChuÈn CP 437: ChØ dïng khi cã øng dông dïng ký tù ®å hä¹ më réng.
Thø tù s¾p xÕp: (Indexes)
Lµ tËp c¸c quy t¾c x¸c ®Þnh xem Microsoft SQL Server xö lý d÷ liÖu tr¶
lêi cho mÉu c©u hái ®−îc lùa chän phô thuéc vµo tËp ký tù, nã (Indexes) rÊt
quan träng v× ¶nh h−ëng trùc tiÕp ®Õn :
+ TËp kÕt qu¶ - VÝ dô: ch÷ hoa vµ ch÷ th−êng N kh¸c n
+ HiÖu suÊt: lµm t¨ng tèc ®é xö lý nÕu vÝ dô A=a kh«ng cÇn ph©n biÖt (A
kh¸c a, B kh¸c b.. ..)
+ Ph¸t triÓn øng dông cho tr¹m : rÊt nh¹y c¶m cho viÖc ph©n biÖt ch÷ hoa vµ
ch÷ th−êng.
Ng−êi sö dông ph¶i biÕt ph©n biÖt lóc nµo ch÷ hoa, lóc nµo ch÷ th−êng.
§æi l¹i trËt tù s¾p xÕp dÉn ®Õn “ x©y dùng l¹i CSDL” ng−êi sö dông vµ
CSDL master v× th«ng tin hÖ thèng vµ CSDL, b¶ng hÖ thèng ®−îc s¾p xÕp
theo trËt tù ®−îc chØ ra, (HiÖu suÊt quy nhËp cao, tr¸nh hiÖn t−îng t¾c nghÏn
®−êng truyÒn)
*) Chän hç trî m¹ng:
Mäi m¸y ®Òu cÇn giao thøc m¹ng vµ th− viÖn m¹ng(Net-Library)
+Giao thøc m¹ng: giao thøc liªn l¹c gi÷a hai m¸y.
+Net-Library: cho phÐp kÕt nèi gi÷a tr¹m vµ Microsoft SQL Server
Net-Library triÓn khai nh− DLL thùc hiÖn thao t¸c m¹ng cÇn ®Ó giao tiÕp sö
dông giao thøc ®−îc chØ ra. Microsoft SQL Server dïng Net-Library ®Ó
chuyÓn c¸c gãi th«ng tin gi÷a tr¹m vµ Microsoft SQL Server.
Named pipes: (NgÇm ®Þnh-kh«ng ®−îc bá) NÕu cÇn tÝch hîp b¶o mËt víi
Windows NT th× ph¶i cã Named Pipes hay MP Net-Library.
Named pipes cung cÊp kh¶ n¨ng giao tiÕp gi÷a tr¹m vµ Microsoft SQL Server
vµ cho phÐp truy nhËp ®Õn tµi nguyªn m¹ng ®−îc chia sÎ. Tªn ngÇm ®Þnh:

7
S¸ch ®iÖn tö, luËn v¨n tèt nghiÖp CNTT – http:/www.diachiweb.com

\\Tªnm¸y\Pipe\Microsoft SQL Server\query


Kh«ng ®−îc xo¸ named pipes khi cµi ®Æt hay n©ng cÊp
+ Multi-Protocol: Cung cÊp kh¶ n¨ng giao tiÕp ®ång thêi qua mét hay
nhiÒu c¬ chÕ IPC hç trî bëi Windows NT Server.
+ NW lind: Cho phÐp Microsoft SQL Server giao tiÕp víi m¹ng NetWare
Server.
+ IPX/SPX/(TCP/IP)/Sockects: Cho phÐp SQL giao tiÕp sö dông Windows
socket nh− ph−¬ng ph¸p IPC qua TCP/IP.
*) Chän tù ®éng khëi ®éng
Cµi ®Æt theo ngÇm ®Þnh Microsoft SQL Server vµ SQL Executive ch¹y
nh− dÞch vô khëi ®éng thñ c«ng, nh−ng cã thÓ chän khëi ®éng tù ®éng khi
cµi ®Æt hay sau ®ã chän tõ Service trong Control Panel. C¸c lîi Ých khi ch¹y
nh− dÞch vô tù ®éng th× kh«ng ph¶i vµo m¹ng ®Ó khëi ®éng l¹i.
C¸c cÊu h×nh tèi thiÓu cho Microsoft SQL Server
Standard Enterprise Office 2000 Desktop
Edittion Edittion Edittion Edittion
Ph¹m vi Ph¹m vi nhá Ph¹m vi lín côc bé ®¬n lÏ
CÊu h×nh Windows NT Windows NT Windows Windows
Workstation Workstation 95/98 95/98
Max 4CPUs Max 4CPUs Windows NT Windows NT
4 GB RAM 8 GB RAM No: SMP

Quy tr×nh cµi ®Æt Microsoft SQL Server 7.0


Yªu cÇu trªn m¸y cµi ®Æt Microsoft SQL Server ph¶i cã Internet Explorer
4.01 NÕu lµ Windows 98 th× b¹n ph¶i cµi ®Æt nã b»ng c¸ch Install SQL
Server 7.0 Prerequistles ®Ó cµi Internet Explorer 4.01:

8
S¸ch ®iÖn tö, luËn v¨n tèt nghiÖp CNTT – http:/www.diachiweb.com

Sau ®ã lÇn l−ît cµi ®Æt theo h−íng dÉn cña ch−¬ng tr×nh Microsoft SQL
Server .
Ngoµi ra cßn cã Web site, Book online, OLAP service
Trong Microsoft SQL Server 7.0 Component gåm cã hai lùa chän:
+ Microsoft SQL Server 7.0 Standard Edition
+ Microsoft SQL Server 7.0 Desktop Edition
C¸c thµnh phÇn cÊu thµnh Microsoft SQL Server :
1) Service manager:
Qu¶n lý cung cÊp c¸c dÞch vô cña Microsoft SQL Server
Nót Auto-start service when OS start: khi b¹n check vµo ®©y th× khi m¸y
khëi ®éng xong th× tÊt c¶ c¸c dÞch vô khëi déng theo sù cµi ®Æt cña b¹n.
2) OLAP Service:
Cung cÊp c¸c dÞch vô øng dông nh»m cung cÊp th«ng tin cho ng−êi sö
dông, kh¸ch hµng vµ c¸c SQL Server kh¸c.
Chó ý:
NÕu b¹n xo¸ OLAP Serveice th× b¹n kh«ng ®−îc xo¸ RESPOSITORY.
3) Client Network Utility:
Cung cÊp th− viÖc m¹ng hç trî cho Microsoft SQL Server qu¶n lý CSDL
vµ giao dÞch trªn m¹ng. Cã hiÖu suÊt cao khi trao ®æi th«ng tin.
4) SQL Enterprisse Manager:
Qu¶n lý toµn bé quyÒn kÕt xuÊt, thiÕt lËp CSDL, t¹o quyÒn b¶o mËt d÷
liÖu.. . cña Microsoft SQL Server . Gåm cã c¸c ®èi t−îng sau:
*) Database : Trung t©m l−u tr÷ th«ng tin cña CSDL cña Microsoft SQL
Server
*) Data Transformation Service: Trung t©m qu¶n lý c¸c dÞch vô, cung cÊp
c¸c dÞch vô nh»m chuyÓn ®æi CSDL tõ d¹ng nµy sang d¹ng kh¸c.
*) Management: §iÒu khiÓn qu¶n lý c¸c ho¹t ®éng cña c¸c ®èi t−îng truy
cËp vµo Microsoft SQL Server .

9
S¸ch ®iÖn tö, luËn v¨n tèt nghiÖp CNTT – http:/www.diachiweb.com

*) Security: Qu¶n lý c¸c mèi quan hÖ, liªn kÕt , vµ quan träng nhÊt lµ chÕ
thiÕt lËp b¶o mËt CSDL (xa hay gÇn) cña Microsoft SQL Server
*) Support Service: B¹n cã thÓ thªm c¸c lo¹i dÞch vô cÇn thiÕt mµ b¹n cÇn sö
dông vµo ®©y.
+ DT Coordinator:
+SQL Mail.
*) Import and Export data:
Cho phÐp ng−êi dïng c¸c tiªu thøc ®Ó truy xuÊt ra c¸c d¹ng d÷ liÖu cÇn
thiÕt. Trong ®ã cho phÐp b¹n sö dông c¸c c«ng cô lËp lÞch, c¸c hµm øng
dông cã thÓ.
*) Microsoft DTC Administrator Console: Cung cÊp c¬ chÕ l−u tr÷ CSDL
hai giai ®o¹n an toµn, qu¶n lý viÖc xö lý giao dÞch trªn m¹ng
C¸c c¬ chÕ nµy trî gióp c¸c øng dông cËp nhËt hai hay nhiÒu chiÒu gi÷a c¸c
®èi t−îng trªn Microsoft SQL Server .
Trî gióp c¸c øng dông viÕt b»ng lÖnh Transact SQL trong c¸c thñ tôc SP
(stored Procedure) vµ gäi c¸c thñ tôc SP xa kh¸c ®Ó cËp nhËt vµo CSDL cña
Microsoft SQL Server.
*) ProFile:
+ Cho ng−êi sö dông kÕt nèi vµo ra CSDL cña Microsoft SQL Server.
+ Thùc hiÖn tõng khèi c«ng viÖc.
+ Thùc hiÖn c¸c lÖnh trong c¸c thñ tôc SP ®−îc gäi ®Õn.
+ Gi¶i quyÕt c¸c bÕ t¾c cña Microsoft SQL Server vµ th«ng b¸o lçi.
Tools cña ProFile cung cÊp cho chóng ta c¸c chøc n¨ng sau:
+ Registry SQL Server:
§¨ng ký c¸c nhãm (group) ®Ó truy nhËp vµo Microsoft SQL Server
+ Edittion SQL Server Registration: CÊu h×nh cña Microsoft SQL Server
+ SQL Server Query Analyzer:

10
S¸ch ®iÖn tö, luËn v¨n tèt nghiÖp CNTT – http:/www.diachiweb.com

KÕt nèi vµo Microsoft SQL Server database b»ng c¸c c¸c user_login hay
SA (ngÇm ®Þnh).
+ SQL Server Enterprise Manager:
+ SQL Server Client Configuration Utility.
CÊu h×nh cña c¸c mèi liªn kÕt trong Microsoft SQL Server
+ Option :
C¸c lùa chän cÊu h×nh cho profile

a) Share type : KiÓu chia sÎ tµi nguyªn


b) Events : C¸c sù kiÖn x¶y ra trªn Microsoft SQL Server
c) Data Columns: Sè l−îng c¸c cét d÷ liÖu ®−îc theo dâi.
ProFile cung cÊp cho chóng ta mét c«ng cô rÊt tiÖn Ých ®ã lµ Trace.
NÕu b¹n muèn theo dâi qu¸ tr×nh truy cËp, c¸c lêi c¶nh b¸o vµ néi dung cña
c¸c lçi x¶y ra, thêi gian truy cËp nh− thÕ nµo. th× b¹n ph¶i t¹o ra TRACE ®Ó
lµm viÖc ®ã.
Lµm thÕ nµo ®Ó t¹o ra TRACE?
1) Vµo menu File -> Chän New -> Trace (NhÊn phÝm CTRL+N)
2) NhËp tªn TRACE Chän SERVER_NAME
3) Chän file l−u tr÷ néi dung trace (Capture to file):
4) Chän table l−u tr÷ néi dung trace (Capture to table):

11
S¸ch ®iÖn tö, luËn v¨n tèt nghiÖp CNTT – http:/www.diachiweb.com

5) OK

*) Microsoft SQL Server query Analyzer: Cho phÐp ng−êi dïng kÕt nèi vµo
Microsoft SQL Server b»ng user_name hay logon_ID cã password (user do
ng−êi dïng(Admin) ®Þnh nghÜa)
*) Server Network Utility: Cung cÊp th«ng tin cÊu h×nh cña SQL Server, c¸c
giao thøc mµ nã ®ang sö dông, tªn Server.. .. Còng nh− cho phÐp ng−êi dung
thiÕt lËp giao thøc truyÒn tin

1.5. Kh¸i niÖm vÒ kÕt nèi vµ truy nhËp vµo CSDL


Mçi khi b¹n nèi vµo Microsoft SQL Server b¹n ph¶i cÇn c¸c th«ng tin sau:
+ Tªn Server cÇn nèi.
+ Login_ID,
+ Password:
Ngoµi ra cã ph−¬ng ph¸p SQL Server DMO Connect còng dïng 3 th«ng
sè trªn.

12
S¸ch ®iÖn tö, luËn v¨n tèt nghiÖp CNTT – http:/www.diachiweb.com

To¸n tö login. (Login SQL Server)


§Ó qu¶n lý(qu¶n trÞ) SQL Server, ta login vµo SQL Server. NÕu b¹n dïng
b¶o mËt tÝch hîp th× kh«ng cÇn cung cÊp LOGIN_ID mµ SQL Server sÏ dïng
kho¶ng môc Windows NT .
NÕu kh«ng dïng b¶o mËt tÝch hîp Windows NT th× ph¶i dïng
LOGIN_ID (ngÇm ®Þnh lµ SA-Admin)
Chó ý:
Khi b¹n ®· cµi xong toµn bé SQL Server b¹n nªn kiÓm tra l¹i c¸c th−
môc kho¶n môc , master vµ kho¸ trong registry:
Hkey_local_Machine\Software\Microsoft\MSSQLServer
-QuyÒn SA cã thÓ ®æi Password nÕu dïng lÖnh SP_password
ThiÕt ®Æt c¸c lùa chän cßn l¹i:
+ Root directory
+ Master database path
+ Error Log Path
+ Auto start server at boot Time
LOGIN b»ng Enterprise manager
§Çu tiªn ta thªm (Add) c¸c User (NSD) hay c¸c nhãm User vµo (CÇn
tªn server, nhãm c¸c User)
Khi ®ã b¹n ph¶i t¹o LOGIN_Name (cã password)
LOGIN b»ng lÖnh Transact SQL .
SP_Addlogin “Login_name”,”Password”,”[,defdatabasse]”

ThÕ nµo lµ SQL login server?


Nã gåm 3 vÊn ®Ò cÇn ®−îc quan t©m:
+ SA (System Administrator)
+ DBO (Database Owner)

13
S¸ch ®iÖn tö, luËn v¨n tèt nghiÖp CNTT – http:/www.diachiweb.com

+ Guest (Guest user)


i) SA: ë d¹ng ngÇm ®Þnh lµ quyÒn SysAdmin trong Fixed Server
Roles , kh«ng ®−îc thay ®æi. Nã ®−îc sö dông cho ng−êi
Administrator ®Ó t¹o c¸c user_name hay qu¶n lý c¸c quyÒn cña hÖ
thèng, gäi lµ quyÒn qu¶n trÞ Admin
ii) DBO: d¹ng ngÇm ®Þnh , còng lµ mét thµnh phÇn cña SysAdmin
trong Fixed Server Roles. Nãi chÝnh x¸c DBO lµ quyÒn tèi cao nhÊt
chñ së h÷u CSDL (database).
VD: NÕu user khanht lµ bé phËn cña SysAdmin th× khi thiÕt lËp 1 b¶ng
T1 nµo ®ã, khi ®ã T1 chØ h¹n chÕ ë DBO.T1 chø kh«ng ph¶i lµ
khanht.T1 . Nh−ng nÕu khanht lµ thµnh phÇn cña DB_Owner th× b¶ng
T1 sÏ ®−îc khanht qu¶n lý vµ cã thÓ ký hiÖu khanht.T1
§iÒu quan träng nhÊt lµ : SysAdmin Fixed Server Roles phô thuéc vµo
DBO cho nªn khi thiÕt lËp quyÒn cho user th× ph¶i thiÕt lËp c¶ quyÒn
DB_Owner.
iii) Guest user: lµ mét Account login kh«ng chØ cho riªng user nµo c¶.
Database nµo còng cã thÓ dïng guest user ®Ó login vµo. Account
guest còng cho phÐp b¹n thªm vµ xo¸ user vµ nã ®−îc ngÇm ®Þnh
trong MASTER vµ TEMPDB. Tuy nhiªn nã kh«ng cã ®−îc ®Çy ®ñ
c¸c quyÒn nh− (SA) hay (DBO).

14
S¸ch ®iÖn tö, luËn v¨n tèt nghiÖp CNTT – http:/www.diachiweb.com

PhÇn II: ThiÕt kÕ CSDL


2.1 Nh÷ng yªu cÇu c¬ b¶n vµ yªu cÇu ph¸t triÓn cña mét thiÕt kÕ CSDL.
Tr−íc khi thiÕt lËp CSDL, ®iÒu quan träng nhÊt ®èi víi ng−êi thiÕt kÕ lµ
ph¶i hiªu râ c¸c thµnh phÇn cÊu thµnh CSDL mµ b¹n ph¶i thiÕt kÕ. C¸c mèi
liªn kÕt, quan hÖ gi÷a c¸c ®èi t−îng trong CSDL ph¶i ®óng, chÝnh x¸c, cã
ng÷ nghÜa vÒ mÆt th«ng tin ®Ó cho mét CSDL cã ý nghÜa d÷ liÖu.
Cã hai thµnh phÇn chÝnh trong database ®−îc qu¶n lý ®ã lµ thµnh phÇn
®iÒu khiÓn d÷ liÖu vµ c¸c mèi liªn kÕt vËt lý.
Thµnh phÇn ®iÒu khiÓn d÷ liÖu lµ qu¸ tr×nh thu thËp th«ng tin d÷ liÖu, thay
®æi vµ update d÷ liÖu VËy Database lµ mét lo¹i CSDL ®éng.
C¸c thµnh phÇn liªn kÕt vËt lý cña database : lµ c¸c mèi liªn kÕt trong
database còng nh− c¸c cÊu tróc vËt lý cña nã d−íi sù qu¶n lý Microsoft SQL
Server.
C¬ së d÷ liÖu (CSDL):
Lµ tËp hîp c¸c table cïng c¸c tËp thuéc tÝnh gäi lµ tr−êng d÷ liÖu ®−îc
kÕt nèi víi nhau b»ng c¸c quan hÖ (liªn kÕt) gi÷a c¸c table víi nhau t¹o
thµnh mét CSDL.
Mét CSDL ®−îc gäi lµ mét CSDL cã ng÷ nghÜa nÕu nã kh«ng tån t¹i c¸c
th«ng tin thõa, kh«ng cã nghÜa.
Mçi khi CSDL ®· ®−îc thiÕt lËp th× t¹i mäi thêi ®iÓm nã cã thÓ cung cÊp
cho ng−êi sö dông hay kh¸ch hµng th«ng tin chÝnh x¸c t¹i mäi thêi ®iÓm. TÊt
nhiªn lµ nã ph¶i cã cÊu tróc cña mét hÖ CSDL kiÓu quan hÖ.
§Þnh h−íng cho t−¬ng lai:
Trong suèt qu¸ tr×nh khai th¸c CSDL, nÕu chóng ta muèn më réng thªm
CSDL nµy th× tr−íc hÕt CSDL nµy ph¶i ®−îc thiÕt kÕ d−íi d¹ng më, tiÖn lîi
dÔ thay ®æi khi cã nhu cÇu ph¸t triÓn.
CSDL ph¶i ®¶m b¶o c¸c yªu cÇu sau:

15
S¸ch ®iÖn tö, luËn v¨n tèt nghiÖp CNTT – http:/www.diachiweb.com

+ Cã cÊu tróc.
+ DÔ dµng söa ch÷a, Update, modify d÷ liÖu
+ DÔ dµng khai th¸c th«ng tin.
+ DÔ dµng ph¸t triÓn vµ x©y dùng c¸c øng dông (application)
Table vµ c¸c thµnh phÇn cña TABLE.
D÷ liÖu: Lµ th«ng tin ®−îc chøa trong c¸c cét cña mçi TABLE vµ gäi lµ
hµng d÷ liÖu(Hay record – b¶n ghi d÷ liÖu).
VÝ dô:
Kh¸nh 65kg 1,69 kinh
Th«ng tin cña d÷ liÖu :
Lµ gåm c¸c m« t¶ vÒ cÊu tróc c¸c d÷ liÖu vµ th«ng tin ng÷ nghÜa cña d÷
liÖu ®ã. VÝ dô:
Tªn C©n nÆng Cao D©n téc
Kh¸nh 65kg 1,69 kinh
.. .. ..

B¶ng d÷ liÖu:
B¶ng (Table) bao gåm Tªn, cÊu tróc c¸c tr−êng d÷ liÖu, kiÓu d÷ liÖu cña
tr−êng d÷ liÖu.. .. t¹o thµnh c¸c hµng (record) d÷ liÖu.
Th«ng tin ë trong mçi b¶ng (TABLE) ph¶i m« t¶ ®Çy ®ñ vÒ mét ®èi
t−îng nµo ®ã hoÆc ®−îc kÕt nèi víi mét sè c¸c table kh¸c cã mèi liªn hÖ víi
®èi t−îng nµy. Kh«ng ®−îc cã hiÖn t−îng d− thõa th«ng tin cÇn m« t¶, vÝ dô
nh− c¸c th«ng tin vÒ ng−êi, kh¸ch hµng.. (mét CSDL ph¶i ®¶m b¶o c¸c yªu
cÇu c¬ b¶n vÒ thuyÕt CSDL kiÓu quan hÖ).

16
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 thuéc tÝnh cña mét b¶ng (table) nh»m m« t¶ c¸c ®Æc tr−ng riªng
cña tõng ®èi t−îng mµ b¹n ®ang m« t¶. Tr−êng d÷ liÖu cã thÓ lµ kho¸ (cã thÓ
phô thuéc hay kh«ng phô thuéc vµo c¸c tr−êng (field) cña b¶ng kh¸c) hoÆc
lµ m« t¶ th«ng tin cña mét thuéc tÝnh.
Mét tr−êng d÷ liÖu ®Çy ®ñ cÇn:
+ Tªn tr−êng
+ KiÓu d÷ liÖu cña tr−êng.
+ ChiÒu dµi cña tr−êng (®é réng)
+ §é chÝnh x¸c
+.. ..
Record-B¶n ghi
Lµ mét hµng d÷ liÖu cña mét b¶ng (TABLE) trong CSDL, mang th«ng
tin m« t¶ vÒ mét ®èi t−îng nµo ®ã mµ c¸c thµnh phÇn m« t¶ lµ c¸c cét d÷ liÖu
(thuéc tÝnh cña ®èi t−îng) cña b¶ng.

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
Indexes:
§iÒu quan trong nhÊt lµ thø tù s¾p xÕp d÷ liÖu trong c¸c table cña CSDL
lµ bëi v× nã quyÕt ®Þnh ®Õn hiÖu suÊt truy cËp, tèc ®é vµ còng nh− ®é chÝnh
x¸c cña d÷ liÖu.(Xem thªm phÇn INDEXES)

17
S¸ch ®iÖn tö, luËn v¨n tèt nghiÖp CNTT – http:/www.diachiweb.com

2.2. C¸c c«ng viÖc cÇn chuÈn bÞ tr−íc khi thiÕt kÕ.
- Môc ®Ých lËp CSDL
- Thu thËp th«ng tin
- X¸c ®Þnh ®èi t−îng
- X¸c ®Þnh kiÓu th«ng tin cho mçi ®èi t−îng
- X¸c ®Þnh c¸c quan hÖ vµ kiÓu quan hÖ

Mét CSDL ph¶i ®¶m b¶o c¸c tiªu thøc sau:


+ TÝnh ®éc lËp d÷ liÖu, kiÓu d÷ liÖu, kiÓu quan hÖ d÷ liÖu.
+ TÝnh ®éc lËp ®èi t−îng.
+ C¸c th«ng tin thu thËp th«ng tin vÒ ®èi t−îng.
+ X¸c ®Þnh chÝnh x¸c ®−îc th«ng tin cña ®èi t−îng cÇn ®−îc m« t¶
trong CSDL.
Yªu cÇu th«ng tin:
Th«ng tin cña mét CSDL lµ rÊt quan träng v× nÕu b¹n kh«ng n¾m v÷ng
th«ng tin cña c¸c ®èi t−îng th× khi x©y dùng CSDL sÏ dÉn ®Õn sai lÖch th«ng
tin vÒ CSDL ®ã.
Th«ng tin chÝnh x¸c cho phÐp b¹n thiÕt kÕ mét CSDL ®óng ®¾ng chÝnh
x¸c ..
TÝnh ®éc lËp ë ®©y cã nghÜa lµ :
*) §¶m b¶o kh«ng d− thõa th«ng tin.
*) Cung cÊp “®ñ” th«ng tin cho ng−êi khai th¸c còng nh− kh¸ch hµng dïng
tin- tøc lµ cã ý nghÜa sè liÖu (con sè cã ý nghÜa).
*) Khi thªm bít th«ng tin th× nã cã thÓ trë thµnh CSDL lín h¬n (cã ý nghÜa
më réng).

18
S¸ch ®iÖn tö, luËn v¨n tèt nghiÖp CNTT – http:/www.diachiweb.com

*) Quan hÖ cña c¸c kho¸ ph¶i ®éc lËp – tøc lµ kh«ng ®−îc chång chÐo lªn
nhau.( §¶m b¶o ®−îc tÝnh ®éc lËp d÷ liÖu – Tøc lµ tÝnh bÊt biÕn d÷ liÖu víi
thêi gian)
VÝ dô:
Cust_ID Name Adress Title_ID
123 Khanh HN 1
124 Thu §N 2

Title_ID Title
1 Tranning
2 Work

Quan hÖ vµ c¸c kiÓu d÷ liÖu quan hÖ trong CSDL.


§Ó truy nhËp , khai th¸c d÷ liÖu cã hiÖu suÊt cao, chÝnh x¸c.. ..th× chóng
ta thiÕt kÕ mét CSDL cã c¸c mèi liªn kÕt chÆt chÏ gi÷a c¸c table víi nhau.
C¸c mèi liªn kÕt nµy liªn kÕt c¸c thuéc tÝnh cña c¸c ®èi t−îng (table) l¹i víi
nhau.
Quan hÖ: Lµ c¸c mèi liªn kÕt gi÷a thuéc tÝnh nµy víi thuéc tÝnh kia gi÷a
b¶ng nµy víi b¶ng kia.
Cã 3 kiÓu quan hÖ:
a) Quan hÖ 1-1: (one –to-one)
Lµ quan hÖ gi÷a 1 record cña b¶ng nµy liªn kÕt t−¬ng øng víi 1 record
cña b¶ng kia.
VÝ dô:
STT Lop Ten
1 A Khanh

19
S¸ch ®iÖn tö, luËn v¨n tèt nghiÖp CNTT – http:/www.diachiweb.com

2 B Thu

Lop Khoi
A Khèi A
B Khèi

b) Quan hÖ 1 – nhiÒu: (One -to -many)


Lµ quan hÖ gi÷a 1 record cña b¶ng nµy liªn kÕt kÕt nèi víi 1 hay nhiÒu
record cña b¶ng kia.
VÝ dô:
Matinh Ten tinh
101 Hµ Néi
103 H¶i Phßng

Matinh Mahuyen Tenhuyen


101 01 Q. Ba §×nh
101 03 Q. Hoµ KiÕm
103 01 Q. Lª Ch©n

d) Quan hÖ nhiÒu-nhiÒu: (many - to - many)


Lµ quan hÖ gi÷a nhiÒu b¶n ghi cña b¶ng nµy liªn kÕt víi nhiÒu b¶ng ghi
cña b¶ng kia trong CSDL.
VÝ dô: Tæ hîp kho¸ (Thaygiao,hocvien) lµ quan hÖ nhiÒu nhiÒu
Thaygiao Hocvien Lop

20
S¸ch ®iÖn tö, luËn v¨n tèt nghiÖp CNTT – http:/www.diachiweb.com

Teo A A1
Thu B B1
Thanh C C1
Kha A A1

Thaygiao Hocvien Khoahoc Tr−¬ng


Teo A To¸n THîp
Teo B Lý Thîp
Thanh A To¸n TH¬p
Thu C To¸n Thîp

Chó ý:
- Lêi nh¾c cho c¸c C¬ quan, kh¸ch hµng còng nh− ng−êi sö dông nãi chung:
C¸c gi¸ trÞ ®−îc m« t¶ trong c¸c tr−êng d÷ liÖu lµ rÊt quan träng, mçi khi c¸c
®Æc tr−ng cña c¸c tr−êng d÷ liÖu cña c¸c table kh«ng râ rµng , kh«ng m« t¶
hÕt ý nghÜa sè liÖu lµm cho ng−êi sö dông hay ng−êi thiÕt kÕ CSDL hiÓu sai
lÖch vÒ th«ng tin th× nh− thÕ nã sÏ ¶nh h−ëng ®Õn quan hÖ trong CSDL
(Roles, Default, Stored Procedure, Backend).
- NÕu b¹n cµi ®Æt Microsoft SQL Server trªn m¸y chñ Windows NT th× cÇn
ph¶i t¹o kho¶n môc Windows NT cho SQL Excutive.
Cã hai d¹ng kho¶n môc:
+ Kho¶ng môc Windows NT víi quyÒn qu¶n trÞ SQL Excutive tr−íc khi cµi
®Æt cÇn quyÒn ®ã ®Ó lËp lÞch cho nhiÖm vô vµ c¶nh b¸o còng nh− ph¸t t¸n.
HoÆc t¹o kho¶n môc trong Account Domain ®Ó chia sÎ cho c¸c SQL Server
kh¸c hoÆc t¹o kho¶n môc t¹i m¸y cµi ®Æt.
+ T¹o kho¶n môc víi user manager for Domain:
Gåm:

21
S¸ch ®iÖn tö, luËn v¨n tèt nghiÖp CNTT – http:/www.diachiweb.com

*) user_name: SQL EXEC


*) Fullname : SQL EXECUTIVE
*) Description: SQL EXECUTIVE
*) Passwword: “123456”
User must change password at next logon: Xo¸
User can not change password : Chän
Password nerver expires: Chän
Account disabled: Xo¸

*) Nh¸y ®óp vµo Group -> Chän Administrator -> Add -> OK
*) Close
Trong Policies chän User Rigths cho quyÒn truy cËp CSDL
LOGON AS A Service: Chän Add Æ Chän SQL Exec ÆAdd Æ OK hoµn
thµnh.
C¸c th«ng tin cã thÓ truy cËp tõ xa:
-Remote Server Name: Tªn cña m¸y Server truy cËp tõ xa.
-SQL Installation drive: Tªn æ ®Üa cña m¸y xa ®Ó cµi ®Æt.
-Windows NT installation Drive: Tªn æ ®Üa mµ Windows NT cña m¸y xa
®−îc cµi.
-Master database installation Drive: Tªn æ ®Üa xa ®Ó cµi CSDL Master
C¸c dÞch vô chÝnh:
+Microsoft SQL Server : Bé m¸y CSDL
+SQL Executive: §èi t−îng dÞch vô vµ cÊu thµnh qu¶n lý.
+Microsoft DTC : Qu¶n trÞ qu¸ tr×nh giao dÞch vµ ph©n t¸n.
C¸c thµnh phÇn qu¶n lý Service:
+ SQL Service manager.
+ SQL Enterprise manager

22
S¸ch ®iÖn tö, luËn v¨n tèt nghiÖp CNTT – http:/www.diachiweb.com

+ Service trong Control Panel.


Microsoft SQL Server cã thÓ khëi ®éng b»ng file SQLSERVR.EXE
2.3. Giíi thiÖu vÒ c«ng cô thiÕt kÕ vµ vÝ dô thiÕt kÕ (lËp s½n m« h×nh
logic vµ vËt lý)
ThÕ nµo lµ Diagram?
Diagram lµ mét c«ng cô do SQL Server cung cÊp nh»m t¹o ®iÒu kiÖn
thuËn lîi cho ng−êi dïng t¹o b¶ng thiÕt kÕ CSDL(design database) rÊt tiÖn
lîi (c¸c version tr−íc ng−êi ta ph¶i dïng PowerPoint design ®Ó thiÕt kÕ sau
®ã míi biªn dÞch thµnh lÖnh Transact SQL). NÕu muèn hiÓu mét CSDL mµ
b¹n cã quyÒn ®−îc xem th× viÖc ®Çu tiªn lµ nªn xem DIAGRAM.

Lµm thÕ nµo ®Ó t¹o 1 diagram?


1) chän Diagram-> NhÊn nót ph¶i chuét – chän New diagram ->Next
2) Chän c¸c lo¹i b¶ng cÇn thiÕt kÕ CSDL -> Chän Finish
3) Khi nµy c¸c qu¸ tr×nh liªn kÕt (quan hÖ gi÷a c¸c b¶ng - relationship)
sÏ tù ®éng kÕt nèi theo c¸c kho¸ trong c¸c table mµ b¹n ®· chän Tuy
nhiªn nÕu c¸c c¸ch thiÕt kÕ CSDL cña c¸c b¹n lµ ®óng ®¾n. sö dông

23
S¸ch ®iÖn tö, luËn v¨n tèt nghiÖp CNTT – http:/www.diachiweb.com

c¸c kho¸ kh«ng d− thõa th«ng tin th× Diagram sÏ cho ta mét m« h×nh
quan hÖ cña CSDL mµ b¹n ®· thiÕt kÕ.
Chó ý:
NÕu c¸c mèi liªn kÕt kh«ng tù ®éng kÕt nèi th× c¸c b¹n ph¶i dïng chuét
chØ vµo kho¸ cÇn liªn kÕt (øng dông hiÖu øng Drap and drop) ®Ó kÕt nèi mèi
liªn kÕt nµy, khi b¹n kÐo ®Õn kho¸ thø hai cÇn kÕt nèi SQL Server tù ®éng
hiÖn lªn tªn cña hai kho¸ mµ b¹n cÇn kÕt nèi. Khi nµy b¹n chØ viÖc chän nã.

VÝ dô : Ta cã c¸c lo¹i table sau: khi ta chän xong c¸c b¶ng ®−îc kÕt nèi vµ
nhÊn nót Finish th× ngay lËp tøc Diagram sÏ cho ta m« h×nh quan hÖ sau.

+Qu¶n lý Microsoft SQL Server víi DMO (Distributed Management


Object).
Microsoft SQL Server cho phÐp sö dông VB, VC++,VFP.. ..®Ó t¹o c¸c
c«ng cô qu¶n lý theo së thÝch tuú ý(cho Microsoft SQL Server ). V× cã thÓ
®iÒu khiÓn Microsoft SQL Server b»ng VB, VC++, VFP.. .. nªn ta cã thÓ x©y
dùng c¸c chøc n¨ng qu¶n lý Microsoft SQL Server theo nhu cÇu. VËy ta còng
cã thÓ viÕt ra c¸c c«ng cô, øng dông nh»m sö dông c¸c chøc n¨ng mµ
Microsoft SQL Server cung cÊp qua c«ng cô qu¶n trÞ ®å häa.
VÝ dô: Xem c¸c yªu cÇu chøa trong mäi b¶ng cña CSDL, cã thÓ khai th¸c
qua c¸c mµn h×nh kh¸c nhau t−¬ng øng víi c¸c c«ng cô kh¸c nhau cña SQL

24
S¸ch ®iÖn tö, luËn v¨n tèt nghiÖp CNTT – http:/www.diachiweb.com

Server Enterprise manager hay viÕt c¸c ch−¬ng tr×nh SQL (thñ tôc l−u tr÷ -
Stored Procedure), trong ng«n ng÷ Transact SQL víi mét sè cã h¹n c¸c phÇn
tö ®å ho¹.
Sö dông DMO cho phÐp ta x©y dùng c¸c ®iÒu khiÓn trong VB,
VC++,VFP.. ®Ó lÊy sè liÖu tõ Microsoft SQL Server vµ øng dông c¸c ®iÒu
khiÓn ®å ho¹ (®· cã) trong VB, VC++,VFP.
ThÕ nµo lµ DMO?
DMO lµ tËp hîp c¸c ®èi t−îng OLE 32 bit cho phÐp c¸c ch−¬ng tr×nh
truy nhËp ®Õn c¸c chøc n¨ng qu¶n trÞ Microsoft SQL Server . DMO cho phÐp
ng−êi sö dông qu¶n trÞ CSDL ph©n t¸n. ChÝnh DMO më thªm søc m¹nh cña
chøc n¨ng qu¶n lý cña Microsoft SQL Server cho mäi tr¹m trong m¹ng. V×
Microsoft SQL Server triÓn khai DMO nh− ®èi t−îng DLE nªn ta chØ cã thÓ
dïng nã tõ c¸c øng dông 32 bit (trong c¸c c«ng cô VB, VC++,VFP.. .) ®iÒu
cã hç trî 32 bit. (Còng cã thÓ t¹o thµnh c¸c Tools khi chóng ta dÞch c¸c øng
dông nµy thµnh DLL hay OCX )
Sau ®©y lµ m« h×nh kiÕn tróc 3 líp cña SQL Server DMO
øng dông

SQl Server
Enterprise manager Giao diÖn OLE

Líp gi÷a vµ lµ
cÇu ®Õn c¸c øng
SQL Server Distributed Management Object dông qua giao
diÖn OLE

SQL Server SQL Server Engine Nªn t¶ng c¸c dÞch


executive vô qu¶n trÞ CSDL
cña SQL Server

60 ®èi t−îng, 1000 tinhs chÊt vµ ph−¬ng


ph¸p cho phÐp truy nhËp toµn diÖn ®Õn kh¶
n¨ng cña SQL Server

25
S¸ch ®iÖn tö, luËn v¨n tèt nghiÖp CNTT – http:/www.diachiweb.com

DMO ®−îc tæ chøc ph©n cÊp nh− h×nh vÏ d−íi ®©y, ®èi t−îng øng dông
(Application) n»m ë ®Ønh cña tæ chøc DMO. SQL Server lµ ®èi t−îng n»m
d−íi ®èi t−îng øng dông. Mét ®èi t−îng SQL Server chøa mét hay nhiÒu ®èi
t−îng CSDL. Mét ®èi t−îng CSDL chøa c¸c ®èi t−îng b¶ng DMO vµ c¸c ®èi
t−îng kh¸c cña SQL Server nh− Trigger, Views, hay Stored procedure.. ) Mçi
bËc cña ph©n cÊp DMO chøa c¸c ®èi t−îng liªn quan ®Õn bËc ®ã.
VÝ dô: BËc cña SQL Server chøa c¸c Device, login,.. Ph©n cÊp nµy gièng
nh− tæ chøc CSDL cña SQL Server Enterprise.

26
S¸ch ®iÖn tö, luËn v¨n tèt nghiÖp CNTT – http:/www.diachiweb.com

S¬ ®å ph©n cÊp tæ choc CSDL cña Microsoft SQL Server

Application
SQL Server
Backup
CSDL
Device
Permission Table
DB Object
Login
Stored Column
Query result Procedure
Language View Dri-default
Rule Index
-Remote Server
History filter -Remote login
-SubscriberInfo Default Trigger
Name
Configuration
-Config value User
Keys
Property
Executive DBOption
-Task Check
-Alert system
Transaction
Registry Log

SysTem data
Intergrate Type
security
User defined
datatype
Alert
Publication
Operator -Article
-Subscription

27
S¸ch ®iÖn tö, luËn v¨n tèt nghiÖp CNTT – http:/www.diachiweb.com

§Ó thªm hç trî DMO vµo VB:


Chän reference tõ Visual basic ->Tools
TiÕp tôc chän Microsoft SQL OLE Object Library. ViÖc nµy dÉn ®Õn
thªm SQLOLE 32 bit vµo VBIDE (chøc n¨ng cña Microsoft SQL Server
DMO ë trong SQLOLE32.DLL) khi b¹n ®· thªm ®iÒu khiÓn OCXs hay
ActiveX vµo VB b¹n sÏ thÊy ë thanh VB Toolbox.
§Ó lµm viÖc víi ®èi t−îng SQL OLE ta dïng Object Browser ®Ó xem vµ
thªm c¸c chøc n¨ng Microsoft SQL Server DMO.

28
S¸ch ®iÖn tö, luËn v¨n tèt nghiÖp CNTT – http:/www.diachiweb.com

PhÇn III: C¬ së d÷ liÖu


3.1. T¹o lËp CSDL (b»ng Enterprise Manager vµ b»ng Wizazd)
SQL Server enterprise Manager cho phÐp ng−êi sö dông thùc hiÖn c¸c
c«ng viÖc sau:
+ LËp lÞch
+ T¹o lËp CSDL
+ Qu¶n trÞ kh¶ n¨ng giao dÞch vµ c¶nh b¸o khi cã hiÖu øng x¶y ra
+ §iÒu khiÓn hÖ thèng ®a ph−¬ng tiÖn
+ X©y dùng giao diÖn qu¶n lý d÷ liÖu
+ ThiÕt lËp font ch÷
+ Backup d÷ liÖu
+ ChuyÓn ®çi d÷ liÖu
SQL Server enterprise Manager cho phÐp b¹n truy cËp ®Õn c¸c thµnh phÇn
mµ nã qu¶n lý trong Tools.
1) SQL Server configuration property chøa toµn bé cÊu h×nh cña SQL
Server. NÕu b¹n muèn thay ®æi b¹n cã thÓ chän c¸c môc cÊu h×nh ë
®©y.
2) §¨ng ký c¸c Server truy cËp tõ xa.
->Menu Action -> New SQL Server Registration
Î Server: Tªn Server cÇn ®¨ng ký.
Î Login Name: Login_ID cÇn truy cËp
Î PassWord: MËt khÈu ®Ó login vµo
Î OK.

29
S¸ch ®iÖn tö, luËn v¨n tèt nghiÖp CNTT – http:/www.diachiweb.com

1) ThiÕt kÕ CSDL(database):
Lµm thÕ nµo ®Ó thiÕt kÕ database?
- Chän Database->NhÊn nót ph¶i chuét->New database
- NhËp tªn CSDL (Database_name) vµo Name:
- C¸c th«ng sè Filename, location, Initial size (MB) :cÇn ph¶i phï hîp
víi CSDL mµ b¹n ®· thiÕt kÕ.
- File Group: ngÇm ®Þnh lµ PRIMARY.
- NÕu b¹n muèn thay ®æi c¸c gi¸ trÞ ngÇm ®Þnh th× b¹n ph¶i thay ®æi nã
b»ng c¸ch nhÊn chuét vµo Transaction Log.

- Nót Automaticially grow file : tù ®éng t¨ng kÝch th−íc database


- Nót In megabytes: dïng trong kho¶ng bao nhiªu MB
- Nót Restrict Filegrowth: Giíi h¹n t¨ng trong kho¶ng

30
S¸ch ®iÖn tö, luËn v¨n tèt nghiÖp CNTT – http:/www.diachiweb.com

- Trong File Group: gåm 3 d¹ng


chÝnh
1) Primary
2) User_defined
3) Default
Log file kh«ng bao giê lµ thµnh
phÇn cña Filegroup

3.2. C¸c files vµ nhãm files trong CSDL.


Mét CSDL lµ sù kÕt hîp cña mét hay nhiÒu files d÷ liÖu còng nh− mét hay
nhiÒu nhãm(log) files. File d÷ liÖu cã thÓ lµ c¸c nhãm file do ng−êi dïng
®Þnh nghÜa. C¸c b¶ng vµ chØ sè ®−îc thÓ hiÖn qua c¸c m« t¶ kh¸c nhau ®−îc
®IÒu khiÓn s¾p xÕp trªn disk vËt lý. Tuy nhiªn nÕu b¹n sö dông hÖ thèng
RAID th× ®iÒu nµy kh«ng cã lîi.
Cã 3 kiÓu cña nhãm file:
+ Primary : nhãm c¸c file d÷ liÖu chñ yÕu (quan träng) cïng mét sè c¸c file
kh¸c mµ nã kh«ng ®−îc ®−a vµo trong filegroup kh¸c. TÊt c¶ c¸c table hÖ
thèng ®−îc chØ ®Þnh lµ nhãm Primary.
+ User-defined: lµ nhãm file ®−îc chØ ®Þnh trang thuéc tÝnh trong SQL
Server Enterprise manager.
+ Default: Chøa tÊt c¶ c¸c table vµ indexesmaf nã kh«ng thuéc hai nhãm
file trªn khi chóng ta thiÕt lËp nã. Trong CSDL, t¹i mçi thêi ®iÓm cã duy
nhÊt mét nhãm file ®−îc ngÇm ®Þnh (default) Nõu kh«ng ®−îc chØ ®Þnh th×
gi¸ trÞ ngÇm ®Þnh cña nã lµ PRIMARY.

31
S¸ch ®iÖn tö, luËn v¨n tèt nghiÖp CNTT – http:/www.diachiweb.com

3.3. Söa ®æi CSDL, më réng CSDL vµ thu nhá CSDL


Transaction log cung cÊp thªm cho chóng ta c¸c thµnh phÇn sau:
- Bulkload/Operation
- Select into statement.
- Modify database
- T¨ng hoÆc gi¶m kÝch th−íc database :
- Shrink database : Chän chøc n¨ng nµy b¹n sÏ cã c¸c tiªu thøc ®Ó chän
c¾t gi¶m kÝch cì database.
Còng cã thÓ dïng lÖnh trong Transaction SQL:
DBCC Shrinkfile ({filename| file_ID}{[,target size]}|
[,{emptyfile|Notruncate| Truncate_only}])

Lùa chän: Click Option


1) Database Access:
+ DBO: ChØ ®Þnh quyÒn DBO
+ Single user: T¹i mçi thêi ®iÓm cã mét ng−êi khai th¸c d÷ liÖu
+ Readonly: QuyÒn chØ ®−îc ®äc
2) ANSI null: NgÇm ®Þnh lµ Not null
3) Select into/Bulk copy: cho phÐp thùc hiÖn c¸c lÖnh

32
S¸ch ®iÖn tö, luËn v¨n tèt nghiÖp CNTT – http:/www.diachiweb.com

+ Update text
+ Write text
+ Select into statement
+ BCP .. ..
+ Bulk insert statement
4) Truncate logon/Checkpoint
Cho phÐp thùc hiÖn lÖnh CHECKPOINT
5) Auto close
6) Auto Shrink: tù ®éng gi¶m kÝch cì cña file
7) Auto create statistic
8) Auto Update statistic
9) Use quated Indentifiers

C¸c thµnh phÇn khãa vµ c¸c ®Æc tr−ng cã liªn quan:


1) Primary Key
2) Foreign Key
3) Uniquie Constraint
4) Default Constraint
5) Check Constraint
+ Primary key:

33
S¸ch ®iÖn tö, luËn v¨n tèt nghiÖp CNTT – http:/www.diachiweb.com

“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
+ To¸n tö UNIQUE :
To¸n tö UNIQUE cã thÓ gióp cho ng−êi sö dông nã thay cho kho¸ trong
v× :
a) Trong mét cét kh«ng bao giê cho phÐp cã hai gi¸ trÞ kh¸c hµng l¹i
gièng nhau
b) NÕu b¹n sö dông nhiÒu to¸n tö UNIQUE th× cã nghÜa lµ trong table ®ã
cã nghiÒu “kho¸ trong” ®−îc ®Þnh nghÜa
c) Cét cã chøa gi¸ trÞ null th× kh«ng thÓ lµ primary key nh−ng ta cã thÓ
dïng to¸n tö nµy ®Ó sö dông.
+ To¸n tö Check :
CHECK b¾t buéc h¹n chÕ trªn ph¹m vi toµn bé giíi h¹n gi¸ trÞ cã thÓ
chÊp nhËn cña c¸c cét. Nã chØ ®Þnh c¸c gi¸ trÞ hîp lÖ tho¶ m·n biÓu thøc
logic c¬ b¶n cña c¸c cét d÷ liÖu kh¸c.
+§Þnh nghÜa Default :
Mçi cét trong record chøa c¸c gi¸ trÞ, nÕu nã ngÇm ®Þnh lµ NULL th× nã
thay thÕ gi¸ trÞ NULL nµy b»ng gi¸ trÞ ngÇm ®Þnh Default. Gi¸ trÞ ngÇm ®Þnh
cña nã lµ “UNKNOW” khi chóng ta kh«ng chØ ®Þnh ®−îc gi¸ trÞ cho cét ®ã.
3.4. ChuyÓn c¸c files d÷ liÖu tõ m«i tr−êng ngoµi vµo CSDL
- Ngoµi ra ta còng cã thÓ sö dông mét sè lÖnh cña Transact SQL ®Ó thùc
hiÖn chuyÓn ®æi d÷ liÖu. VÝ dô nh− lÖnh :
+ BCp database_name..Tablename

34
S¸ch ®iÖn tö, luËn v¨n tèt nghiÖp CNTT – http:/www.diachiweb.com

{IN| OUT} dataFile [/F firstrow][/L lastrow][/b batchsize][/C ][/U login_ID]


[/P Password] [/S Servername].
+ 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í:
+ 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”

3.5. Di chuyÓn CSDL gi÷a c¸c m¸y chñ:


SQL Server cho phÐp b¹n xuÊt nhËp d÷ liÖu (import and export data) .
§©y lµ mét chøc n¨ng quan träng cña Microsoft SQL Server. Nã cung
cÊp DTS (Distributed Transaction Services) dÞch vô chuyÓn ®æi d÷ liÖu.
Gåm cã c¸c d¹ng d÷ liÖu sau:
+ ASCII –Fixed –field length text file

+ ODBC data source


+ SQL Server database
+ Microsoft excel Speadsheets

35
S¸ch ®iÖn tö, luËn v¨n tèt nghiÖp CNTT – http:/www.diachiweb.com

+ Microsoft Access database


+ Microsoft Foxpro database
+ Dbase or Paradox database
• Lµm thÕ nµo ®Ó nhËp xuÊt CSDL(database)?
1) Chän All tasks
2) Chän import data (hay export data)
3) NhÊn Next

Víi h×nh trªn b¹n ph¶i vµo ®ñ th«ng tin d÷ liÖu nguån:
+ Chän server.
+ Chän sè liÖu nguån
Sau khi chän xong hai thµnh phÇn trªn b¹n cÇn ph¶i x¸c ®Þnh kiÓu d÷ liÖu
xuÊt/nhËp ra.
Sö dông: Windows NT hay SQL Server
NÕu b¹n chän SQL Server th× ph¶i cung cÊp thªm Logon_ID, password
+Chän database : Th−êng gi¸ trÞ ngÇm ®Þnh cña nã lµ default.
B¹n nªn lµm t−¬i (Refresh) l¹i mét lÇn -> Next ->OK

36
S¸ch ®iÖn tö, luËn v¨n tèt nghiÖp CNTT – http:/www.diachiweb.com

Víi h×nh trªn b¹n ph¶i vµo ®ñ th«ng tin d÷ liÖu ®Ých:
T−¬ng tù nh− c¸c b−íc trªn b¹n chän tõng b−íc mét -> Sau ®ã chän Next.

Khi ®ã b¹n ph¶i chän c¸c lo¹i b¶ng nguån ®−îc xuÊt/nhËp, copy hay c¸c
query nguån cÇn chuyÓn ®æi -> Next -> OK
NÕu b¹ chän sai d÷ liÖu th× kÕt qu¶ sÏ kh«ng ®óng . V× vËy ph¶i cÈn
thËn khi chän sè

Víi h×nh d−íi b¹n ph¶i chän c¸c cét(tr−êng) cÇn kÕt xuÊt sau ®ã
NhÊn vµo nót Finish ®Ó hoµn thµnh c«ng viÖc

37
S¸ch ®iÖn tö, luËn v¨n tèt nghiÖp CNTT – http:/www.diachiweb.com

Víi h×nh d−íi b¹n ph¶i chän lo¹i d÷ liÖu cÇn ®−îc kÕt xuÊt ra theo c¸c
d¹ng :
+ Runtime immediately.
+ Create DTS package for replication
+ Shedule DTS package for later execution
SAVE DTS package:
+ SQL 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 KiÓu nhÞ ph©n
-Image Max 2 G bytes
-Binary
-Char KiÓu ký tù (char –1 bytes)
-Varchar Varchar 0..n bytes
-Text 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 KiÓu sè thùc (8 bytes)
-Real
-Timestamp (0,1)
-Bit(On,OFF)
-(Tru,false)

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ªn kÕt mµ kh«ng cã trong b¶ng bªn ph¶i cña liªn kÕt.

RIGHT JOIN: X¸c ®Þnh dßng gi¸ trÞ tr¶ vÒ thuéc b¶ng bªn ph¶i cña

liªn kÕt.

RIGHT OUTER JOIN: X¸c ®Þnh dßng gi¸ trÞ tr¶ vÒ thuéc b¶ng bªn
ph¶i cña liªn kÕt mµ kh«ng cã trong b¶ng bªn tr¸i cña liªn kÕt.

FULL JOIN: X¸c ®Þnh dßng gi¸ trÞ tr¶ vÒ thuéc c¶ hai b¶ng cña liªn

kÕt.

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
cña liªn kÕt.

ii) Sau ®©y lµ mét sè lÖnh vµ hµm th−êng hay dïng trong Transact
SQL .
Chó ý :
C¸c c©u lÖnh trong Microsoft SQL Server th−êng hay cã c¸c to¸n tö ®iÒu
kiÖ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 (Creates a new table.): cã hai lo¹i table
- C¸c d¹ng table t¹m thêi
- C¸c d¹ng table cè ®Þnh
Có ph¸p:
CREATE TABLE
[ database_name.[owner]. | owner.] table_name
{ <column_definition>
| column_name AS computed_column_expression
| <table_constraint> } [,...n] )
[ON {filegroup | DEFAULT} ]
[TEXTIMAGE_ON {filegroup | DEFAULT} ]

73
S¸ch ®iÖn tö, luËn v¨n tèt nghiÖp CNTT – http:/www.diachiweb.com

DiÔn gi¶i:
<column_definition> ::= { column_name data_type }
[ [ DEFAULT constant_expression ]
| [ IDENTITY [(seed, increment ) [NOT FOR REPLICATION] ] ]
]
[ ROWGUIDCOL ]
[ <column_constraint>] [ ...n]

<column_constraint> ::= [CONSTRAINT constraint_name]


{
[ NULL | NOT NULL ]
|[ { PRIMARY KEY | UNIQUE }
[CLUSTERED | NONCLUSTERED]
[WITH FILLFACTOR = fillfactor]
[ON {filegroup | DEFAULT} ]]
]
|[ [FOREIGN KEY]
REFERENCES ref_table [(ref_column) ]
[NOT FOR REPLICCTION]
]
| CHECK [NOT FOR REPLICATION]
(logical_expression)
}

<table_constraint> ::= [CONSTRAINT constraint_name]


{ [ { PRIMARY KEY | UNIQUE }
[ CLUSTERED | NONCLUSTERED]
{ ( column[,...n] ) }

74
S¸ch ®iÖn tö, luËn v¨n tèt nghiÖp CNTT – http:/www.diachiweb.com

[ WITH FILLFACTOR = fillfactor]


[ON {filegroup | DEFAULT} ] ]
| FOREIGN KEY
[(column[,...n])]
REFERENCES ref_table [(ref_column[,...n])]
[NOT FOR REPLICATION]
| CHECK [NOT FOR REPLICATION]
(search_conditions)}

C¸c tham sè :
a) database_name: Tªn database
b) owner : quyÒn Owner
d) table_name: Tªn Table
e) column_name: Sè cét n»m trong Table
Vµ sau d©y lµ mét sè th«ng sè quan träng:

+computed_column_expression: lµ c¸c tªn cét n»m trong c¸c thµnh phÇn


sau : PRIMARY KEY, UNIQUE, FOREIGN KEY, DEFAULT ®−îc ®Þnh
nghÜa.
+ ON {filegroup | DEFAULT} : Nhãm fie –trong phÇn database mµ b¹n ®·
biÕt khi t¹o CSDL.
+ TEXTIMAGE_ON
+ data_type : KiÓu d÷ liÖu
+ NULL | NOT NULL : Cã gi¸ trÞ NULL hay kh«ng cã
+ PRIMARY KEY : Kho¸ trong
+ UNIQUE : H¹n chÕ trïng lÆp
+ CLUSTERED | NONCLUSTERED : S¾p xÕp

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
- ref_table : Tªn cña b¶ng TABLE kh¸c khi c©u lÖnh nµy cÇn liªn kÕt víi
c¸c kho¸ ngoµi
- (ref_column[,...n]) : tõng cét cña Table ®−îc chØ ®Þnh
+ CHECK : cã dïng tõ kho¸ CHECK (h¹n chÕ trïng lÆp) hay kh«ng ?
+ 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 Statemant
+ Create Procedure
+ Create default
+ Create Index
+ Create Rule
+ Create Trigger.
+ Create Database :ThiÕt lËp CSDL
D¹ng lÖnh:

T−¬ng tù nh− lÖnh thiÕt lËp b¶ng tuy nhiªn cã mét


sè th«ng sè kh¸c.
Có ph¸p:
CREATE DATABASE database_name [ ON [PRIMARY] [ <filespec> [,...n]
[, <filegroup> [,...n] ]]
[ LOG ON { <filespec> [,...n]} ]
[ FOR LOAD | FOR ATTACH ]
DiÓn gi·i:
+database_name: Tªn datatbase
+ ON [PRIMARY] [ <filespec> [,...n] : ChØ ®Þnh kho¸ trong

76
S¸ch ®iÖn tö, luËn v¨n tèt nghiÖp CNTT – http:/www.diachiweb.com

+ [ LOG ON { <filespec> [,...n]} ] : ChØ ®Þnh LOGON_name


<filespec> ::=
( [ NAME = logical_file_name, ]
FILENAME = 'os_file_name'
[, SIZE = size]
[, MAXSIZE = { max_size | UNLIMITED } ]
[, FILEGROWTH = growth_increment] ) [,...n]
<filegroup> ::=
FILEGROUP filegroup_name <filespec> [,...n]

C¸c nhãm lÖnh xo¸ :


T−¬ng tù nh− trªn nÕu cã tån t¹i lÖnh thiÕt lËp th× sÏ tån t¹i lÖnh xo¸ .
+ DROP View View_name AS Select Statemant
+ DROP Procedure
+ DROP default
+ DROP Index
+ DROP Rule
+ DROP Trigger.

2) D¹ng lÖnh:
Thªm hoÆc xo¸ mét sè cét cña b¶ng(table) hay h¹n chÕ mét sè thuéc tÝnh
cña CHECK, TRIGGER..
Có ph¸p:
ALTER TABLE table
{ [ALTER COLUMN column_name
{ new_data_type [ (precision[, scale] ) ]
[ 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


}
]
| ADD
{ [ <column_definition> ]
| column_name AS computed_column_expression
}[,...n]
| [WITH CHECK | WITH NOCHECK] ADD
{ <table_constraint> }[,...n]
| DROP
{ [CONSTRAINT] constraint_name
| COLUMN column
}[,...n]
| {CHECK | NOCHECK} CONSTRAINT
{ALL | constraint_name[,...n]}
| {ENABLE | DISABLE} TRIGGER
{ALL | trigger_name[,...n]}
}
LÖnh nµy còng cã c¸c thèng sè nh− c¸c c©u lÖnh Create table
3) §æi tªn Table hay ®æi tªn CSDL:
Có ph¸p:
SP_Rename “Tªn cò”,”Tªn míi”
4) Xem th«ng tin vÒ Database:
Có ph¸p:
sp_helpdb [[@dbname=] 'name']

+ [@dbname=] 'name': Cung cÊp tªn database

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 <backup_device> [,...n] [WITH .. ..]
+ RESTORE DATABASE {database_name | @database_name_var}
[FROM <backup_device> [,...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, http://www.diachiweb.com

93

You might also like