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Ï

Windows Windows Windows NT CÊu h×nh Windows NT

95/98 95/98 Workstation Workstation

Windows NT Windows NT Max 4CPUs Max 4CPUs

No: SMP 8 GB RAM 4 GB RAM

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ô:

65kg 1,69 kinh Kh¸nh

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ô:

C©n nÆng Cao D©n téc Tªn

65kg 1,69 kinh Kh¸nh

.. .. ..

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

B Thu 2

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

A A1 Teo

B B1 Thu

C C1 Thanh

A A1 Kha

Thaygiao Hocvien Khoahoc Tr−¬ng

A To¸n THîp Teo

B Lý Thîp Teo

A To¸n TH¬p Thanh

C To¸n Thîp Thu

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 (cid:198) Chän SQL Exec (cid:198)Add (cid:198) 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

Giao diÖn OLE SQl Server Enterprise manager

SQL Server Distributed Management Object

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

SQL Server Engine

SQL Server executive

Nªn t¶ng c¸c dÞch 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

Stored Procedure

Table DB Object Permission Login

Column Dri-default Language View Query result

Rule Index

-Remote Server -Remote login -SubscriberInfo

History filter Default Trigger

Configuration -Config value

User Name Keys

Executive -Task -Alert system

DBOption Property Check

Transaction Log Registry

SysTem data Type Intergrate security

User defined datatype Alert

Operator Publication -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

(cid:206) Server: Tªn Server cÇn ®¨ng ký.

(cid:206) Login Name: Login_ID cÇn truy cËp

(cid:206) PassWord: MËt khÈu ®Ó login vµo

(cid:206) 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

KiÓu nhÞ ph©n -Varbinary

Max 2 G bytes -Image

-Binary

KiÓu ký tù (char –1 bytes) -Char

Varchar 0..n bytes -Varchar

Text Max 2 G Bytes -Text

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)

(-2.147.483.648,+ 2.147.483.647) -Int

(-32.768,+ 32.767) -Smallint

0..255 -Tinyint

-Decimal

- Numeric

KiÓu sè thùc (8 bytes) -Float

-Real

(0,1) -Timestamp

-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(cid:198) 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 (cid:198) 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.

R 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.

R IGHT 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.

F ULL 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 (C reates 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 T ABLE

database_nam e.[owner]. | owner.] table_name [

{

| column_name AS computed_column _expression

| } [,...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_name data_type }

[ [ DEFAULT constant_expression ]

| [ IDENTITY [(seed, increment ) [N OT FOR REPLICATION] ] ]

]

[ R OWGUIDCOL ]

[ ] [ ...n]

< column_constraint> ::= [CONSTRAINT constraint_name]

{

[ NULL | NOT NULL ]

| [ { PRIMARY KEY | UNIQUE }

[CLUSTERED | NONCLUSTERE D]

[WITH FILLFACTOR = fillfactor]

[ON {filegroup | DEFAULT} ]]

]

[FOREIGN KEY] | [

REFERENCES ref_ table [(ref_column) ]

[NOT FOR REPLICCTION]

]

| CH ECK [NOT FOR REPLICATION]

(logical_expression)

}

< table_constraint> ::= [CONSTRAINT constraint_name]

{ [ { PRIMARY KEY | UNIQUE }

[ CLUSTERED | NONCLUS TERED]

{ ( 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

[(colu mn[,...n])]

REFERENCES ref_tab le [(ref_column[,...n])]

[NOT FOR REPLICATION]

| CHECK [NOT FOR REPLICATION]

(search_conditions)}

C ¸c tham sè :

a) database_nam e: Tªn database

b) owner : quyÒn Owner

d) table_name: Tªn T able

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 | NONCLUST ERED : 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_colum n[,...n]) : tõng cét cña Table ®−îc chØ ®Þnh

+ C HECK : 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 S tatemant

+ Create Procedure

+ Create default

+ Create Index

+ Create Rule

+ Create Trigg er.

+ Create Database :T hiÕt lËp CSDL

D¹ng lÖnh:

T−¬n

g 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] [ [,...n]

[, [,...n] ]]

[ LOG ON { [,...n]} ]

[ FOR LOAD | FOR ATTACH ]

DiÓn gi·i:

+database_ name: Tªn datatbase

+ ON [PRIMARY] [ [,. ..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 { [,...n]} ] : ChØ ®Þnh LOGON_name

::=

( [ NAME = logical_file_name, ]

FILENAME = 'os_file_name'

[, SIZE = size]

[, MAXSIZE = { max_size | UNLIMITED } ]

[, FILEGROWTH = growth_increment] ) [,...n ]

::=

FILEGROUP fil egroup_name [,...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 Trigg er.

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 TA BLE table

{ [ALTER COLUM N 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_name AS computed_ column_expression

}[,...n]

| [WITH CHECK | W ITH NOCHECK] ADD

{ }[,...n]

| DROP

{ [C ONSTRAINT] constraint_name

| COLUMN column

}[,...n]

| {CHECK | NOCHE CK} 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_Renam e “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 [,...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, http://www.diachiweb.com

93