You are on page 1of 149

Trng H Cong Nghiep TP HCM

Khoa Cong Nghe Thong Tin

MC LC
BI 1:
GII THIU MICROSOFT SQL SERVER 2000...............................................................5
1.1Tng quan v SQL Server 2000..................................................................................5
1.2Cc thnh phn ca SQL Server 2000........................................................................8
1.3Kin trc ca CSDL quan h (relational Database Architecture)...............................8
1.4Gii thiu v Transact-Sql........................................................................................12
BI 2:
CI T SQL SERVER 2000..........................................................................................13
2.1Lp k hoch ci t SQL SERVER 2000................................................................13
2.2Quyt nh nhng chn la cu hnh ci t SQL SERVER 2000...........................13
2.2.1Xc nh ti khon ngi dng (User account) thch hp cho SQL Server
Sevice v SQL Server Agent Service........................................................................13
2.2.2Chn mt ch xc thc (Authentication Mode)...........................................14
2.2.3Xc nh Collation.............................................................................................14
2.2.4Chn Network Libraries....................................................................................14
2.2.5Xc nh client Licensing Mode........................................................................14
2.3Cc bc ci t SQL Server 2000...........................................................................14
2.4To tp tin ci t khng tham d (unattended) v ci t t xa (Remote) SQL
Server 2000....................................................................................................................21
2.5Kt qu ca vic ci t SQL SERVER 2000...........................................................22
BI 3:
CC CNG C CA SQL SERVER...............................................................................23
3.1SQL ENTERPRISE MANAGER.............................................................................23
3.2SQL SERVER SERVICES MANAGER..................................................................23
3.2.1Cc dch v ca SQL Server..............................................................................24
3.2.2Khi ng, tm ngng, dng cc dch v ca SQL Server...............................25
3.3OSQL........................................................................................................................25
3.4SQL QUERY ANALYZER.......................................................................................26
3.4.1Gii thiu...........................................................................................................26
3.4.2Khi ng Query Analyzer................................................................................27
3.4.3Thnh phn chnh ca Query Analyzer.............................................................27
3.4.4Mt vi phm nng dng trong Query Analyzer................................................29
BI 4:
LM VIC VI C S D LIU SQL SERVER..........................................................30
4.1Thit k mt c s d liu. ......................................................................................30
4.2C s d liu ca SQL SERVER 2000.....................................................................32
4.3To, hiu chnh c s d liu SQL SERVER...........................................................35
4.3.1Gii thiu...........................................................................................................35
4.3.2To c s d liu ..............................................................................................35
4.3.3Thao tc trn c s d liu ca SQL Server......................................................38
BI 5:
KIU D LIU LM VIC VI BNG......................................................................43
5.1Kiu d liu (data type)............................................................................................43
5.1.1System-Supplied Datatype.................................................................................43
5.1.2User-defined datatype........................................................................................44
5.2Lm vic vi bng ca SQL Server..........................................................................45
5.2.1To mt bng mi .............................................................................................45

Trng H Cong Nghiep TP HCM

Khoa Cong Nghe Thong Tin

5.2.2Hiu chnh bng.................................................................................................47


5.2.3Xa bng khi c s d liu..............................................................................48
5.3Bng tm (Temporary Tables)...................................................................................48
BI 6:
TON VN D LIU.......................................................................................................50
6.1Gii thiu ton vn d liu (data Integrity)..............................................................50
6.2Tm hiu cc ton vn d liu...................................................................................50
6.2.1nh ngha NULL/NOT NULL ........................................................................50
6.2.2Gi tr mc nh (Default Values)......................................................................51
6.2.3Thuc tnh Identity: ..........................................................................................54
6.2.4Check.................................................................................................................55
6.2.5Primary key Constraint......................................................................................57
6.2.6Unique Constraints............................................................................................59
6.2.7Foreign Key Constraint......................................................................................60
BI 7:
TRUY XUT C S D LIU CA SQL SERVER......................................................63
7.1Cu lnh SELECT.....................................................................................................63
7.2S dng JOINS truy xut d liu.........................................................................68
7.3Dng Sub-Queries.....................................................................................................70
7.4Hiu chnh d liu trong c s d liu ca SQL SERVER.......................................71
7.4.1Chn (INSERT) d liu vo CSDL...................................................................71
7.4.2Cp nht (UPDATE) d liu vo CSDL............................................................73
7.4.3Xa d liu trong c s d liu.........................................................................73
BI 8:
KHUNG NHN - VIEW.....................................................................................................75
8.1Gii thiu v View.....................................................................................................75
8.2To, hiu chnh, xa View........................................................................................75
8.3To Partition view.....................................................................................................76
8.4Truy xut d liu thng qua View.............................................................................77
8.4.1Xem d liu thng qua view..............................................................................77
8.4.2Hiu chnh d liu thng qua View...................................................................77
BI 9:
CHUYN I D LIU .................................................................................................79
9.1Khi nim chuyn i v bin i d liu................................................................79
9.1.1Import/Export d liu. ......................................................................................79
9.1.2Bin i d liu (Data Transformations) ..........................................................79
9.1.3Cc cng c chuyn i d liu (Data transfer tools).......................................79
9.2Dch v chuyn i d liu DTS (Data Transformation Services - DTS) ...............80
9.2.1DTS Package.....................................................................................................80
9.2.2DTS Connections...............................................................................................80
9.2.3DTS Tasks..........................................................................................................80
9.2.4DTS Package Workflow.....................................................................................82
9.2.5DTS Package Storage........................................................................................82
9.3Thc hin vic bin i v chuyn i d liu bng cng c ha DTS..............82
9.3.1DTS Import/Export Wizard...............................................................................82
9.3.2DTS Designer....................................................................................................83
9.4Dng BULK COPY (BCP) v BULK INSERT........................................................90
BI 10:
C BN V LP TRNH BNG TRANSACT- SQL.....................................................93
10.1Khi nim c bn....................................................................................................93

Trng H Cong Nghiep TP HCM

Khoa Cong Nghe Thong Tin

10.1.1nh danh -IDENTIFIERS..............................................................................93


10.1.2Tham chiu n cc i tng trong SQL Server............................................93
10.1.3 Kiu d liu (DATA TYPE)............................................................................94
10.1.4Batch................................................................................................................94
10.1.5Kch bn - SCRIPT..........................................................................................94
10.2Bin (VARIABLES)...............................................................................................94
10.3Cu trc iu khin.................................................................................................99
10.3.1Khi BEGIN END......................................................................................99
10.3.2Pht biu PRINT..............................................................................................99
10.3.3Cu trc iu khin IF ELSE......................................................................99
10.3.4Biu thc CASE............................................................................................101
10.3.5Cu trc vng lp WHILE .......................................................................102
10.3.6Lnh RETURN..............................................................................................103
10.3.7Lnh WAITFOR............................................................................................103
10.3.8Lnh RAISERROR........................................................................................103
BI 11:
PROCEDURES, FUNCTIONS.......................................................................................106
11.1STORED PROCEDURES....................................................................................106
11.1.1Gii thiu Stored proccedures.......................................................................106
11.1.2To, thc thi, hiu chnh, xa stored procedures...........................................106
11.1.3Tham s v bin trong Stored procedures. ...................................................108
11.2FUNCTIONS. ......................................................................................................112
11.2.1Scalar Functions.............................................................................................113
11.2.2Table-valued Functons...................................................................................113
BI 12:
TRANSACTIONS LOCK.............................................................................................116
12.1TRANSACTIONS................................................................................................116
12.2LOCK....................................................................................................................118
BI 13:
S DNG CURSORS TRUY XUT D LIU......................................................120
13.1Khi nim..............................................................................................................120
13.2Lm vic vi T-SQL server cursors......................................................................121
13.3V d. ....................................................................................................................123
BI 14:
BY LI - TRIGGER.....................................................................................................126
14.1Gii thiu v trigger..............................................................................................126
14.2To v qun l cc trigger.....................................................................................127
14.2.1To trigger.....................................................................................................127
14.2.2Qun l trigger ..............................................................................................128
14.3Vi v d v trigger................................................................................................128
BI 15:
BO MT TRONG SQL SERVER................................................................................131
15.1Khi nim v bo mt...........................................................................................131
15.1.1M hnh truy cp bo mt ca SQL Server....................................................131
15.1.2Cc ch bo mt........................................................................................131
15.1.3Tm hiu cc Server-Wide Permission..........................................................133
15.1.4Tm hiu cc quyn (Permission) ch nh trn c s d liu. .....................134
15.1.5Fixed Database Roles....................................................................................135
15.3To ti khon ng nhp (Login)..........................................................................136
15.3.1Dng Create Login Wizard............................................................................136

Trng H Cong Nghiep TP HCM

Khoa Cong Nghe Thong Tin

15.3.2Dng Enterprise Manager to mt Login.................................................140


15.3.3To Login bng T-SQL..................................................................................144

Trng H Cong Nghiep TP HCM

Khoa Cong Nghe Thong Tin

BI 1:
GII THIU MICROSOFT SQL SERVER 2000
1.1

Tng quan v SQL Server 2000.


Microsoft SQL Server 2000 l mt h qun tr c s d liu quan h (Relational
database management system - RDBMS), n cung cp cc dch v qun l v lu tr d
liu cho cc t chc thng mi ln, cng vi vic truy xut d liu h tr i vi cc
ngi dng thng qua internet. N cng h tr kh nng truy xut mt cch d dng i
vi cc t chc nh hn v cc ngi dng ring bit. SQL Server 2000 chp nhn v
thc thi cc yu cu ca cc khch hng (Client) i vi vic hiu chnh v xo d liu,
cng nh cc lnh to cc i tng nh l cc c s d liu (database) v cc bng
(Table). SQL Server cho php ngi dng truy xut v sp xp d liu theo cch quan h,
vic lu tr d liu mt cch hiu qu theo dng dng v ct. Cc lnh ca ngi dng
c gi nh l cc cu lnh truy vn giao tc (Transact-SQL). Transact-SQL (T-SQL) l
mt ngn ng dng bi SQL Server 2000 truy vn mt c s d liu hoc hiu chnh
ni dung ca n.
Mt client t mt chng trnh ng dng hoc mt ngi dng gi cc cu lnh TSQL (cc truy vn hoc hiu chnh) thng qua mng n SQL Server x l. Cc
chng trnh ng dng m gi cc cu lnh c th c vit bng cc ngn ng nh
Visual Basic, Visual C++, hoc Java. Chng ny s gip bn lm quen vi Microsoft
SQL Server cng nh tho lun v cc thnh phn v thit kt ca n.
Microsoft SQL Server pht trin mt cch nhy vt trong nhiu nm. Phin bn
mi nht, SQL Server 2000 h tr ni bt hn v tnh bo mt, lu tr v tnh sn dng
ca d liu. SQL Server 2000 c tch hp cht ch vi h iu hnh Windows 2000,
vic nng cao bo mt v cc cng c da trn giao din ha cung cp trong SQL
Server 2000 l cho cc tc v qun tr tr nn d dng hn.
Cc cu lnh T-SQL dng hiu chnh hoc truy xut d liu c th c chia
thnh ba nhm khc nhau:
- Ngn ng nh ngha d liu (Data Definition Language - DDL) c dng
nh ngha cc i tng ca c s d liu nh cc kiu d liu, bng v cc truy
vn.
- Ngn ng thao tc d liu (Data Manipulation Language -DML) c dng
chn, chn, cp nht v xa d liu trong cc i tng ca CSDL.
- Ngn ng iu khin d liu (Data Control Language - DCL) c dng
gn hoc hy b cc quyn t cc ngi dng ca CSDL.
SQL Server 2000 chy trn h thng mng Windows NT 4 hoc Windows 2000
Server bng cch dng nhiu b x l v c th c ci t nh mt h thng CSDL c
nhn (personal desktop) trn cc my trm Windows NT 4, Windows 2000 Professional,
Windows 98, v Windows Me. Bn c th dng cng mt CD ci t phin bn Server
SQL Server 2000 hoc Personal SQL Server 2000. Ngoi ra bn c th ci t nhiu th
hin (instance) ca SQL Server 2000 trn cng mt my tnh, mi th hin c mt ngi
ch (owner) v tp cc ngi dng (user) ca n.

Trng H Cong Nghiep TP HCM

Khoa Cong Nghe Thong Tin

C s d liu (CSDL) - Databases


Mt CSDL hay l mt database tng t mt tp tin d liu, ni lu tr d
liu. Ging nh mt tp tin d liu, mt CSDL khng trnh by thng tin mt cch trc
tip n ngi dng; mun xem d liu, ngi dng phi chy mt ng dng truy xut d
liu t CSDL v khi d liu c trnh by trong mt dng d hiu v thun tin.
Khi d liu c lu trong cc tp tin d liu th phi c ng dng (c lp
trnh) lm vic vi cu trc c bit ca mi tp tin d liu. Ngc li, mt CSDL
cha dng mt catalog m cc ng dng c th dng xc nh d liu c t chc
nh th no. Cc ng dng CSDL cng loi c th dng catalog trnh by n ngi
dng cc d liu t cc CSDL khc nhau mt cch linh ng m khng b ph thuc vo
mt dng mu c bit.
Cc h thng CSDL mnh tc l cc tp tin d liu c t chc theo mt mc
cao. Mt CSDL c thit k tt, th khng c s trng lp thng tin khi ngi dng hoc
ng dng cp nht ti cng thi im. Cc mnh thng tin lin quan c kt nhm vi
nhau trong mt cu trc n hoc mu tin v cc mi quan h c th c nh ngha
gia cc cu trc ny v cc mu tin ny.
CSDL quan h (Relational Database)
Mc d c nhiu cch khc nhau t chc d liu trong mt CSDL, cc CSDL
quan h l CSDL hiu qu nht. Cc h thng CSDL quan h l mt ng dng thuc v l
thuyt tp hp ton hc i vi vn t chc d liu mt cch hiu qu. Trong mt
CSDL quan h, d liu c thu thp vo cc bng (table).
Mt bng trnh by lp cc i tng quan trng i vi mt t chc. Mi bng
c xy dng thnh cc ct v cc dng (c gi l cc thuc tnh v cc b trong l
thuyt quan h). Mi ct trnh by vi thuc tnh ca i tng c th hin trong bng.
V d, bng NHANVIEN s c cc ct in hnh i vi cc thuc tnh nh H, Tn, m
nhn vin, phng ban, bc lng, cng vic Mi dng trnh by mt th hin ca i
tng th hin trong bng. V d, mt dng trong bng NHANVIEN trnh by thng tin
v nhn vin c m nhn vin l 12345.
Khi t chc d liu vo cc bng, bn c nhiu cch khc nhau nh ngha cc
bng. L thuyt CSDL quan h nh ngha mt phng thc gi l dng chun
(normalization) m n m bo rng tp cc bng m bn nh ngha s c t chc d
liu mt cch hiu qu.
SQL
lm vic vi d liu trong mt CSDL, bn phi dng mt tp cc lnh v cu
lnh (mt ngn ng) c h tr bi DBMS. Bn c th dng vi ngn ng khc nhau
vi CSDL quan h; thng thng nht l SQL. Ngn t ca SQL c h tr bi SQL
Server c gi Transact-SQL, v Transact-SQL l ngn ng chnh c dng bi h
qun tr CSDL SQL Server.
XML
Extensible Markup Language (XML) l mt ngn ng lp trnh siu vn bn,
dng m t ni dung ca ca tp d liu v cch d liu s c kt xut ra thit b
hoc hin th trn trang Web.
SQL Server 2000 bt u h tr cho XML. Cc c tnh mi ny bao gm:

Kh nng truy xut n SQL Server thng qua URL.

Trng H Cong Nghiep TP HCM

Khoa Cong Nghe Thong Tin

H tr cho lt d liu XML (XLM-Data schemas) v kh nng


chnh nh cc truy vn XPath i vi cc lc ny.

Kh nng truy xut v ghi d liu XML:

Truy xut d liu XML bng cch dng cu lnh SELECT v mnh
FOR

Ghi d liu XML bng OpenXML rowset provider.

Microsoft SQL Server 2000 OLEDB provider (SQLOLEDB) cho php ti


liu XML c gn nh vn bn lnh v tr v cc tp kt qu nh mt
lung.
Cc n bn ca SQL Server 2000
Microsoft SQL Server 2000 sn c cc n bn sau:
SQL Server 2000 Enterprise Edition
Dng nh mt sn phm database server. H tr tt c cc c tnh c sn trong
SQL Server 2000, v phn chia cc mc hiu nng h tr cc trang Web ln v
cc tin trnh giao tc trc tuyn ca doanh nghip (online transaction processing
OLTP) v cc h thng kho d liu.
SQL Server 2000 Standard Edition
Dng nh mt database server cho cc nhm v b phn nh.
SQL Server 2000 Personal Edition
Dnh cho cc ngi dng lu ng - nhng ngi c thi gian khng kt ni vi
network nhng vn chy ng dng m i hi s lu tr d liu SQL Server.
Cng s dng khi ang chy mt ng dng stand-alone m yu cu vic lu tr
d liu SQL Server trn my tnh client.
SQL Server 2000 Developer Edition
Danh cho cc nh lp trnh pht trin ng dng m dng SQL Server 2000 nh l
ni lu tr d liu. Mc d Developer Edition h tr tt c cc c tnh ca
Enterprise Edition cho php ngi pht trin vit v kim tra cc ng dng c th
s dng cc c tnh, Developer Edition ch cp quyn s dng nh l h thng
pht trin hoc kim tra ng dng, khng phi l mt sn phm server.
SQL Server 2000 Windows CE Edition
Microsoft SQL Server 2000 Windows CE Edition (SQL Server CE) c
dng khi lu tr d liu trn thit b Windows CE. C kh nng ng b ha d
liu vi bt k n bn ca SQL Server 2000 s ng b ha d liu Windows
CE vi CSDL chnh.
SQL Server 2000 Enterprise Evaluation Edition
n bn vi y c tnh, c th ti v t trang Web. Vi mc tiu ch cho s
dng c lng cc c tnh ca SQL Server; phin bn ny s ngng chy sau
120 ngy ti v.
Ngoi cc n bn ny ca SQL Server 2000, SQL Server 2000 Desktop Engine
l mt thnh phn m cho php ngi pht trin ng dng phn tn mt bn sao ca SQL
Server 2000 relational database engine vi ng dng ca h. Trong khi cc chc nng ca
database engine trong SQL Server 2000 Desktop Engine l tng t nh database engine
trong cc n bn SQL Server, kch c ca cc Desktop Engine databases khng vt qu
2 GB.

Trng H Cong Nghiep TP HCM

Khoa Cong Nghe Thong Tin

1.2
Cc thnh phn ca SQL Server 2000
Cc thnh phn ca Server

SQL Server service


Thc thi SQL Server database engine. C mt SQL Server service cho mi th
hin (instance) ca SQL Server ang chy trn my tnh.

SQL Server Agent service


Thc thi cc tc nhn m chy cc tc v qun tr SQL Server theo thi lch. Ch
c mt SQL Server Agent service cho mi instance ca SQL Server ang chy
trn my tnh. SQL Server Agent cho php nh ngha v lp lch cc tc v m
chy da trn thi lch hoc tun hon.

Microsoft Search service (ch Windows NT v Windows 2000)


Thc thi b my tm kim full-text (full-text search engine). Ch c mt dch v
bt chp s cc instance SQL Server trn my tnh.

MSDTC service (Ch Windows NT v Windows 2000)


Qun tr cc giao tc phn tn. Ch c mt service, bt chp s cc instance SQL
Server trn my tnh.

MSSQLServerOlAPService service (ch Windows NT v Windows 2000)


Thc thi SQL Server 2000 Analysis Services. Ch c mt service, bt chp s cc
instance SQL Server trn my tnh.
Cc cng c ha (Graphical Tools)

SQL Server Enterprise Manager: cng c qun tr CSDL v server chnh, n


cung cp mt giao din Microsoft Management Console (MMC).

SQL Profiler: to c hi cc ngi qun tr mt cng c tinh vi theo di v


phn tch giao thng mng n v i t mt server ang chy SQL Server 2000.

SQL Query Analyzer: dng to v qun tr cc i tng CSDL v kim tra


cc cu lnh Transact-SQL, cc batch, script mt cch tng tc.

SQL Server Service Manager: c dng start, stop, v pause cc dch v ca


SQL Server.

Client Network Utility: dng qun tr cc client Net-Libraries v nh ngha


cc b danh server bao gm cc tham s kt ni server tuy chn nu cn.

Server Network Utility: dng qun tr cc server Net-Libraries.

SQL Server Books online: l mt ti liu trc tuyn h tr vi Microsoft SQL


Server 2000. Bn c th tm thng tin trong SQL Server Books Online bng
cch:
iu hng thng qua bng ni dung.
G mt t kha trong index.
G mt t hoc mt cm t v thc hin vic tm kim.

1.3

Kin trc ca CSDL quan h (relational Database Architecture)


Trong SQL Server 2000, d liu c lu trong cc CSDL. V vt l, mt CSDL
bao gm hai hoc nhiu hn hai tp tin trn mt hoc nhiu a, s th hin vt l ny ch

Trng H Cong Nghiep TP HCM

Khoa Cong Nghe Thong Tin

thy c bi nh qun tr v n trong sut i vi ngi dng. S chn la vt l ca


CSDL l trch nhim chnh ca ngi qun tr CSDL. V mc logic, mt CSDL c xy
dng thnh cc thnh phn (component) c hin th i vi ngi dng, chng hn cc
bng (Table), cc khung nhn (view) v cc th tc (stored procudure). S chn la logic
ca CSDL (chng hn nh thit k cc bng v cc ch mc) l trch nhim chnh ca
ngi thit k CSDL.
Cc CSDL cha cc d liu ca ngi dng c gi l CSDL ca ngi dng
(user database). Ngoi ra, cc hot ng ca SQL Server ty thuc vo bn CSDL h
thng (system Database): master, model, Tempdb, v msdb. Cc CSDL ny tn ti
trong mi th hin ca SQL Server.
CSDL h thng v CSDL ngi dng

CSDL Master: uc dng iu khin cc thao tc v thng tin mc h thng


ca SQL Server. Lu tr thng tin h thng trong 16 bng h thng, gi l system
catalog. System catalog lu tr cc thng tin ti khon ngi dng, bao gm cc
mc nh l bo mt, ID, mt khu, cc CSDL lu trn server, cc bin mi trng,
cc thng ip li h thng, v cc th tc h thng.

CSDL Model: c dng nh l mt CSDL mu cho tt c cc CSDL mi c


to ra trong h thng. CSDL Model c th c ty bin to mt cu trc
CSDL mc nh mi cho CSDL mi. V d, nu mt bng cn phi tn ti trong
CSDL mi sau ny th cc bng nn c to trong CSDL model. Cc CSDL
mi va c to s c kch c t nht bng kch c CSDL model.

CSDL Tempdb: c dng nh l vng lu cha tm thi i vi cc bng v cc


th tc tm. SQL Server 2000 h tr hai loi bng tm: bng tm ton cc (global
temporary table) v bng tm c b (local temporary table). Tn ca bng tm
ton cc c bt u ##, c th c truy xut i vi tt c cc client, trong khi
tn bng tm c b bt u #, ch c th truy xut i vi nhng client m to
chng. Lm vic trong Tempdb rt nhanh v cc hot ng khng c ghi nhn
li. Tuy nhin, khi client kt thc kt ni n Server th ton b cc bng v th
tc trong TempDB s b xa.

CSDL Msdb: SQL Server Agent dng CSDL msdb cho cc tc v khc nhau, nh
lp biu, cnh bo v ghi nhn cc thao tc. D liu c lu trong cc bng h
thng trong CSDL msdb. Cc bng h thng c dng bi SQL Server Agent l
sysalerts, syscategories, sysdownloadlist, sysjobhistory, sysjobs, sysjobschedules,
sysjobservers,
sysjobsteps,
sysnotifications,
sysoperators,
systargetservergroupmembers, systargetservergroups, systargetservers v
systaskids. Ngoi ra, CSDL msdb c 7 bng dng cho thao tc d phng v phc
hi d liu: backupfile, backupmediafamily, backupmediaset, backupset,
restorefile, restorefilegroup, v restorehistory. SQL Server c th t ng tng
hoc gim kch c ca CSDL khi cc dng c thm vo hoc xa i.

CSDL Pubs, Northwind: l hai CSDL v d c dng trong cc ti liu ca SQL


Server

Cc CSDL khc l cc CSDL do ngi dng to ra.

Trng H Cong Nghiep TP HCM

Khoa Cong Nghe Thong Tin

Hnh 1: Cc CSDL h thng v CSDL ca ngi dng


Khi nim v c s d liu quan h: Databases, Tables, Columns, Views, Datatypes,
v Database Schemas
D liu trong mt RDBMS nh SQL Server 2000 c sp xp trong mt s i
tng, d thy nht l bng (table). D liu c lu trong cc Table theo dng v ct.
D liu lin quan n cc mc thc t nh cc nhn vin, cc sn phm, vic gi hng,
ngi tham gia . c lu trong cc table ring bit. V d, h thng qun l nhn vin
ca mt cng ty c th c mt bng gi l nhn vin, bng ny dng lu chi tit tt c
ca cc nhn vin trong cng ty. Chi tit ca nhn vin bao gm H nhn vin, tn nhn
vin, a ch, thnh ph, s chng minh nhn dn Thnh thong cn n cc thng tin
ring t t ngi dng bng cch dng mt truy vn. Cc truy vn l cc cu lnh SQL
lu trong CSDL v c th c tham chiu n cc cu lnh SQL theo cch nh cc table.
SQL Server cng s dng cc kiu d liu, mi ct c th c cc kiu khc nhau. Tt c
cc kiu khc nhau ny ca cc i tng, ging nh bng, truy vn v kiu d liu c
lu trong mt CSDL. Trong mi trng SQL Server, mt lc CSDL (database
schema) l tp hp cc i tng CSDL c lin quan n vic s dng mt tn duy nht
v n thuc v mt ngi dng n l.
Qun l d liu chnh l lu tr vi s tr gip ca mt s i tng c cung
cp cung cp bi SQL Server 2000. Bng 2 lit k cc i tng chnh trong mt
database ca SQL Server 2000.
Bng 1:
i tng

M t

Bng - Table

Mt table l mt tp hp ca d liu lu tr trong nhiu dng nhiu ct.

Mc nh
Default

Mt default l mt ci t h thng, ngha l khng c ch nh bi


ngi dng.

Ct - Column

Ct l cc i tng dng lu tr cc phn t ring bit bn trong mt


dng d liu.

Dng Row

Dng l mt mc n ca d liu bn trong mt bng, n bao gm tp cc


ct.

Kiu d liu Datatype

Kiu d liu l cc i tng dng xc nh loi ca d liu c th


c lu trong ct. Cc loi d liu khc nhau l tinyInt, smallInt, int,
real, float, smalldatetime, datetime, smallmoney, money, char v
sql_variant.

Ch mc Index

Ch mc l mt i tng ca CSDL, dng tng tc cc truy vn bng


cch d tm d liu theo gi tr kha thay cho vic qut ton b bng. SQL

Trng H Cong Nghiep TP HCM

Khoa Cong Nghe Thong Tin

Server 2000 h tr cc ch mc clustered v non-clustered. Ch mc


Clustered (Clustered indexe) l cc ch mc m sp xp cc dng theo
cch dng B-Tree.
By li Trigger

Trigger c a chung bi vi nh lp trnh. Chng chnh l cc th tc


m c th chy khi d liu trong bng c hiu chnh nh l cp nhp,
xa, chn. Cc trigger thng c dng m bo tnh thng nht gia
cc bng lin kt. Cc trigger c th c to trn bng hoc truy vn.

Quy tt - Rule

Rule l i tng CSDL, n c gn kt vi mt ct hoc mt nh


ngha ngi nhm hn ch cc gi tr. V d, mt rule c th m bo s
chng minh nhn dn ch gm cc ch s.

Th tc - Stored
Procedures

Th tc l mt tp cc cu lnh T-SQL c dch trc (pre-compile) v


c thc thi nh mt i tng. Do chng c dch trc nn cc
th tc s thc thi nhanh.

Khung nhn View

View l mt cch nhn khc ca table. Dng hin th cc d liu trong


mt hoc nhiu table. s dng c view, ngi dng phi c quyn
trn view v tt c cc i tng ph thuc.

Cu trc vt l ca mt CSDL
Mi CSDL bao gm t nht mt tp tin d liu (data file) v mt tp tin log (transaction
log file). Cc tp tin ny khng c chia x vi cc CSDL khc. ti u hiu nng v
h tr kh nng chu li (fault tolerance), tp tin d liu v log c tri di trn nhiu
a v thng thng dng mt Raid (Redundant array of independent disks)

Hnh 2: Khung nhn ngi dng v trin khai vt l ca mt CSDL


Nhn bn - Replication
Nhn bn cho php nhiu th hin ca SQL Server v tr t xa c cng d liu. V tr t
xa c th bao gm cc ngi dng di ng hoc cc site kt ni thng quan internet, dialup hay intranet. S phn chia vt l ca d liu ci thin hiu nng ca t chc khi d
liu cn c x l ti cc ni khc trnh by site khc tham chiu.
Bo mt trong SQL Server.
SQL Server 2000 dng hai mc bo mt khi kim tra s hp l ca mt ngi dng.
l chng thc (authentication) v authorization

Trng H Cong Nghiep TP HCM

Khoa Cong Nghe Thong Tin

Authentication
kt ni n mt th hin ca SQL Server 2000 th ngi dng phi ch nh
mt nh danh ng nhp hp l (ID). Mt ID ng nhp l mt ti khon nh
danh iu khin s truy xut n mt th hin ca SQL Server 2000. SQL Server
kim tra ID ng nhp c c php kt ni n th hin ca SQL Server hay
khng. S kim tra ca mt ID ng nhp c gi l chng thc
(authentication). SQL Server 2000 dng hai loi chng thc: Windows
authentication v SQL Server authentication. Hai ch chng thc
(Authentication Mode): Windows Authentication mode, mixed mode.

Authorization
Sau khi mt ID - ti khon ng nhp c chng thc, SQL Server 2000 xc
nh ID c c y nhim thi hnh cc thao tc trong CSDL hay khng. Mt
ID ng nhp t n khng a ra cc quyn (permission) truy xut n cc i
tng trong mt CSDL. Mt ID phi c mt s y nhim hoc c quyn hp l.
iu ny ngn chn mt ng nhp t ng truy xut n cc CSDL trong mt th
hin ca SQL Server 2000.
Chng ta s tm hiu bo mt trong SQL Server k hn trong bi bo mt.

1.4

Gii thiu v Transact-Sql


Transact_SQL l ngn ng dng ch yu trong SQL Server.
C y tnh cht ca mt ngn ng lp trnh.
SQL l mt chun do IBM ra v tt c ngn ng lp trnh b sung thm mt s
tnh nng ring ca ngn ng lp trnh .
i vi SQL Server th cc ng dng mun truyn thng vi SQL Server u phi
cc cu lnh T-SQL n Server.

Cu lnh T-SQL l tp hp cc on m m thc thi mt vi hnh ng ln cc i


tng hoc d liu ca mt CSDL. SQL Server cung cp 3 loi cu lnh T-SQL:
DDL, DCL, v DML
Ngn ng nh ngha d liu (Data Definition Language DDL): Dng nh ngha
v qun l cc i tng v c tnh ca i tng mt CSDL. Lnh DDL h tr vic
nh ngha, khai bo v chnh sa cc i tng ca CSDL nh Databases, Tables, Views.
Mi lp cc i tng th DDL c cc lnh nh CREATE, ALTER, V DROP (V d
CREATE TABLE, ALTER TABLE, va DROP TABLE).
Ngn ng iu khin d liu (Data Control Language DCL): Dng hiu chnh
cc quyn (Permission) trn cc i tng ca CSDL. Cc permission c iu khin
bi lnh cc lnh GRANT (gn quyn), REVOVE (hu b quyn), DENY (t chi
quyn)
Ngn ng thao tc d liu (Data Manipulation Language DML): Cc lnh ny c
dng truy vn (SELECT), chn (INSERT), cp nht (UPDATE), xa (DELETE) cc
d liu ca cc i tng c to bi DDL.

Khoa Cong Nghe Thong Tin

Trng H Cong Nghiep TP HCM

BI 2:
CI T SQL SERVER 2000
2.1
Lp k hoch ci t SQL SERVER 2000
Cc yu cu v phn cng
Phn cng

Yu cu ti thiu
Intel hoc tng thch.

My tnh
Pentium 166 MHz hoc cao hn.
Enterprise Edition: 64 MB; 128 MB hoc hn
Standard Edition: 64 MB.
B nh (RAM)

Personal Edition: 64 MB i vi Windows 2000; 32 MB i vi cc h


iu hnh khc.
Developer Edition: 64 MB.
Desktop Engine: 64 MB i vi Windows 2000; 32 MB i vi cc h
iu hnh khc.
Cc thnh phn CSDL SQL Server: 95 n 270 MB; 250 MB in hnh.

Khng gian a
cng

Analysis Services: 50 MB; 130 MB in hnh.


English Query: 80 MB.
Desktop Engine only: 44 MB.
VGA hoc phn gii cao hn.

Mn hnh
800 x 600 hoc phn gii cao hn SQL Server.
Thit b chut

Microsoft Mouse hoc tng thch.

CD
2.2

Quyt nh nhng chn la cu hnh ci t SQL SERVER 2000


2.2.1 Xc nh ti khon ngi dng (User account) thch hp cho SQL Server
Sevice v SQL Server Agent Service
Mi dch v ca SQL Server 200 chy trong mt ng cnh bo mt ca mt user
account. Bn c th chn hoc local system account hoc domain user account.
Thng thng cc Sevice u chy chung mt user account.
Local system account l mt account h thng ca Win NT hoc Win 2000 vi
y cc quyn qun tr trn my tnh cc b. Tuy nhin, Account ny khng c
quyn truy cp mng. Tuy nhin, trong mi trng Client/Server, bn nn to v dng
mt domain user account c tnh chuyn bit dnh cho cc dch v. S la chn mt

Trng H Cong Nghiep TP HCM

Khoa Cong Nghe Thong Tin

domain user account cho php nhng dch v ca SQL Server truyn thng vi nhng
ci t SQL Server khc, ti nguyn mng (nh l chia s tp tin) trn nhng my tnh
khc trong mi trng domain.
Domain user account m bn chn phi c y cc quyn truy xut trn my tnh
cc b, nhng khng cn phi l thnh vin ca nhm Administrator cc b hoc
dommain administrator. Nhng quyn c ch nh ny phi bao gm quyn log on nh
l mt dch v, quyn truy xut v thay i th mc SQL Server, quyn truy xut v thay
i tp tin CSDL, c v ghi cc kha bt k no trong Registry ca Windows. Bn
khng cn lo lng vic gn cc quyn ny, chng trnh ci t SQL Server 2000 s gn
nhng quyn ny mt cch t ng cho domain user account m bn ch nh.
2.2.2 Chn mt ch xc thc (Authentication Mode)
SQL server 2000 h tr 2 ch xc thc: Windows authentication Mode v Mixed
mode. Mc nh l Authentication Mode.
Ch Windows Authentication Mode ch cho php cc user ca h iu hnh mi
c th kt ni vi SQL Server. Ch Mixed mode cho php tt c cc user ca h iu
hnh hoc SQL server u c th kt ni n SQL Server.
Nu bn ang trong giai on tm hiu v th nghim SQL Server th bn nn chn
Mixed Mode. Nu bn trin khai ng dng th bn nn s dng Windows authentication
mode, vi ch ny tnh bo mt c tng cao nh tch hp thm cc kh nng bo
mt ca h iu hnh.
2.2.3 Xc nh Collation
Collation l tp hp nhng qui tt qun l, n s nh hng n cch lu tr d liu,
th t sp xp V d khi bn ci t h iu hnh, bn chn la ngn ng, bn phm
c s dng. Mi ngn ng s c b k t khc nhau do c nhng code page khc
nhau v da trn c s ny h iu hnh s ci t cc numbers, currencies, Times, Dates
khc nhau. Khi bn ci t SQL Server, chng trnh ci t s xc nh mt collation
mc nh cho SQL Server da trn cc ci t ca h iu hnh.
2.2.4 Chn Network Libraries
SQL Server s dng Network libraries gi cc packet gia SQL Server khch v
ch. Server v Client phi c t nht mt Network Libraries chung.
Cc Network Libraries: NEBEUI, TCP/IP, IPX/SPX, Apple Talk ADSP, Banyan
Vines, VIA giginet San.
2.2.5 Xc nh client Licensing Mode
SQL Server cung cp 2 kiu client licensing: Per processor v Per seat.
2.3

Cc bc ci t SQL Server 2000.

Trng H Cong Nghiep TP HCM

Khoa Cong Nghe Thong Tin

Bn a i CD cha chng trnh ci t SQL Server hoc chy tp tin Setup t mt v


tr no trn mng.

Hnh 3: Mn hnh u tin khi a a SQL Server Persional Edition vo


Chn SQL Server 2000 Components

Hnh 4: Chn thnh phn cn ci t


Chn Install Database Server

Trng H Cong Nghiep TP HCM

Khoa Cong Nghe Thong Tin

Hnh 5: Mn hnh Welcome ca MicroSoft SQL Server


Chn Next

Hnh 6: Chn tn my tnh ni m s ci 1 instance mi hoc hiu chnh instance c sn


Local Computer
Remote Computer
Virtual Server
Chn Local Computer, chn Next

: Ci trn my Local
: Ci t t xa
: Ci trn Server o

Trng H Cong Nghiep TP HCM

Khoa Cong Nghe Thong Tin

Hnh 7: Chn hnh thc ci t


Create a new instance of SQL Server, or install client tools: Ci mt instance mi trn
server hoc ci cc client tools
Upgrade, remove, or add components to an existing instance of SQL Server: Nng cp,
hy b, hoc thm cc component vo instance c sn.
Advanced option: Mt s chc nng nng cao hoc to tp tin ci t khng tham d.

Chn Create a new instance of SQL Server, or install client tools, chn Next

Hnh 8: Thng tin ca ngi dng


Chn Next

Trng H Cong Nghiep TP HCM

Khoa Cong Nghe Thong Tin

Hnh 9: Thng bo Lincense


Chn next

Hnh 10: Xc nh cng c ci t


Client Tools Only
Server and Client Tools
Connectivity Only

Chn Server and ClientTools

: Ch ci t cc tools ca client
: Ci t cc tools ca Server v Client
: Ci t cc thnh phn truy xut d liu v
cc th vin network

Trng H Cong Nghiep TP HCM

Khoa Cong Nghe Thong Tin

Hnh 11: Qui nh tn ca instance


G vo Server01, chn Next

Hnh 12: Chn loi ci t


Chn Typical, chn Next

Trng H Cong Nghiep TP HCM

Khoa Cong Nghe Thong Tin

Hnh 13: xc nh Serverice Account chy cc Service


Chn Next

Hnh 14: Xc nh ch chng thc


Windows Authentication Mode: ch xc thc ca Windows
Mixed Mode: Ch xc thc va ca Windows v va ca SQL Server
Chn Mixed Mode

Trng H Cong Nghiep TP HCM

Khoa Cong Nghe Thong Tin

Hnh 15: Thng bo l SQL Server s bt u c ci t


Chn Next, tin trnh ci t bt u

Hnh 16: Kt thc ci t


2.4

To tp tin ci t khng tham d (unattended) v ci t t xa (Remote)


SQL Server 2000
C 3 cch to ra tp tin khi u ci t dnh cho vic ci SQL Server 2000 khng
tham d.
Cch 1: Chng trnh Setup SQL Server 2000 cung cp la chn Advanced Option ghi
nhn li tp tin khng tham d .ISS. Nu la chn ny c chn th qu trnh ci t s
c ghi nhn li thnh tp tin .ISS trong th mc \Winnt, v SQL Server khng c ci
t thc s trong tin trnh ny.

Trng H Cong Nghiep TP HCM

Khoa Cong Nghe Thong Tin

Cch 2: tp tin .ISS c cung cp trong a SQL Server 2000, trong th mc gc. Bn c
th dng trc tip t cc tp tin ny hoc hiu chnh bng cc trnh son tho vn bn.
Tp tin l SQLINS.ISS, SQLCLI.ISS; SQLCST.ISS
Cch th 3: Tp tin .ISS c t ng to ra ngay sau khi mi ln bn ci t SQL Server,
n nm trong \WinNt. Tuy nhin, nu dng tp tin ny th bn phi chnh sa n nng mt
trnh son tho vn bn thm phn [SdFinish-0]
2.5
Kt qu ca vic ci t SQL SERVER 2000
Trnh ci t SQl server to ra mt lot cc th mc lu cc tp tin thi hnh v cu
hnh khc nhau. Theo ngm nh, SQL Server c ci t trn a C: trong th mc
MSSQL. Di th mc MSSQL l vi th mc khc:
Backup

Th mc vn cn trng ngay sau khi ci t. Th mc ny dng lu


tr cc tp tin d phng.

BIN

Cc th vin mng pha client

BINN

Cc tp thi hnh v cc tp tin kt hp. K c cc tp tin thi hnh chnh


ca SQL Server, v mi cng c iu hnh c np.

CHARSETS

Cc b k t sp xp cho cc kiu ci t khc nhau.

DATA

V tr ngm nh cho cc CSDL.

INSTALL

SQL Server Books Online v cc ch mc.

LOG

Cc s theo di li SQL Server. Cc tp tin vn bn tng ng vi s


theo di s kin Windows NT, nhng chi tit hn.

REPLDATA

V tr ngm nh cho d liu tm thi c dng trong khi sao lp.

SNMP

Cc MIB (Management Information Bases = c s thng tin qun tr)


cho SQL Server.

SQLOLE

cc mu v cc dng OLE automation ca Visual Basic qun l SQL


Server.

SYSBOLS

G ri cc k hiu do cc lp trnh vin s dng.

Khoa Cong Nghe Thong Tin

Trng H Cong Nghiep TP HCM

BI 3:
CC CNG C CA SQL SERVER
3.1
SQL ENTERPRISE MANAGER
Enterprise Manager cn gi tt l EM, l mt cng c chnh dnh cho nh qun tr
server v CSDL. Enterprise Manager cho php bn dng v khi ng mt Server, cng
nh cho php bn thc hin cc tc v sau:
ng k mt server.
Cu hnh cc server cc b hoc t xa.
Cu hnh v qun l mt ci t vi nhiu server (multiple-server).
Ci t cc bo mt ng nhp (login security), thm cc ngi dng (user), cc nh
qun tr h thng (system administrator), v cc iu hnh vin.
Gn mt password nh qun tr h thng.
To v lp biu cho cc cng vic (job).
To cc cnh bo v cu hnh giao tip n nh qun tr h thng thng qua e-mail.
Ci t v qun tr cc CSDL, cc bng (table), cc ch mc (index), cc truy vn
(view), cc th tc (stored procedure), cc qui tt (rule), cc by li (trigger), cc
mc nh (default), cc thit b d phng (backup device), v cc vt li (error log).
Qun l cc service khc.

Hnh 17: Ca s Enterprise Manager ca SQL Server


3.2
SQL SERVER SERVICES MANAGER
SQL Server Manager l mt cng c cho php khi ng, tm dng hoc dng cc dch
v (service) trong SQL Server. SQL Server hot ng c thng qua cc dch m n t
cung cp.

Trng H Cong Nghiep TP HCM

Khoa Cong Nghe Thong Tin

3.2.1 Cc dch v ca SQL Server


Mt dch v (service) l mt chng trnh hoc tin trnh thc thi mt chc nng c
bit no nhm h tr cho cc chng trnh khc. SQL Server cung cp cc dch v sau:
SQL Server Service, SQL Server Agent Service, MicroSoft Search Service v Microsoft
Distributed Transaction Coordinator. Mi dch v c chc nng v nhim v ring, h
tr cho cc hot ng ca SQL Server. Nu bn ci t mt hoc nhiu hn th hin
(instance) ca SQL Server th tn ca service cho mi instance ca SQL Server l
MSSQL$InstanceName, $InstanceName l mt tn ca instance m bn ch nh ln ci
t. ng vi mi SQL Server Agent service cho mi instance c gi l
SQLAGENT$InstanceName. Tuy nhin, nhiu instances ca SQL Server, s ch c mt
Microsoft Distributed Transaction Coordinator v Microsoft Search.
SQL SERVER SERVICE
Khi bn khi ng SQL Server c ngha l dch v SQL Server service c khi
ng Windows NT hoc Windows 2000. Dch v ny qun l cc tp tin CSDL, x
l cc cu lnh T-SQL, nh v ti nguyn gia cc kt ni ca ngi dng hin hnh,
m bo tnh nht qun d liu, v nhiu hn na.
SQL SERVER AGENT SERVICES
SQL Server Agent h tr vic lp biu v thc thi cc cng vic (job), cc cnh bo
(alert), thng bo, v k hoch duy tr CSDL. Khng c service ny, cng vic qun
tr ca bn s tr nn kh khn nhiu. SQL Server Agent cho php bn thc hin t
ng cc thao tc nhm duy tr CSDL.
V d: bn c th to mt job thc hin t ng d phng (backup) d liu mi
m vo lc 1 gi sng v mt job khc thc hin d phng transaction log mi 30
pht mt ln.
kim tra hiu nng h thng ca bn cnh bo hin trng hiu nng bo cho bn
nu server CPU hot ng trn 90%. SQL Server Agent phi chy thc thi cc
tc v kiu nh vy.
Dch v ny c th c cu hnh khi chy mt cc t ng hoc chy mt cch th
cng. Bn nn cu hnh cho n khi ng t ng m bo rng cc job, alerts, v
notification s c th c thc thi.
MICROSOFT DISTRIBUTED TRANSACTION COORDINATOR.
Dng qun l cc giao tc phn tn.

MICROSOFT SEARCH.
Dch v Microsoft Search cho php to mt ch mc full-text v c ch tm kim.
Chun SQL-92 nh ngha cc kh nng tm kim vi php so snh k t bng,
nh hn, ln hn mt hng s k t, gi tr k t c cha mu chui.

Trng H Cong Nghiep TP HCM

Khoa Cong Nghe Thong Tin

Dng dch v Microsoft Search cho php Microsoft SQL Server 2000 v SQL
Server 7.0 c h tr nhiu tm kim tinh vi trn ct chui k t.

3.2.2 Khi ng, tm ngng, dng cc dch v ca SQL Server


khi ng hay dng cc dch v SQL Server bng cch dng SQL Server Service
Manager th thc hin cc bc sau:
1. Click chn Start Programs Microsoft SQL Server, v chn Service
Manager hin th cng c SQL Service Manager nh hnh

Hnh 18: SQL Server Service Manager.


2. Tn server cc b xut hin trong mc Server v cc dch v ca SQL Server xut
hin trong mc Service. Trong danh sch x xung, chn tn ca server v dch
v m bn mun iu khin.
Bn c th khi ng (start) v dng (stop) cc service ang c chn bng cch
click vo ng tng ng. Nu Service trng thi dng th click vo
Start/Continue chy tip.
3. Auto-start service when OS Server: cu hnh t ng chy dch v khi h iu
hnh khi ng.
Lu :
Nu SQL Server v SQL Server Agent service khng c cu hnh chy t ng
th bn phi khi ng n mt cch th cng
3.3

OSQL
OSQL l mt du nhc tin ch dng truy vn mt instance ca SQL Server
2000 mt cch tng tc bng T-SQL, th tc h thng, tp tin lnh. N cng
c dng xem xt cc cng vic hoc b lnh, k c cc lnh ca h iu hnh
i vi SQL Server 2000. Bn c th dng osql bng cch kt ni vo server v

Trng H Cong Nghiep TP HCM

Khoa Cong Nghe Thong Tin

thc thi cc lnh trong ch tng tc hoc bng cch kt ni vo v thc thi cc
lnh nh mt phn ca c php lnh osql.
C php lnh ca osql nh sau:
Osql S servername U login_id P password

(1)

Osql S servername E

(2)

Chng ta dng (1) khi bn kt ni n server bng mt ti khon ng nhp ca


SQL server, dng (2) khi bn kt ni bng ti ch chng thc l Windows. Khi
dng Osql kt ni n SQL Server 2000, c nhiu tham s m bn c th dng
nh l mt phn ca chui kt ni. Nn nh rng, Osql phn bit ch thng, ch
hoa.
- S servername

Ch nh tn ca Server ca SQL Server m bn mun kt ni.

- U login_id

Ch nh tn ca ti khon ng nhp

- P password

Ch nh password ca ti khon ng nhp nu c

-E

Kt ni bng ti khon ng nhp hin hnh ca windows


Khi bn dng osql trong ch tng tc, n hin th th t cc dng. Chng ta
g cc cu lnh SQL, mi cu lnh trn mi dng. Osql khng thc thi cu truy
vn ca bn cho n khi bn g t kha GO trn mt dng. Khng lm vic bng
osql, g EXIT tt kt ni v ng tin ch osql.

V d:

Hnh 19: Minh ha tin ch osql


3.4

SQL QUERY ANALYZER


3.4.1 Gii thiu.
SQL Query Analyzer l giao din ngi dng ha (Graphical User Interface
GUI) dnh cho cc nh lp trnh. Query Analyzer cho php thc hin:

To cc truy vn (query), b lnh (script) v thc thi (execute) chng tc ng


n CSDL ca SQL Server.

Trng H Cong Nghiep TP HCM

Khoa Cong Nghe Thong Tin

To cc i tng ca CSDL mt cch nhanh chng t nhng script c nh


ngha trc.

Sao chp nhanh chng cc i tng ca CSDL

To v thc thi cc th tc (Stored procedures), hm ngi dng (user-defined


function)

Tm li (Debug) cc th tc.

Tm li (Debug) cc vn hiu nng ca ca truy vn (Show Execution Plan,


Show Server Trace, Show Client Statistics, Index Tuning Wizard).

nh v cc i tng trong cc CSDL, xem v lm vic vi cc i tng.

Chn, cp nht, xa cc mu tin trong table mt cch nhanh chng.

3.4.2 Khi ng Query Analyzer


SQL Query Analyzer c th c khi ng t SQL Server Enterprice Manager
hoc t Start Menu hoc t ca s Command bng cch thc thi tin ch ISQLW.
Khi bn khi ng SQL Query Analyzer, th hp thoi Connect to SQL Server
xut hin. Khi bn phi xc nh ch chng thc c dng kt ni ti SQL
Server.

Hnh 20: Hp thoi kt ni


Bn c th m cng lc nhiu ca s Query Analyzer cho php bn lm vic
trong cc CSDL khc nhau hoc thc thi cc script khc nhau trong cng mt thi
im. Mi ca s to kt ni ring bit n server. Nhng kt ni duy tr cc ci t
khc nhau v mi ca s c CSDL hin hnh. Nu bn c gng thc thi mt thao tc
dnh ring trn mt CSDL t mt query analyzer trong khi mt query analyzer khc
ang dng CSDL, thao tc s b li.
3.4.3 Thnh phn chnh ca Query Analyzer
SQL Query Analyzer bao gm cc ca s, hp thoi, hng dn (wizard) gip
chng ta thit k cc tc v (Task) cn thit to cc CSDL, lu tr, khai thc d
liu trong cc CSDL .
Ca s Query Analyzer

Khoa Cong Nghe Thong Tin

Trng H Cong Nghiep TP HCM

Thanh tiu (Title bar): Hin th tn ca Server, CSDL hin hnh, v ti


khon kt ni ti.

Cng c Database trn thanh cng c, cho bit v cho php bn thay i
CSDL c kt ni hin hnh.

Editor pane: dng a vo cc cu lnh v thc thi cc cu lnh T-SQL


Mu ca m lnh trong Query Analyzer:
Mu

ngha

Chui k t

Th tc

Xanh l

Bng h thng

Xanh l m

Ch gii

ti

Hm h thng

Xanh

T kha

Xm

Ton t

Mu ca m lnh bn c th bit l bn nhp cu lnh vo l ng hay sai. Bn c


th i mu qui nh bng cc chn trang fonts trong hp thoi Tools Option.
Results pane: hin th kt qu ca truy vn c thc thi. Mt hoc nhiu hn mt
trang c hin th trong results pane.
Trang Messages: Hin th thng bo v cc li gi tr t server.
Trang Results: Hin th nhng kt qu nh vn bn t do.
Trang Results Grid: Hin th cc kt qu trong bng k li. D liu trong li ch
xem, khng th hiu chnh c. Mt vi truy vn yu cu server tr v nhiu
hn mt tp kt qu th s c nhiu hn mt trang Results Grid s c hin th.
Nu li kt qu trng sau khi thi hnh mt truy vn th truy vn khng c tr
v mt bng kt qu
Trang Execution Plan: Hin th mt biu ca k hoch thc thi ca truy vn
hin hnh. Bt tt Execution Plan ta chn t thc n Query

Trng H Cong Nghiep TP HCM

Khoa Cong Nghe Thong Tin

Hnh 21: Thnh phn chnh ca Query Analyzer.


Lu :
Bn c th nhp vo chui cc cu lnh mi hoc m mt tp lnh c sn. Khi bn
lm vic xong vi tp lnh bn c th lu n thnh mt tp tin dng dng li
sau (tp tin c phn m rng l .SQL).
Truy vn c th l mt cu lnh n hoc nhiu cu lnh. Nhng cu lnh c th
khng th thc thi nh l mt phn ca cng mt truy vn vi nhng cu lnh
khc. Trong trng hp ny c vit cch nhau bi t kha GO.
Nhng cu lnh c th g trn cng mt hng hoc tri di qua nhiu hng. Do
cu lnh T-SQL th qu di t trn mt dng, nn ta g chng trn nhiu dng,
iu ny s lm cho chng ta d c cc cu lnh.
Nu khng c lnh c chn th khi bn thi hnh truy vn th ton b ni dung
ca query pane s c thc thi
3.4.4 Mt vi phm nng dng trong Query Analyzer

Hnh ng

Phm nng

Thc thi

CTRL+E or F5

Tm kim

CTRL+F

Chuyn vn bn ang chn thnh ch hoa

CTRL+SHIFT+U

Chuyn vn bn ang chn thnh ch thng

CTRL+SHIFT+L

Cc kt qu dng vn bn

CTRL+T

Nhng kt qu trong li

CTRL+D

Gip v Query Analyzer

F1

Gip mt cu lnh T-SQL c chn

SHIFT+F1

Trng H Cong Nghiep TP HCM

Khoa Cong Nghe Thong Tin

BI 4:
LM VIC VI C S D LIU SQL SERVER
4.1
Thit k mt c s d liu.
Thit k CSDL l mt bc v cng quan trng trong tin trnh pht trin ng dng.
Trong qu trnh thit k, bn phi quyt nh nhng table no cn lu tr cc d liu
ca bn. Qu trnh thit k mt CSDL logic c thc hin c lp vi cc h qun tr
CSDL. Mt s lu khi thit k mt CSDL logic:

Cc bng v tn ca chng (cn gi l cc thc th).

Tn cc ct (cc thuc tnh) ca mi bng.

Cc c tnh ca ct nh l gi tr duy nht, cho php null hay khng, v kiu ca


d liu m ct s lu cha.

Kha chnh (Primary key) cho mi bng. l mt ct hoc tp cc ct m cha


cc gi tr c nh ngha khng trng lp cc dng trong bng. Mi bng ch
c th c mt kha chnh. Mc d kha chnh l khng yu cu bt buc phi c
nhng cc bng nn lun lun c.

Cc mi quan h (Relationship) gia cc bng. Cc dng trong mt bng ph


thuc mt hoc nhiu dng khc trong bng khc. Nhng ph thuc trong nhng
bng ny c gi l mi quan h. nh ngha mi quan h, mt ct hoc tp
cc ct trong mt bng c gi l kha ngoi (foreign key) nu n tham chiu
n kha chnh ca bng khc.
V d: mi dng trong mt bng n hng (DONHANG) ph thuc vo mt dng trong
bng khch hng (KHACHHANG) bi v mi n hng phi c t bi mt khch
hng. iu ny chnh l ni quan h gia bng DONHANG v bng KHACHHANG.
Bng n hng phi c mt ct lu gi cc gi tr c tham chiu n mt dng ring l
trong bng KHACHHANG. Cc dng trong bng HOADON phi c m bo ch tham
chiu n mt khch hng v vy mi quan h nn da trn c s kha chnh ca bng
KHACHHANG. Ct ca bng n hng m tham chiu n kha chnh ca bng khch
hng c gi l kha ngoi.
Cc kiu mi quan h: Ba kiu ca mi quan h c th gia cc bng:

One-to-One. Mi dng trong bng chnh c quan h n ch mt dng trong bng


quan h. Mt mi quan h one-to-one l c thc hin bi nh ngha kho ngoi
l duy nht (khng trng).

One-to-Many. Mi dng trong bng chnh c lin quan n mt hoc nhiu


dng trong bng quan h. V d mt khch hng c th t nhiu n hng, nhng
mt n hng khng th c t bi nhiu khch hng.

Many-to-Many. Nhiu dng trong mt bng lin quan n nhiu dng trong bng
khc.
V d: mt tc gi c th vit nhiu quyn sch v mt quyn sch c th c vit
bi nhiu hn mt tc gi. Mi quan h many-to-many gia 2 bng l thc hin bng
cch to mt bng th ba v to mt mi quan h one-to-many n bng chc nng ny
t mi bng ban u.
Mt CSDL sau khi thit k c nh gi thng qua cc dng chun. CSDL t chun cao
th CSDL lu tr y thng tin, khng b trng lp, c tnh nht qun cao.

Khoa Cong Nghe Thong Tin

Trng H Cong Nghiep TP HCM

Cc dng chun ca CSDL quan h


Dng chun 1: Tt c cc thuc tnh u c nh ngha dng 1 gi tr n
hoc khng dng repeating group.
V d: Cc quan h sau khng t dng chun 1

OrderID

CustomID

OrderDate

Items

OrderTotal

1111

101

1/1/02

4 apples

1000

1111

103

1/2/02

5 bananas

900

Khng t chun 1 v thuc tnh Items khng l gi tr n


OrderId

CustomId Items

Quarter1

Items

Quarter2

Items

Quarter3

Khng t chun 1 v thuc tnh Items v Quarter c dng repeating group

Dng chun 2: Tt c cc thuc tnh khng kha ph thuc y vo kha.

ProductName

SupplerName

CompanyName

SupplerPhoneNumber

Gi s ProductName khng trng, ProductName l kha.


Vi phm chun 2 v SupplerPhoneNumber ch ph thuc vo SupplerName m khng
ph thuc vo ProductName (kha)

Dng chun 3: Tt c thuc tnh khng kha ph thuc y v khng ph


thuc bt cu vo kha.

CompanyName

Address

City

Region

Postcode

Gi s CompanyName l khng trng


Vi phm chun 3 v t City v Region th ta s bit c Postcode, nh vy PostCode
ph thuc vo City v Region. Trong CompanyName l mt kha d tuyn
(Candidate)
Lu :
Mt ct (field) c gi tr lp i lp li mt gi tr th gi tr gi l d liu d
tha.
Cc gi tr ny ngi s dng c th g sai chnh t khi nn suy ngh quyt
nh c nn ny sinh thm 1 table hay khng.
Hoc trong tng lai c th ny sinh ra cc gi tr mi ca field th vic pht
sinh Table l u vit.
Khi xy dng d liu ca kha chnh, c 2 trng phi: kha c ng ngha v
kha khng c ng ngha. gii quyt cc li pht sinh khi dng gi tr kho c
ng ngha, cc chuyn gia khuyn l ng ngha ca kho ch dng tham kho
v khng nn dng n khi vit cc ng dng.

Trng H Cong Nghiep TP HCM

Khoa Cong Nghe Thong Tin

4.2

C s d liu ca SQL SERVER 2000


Mt CSDL ca SQL Server l tp hp cc bng (Table) dng cha cc d liu
v nhng i tng khc, chng hn Views, indexes, store procedures, v triggers
Chng c n nh h tr cc hot ng c thc hin vi d liu. D liu c
cha trong mt CSDL thng lin quan n mt ch hay tin trnh c bit. SQL
Server c th h tr nhiu CSDL. Mi mt CSDL c th lin quan hay khng lin quan
n cc CSDL khc. V d mt SQL Server c th c CSDL cha d liu v nhn s, v
mt CSDL khc cha cc n hng.
Khi bn to mt CSDL, bn phi xy dng cu trc lu tr d liu. Cc trc ny
bao gm t nht mt tp tin d liu (data file) v mt tp tin vt giao tc (transaction log
file). Bn nn hiu cch thc Microsoft SQL Server 2000 lu tr d liu, cng nh chc
nng ca transaction log trc khi bn lm vic vi CSDL ca SQL Server.
Cch d liu c lu tr trong CSDL ca SQL Server:

Hnh 22: Cch lu tr d liu


Cc tp tin CSDL SQL Server
Mt CSDL c lu cha trong cc tp tin vt l trn a cng, mt CSDL tri di trn t
nht l hai tp tin. Mt vi tp tin d liu (data file), v mt tp tin vt (transaction log
file). Nhng tp tin ny c ch nh khi CSDL c to hay hiu chnh. SQL Server
2000 cho php ba loi tp tin CSDL:

Primary data files: mt CSDL c mt primary data file dng ghi nhn li tt
c nhng tp tin khc trong CSDL, v lu tr d liu. Theo ngm nh, tn ca
primary data file c phn m rng l .MDF.

Secondary data files: mt CSDL c th khng c hoc c nhiu secondary data


files, dng lu cc i tng ca CSDL. Theo ngm nh, tn ca secondary
data file c phn m rng l .NDF.

Trng H Cong Nghiep TP HCM

Khoa Cong Nghe Thong Tin

Log files: mt CSDL c t nht mt log file dng cha nhng thng tin cn thit
cho vic phc hi tt c nhng giao tc (transaction) trong CSDL. Theo ngm
nh, log file c phn m rng l .LDF.
Mi tp tin CSDL c nm thuc tnh: tn tp tin logic, mt tn tp tin vt l, mt kch
thuc (size) ban u, mt kch thc ti a (maximum size), v gia s tng kch thc
(growth increment). Cc thuc tnh ca mi tp tin, theo cng vi nhng thng tin khc
c ghi ch trong bng h thng sysfiles, mt dng ng vi mi tp tin uc dng trong
mt CSDL.
Nhm tp tin (Filegroups)
Cc Filegroup cho php bn kt nhm cc tp tin nhm mc ch qun tr v sp xp d
liu. Cc Filegroup c th ci thin hiu nng CSDL bng cch cho php mt CSDL c
to ngang qua nhiu a hoc h thng RAID. Bn c th to cc bng v cc ch mc
trn a c ch r bng cch dng filegroup. C 3 dng filegroup.

Primary filegroup bao gm primary data file v tt c nhng tp tin khc khng
t trong nhng filegroup khc. Cc bng h thng (System table) Dng nh
ngha cc ngi dng (user), cc i tng (object), v cc quyn (permission) i
vi mt CSDL l c t trong primary filegroup ca CSDL . SQL Server t
ng to cc bng h thng ca tng CSDL khi chng ta to CSDL.

User-defined filegroups l bt k cc filegroup xc nh mc nh bi ngi


dng trong sut tin trnh to hoc hiu chnh CSDL. Mt bng hoc mt ch mc
c th c to v t trong mt user-defined filegroup ch nh.

Default filegroup: Cha tt c i tng cc trang (page) ca cc bng v cc ch


mc m khng c ch nh filegroup khi chng c to ra. Theo mc nhin,
Default filegroup l primary filegroup. Cc thnh vin ca role db_owner database
c th chuyn i trng thi default t mt filegroup ny cho filegroup khc. Ti
mt thi im ch c th c mt default filegroup. Nu default filegroup khng
c ch nh th primary filegroup l default filegroup mt cc t ng. Lnh
hiu chnh CSDL (ALTER DATABASE) c dng thay i default filegroup.
ALTER DATABASE database_name MODIFY FILEGROUP filegroup_name DEFAULT

Cch cp pht khong khng lu tr


D liu c lu tr trong cc khi 8Kb lin nhau ca khng gian ca a c
gi l trang (page). C ngha l mt CSDL c th lu tr 128 page mi megabyte
(MB).
Cc dng khng th tri di trn cc page v phi nm gn trong 1 page. Tng s
ln nht ca d liu trong mt dng n l 8060 bytes (8192, tr overhead). Tng
s khong khng ln nht m c th s dng bi cc dng trn mt trang l 8094
bytes.
Cc bng, cc ch mc, c lu tr trong cc extent. Mt extent c 8 page k
nhau, hoc 64 KB. V vy, mt CSDL c 16 extent mi megabyte. C th c n 8
i tng nh c th chia s trong mt extent (Mixed Extent). Khi mt bng tng
ln 8 page, n dng extent ng dng (Uniform extent).
SQL Server dng 2 kiu th nh v (allocation map) ghi nhn li nh v ca
cc extent:

Global Allocation Map (GAM)

Khoa Cong Nghe Thong Tin

Trng H Cong Nghiep TP HCM

Cc trang GAM ghi nhn cc extent c cp pht. Mi mt GAM kim sot


64000 extent, hoc gn 4 GB d liu. GAM c mt bit ng vi mi extent trong vng
m c kim sot. Nu bit mang gi tr l 1 th extent l trng; nu bit mang gi
tr 0 th extent c cp pht.
Shared Global Allocation Map (SGAM)
Cc trang SGAM ghi nhn cc extent c s dng nh l cc mixed extent v c
t nht mt trang cha dng. Mi SGAM kim sot 64000 extent, hay gn 4 GB d
liu. SGAM c mt bit ng vi extent trong vng m n kim sot. Nu bit mang gi
tr 1 th extent c ang s dng nh l mt mixed extent v hin c trang trng
(free page); nu mang gi tr 0, th extent c dng nh l mixed extent hay n l
mt mixed extent m tt c cc trang u c dng.
Mi extent c mt gi tr bit t trong GAM v SGAM da trn c s c ang c
dng:

S dng hin thi ca extent

Bit GAM

Bit SGAM

Trng, cha c dng

Uniform extent, hoc mixed extent y

Mixed extent vi cc free page

Cc extent c qun l vi mt thut ton n gin. nh mt extent ng dng, SQL


Server tm trn GAM mt bit 1 v t n thnh bit 0. tm mt mixed extent vi nhng
free page, SQL Server tm trn SGAM mt bit 1. nh mt mixed extent, SQL Server
tm trn GAM mt bt 1, t n thnh 0, v t vo bit tng ng trn SGAM gi tr 1.
Mt extent trng, SQL Server m bo bt trn GAM mang gi tr 1 v trn SGAM mang
gi tr 0
Transaction Log lm vic nh th no?
Transaction log ghi nhn s hiu chnh d liu cc cu lnh INSERT, UPDATE, v
DELETE khi chng c thi hnh. Tin trnh ghi vt ghi nhn li:

Mt s thay i d liu c gi t ng dng.


Khi mt s thay i c thc hin th cc trang d liu nh hng c ti ln t
tp tin d liu trong b nh (gi l data cache), nu cc trang khng sn sng
trong data cache t truy vn trc .
Mi cu lnh hiu chnh d liu th lun lun c ghi trong log nh n c to.
Thay i th lun lun ghi nhn li thnh vt v c ghi vo tp tin log (log file)
trc khi thay i c tc ng trong CSDL. Kiu ca log ny gi l writeahead log.
Khi cc trang d liu hin nm trong data cache, v nhng trang log c ghi
nhn li trn a trong mt tp tin transaction log th tin trnh checkpoint ghi tt
c cc transaction hon tt (committed transaction) vo CSDL trn a.

Mt transaction n c th c nhiu hiu chnh d liu. Mi transaction bt u vi mt


lnh BEGIN TRANSACTION. Nu ng dng hon tt tt c s hiu chnh d liu mt
cch thnh cng th transaction kt thc vi lnh COMMIT TRANSACTION (nh l mt
transaction c ni l transactin hon tt- committed transaction).

Trng H Cong Nghiep TP HCM

Khoa Cong Nghe Thong Tin

Trong sut qu trnh hot ng, tin trnh checkpoint u n thng xuyn kim tra cc
transaction hon tt m s hiu chnh d liu cha c ghi vo tp tin d liu. Tin
trnh checkpoint ghi nhng hiu chnh ny vo tp tin d liu v checkpoint cc
transaction cho bit rng n c vit vo tp tin d liu cha.
Nu h thng b hng hc, tin trnh phc hi (recovery process) t ng chy khi SQL
Server c khi ng li. Tin trnh ny s dng transaction log quay ngc li n
cc transaction hon tt m cha tng c "checkpointed" v xo b n (roll back) cc
transaction cha hon tt.
C ch t ng ghi nhn vt trong SQL Server l khng l mt la chn (option) (c
ngha l bn khng th tt n i), tt c cc hiu chnh d liu u phi i qua transaction
log (C 2 phng php ti mt lng d liu ln m c th c thc hin m khng
dng transaction log, l chng trnh bulk copy v lnh SELECT INTO). D liu
vrt quan trng nn transaction log khng bao gi y (full) bi iu ny s ngn chn
hiu chnh d liu trong CSDL.
4.3

To, hiu chnh c s d liu SQL SERVER


4.3.1 Gii thiu
to mt CSDL, trc ht bn phi nh ngha mt tn cho CSDL, kch c ca n, v
cc tp tin primary data file, secondary data file v file group dng lu tr n. Bn nn
xem xt vi nhn t sau trc khi bn to CSDL:

Quyn to mt CSDL mc nhin phi l thnh vin ca sysadmin v


DBCreator fixed server role, mc d quyn ny c th gn cho bt k user no.

User - ngi to ra CSDL tr thnh ch (owner) ca CSDL.

C th c ti a 32767 CSDL c th to trong mt server.

Tn ca CSDL phi t theo qui tt nh danh.


Khi to CSDL bn nn ch nh dung lng ln nht c th c ca mt CSDL, iu ny
s ngn chn s gia tng khng kim sot kch thc ca CSDL. SQL Server to CSDL
thng qua 2 bc:
- SQL Server s dng mt bn sao ca CSDL Model khi to CSDL mi
v bin i n.
- Sau SQL Server nhi y phn cn li ca CSDL bi cc trang trng.
Cc phng php to, hiu chnh mt CSDL ca SQL Server.
Cch 1: dng SQL Enterprise Manager
Cch 2: dng Create Database Wizard.
Cch 3: dng cu lnh CREATE DATABASE.
4.3.2

To c s d liu
To bng Database Wizard ( ti ca s Enterprise Manager)
1. M rng server group, sau ni rng server ni m s to CSDL.
2. Chn thc n Tools Wizards.
3. M rng Database.

Trng H Cong Nghiep TP HCM

Khoa Cong Nghe Thong Tin

4. Nhp phi chut ti Create Database Wizard.


5. Hon tt cc bc trong Wizard.
To bng Enterprise Manager ( ti ca s Enterprise Manager)
1. M rng server group, sau ni rng server ni m s to CSDL.
2. Nhp nt phi chut ti nt Database, chn New DataBase.
3. Khai bo cc thng tin cn thit, sau chn OK:

Trang General
+ Name: <Tn logic ca CSDL>
Trang Data Files
+ Location : <Tn ca tp tin Datafile, v tr lu tp tin trn a>
+ Initial size: <Kch c khi to CSDL>
+ File Group : <Tn ca File Group>
+ File properties: Khai bo mt s thuc tnh khc nh t l gia tng (File
Growth), kch c ti a (maximun size)
Trang Transaction log: Tng t nh trang Data files nhng khai bo cho tp tin
log.

Hnh 23: Hp thoi xem thuc tnh ca SQL Server

Trng H Cong Nghiep TP HCM

Khoa Cong Nghe Thong Tin

To bng cu lnh Create Database (g lnh trong ca s Query


Analyzer).
C php
CREATE DATABASE database_name
[ ON
[ < filespec > [,...n ] ]
[, < filegroup > [,...n ] ]
]
[ LOG ON { < filespec > [,...n ] } ]
[ COLLATE collation_name ]
[ FOR LOAD | FOR ATTACH ]
< filespec > ::=
[ PRIMARY ]
([ NAME = logical_file_name, ]
FILENAME = 'os_file_name'
[, SIZE = size ]
[, MAXSIZE = { max_size | UNLIMITED } ]
[, FILEGROWTH = growth_increment ]) [,...n ]
< filegroup > ::=
FILEGROUP filegroup_name < filespec > [,...n ]

Thc hin:
(1) G lnh trong ca s Query Analyzer
(2) Gi thc thi cu lnh
V d: To CSDL c tn l SalesDB, tp tin d liu tn l SalesDB_dat.mdf t trong
C:\Data, kch c khi to l 10MB, kch thc ti a l 50MB, t l gia tng l 5MB, v
tp tin vt tn l SalesDB_log.ldf t trong C:\Data, kch thc khi to l 5MB, kch
thc ti a l 25MB, t l gia tng l 10%.
CREATE DATABASE SalesDb
ON
(NAME = SalesDb_dat,
FILENAME = 'c:\data\salesDB_dat.mdf',
SIZE = 10,
MAXSIZE = 50,
FILEGROWTH = 5)
LOG ON
(NAME = 'SalesDb_log',
FILENAME = 'c:\data\salesDB_log.ldf',
SIZE = 5MB,
MAXSIZE = 25MB,
FILEGROWTH = 10%)
GO
Lu :
-

Th mc Data phi hin hu trong C:\

Trng H Cong Nghiep TP HCM

Khoa Cong Nghe Thong Tin

Sao khi g cu lnh, nh du chn khi lnh v nhn F5 thc thi.

4.3.3 Thao tc trn c s d liu ca SQL Server


Khi lm vic vi CSDL, bn c th thc hin trc tip trong ca s Enterprise Manager
hoc dng cc cu lnh T-SQL trong c s Query Analyzer.
3.3.a.1 Kim tra s tn ti ca c s d liu
Cch 1: Ti ca s EM, kim tra s tn ti ca CSDL trong nhnh DataBase.
Cch 2: Ti ca s QA, thc hin cu lnh Sp_helpdb <Tn CSDL>
V d: Sp_helpDB SalesDB
3.3.a.2 Xem, thay i thuc tnh ca c s d liu.
Cch 1: Dng Enterprise Manager
M nt DataBase, R_Click ti tn CSDL cn xem hoc hiu chnh
Chn Properties
Thay i tu
Cch 2: Dng T_SQL
C php
ALTER DATABASE database
{ ADD FILE < filespec > [,...n ] [ TO FILEGROUP filegroup_name ]
| ADD LOG FILE < filespec > [,...n ]
| REMOVE FILE logical_file_name
| ADD FILEGROUP filegroup_name
| REMOVE FILEGROUP filegroup_name
| MODIFY FILE < filespec >
| MODIFY NAME = new_dbname
| MODIFY FILEGROUP filegroup_name {filegroup_property | NAME =
new_filegroup_name }
| SET < optionspec > [,...n ] [ WITH < termination > ]
| COLLATE < collation_name >
}
< filespec > ::=
(NAME = logical_file_name
[, NEWNAME = new_logical_name ]
[, FILENAME = 'os_file_name' ]
[, SIZE = size ]
[, MAXSIZE = { max_size | UNLIMITED } ]
[, FILEGROWTH = growth_increment ])

V d 1: Chnh sa kch c ca tp tin log file ca SalesDb thnh 10MB


ALTER DATABASE SalesDb
MODIFY FILE (NAME='salesdb_log', size=10MB)

Trng H Cong Nghiep TP HCM

Khoa Cong Nghe Thong Tin

V d 2: B sung thm mt tp tin d liu SalesDB_data2


ALTER DATABASE SalesDB
ADD FILE (NAME=SalesDB_data2,
FILENAME='C:\data\SalesDb2.mdf',SIZE=10 MB,
MAXSIZE=20MB)
3.3.a.3 Xa c s d liu.
Cch 1: Dng Enterprise Manager
Nhn nt phi chut ti tn CSDL, chn Delete
Cch 2: Dng cu lnh T-SQL
DROP DATABASE database_name [,...n ]

V d:

DROP DATABASE SalesDB

3.3.a.4 i tn c s d liu.
Dng hm sp_renamedb theo c php sau
sp_renamedb [ @dbname = ] 'old_name', [ @newname = ] 'new_name'
3.3.a.5 To mt script cho CSDL v cc i tng ca CSDL.

i khi, bn cn sao chp cu trc ca CSDL hoc cu trc cc i tng ca


CSDL, th bn s thc hin to script cho chng. Khi c script bn s m v thc
thi on script ti ca s Query Analyzer ti to li cc i tng.
Cc bc thc hin:
M rng mt server group; m rng mt server.
M rng nhnh DataBase, nhp phi ti CSDL mun to script, tr n All Tasks,
nhp General SQL SQL Script
Khai bo cc la chn thch hp.
+ Trang General: chn i tng cn to csript.
+ Trang Formating: chn cc ty chn ng dng script.

Generate the CREATE <object> command for each object: To script theo
cch s dng nh ngha ang c ca n. La chn ny c chn theo mc
nh.

Generate the DROP <object> command for each object: B sung vo script
cho mi i tng cu lnh drop khi to script. La chn ny c chn theo
mc nh.

General scripts for all dependent objects: T ng to cc script cho cc i


tng c lin quan vi i tng ang to script.

Include descriptive headers in the script files: Thm li ch thch c b


sung vo tp tin script cho mi i tng to script.

Trng H Cong Nghiep TP HCM

Khoa Cong Nghe Thong Tin

+ Trang options: hy chn cc ty chn security-related, table-related, v script


file-related
Trn trang General, nhp PreView xem trc ni dung ca script c to ra.

Hnh 24: Trang General ca hp thoi pht sinh script cc i tng ca CSDL

Trng H Cong Nghiep TP HCM

Khoa Cong Nghe Thong Tin

Hnh 25: Trang Formating ca hp thoi pht sinh script cc i tng ca CSDL

Hnh 26: Trang Option ca hp thoi pht sinh script cc i tng ca CSDL

Trng H Cong Nghiep TP HCM

Khoa Cong Nghe Thong Tin

S dng Script va to:


- Chuyn n v tr mi cn ti to li CSDL/ cc i tng CSDL.
- Vo ca s Query Analazer, m tp tin Script.
- Hiu chnh cc v tr vt l nu cn.
- Cho thc thi on Script
- Kim tra kt qu.

Khoa Cong Nghe Thong Tin

Trng H Cong Nghiep TP HCM

BI 5:
KIU D LIU LM VIC VI BNG
5.1
Kiu d liu (data type)
Kiu d liu l mt c tnh ca mt ct (Column). N nh r loi d liu v dng d
liu c nhp vo ct.
C 2 nhm:

System-Supplied datatype: Cc kiu d liu c bn c h tr bi SQL Server.

User-defined datatype: Cc kiu d liu ca ngi dng t nh ngha da trn


cc kiu d liu c bn.

5.1.1 System-Supplied Datatype.


System-Supplied Datatype l kiu d liu c bn c h tr bi SQL Server. Cc
i tng lu cha d liu u c mt kiu d liu lu, cc i tng c th l
- Cc ct (Column) trong cc bng.
- Cc tham s (parameters) trong strored procedures.
- Cc bin (Variables) trong stored procedure, function, script, batch.
- Cc hm T_SQL tr v mt hoc nhiu gi tr thuc mt kiu d liu no .
Ta c th dng cc kiu d liu to cc rng buc ton vn d liu. V d ct
TENNV th khng th c nh ngha vi kiu d liu l Date, v ct Date ch chp
nhn gi tr ngy.
Khi ta gn kiu d liu cho mt i tng no th ta cn quan tm n cc tnh cht
sau:
- Loi d liu c cha ng bi i tng.
- Chiu di lu tr gi tr hoc l kch c ca n.
- Tnh ng ca s (i vi cc kiu s).
Cc kiu d liu c bn:
Loi

Kiu d liu c s

Binary

Character

Date
Time

Decimal
Foating
point

and

Kch c

Vng gi tr

M t

Binary

8 KB

09, a..f, A..F

Varbinary

8 KB

09, a..f, A..F

Cha cc bit thng


tin

Image

2^31 -1 bytes

2^31 1 bytes

D liu hnh nh

Char

255 bytes

1..8000 k t

K t hoc chui

Varchar

255 bytes

1..8000 k t

K t hoc chui

Text

2147483647 bytes

2^31-1 k t (2147483647)

K t hoc chui

Datetime

8 bytes

01/01/1753->31/12/9999

Chui biu din


ngy gi

Smalldatetime

4 bytes

1/1/1900 -> 6/6/2079

Chui biu din


ngy gi

Decimal

17 bytes

-10^38-1 -> 10^38-1

S thc

Numeric

17 bytes

-10^38-1 -> 10^38-1

S thc

Float

8 bytes

-1.79E+308 -> 1.79E+308

S thc

Real

4 bytes

-3.40E+38 ->3.40E+38

S thc

Trng H Cong Nghiep TP HCM

Integer

Monetary
Special

Khoa Cong Nghe Thong Tin

Bigint

8 bytes

-2^63 -> 2^63

S nguyn

Int

4 bytes

-2^31 -> 2^31-1

S nguyn

Smallint

2 bytes

-2^15 -> 2^15-1

S nguyn

Tinyint

1 bytes

0..255

S nguyn

Money

8 bytes

-2^63 -> 2^63-1

D liu tin t

Smalmoney

4 bytes

-214748.3648 -> 214748.3648

D liu tin t

Bit

1 bytes

0 hoc 1

D liu c mt
trong hai trng thi
0 hoc 1

Cursor

Kiu DL cho bin hoc gi tr tr v ca procedure, tham chiu n 1 mu


tin

Timestamp

8 bytes

Chui c dng:
0x000000100000a90

Uniqueidentifier

16 bytes

S thp lc phn

SQL_variant

L kiu d liu c th cha bt k loi d ty ca SQL Server ngoi tr


text, ntext, image, and the timestamp data type

Theo di mu tin
no b thay i
d liu

Table
Unicode

Nchar

4000 k t

K t hoc chui

Nvarchar

4000 k t

K t hoc chui

Ntext

2^30-1 k t

K t hoc chui

5.1.2 User-defined datatype.


Ngi s dng c th da yu cu cn lu tr v cc kiu d liu c bn nh
ngha ra mt kiu d liu ca ngi dng dng lu tr mt d liu c bit no .
SQL Sever cho php bn ci tin cc kiu d liu m bo tnh nht qun khi lm
vic trong mi trng d liu a dng trong cc bng hay cc CSDL khc nhau.

User-defined data type khng cho php bn nh ngha cc kiu d liu phc hoc
c cu trc.

Mi mt User-defined data type c th c nh ngha ring cho mt CSDL hoc


cho ton b cc CSDL. Nu User-defined data type c nh ngha trong CSDL
Master th n c dng chung cho ton b cc CSDL.

Cc User-defined data type m bn to trong CSDL model th s c trong tt c


cc CSDL mi to mt cch t ng.

Mi user-defined data type c lu thnh mt mu tin trong bng systypes.

Bn c th to v xa user-defined data type bng cc th tc h thng. Tn ca


kiu d liu phi tun th qui tt nh danh v phi l duy nht trong mi CSDL.
nh ngha mi user-defined data type trong gii hn ca cc kiu d liu c bn.
Phi ch nh mc nh l chp nhn gi tr NULL hay NOT NULL khi i tng
khng c gi tr.

To mt User-Defined Data Type


Dng th tc h thng sp_addtype to mt user-defined data type.
sp_addtype type, system_data_type [,'NULL' | 'NOT NULL']

Trng H Cong Nghiep TP HCM

Khoa Cong Nghe Thong Tin

V d 1: To kiu d liu tn l isbn vi kiu d liu c bn l smallint v khng


chp nhn gi tr Null
EXEC sp_addtype isbn, smallint, NOT NULL
V d 2: To kiu d liu tn l zipcode vi kiu d liu c bn l char, di
ti a l 10 v chp nhn gi tr Null
EXEC sp_addtype zipcode, 'char(10)', NULL
V d 3: To kiu d liu tn l longstring vi kiu d liu c bn l varchar,
di ti a l 63 v chp nhn gi tr Null
EXEC sp_addtype longstring, 'varchar(63)', NULL
Xo mt User-Defined Data Type: dng th tc h thng sp_droptype xa
mt user-defined data type t bng systypes. Mt user-defined data type khng th
xa c nu n c tham chiu bi cc bng v nhng i tng khc.
Sp_droptype type

V d:
EXEC sp_droptype isbn
Xem cc user-defined data types trong CSDL hin hnh: dng th tc sp_help
hoc truy vn trong information_schema.domains
V d:
Use SalesDB
Sp_help
hoc
SELECT domain_name, data_type,
character_maximum_length
FROM information_schema.domains
ORDER BY domain_name
5.2
Lm vic vi bng ca SQL Server
Bng l mt i tng ca CSDL v l ni cha ng cc d liu v mt thc th no
v d Khch hng, n t hng, tn kho, Mt bng l mt tp hp cc ct (Column).
Mi mt ct i din cho mt thuc tnh ca d liu trong bng.
Khi bn to mt table, bn phi ch nh r tn ca bng, tn ct, kiu d liu ca ct. Tn
ct phi duy nht trong mt bng, c th dng tn trng nhau cc bng khc nhau trong
cng mt CSDL. Phi ch r mt kiu d liu cho mi ct v nhng la chn khc nu
cn. Bn c th to:

Ti a 2 t table cho mi CSDL.

Ti a 1024 ct trong mi bng.

8060 bytes mi dng (kiu image v text dng 16 bytes mi dng)


Hai cch c bn lm vic trn bng: Enterprise Manager (t nghin cu), cu lnh TSQL.
5.2.1 To mt bng mi
C php lnh

Trng H Cong Nghiep TP HCM

Khoa Cong Nghe Thong Tin

CREATE TABLE
[ database_name.[ owner ] . | owner. ] table_name
({ < column_definition >
| column_name AS computed_column_expression
| < table_constraint > ::= [ CONSTRAINT constraint_name ] }
| [ { PRIMARY KEY | UNIQUE } [,...n ]
)
[ ON { filegroup | DEFAULT } ]
[ TEXTIMAGE_ON { filegroup | DEFAULT } ]
< column_definition > ::= { column_name data_type }
[ COLLATE < collation_name > ]
[ [ 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) ]
[ ON DELETE { CASCADE | NO ACTION } ]
[ ON UPDATE { CASCADE | NO ACTION } ]
[ NOT FOR REPLICATION ]
]
| CHECK [ NOT FOR REPLICATION ]
(logical_expression)
}
< table_constraint > ::= [ CONSTRAINT constraint_name ]
{ [ { PRIMARY KEY | UNIQUE }
[ CLUSTERED | NONCLUSTERED ]
{ (column [ ASC | DESC ] [,...n ]) }
[ WITH FILLFACTOR = fillfactor ]
[ ON { filegroup | DEFAULT } ]
]
| FOREIGN KEY
[ (column [,...n ]) ]
REFERENCES ref_table [ (ref_column [,...n ]) ]
[ ON DELETE { CASCADE | NO ACTION } ]
[ ON UPDATE { CASCADE | NO ACTION } ]
[ NOT FOR REPLICATION ]
| CHECK [ NOT FOR REPLICATION ]
(search_conditions)
}

V d 1:
USE SalesDb

Trng H Cong Nghiep TP HCM

Khoa Cong Nghe Thong Tin

GO
CREATE TABLE Employees
(
EmployeeID SMALLINT IDENTITY(1,1) NOT NULL,
FirstName NVARCHAR(30) NOT NULL,
LastName NVARCHAR(30) NOT NULL,
Address1 NVARCHAR(60) NOT NULL,
City NVARCHAR(15) NOT NULL,
State CHAR(2) NOT NULL,
Phone VARCHAR(24) NOT NULL,
DOB DATETIME NOT NULL,
HireDate DATETIME NOT NULL,
PositionID TINYINT NOT NULL
)
5.2.2 Hiu chnh bng
Thao tc c bn hiu chnh bng gm thm ct, xa ct, thay i thuc tnh ca ct.
thc hin ta s dng cu lnh ALTER TABLE1.
Thm cc ct
ALTER TABLE <TableName>
ADD <Column Definition>[,n]

V d: Thm ct Address vo bng Employees


ALTER TABLE Employees
ADD Address2 NVARCHAR(6) NOT NULL DEFAULT 'N/A'
Lu : Nu bng c sn d liu v ct thm vo c nh ngha l NOT
NULL th ta phi in d liu ca cc dng ct mi thm vo l mt gi tr mc
nh no trnh gi tr Null.
Xa cc ct
ALTER TABLE <TableName>
DROP COLUMN <Column name>[,n]

V d:
ALTER TABLE Employees
DROP COLUMN Address2
Lu : Lnh trn s khng thc hin c v khi to ct Address2 ta khai bo
gi tr mc nh nn SQL Server to ra mt tng Defaul Constraint. Do
, mun xa ct th phi xa tt c cc i tng lin quan n ct cn xa ri
mi xa ct .
V d:
ALTER TABLE Employees
DROP CONSTRAINT DF_Employees_Addre_1372D2FE
ALTER TABLE Employees
1

Bn tham kho c php lnh y trong Books-Online

Trng H Cong Nghiep TP HCM

Khoa Cong Nghe Thong Tin

DROP COLUMN Address2


Lu : DF_Employees_Addre_1372D2FE l tn ca Defaul Constraint do SQL
Server t t.
Thay i kiu d liu cho ct
ALTER TABLE <TableName>
ALTER COLUMN <Column Name NewDatatype>

V d:
ALTER TABLE Employees
ALTER Address NVARCHAR(20)
Xo ton b d liu trong Table
TRUNCATE TABLE <Name Table>

V d:
TRUNCATE TABLE Employees
Lu : Nu bng mun xa l mt bng con (child table) th bn c th xa d
liu ca n bt k lc no bn thch, nhng nu n l mt bng cha (Parent Table)
th bn phi xa d liu bng con trc, k tip xa kho ngoi (Foreign key
constraint) gia 2 bng, cui cng mi xa d liu bng cha.
5.2.3 Xa bng khi c s d liu.
Xa mt bng l g b nh ngha bng v tt c d liu, cng nh cc quyn
(permission) nh cho bng .
Trc khi xa mt bng, bn phi g b tt c cc ph thuc gia bng v nhng
i tng khc.
DROP TABLE <Name Table>

V d:
DROP TABLE Employees
5.3

Bng tm (Temporary Tables).


Bn cng c th to cc bng tm. Cc bng tm tng t nh cc bng bnh
thng, ngoi tr vic cc bng tm thi c cha trong CSDL TempDb v c xa
mt cch t ng khi khng cn s dng na.
C hai loi bng tm: bng tm cc b (Local) v bng tm tng th (global).
Chng khc nhau v tn, tnh hin th, v tnh c sn.
Bng tm c b: bng tm cc b c mt du # l k t u tin trong tn ca
chng; chng ch hin th i vi ni kt hin hnh dnh cho ngi s dng, v chng
c xa khi ngi dng ngt ni kt vi cc th hin ca SQL Server.
V d: To bng tm tn l #MyLocalTempTable
CREATE TABLE #MyLocalTempTable
(
ID
INT PRIMARY KEY,
ColA VARCHAR(30) NULL,
ColB VARCHAR(30) NULL,

Trng H Cong Nghiep TP HCM

ColC VARCHAR(30) NULL

Khoa Cong Nghe Thong Tin


)

Nu mt bng tm c to trong tin trnh ca mt th tc th bng tm s b


xa khi th tc hon tt. Trong trng hp mt tin trnh A gi th tc B m B c to mt
bng tm th ch c B mi dng c bng tm cn tin trnh A khng nhn thy bng
tm . Trong trng hp th tc B c gi cng mt lc bi nhiu tin trnh khc nhau
th n s c nhiu bng tm ging nhau khi SQL Server s gii php gii quyt bng
cch thm mt hu t (suffix) vo tn ca cc bng tm cng tn sao cho cc bng ny c
tn l khc nhau (tn ca bng tm ti a l 116 k t)
Bng tm ton cc: Cc bng tm ton cc th c 2 du ## l k t u tin trong
tn ca chng; chng hin th i vi bt k ngi s dng no sau khi chng c to;
v chng c xa khi tt c nhng ngi s dng ang tham chiu table ngt kt ni vi
SQL Server.
V d:
CREATE TABLE ##MyGlocalTempTable
(
ID
INT PRIMARY KEY,
ColA VARCHAR(30) NULL,
ColB VARCHAR(30) NULL,
ColC VARCHAR(30) NULL
)

Trng H Cong Nghiep TP HCM

Khoa Cong Nghe Thong Tin

BI 6:
TON VN D LIU
6.1
Gii thiu ton vn d liu (data Integrity)
Ton vn d liu l cp n trng thi ca tt c cc gi tr d liu lu tr trong CSDL
l ng. Nu d liu khng ng m c lu tr trong CSDL th c gi l vi phm
ton vn d liu.
Cc bng trong CSDL ca SQL Server c mt s loi ton vn d liu khc nhau. V d
nh ngha NOT NULL, nh ngha DEFAULT, thuc tnh IDENTITY, CONSTRAINTS,
RULES, TRIGGERS, INDEXES.
Xc nh ng kiu d liu ca ct hoc bin cng l mt cch thc p tnh ton vn d
liu. V d bn khng th chp nht gi tr ca ct CustomName l mt gi tr dng ngy
gi cng nh ngc li. to hoc thm cc p tha ton vn d liu, chng ta c th
thc hin trong cc cu lnh.
nh ngha rng buc:
Create Table : nh ngha trong lc thit k cu trc bng.
Alter Table : nh ngha trong khi hiu chnh bng.
kim tra hoc xem cc ton vn d liu
Sp_HelpConstraint <Tn Table>

Hoc
Bt ca s Object Browser ca Query Analyzer, m nhnh Constraint
ca tng bng.
Xa cc ton vn d liu
ALTER TABLE <Tn Table>
DROP CONSTRAINT <Tn Constraint>

6.2

Tm hiu cc ton vn d liu.


6.2.1 nh ngha NULL/NOT NULL
Mt gi tr khng bit, cha xc nh chng ta quy l gi tr NULL. Kh nng null
ca mt ct c xem l kh nng ca ct chp nhn hoc khng chp nhn gi tr
null.

Bn c th nh ngha gi tr ca mt ct khng l null.

Mt gi tr null khng ng nht vi gi tr 0, khong trng, chui rng.

Null c ngha l khng c thao tc nhp no thc hin c.

S tn ti ca Null thng cho bit rng gi tr cha c bit r hay cha xc


nh. Chng hn, mt gi tr Null trong ct price ca bng Items khng c ngha l
mt hng ny khng c gi hoc l gi bng 0.
Ni chung, hy trnh chp nhn gi tr Null bi v chng gy ra nhiu phc tp hn
trong cc truy vn cng nh cp nht d liu. Vic ch nh mt ct khng chp nhn
gi tr Null c th gip duy tr tnh ton vn d liu.
Thng thng khai bo mt ct c th chp nhn gi tr null, chng ta s khi bo
trong khi nh ngha hoc hiu chnh ct. Tc l dng trong cu lnh Create
Table/Alter Table.

Trng H Cong Nghiep TP HCM

Khoa Cong Nghe Thong Tin

V d:
USE SalesDb
GO
DROP TABLE Product_Info
GO
CREATE TABLE Product_Info
(
Product_ID
smallint NOT NULL,
Product_Name
char(20) NOT NULL,
Description
char(30) NULL,
Price
smallmoney NOT NULL
)
GO
6.2.2 Gi tr mc nh (Default Values)
Trong s cc c tnh ca ct, chng ta xt thy gi tr c th null v gi tr mc nh.
C hai c tnh ny nh ra gi tr chn vo mt ct khi n khng c ch nh trong
cu lnh INSERT. Cc trng hp ny c th xy ra khi gi tr ct khng c a
vo trong cu lnh INSERT:
- Khi ct c nh ngha nh l chp nhn gi tr NULL v khng c gi tr
mc nh, gi tr ca ct l NULL.
- Khi ct c nh ngha khng chp nhn gi tr NULL v khng c gi tr
mc nh, mt li s xy ra.
- Khi ct c mt gi tr mc nh
Nh vy, mi mt ct trong mt mu tin ca bng u phi cha mt gi tr, ngay c
khi gi tr l NULL. C nhng trng hp bn cn phi ti mt hng d liu vo
mt bng nhng bn khng bit gi tr dnh cho ct hay gi tr ny khng tn ti. Nu
ct chp nhn cc gi tr Null, bn c th ti hng c gi tr Null. Thng thng, cc
ct chp nhn gi tr Null c th khng phi l cc ct cn thit nn gii php tt hn
ht l n nh mt gi tr mc nhin (khng nhp gi tr vo th ct s chp nhn gi tr
mc nh). Vic chnh l nh ngha DEFAULT cho ct nhng ni thch hp.
Chng hn, ngi ta thng ch nh 0 l gi tr mc nh cho cc ct s, hoc N/A l
gi tr mc nh cho cc ct chui khi khng c gi tr no c ch nh).
Khi bn nhp vo mt mu tin ca bng c mt nh ngha Default dnh cho mt ct
bn ang gin tip hng dn SQL Server nhp mt gi tr mc nh trong ct khi bn
khng ch nh mt gi tr cho ct .
SQL Server 2000 c hai cch trin khai cc gi tr mc nh cho cc ct: Default
Constraint v Default Object.
2.2.a.1 Default Constraint
Default constraint c th c to ti thi im to bng, thm sau khi bng c
to.

Gi tr Default c dng gn gi tr hng s cho mt ct.

Ch c mt gi tr Default c th c to cho mt ct.

Trng H Cong Nghiep TP HCM

Khoa Cong Nghe Thong Tin

Cc ct TIMESTAMP, IDENTITY v ROWGUIDCOL khng th c default


constraint, v gi tr ca chnh t ng xc nh.

Gi tr default c th l mt hng s; mt hm h thng, chng hn Getdate();


mt bin ton cc, nh @@trancount; hoc mt hm do ngi dng nh
ngha.
Khai bo default constraint

nh ngha Default constraing trong khi to bng


CREATE TABLE tablename(
columnname datatype [NULL | NOT NULL]
[CONSTRAINT constraintname] DEFAULT expression
[,...])

nh ngha Default constraint i vi mt bng tn ti.


ALTER TABLE tablename
ADD [ CONSTRAINT constraintname ] DEFAULT expression FOR columnname

V d 1: To bng Events vi cc default constraint


CREATE TABLE Events
( EventID int IDENTITY (1, 1) NOT NULL ,
EventType nvarchar (10) NOT NULL,
EventTitle nvarchar (100) NULL ,
EventDescription ntext NULL ,
EventLanguage nvarchar (2) NULL ,
EventDate smalldatetime NULL DEFAULT GETDATE(),
EventEndDate smalldatetime NULL DEFAULT DATEADD(day,
1,
GETDATE()), EventCreator nvarchar (50) NOT NULL
DEFAULT SYSTEM_USER
)
V d 2:

To bng Events khng c default constraint


CREATE TABLE Events
( EventID int IDENTITY (1, 1) NOT NULL,
EventType nvarchar (10) NOT NULL,
EventTitle nvarchar (100) NULL,
EventDescription ntext NULL,
EventLanguage nvarchar (2) NULL,
EventDate smalldatetime NULL,
EventEndDate smalldatetime NULL,

Trng H Cong Nghiep TP HCM

Khoa Cong Nghe Thong Tin

EventCreator nvarchar (50) NOT NULL


)

Thm cc default constraint cho bng Events


ALTER TABLE Events
ADD DEFAULT Party FOR EventType
--------ALTER TABLE Events
ADD CONSTRAINT EVentDate_DF DEFAULT GETDATE() FOR
EventDate

Kim tra constraint


Sp_helpConstraint
Events
--- chn mt mu tin trng vo bng Events
INSERT Events DEFAULT VALUES
SELECT * FROM Events
Kt qu

Xo default constraint
ALTER TABLE Events
DROP CONSTRAINT DF__Events__EventTyp__7E6CC920
ALTER TABLE Events
DROP CONSTRAINT EVentDate_DF
2.2.a.2 Default Object
Default object l mt cch khc nh ngha mt gi tr mc nh cho mt ct. Cc
Default Object c gi l default c u tin trong phin bn 2000 ca SQL Server.
Cc Default khng l mt phn ca ton vn khai bo bi v chng khng l mt ca cu
trc bng; chng thc s l mt phn ca lc CSDL.
Qu trnh khai bo mt Default nh sau:
- nh ngha Default.
- Kt Default vo ct ca bng hoc kiu d liu.
- Nu mun dng Default th s g b khi ct hoc kiu d liu.
- Khng cn Default na th xo khi CSDL
nh ngha default
CREATE DEFAULT default AS constant_expression

Trng H Cong Nghiep TP HCM

Khoa Cong Nghe Thong Tin

Kt nh default vi ct:
sp_binddefault defaultname, tablename.columnname

Kt nh default vi user-defined datatype


sp_binddefault defaultname, datatypename [, futureonly]

Futureonly ch nh rng cc ct tn ti c lin quan n kiu d liu s khng


k tha gi tr mc nh mi. C ny ch c th dng kkhi kt gi tr mc nh cho
kiu d liu.
V d:
CREATE DEFAULT CalifDef AS CA
GO
sp_bindefault CalifDef, Orders.ShipRegion
G b kt nh mt deault vi ct
sp_unbindefault tablename.columnname

G b kt nh mt deault vi User-defined datatype


sp_unbindefault datatypename [, futureonly]

Xa mt Default
DROP DEFAULT defaultname

Lu : Ch xa c nhng Defaut khng c kt vi ct hoc kiu d liu.


6.2.3

Thuc tnh Identity:

Identity l mt thuc tnh ca ct, n khng l mt constraint. Tuy nhin,


Identity dng rng buc s tn ti d liu.

Mt bng ch c duy nht mt ct kiu Identity.

Kiu d liu ca ct Identity phi l bigint, int, smallint, hoc tinyint.

Gi tr ca ct Identity s t ng tng.
Mt ct Identity c to khi bng c to bng lnh Create Table, hoc khi hiu
chnh ct trong bng bng lnh Alter table.
V d:
CREATE TABLE Table1
( ID INT IDENTITY,
FirstName VARCHAR(30) NOT NULL,
LastName VARCHAR(30)
NOT NULL
)
GO
---Chn d liu vo Table1, khng cn a gi tr
cho ct ID
INSERT Table1 (FirstName, LastName)
VALUES (Minh, Thu)

Trng H Cong Nghiep TP HCM

Khoa Cong Nghe Thong Tin

Tuy nhin, i khi bn cn ch nh gi tr cho ct c nh ngha Identity, bn thc


hin tun t cc bc sau: Bt ch chn d liu cho ct Identity cho bng, chn
d liu, tt ch chn cho ct Identity nu cn.
V d:
SET IDENTITY_INSERT Table1 ON
INSERT Table1 (ID, FirstName, LastName) VALUES
(99, 'Thuy',Tien)
SELECT * FROM Table1
6.2.4 Check
Kiu d liu v gi tr default p tha rng buc min gi tr. Cc Check gii hn cc
gi tr c th a vo ct. Chng s xc nh cc gi tr no l hp l.

Mt ct c th c nhiu hn mt check constraint, chng c lng gi theo th


t c to.

Cc check constraint gii hn cc gi tr c php bng cch nh ngha:


- Mt vng hoc nhiu vng cc gi tr c th chp nhn c.
- Danh sch cc gi tr.
- Mt mu nh trc.
Bn c th qui nh nhiu constraint check cho mt ct n, chng c lng gi
theo th t c to.

2.4.a.1 Check Constraint


Check Constraint l mt ca nh ngha bng. Chng c th c nh ngha trong
khi to bng, hiu chnh bng, v c th xa bt k lc no. Chng c th c v
hiu ho (disabled) hoc lm c hiu lc (enabled) khi cn. Mt ct c th c
nhiu hn mt check constraint. Chng c lng gi theo th t c to.
Check constraint:
Lng gi thnh mt biu thc logic, nh l biu thc ca mnh
WHERE.
C th tham chiu n cc ct khc trong cng mt bng.

nh ngha Check Constraint khi to bng


- nh ngha mc ct
CREATE TABLE tablename (columname datatype [ CONSTRAINT constraintname ]
CHECK [NOT FOR REPLICATION] (logical_expression)

nh ngha mc bng
CREATE TABLE tablename (columname datatype [,...], [ CONSTRAINT
constraintname ] CHECK [NOT FOR REPLICATION] (logical_expression)

nh ngha CHECK CONSTRAINT vi bng tn ti


ALTER TABLE tablename
[ WITH CHECK | WITH NOCHECK ] ADD

Trng H Cong Nghiep TP HCM

Khoa Cong Nghe Thong Tin

[ CONSTRAINT constraintname ]
CHECK [NOT FOR REPLICATION] (logical_expression)

V d:
ALTER TABLE Chucvu
ADD CONSTRAINT NV_HSPC_Chk CHECK
(HSPC>=0.1 AND HSPC<0.5)
2.4.a.2 RULE
Rule l mt tnh nng tng thch ngc nh ngha cc qui tc hp l m c
th kt buc vo cc ct ca bng hoc cc kiu d liu do ngi dng nh ngha.
Ging nh i tng Default, Rule c to trn chnh n trc khi c kt
buc vo i tng khc. to mt Rule, ta s dng lnh CREATE RULE.
Mt ct ch c th c mt Rule c kt buc, bn c th kt buc mt Rule vi
ct c nh ngha Check Constraint. C hai u c gi tr nhng s u tin
Check Constraint.
nh ngha Rule
CREATE RULE rulename AS condition_expression

Kt buc Rule vo mt ct
sp_bindrule rulename, tablename.columnname

Kt buc Rule vo user-defined datatype


sp_bindrule rulename, datatypename [, futureonly]

Futureonly ch nh rng cc ct tn ti sn m c dng kiu d liu ny th


khng k tha rule mi. C ny ch s dng khi kt Rule vi kiu d liu, i vi
ct th khng.
V d: To mt rule kim tra ngy v kt n vo ct OrderDate cho bng Orders
CREATE RULE ActiveDate AS
@Date BETWEEN 01/01/70 AND GETDATE()
AS
sp_bindrule ActiveDate, Orders.OrderDate
Cc biu thc dng trong Rule ging cc nguyn tc nh cc iu kin ca check
costraint v cng tng t biu thc trong mnh Where, ngoi bn khng th
tham chiu n cc ct CDSL khc trong cc Rule. Nu bn so snh c php ca
lnh Check v biu thc rule, hai s khc bit chnh l:
- Biu thc Rule dng mt bin (bt u vi mt k hiu @) m s c
thay th bi gi tr ct khi c nh vo ct.
- Mt biu thc Rule khng th tham chiu n cc ct ca bng.

Trng H Cong Nghiep TP HCM

Khoa Cong Nghe Thong Tin

im th hai l hnh vi khc bit ln nht gia Check constraint v cc Rule:


Rule ch tng tng vi Check constraint mc ct.
6.2.5 Primary key Constraint
Mt bng thng c mt hay nhiu ct vi cc gi tr ring nhn bit mi hng
trong bng. Cc ct ny c gi l kha chnh (Primary key) ca bng v bo m
tnh ton vn thc th ca bng.

SQL Server t ng to mt ch mc cho bng ng vi cc ct tham gia


primary key constraint.

Mt bng ch c mt constraint Primay key.

Mt ct nm trong constraint Primay key khng th chp nhn gi tr Null,


trng lp. Bi v Primay key constraint bo m tnh duy nht ca d liu nn
chng thng c n nh cho ct nhn dng (identity column).

Nu mt Primay key constraint c n nh trn nhiu ct, cc gi tr c th


c lp li trong mt ct, nhng mi s kt hp gi tr t tt c cc ct trong
Primay key constraint phi l s kt hp duy nht.
To Primary Key Constraint
C th to constraint Primay key trong khi to table hoc thm constraint Primay key cho
table c sn
hiu chnh constraint Primay key ca mt table th bn phi xa constraint Primay key
v to li.

nh ngha Primary Key Constraint khi to bng:


- nh ngha mc ct
CREATE TABLE tablename
(columname datatype [ CONSTRAINT constraintname ]
PRIMARY KEY [ CLUSTERED | NONCLUSTERED ]
[ WITH FILLFACTOR = fillfactor ]
[ON {filegroup | DEFAULT} ] [,...]

nh ngha mc bng
CREATE TABLE tablename
(columname datatype [,...], [CONSTRAINT constraintname ]
PRIMARY KEY [ CLUSTERED | NONCLUSTERED ]
{ ( column [ ASC | DESC ] [ ,...n ] ) }
[ WITH FILLFACTOR = fillfactor ]
[ ON { filegroup | DEFAULT } ]

V d 1: Va to bng va nh ngha Primary Key Constraint


Cch 1: nh ngha mc ct
CREATE TABLE Table1
(col1 INT NOT NULL PRIMARY KEY,

Trng H Cong Nghiep TP HCM

Khoa Cong Nghe Thong Tin

col2 VARCHAR(30)
)
-- Kim tra constraint
EXEC Sp_helpconstraint Table1
Cch 2: nh ngha mc bng
CREATE TABLE Table2
(col1 INT NOT NULL,
col2 VARCHAR(30)
CONSTRAINT Table2_PK PRIMARY KEY(col1)
)
EXEC Sp_helpconstraint Table1

nh ngha Primary Key Constraint vi bng tn ti:


- nh ngha mc ct
ALTER TABLE tablename ADD columname datatype
[CONSTRAINT constraintname ] PRIMARY KEY
[ON {filegroup | DEFAULT} ] [,...]

nh ngha mc bng
ALTER TABLE tablename ADD[CONSTRAINT constraintname]
PRIMARY KEY { ( column [ ASC | DESC ] [ ,...n ] ) }
[ ON { filegroup | DEFAULT } ]

V d 2: Thm mt PRIMARY KEY constraint cho mt bng c sn


CREATE TABLE Table3
( col1 INT NOT NULL,
col2 VARCHAR(30)
)
ALTER TABLE Table3
ADD CONSTRAINT table3_PK PRIMARY KEY (col1)
EXEC Sp_helpconstraint Table3
Lu : Khi mt Primary Key Constraint c thm vo mt bng vi ct c sn
trong bng th SQL Server s kim tra d liu hin c c tun theo cc qui tc ca
mt Primary key hay khng: Khng Null, Khng trng lp. Nu khng tha qui
tc th s khng to c Primary Key Constraint.
Xa mt Primary Key Constraint

Trng H Cong Nghiep TP HCM

Khoa Cong Nghe Thong Tin

ALTER TABLE Table2


DROP CONSTRAINT table2_PK
Lu : Khng th xa mt Primary Key constraint nu n c tham chiu bi mt
Foreign key Constraint ca mt bng khc, mun xa th phi xa Foreign key
Constraint trc.
6.2.6 Unique Constraints
Unique Constraints dng m bo khng c gi tr trng cc ct. Mc d
c Unique constraint v Primary key constraint u tun theo tnh duy nht,
nhng hy s dng Unique contarint khi bn mun bo m tnh duy nht ca:

Mt ct, hay s kt hp gia cc ct, vn khng phi l kha chnh.

Mt ct chp nhn gi tr null, trong khi constraint primary key khng


th n nh trn ct ny.

Mt bng c th c nhiu Unique constraint.


nh ngha Unique Constraint:

nh ngha UNIQUE CONSTRAINT khi to bng


- nh ngha mc ct
CREATE TABLE tablename (columname datatype
[ CONSTRAINT constraintname ] UNIQUE [ CLUSTERED | NONCLUSTERED ]
[ON {filegroup | DEFAULT} ] [,...]

nh ngha mc bng
CREATE TABLE tablename
(columname datatype [,...], [ CONSTRAINT constraintname ]
UNIQUE [ CLUSTERED | NONCLUSTERED ]
{ ( column [ ASC | DESC ] [ ,...n ] ) }
[ ON { filegroup | DEFAULT } ] )

nh ngha UNIQUE CONSTRAINT vi bng tn ti


- nh ngha mc ct
ALTER TABLE tablename
ADD columname datatype [ CONSTRAINT constraintname ]
UNIQUE [ CLUSTERED | NONCLUSTERED ]
[ON {filegroup | DEFAULT} ] [,...]

nh ngha mc bng
ALTER TABLE tablename
ADD [ CONSTRAINT constraintname ]
UNIQUE [ CLUSTERED | NONCLUSTERED ]
{ ( column [ ASC | DESC ] [ ,...n ] ) }

Trng H Cong Nghiep TP HCM

Khoa Cong Nghe Thong Tin

[ ON { filegroup | DEFAULT } ]

V d
:
ALTER TABLE Nhanvien
ADD Scmnd CHAR(15) CONSTRAINT NV_CMND_UNIQUE
UNIQUE
6.2.7 Foreign Key Constraint
Mt kha ngoi (Foreign key) l mt ct hay s kt hp ca nhiu ct c thit lp
v tun theo mt lin kt gia cc d liu trong hai bng. Mt lin kt c to ra
gia hai bng bng cch b sung mt hay nhiu ct c cha gi tr kha primay key
ca mt bng vo mt bng khc. Cc ct ny tr thnh kha ngoi ca bng th hai.
Ta c th quy nh kha ngoi bng cc n nh mt constraint Foreign key khi bn
to hay thay i mt bng.
Mt constraint Foreign key khng bt buc phi lin kt vi ch mt constraint
Foreign key trong mt bng khc, n cng c th c n nh tham chiu cc ct
ca mt constraint Foreign Unique trong mt bng khc.
Mc d mc ch chnh ca mt constraint Foreign key l iu khin d liu c th
c cha trong bng kha ngoi, nhng n cng iu khin cc thay i i vi
bng kha chnh. Chng hn, nu mt mu tin phng ban b xa ra khi bng
Phongban, v m phng ban c s dng cho cc nhn vin trong bng NhanVien,
tnh ton vn trong mi quan h gia hai bng ny s b ph v. Cc dng nhn vin
c m phng ban b xa s nm m ci trong bng NhanVien m khng c lin kt
vi d liu trong bng PhongBan.
Mt constraint Foreign key s ngn chn tnh trng m ci d liu. Constraint Foreign
key s bo m khng cho php bn xa d liu trong bn chnh nu cc d liu ny
c s lin kt vi d liu trong bng kha ngoi.

nh ngha FOREIGN KEY CONSTRAINT khi to bng


- nh ngha mc ct
CREATE TABLE tablename
(columname datatype [ CONSTRAINT constraintname ]
[ FOREIGN KEY ] REFERENCES ref_table [ ( ref_column ) ]
[ ON DELETE { CASCADE | NO ACTION } ]
[ ON UPDATE { CASCADE | NO ACTION } ]
[ NOT FOR REPLICATION ] [,...]

nh ngha mc bng
CREATE TABLE tablename
(columname datatype [,...],
[ CONSTRAINT constraintname ]
FOREIGN KEY [ ( column [ ,...n ] ) ]

Trng H Cong Nghiep TP HCM

Khoa Cong Nghe Thong Tin

REFERENCES ref_table [ ( ref_column [ ,...n ])]


[ ON DELETE { CASCADE | NO ACTION } ]
[ ON UPDATE { CASCADE | NO ACTION } ]
[ NOT FOR REPLICATION ]

V d:
CREATE TABLE PhongBan
( MaPb INT,
TenPb VARCHAR(30)
CONSTRAINT Pb_Pk (MaPb) PRIMARY KEY(MaPb)
)
GO
CREATE TABLE NhanVien
( MaNv INT,
TenNV VARCHAR(30),
MaPB int,
MaCv int
CONSTRAINT Nv_Pk PRIMARY KEY(MaNv)
CONSTRAINT Nv_Fk FOREIGN KEY (MaPb) REFERENCES
PhongBan(MaPb)
)
GO
-- Xem cc constraint
SP_HELPCONSTRAINT NHANVIEN
GO

nh ngha Foreign Key Constraint vi bng tn ti:


ALTER TABLE tablename
[ WITH CHECK | WITH NOCHECK ] ADD
[ CONSTRAINT constraintname ]
FOREIGN KEY [ ( column [ ,...n ] ) ]
REFERENCES ref_table [( ref_column[ ,...n ] )]
[ ON DELETE { CASCADE | NO ACTION } ]
[ ON UPDATE { CASCADE | NO ACTION } ]
[ NOT FOR REPLICATION ]

Trong :
WITH CHECK: trc kho to rng buc, SQL Server s kim tra d liu hin c
c vi phm rng buc hay khng, nu c s khng to constraint.
WITH NOCHECK: To Constraint m khng cn kim tra d liu
hin c c vi phm rng buc hay khng

Trng H Cong Nghiep TP HCM

Khoa Cong Nghe Thong Tin

V d:
CREATE TABLE ChucVu
( MaCv INT PRIMARY KEY,
TenCv VARCHAR(30),
HSPC Real
)
GO
ALTER TABLE Nhanvien
ADD CONSTRAINT Nv_Cv_Pk FOREIGN KEY (Macv) REFERENCES
ChucVu(MaCv)
Lu :
ON DELETE CASCADE| NO ACTION
ON UPDATE CASCADE| NO ACTION

Trng H Cong Nghiep TP HCM

Khoa Cong Nghe Thong Tin

BI 7:
TRUY XUT C S D LIU CA SQL SERVER
Mc ch chnh ca CSDL trong SQL Server l lu tr d liu sao cho d liu d dng
c khai thc bi ngi s dng. Bn cng c th truy cp d liu thng qua mt ng
dng hoc cc trnh tin ch gi yu cu nhp d liu hoc hiu chnh d liu n SQL
Server. Nhm mc ch tm hiu ta dng SQL Query Analyzer nh l mt cng c chnh
truy xut v hiu chnh d liu trong mt CSDL ca SQL Server.
7.1
Cu lnh SELECT
Cu lnh Select c s dng mt cch thng xuyn v l cch c bn truy vn d
liu.
SELECT [ALL | DISTINCT] [TOP n [WITH TIES]]select_list
[ INTO new_table ]
FROM table_source
[ WHERE search_condition ]
[ GROUP BY group_by_expression ]
[ HAVING search_condition ]
[ ORDER BY order_expression [ ASC | DESC ] ]

Products(ProductID,ProductName, SupplierID, CategoryID, UnitPrice, )


Customers(CustomerID, CompanyName, Address, City, Region, Country, )
Employees(EmployeeID, LastName, FirstName, BirthDate, City, )
Orders(OderID, CustomerID, EmployeeID, OrderDate,)
Order Details(OrderID, ProductID, UnitPrice, Quantity, Discount)
Mnh SELECT
USE NorthWind
SELECT * FROM Products
SELECT ProductID, ProductName, UnitPrice
FROM Products
WHERE UnitPrice >40
ORDER BY UnitPrice DESC
T kha DISTINCT: Loi b cc mu tin trng trong tp kt qu.
SELECT DISTINCT City, Region
FROM Customers
ORDER BY Region
T kha TOP n : Ly ra n mu tin u tin
-- Ch ly ng 5 mu tin u tin c s lng bn cao nht.
SELECT TOP 5 orderid, productid, quantity
FROM [order details]
ORDER BY quantity DESC

Trng H Cong Nghiep TP HCM

Khoa Cong Nghe Thong Tin

--- WITH TIES c ngha l cc mu tin ngang bng gi tr


trong ct ORDER BY c lit k.
SELECT TOP 5 WITH TIES orderid, productid, quantity
FROM [order details]
ORDER BY quantity DESC
T kha AS: t b danh cho bng, ct
SELECT p.Productid, p.Productname
FROM Products As p
Mnh SELECT INTO: Sinh thm mt bng mi m d liu c ly t cc bng
khc.
SELECT FirstName, LastName
INTO EmployeeNames
FROM Northwind.dbo.Employees
Dng vi cc hm SUM, MAX, MIN, AVG, COUNT
--AVG
USE Northwind
SELECT AVG(UnitPrice)
FROM dbo.Products
-- SUM
SELECT SUM(Quantity)
FROM dbo.[Order Details]
--- Phn bit Count va Count(*); Count(*) m tt c
cc mu tin c trong bng
SELECT COUNT(*)
FROM dbo.Employees
--- Count(Reportsto) m tt c cc gi tr c trong
ct ReportTo, nu gi tr ca Reportsto l NULL th SQL
Server s b qua khng m
USE Northwind
SELECT COUNT(ReportsTo)
FROM dbo.Employees
Mnh WHERE, GROUP BY, v HAVING: Where v Having dng lc d liu
trong cu Select. Select vi Where. Lc d liu tha iu kin. Cc php ton c th
dng trong where: >, >=, <, <=, =, AND, OR, BETWEEN AND, !=, IS NULL,
NOT IS NULL
Cho bit danh sch cc mt hng bn trong ha n s 2
SELECT OrderID, Quantity
FROM Orderhist
WHERE OrderID=2

Trng H Cong Nghiep TP HCM

Khoa Cong Nghe Thong Tin

Select vi Group by: Kt nhm


Cho bit tng lng hng bn ng vi mi ProductId
SELECT productID,SUM(quantity) AS Total_quantity
FROM [Order details]
GROUP BY productID
Cho bit tng lng hng bn ng vi ProductId=2
SELECT ProductID, SUM(Quantity) AS Total_quantity
FROM [Order Details]
WHERE ProductID=2
GROUP BY productID
Cho bit danh sch cc m hng c tng s lng >=30
SELECT ProductID,SUM(Quantity) AS Total_quantity
FROM [Orde details]
GROUP BY ProductID
HAVING SUM(quantity)>=30
Lu : Having gii hn kt qu do Group By sn sinh cc hm Where gii
hn trc khi Group By
Cho bit tng lng hng bn ng vi mi m nhm hng
SELECT Categoryid, SUM(Quantity) AS Total_quantity
FROM [order details] JOIN products ON [order
details].productId=products.productId
GROUP BY Categoryid
Tng s lng bn ng vi mi ha n
SELECT orderid, SUM(quantity) AS Total_quantity
FROM [order details]
GROUP BY orderid
HAVING SUM(quantity)>=250
S dng Group By vi ton t ROLLUP.
ROLL UP S chn thm cc dng Total nm trc cc nhm mu tin c phn
theo GROUP BY.
V d:
/* Tng s lng c t hng cho mi Product ng mi Order cho cc Order
c OrderID<1025

Trng H Cong Nghiep TP HCM

*/
use northwind
SELECT
productID,orderid,
Total_quantity
FROM [Order details]
WHERE orderid<10250
GROUP BY OrderId,productId
ORDER BY OrderId, productID

Khoa Cong Nghe Thong Tin

SUM(quantity)

AS

Kt qu
Khng c With Rollup
ProductID
Orderid
Total_quantity
11
10248 12
42
10248 10
72
10248 5
14
10249 9
51
10249 40

C With Rollup
ProductID
Orderid
Total_quantity
NULL NULL 76
NULL 10248 27
11
10248 12
42
10248 10
72
10248 5
NULL 10249 49
14
10249
9
51
10249
40

V d khc: Danh sch Order ng vi tng quantity ca product c m ProductID


l 8 hoc 9.
SELECT ProductID,Orderid, SUM(quantity) AS
Total_quantity
FROM [Order Details]
WHERE ProductID IN (8,9)
GROUP BY ProductID, OrderId
WITH ROLLUP
ORDER BY ProductID, OrderId
/* total quantity for: each product for each order. all
products for each order
*/
SELECT ProductID, Orderid, SUM(quantity) AS
Total_quantity
FROM [Order details]
WHERE orderid<10250
GROUP BY OrderId,productId
WITH ROLLUP
ORDER BY OrderId, productID

Trng H Cong Nghiep TP HCM

Khoa Cong Nghe Thong Tin

S dng mnh Group By vi ton t CUBE: Tng t nh Rollup nhng thm


cc dng Total ca mi s kt hp c th c gia cc ct
V d:
SELECT
ProductID,
Orderid,
SUM(quantity)
AS
Total_quantity
FROM [Order details]
WHERE orderid<10250
GROUP BY OrderId,productId
WITH CUBE
ORDER BY OrderId, productID
Kt qu
NULL NULL 76
11
NULL 12
14
NULL 9
42
NULL 10
51
NULL 40
72
NULL 5
NULL 10248 27
11
10248 12
42
10248 10
72
10248 5
NULL 10249 49
14
10249 9
51
10249 40
V d khc:
SELECT ProductID, Orderid, SUM(quantity) AS
Total_quantity
FROM [Order Details]
GROUP BY OrderId, ProductId
WITH CUBE
ORDER BY ProductID, OrderId
Dng hm GROUPING: Hm Grouping s tr v mt gi tr l 0 hoc 1 xc nh
dng kt qu l dng tng (1) hay l dng chi tit (0)
V d:
SELECT ProductID, grouping(productID)as a, Orderid,
grouping(orderid) as b,SUM(quantity) AS Total_quantity
FROM [Order details]
WHERE orderid<10250

Khoa Cong Nghe Thong Tin

Trng H Cong Nghiep TP HCM

GROUP BY OrderId,productId
WITH CUBE
ORDER BY OrderId, productID
ProductID
NULL 1
11
0
14
0
42
0
51
0
72
0
NULL 1
11
0
42
0
72
0
NULL 1
14
0
51
0

a
NULL
NULL
NULL
NULL
NULL
NULL
10248
10248
10248
10248
10249
10249
10249

Orderid
1
76
1
12
1
9
1
10
1
40
1
5
0
27
0
12
0
10
0
5
0
49
0
9
0
40

Total_quantity

Dng ton t COMPUTE v COMPUTE BY: Thng thng dng kim tra s
liu, dng km vi cc hm thng k SUM, AVG, MAX, MIN. COMPUTE BY
:c kt nhm
SELECT productID,orderid, quantity
FROM [Order Details]
ORDER BY productID,OrderId
COMPUTE SUM(quantity)
SELECT productID,orderid, quantity
FROM [Order Details]
ORDER BY productID,OrderId
COMPUTE SUM(quantity) BY productid
COMPUTE SUM(quantity)
7.2
S dng JOINS truy xut d liu
Bng JOIN, chng ta c th ly d liu t hai hoc nhiu bng da trn mi quan h gia
cc bng. Tuy nhin nu ta khng thch dng Join ly d liu th bn cng c th vit
cc cu truy vn bng dng truy vn con (Subqueries). Dng Joins th tc thc hin
ca cu truy nhanh hn SubQueries nhng li kh hiu hn. Trong mt truy vn tham
chiu n nhiu table, th tt c cc ct phi c ch r mt cc tng minh l ct ly
t table no.

Trng H Cong Nghiep TP HCM

Khoa Cong Nghe Thong Tin

Thng thng th iu kin kt ni l dng php so snh bng, nhng trong SQL Server
ta c th nh ngha mi quan h gia trn cc ton t khc nh <>, >, >=, <, <=
Cc ct c dng kt ni khng nht thit phi cng tn hay cng kiu d liu. Nu
kiu d liu khc nhau th c th dng cc hm chuyn i kiu d liu.
Gm hai loi Joins chnh: INNER JOINS v OUTER JOINS. Tuynhin ta cn c th to
mt dng Join khc nh CROSS-JOINS v SELF-JOINS.
Inner Joins: Lin kt Inner Joins ch tr v nhng mu tin u hin hu c hai bng
quan h v phi tha mn iu kin kt.
V d:
SELECT
Em.EmployeeID,LastName+
'
'+FirstName
AS
EmployeeName,
COUNT(OrderID) AS TotalOrders
FROM Employees AS Em INNER JOIN Orders AS O ON
Em.EmployeeID=O.EmployeeID
WHERE MONTH(OrderDate)=8 AND YEAR(Orderdate)=1996
GROUP BY Em.EmployeeID,LastName+ ' '+FirstName
ORDER BY Em.EmployeeID
iu kin kt nm mnh Where
SELECT P.ProductID, S.SupplierID, S.CompanyName
FROM Suppliers AS S, Products AS P
WHERE S.SupplierID = P.SupplierID
AND P.UnitPrice > $10
AND S.CompanyName LIKE N'F%'
iu kin kt nm mnh From
SELECT P.ProductID, S.SupplierID, S.CompanyName
FROM Suppliers AS S JOIN Products AS P
ON (S.SupplierID = P.SupplierID)
WHERE P.UnitPrice > $10
AND S.CompanyName LIKE N'F%'
Outer Joins: tr v tt c nhng mu tin nm t nht mt bng no trong cc bng
tham gia kt ni v cng phi tho iu kin kt. Outer Joins cung cp 3 kiu outer Join:
Left, Right, v Full. Tr v tt c cc dng t bng bn tri m c tham chiu t Left
Outer Joins. Tr v tt c cc dng t bng bn phi m c tham chiu t Right Outer
Joins. Tr v tt c cc dng t c 2 bng m c tham chiu t Full Outer Joins.
V d : Dng cu truy vn sau v ln lt thay i kiu Join (Inner, Left, Right, Full), cho
thi hnh v cho nhn xt kt qu ca cu truy vn. T rt ra kt lun
SELECT O.OrderID, O.CustomerID, c.ContactName, C.City

Trng H Cong Nghiep TP HCM

Khoa Cong Nghe Thong Tin

FROM Orders O LEFT JOIN Customers C


ON O.CustomerID = C.CustomerID AND
O.ShipCity=C.City
ORDER BY O.OrderID
Cross Jions: Mi dng trong tt c cc dng ca bng bn tri s kt hp vi tt c cc
dng ca bng bn phi. Gi s X, Y l s dng ca bng bn tri v bn phi, th tp kt
qu sau khi Cross Join c X*Y dng.
Sefl Joins: T lin kt
7.3
Dng Sub-Queries
Subqueries l mt cu lnh Select m n tr v mt gi tr n hoc mt tp cc gi tr v
n c nm trong cc cu lnh nh Select, Insert, Update, or Delete. Mt SubQuery c
th c dng bt k ni no trong biu thc c cho php. Mt SubQuery cng c
gi trong mt truy vn khc, hoc mt cu lnh select c subquery cgn c th c gi
t mt cu Select khc (32 cp).
Ngt cu lnh phc tp thnh nhng on truy vn n gin.
Tr li mt truy vn t mt truy vn khc.
Cc Sub Query hu nh c th vit bng Join v SQL Server lun lun thi hnh
nhng cu lnh Join nhanh hn SubQueries.
Khng th dng SubQueries trn ct hnh nh.
/* SELECT statement built using a subquery. */
Lc ra nhng Product Name c UnitPrice bng vi Unitprice ca
ProductName l 'Sir Rodney''s Scones'
SELECT ProductName
FROM Products
WHERE UnitPrice =
(SELECT UnitPrice
FROM Products
WHERE ProductName = 'Sir Rodney''s Scones')

/* SELECT statement built using a join that returns the


same result set. */
SELECT ProductName
FROM Products AS Prd1
JOIN Products AS Prd2
ON (Prd1.UnitPrice = Prd2.UnitPrice)
WHERE Prd2.ProductName = 'Sir Rodney''s Scones'
Dng t kha IN trong subquery.
Lc ra nhng OrderId, EmployeeId do nhng Employee City Seattle Order.
SELECT OrderId, EmployeeID AS EmpID

Khoa Cong Nghe Thong Tin

Trng H Cong Nghiep TP HCM

FROM Orders
WHERE EmployeeID

IN (
SELECT EmployeeId
FROM Employees
WHERE City='Seattle'
)

ORDER BY OrderID
Dng cc ton t so snh trong Subquery: Cc ton t bao gm =, >, >=, <, <=, <>,
>=ALL, > ANY, .
Lc ra nhng OrderId, ProductId, UnitPrice m c Unitprice ln hn nh
Unitprice c bn bi EmployeeID=5
SELECT OrderId, [Order Details].ProductId, [Order
Details].UnitPrice
FROM [Order Details]
WHERE Unitprice > ALL ( SELECT [Order
Details].UnitPrice
FROM [Order Details] JOIN Orders
ON [Order Details].OrderId=
Orders.OrderId
where Orders.EmployeeID=5
)
ORDER BY [Order Details].UnitPrice,OrderID)
ORDER BY UnitPrice.OrderID
Dng t kha EXISTS, NO EXISTS trong subquery:
Lc ra nhng OrderId ng vi cc CustomerId m nhng Customer ny London
City.
SELECT OrderId, CustomerId
FROM Orders
WHERE EXISTS ( SELECT * FROM Customers
WHERE
Customers.CustomerId=Orders.CustomerId
AND City='LonDon'
)
ORDER BY OrderID
7.4

Hiu chnh d liu trong c s d liu ca SQL SERVER


7.4.1 Chn (INSERT) d liu vo CSDL.

Trng H Cong Nghiep TP HCM

Khoa Cong Nghe Thong Tin

Cu lnh Insert c dng thm mt hoc nhiu dng d liu vo bng hoc mt
View. Mt s lu :
C gng chn d liu ng kiu d liu ca ct, trnh a gi tr Null vo ct
khng chp nhn gi tr Null.
Tun th ng cc ton vn d liu, by li.
Ch nh mt danh sch cc gi tr (values) ng vi danh sch cc ct, nu khng
ch nh th insert s theo th t cu trc ca table.
Ct c thuc tnh Identity th khng cn ch nh gi tr. Nu ct c nh ngha
Default v chng ta chp nhn gi tr default th ta c th b qua vic ch nh gi
tr ca ct ny.
Khi chn d liu th ti mt thi im cng nh mt cu lnh ch c th chn vo
mt bng duy nht.
4.1.a.1 Chn mu tin t danh sch cc gi tr c ch nh (Insert Values)
INSERT <TableName> [(field1, field2, )] VALUES (Value1, Value2,)

CREATE TABLE NewProducts


(
ProductID INT NOT NULL,
ProductName NVARCHAR(40),
CategoryID INT NULL,
UnitPrice MONEY NULL,
SupplierID INT NULL
)
GO
INSERT NewProducts (ProductID, ProductName)
VALUES (123, 'Ice Tea')
4.1.a.2 Chn d liu bng cc gi tr t cc bng khc (Insert Select)
INSERT <TableName> [(field1, field2, )]
SELECT (Value1, Value2,)

INSERT NewProducts (ProductID, ProductName)


SELECT ProductID, ProductName
FROM Products
WHERE CategoryID=2
INSERT NewProducts (Od.ProductID, P.ProductName)
SELECT OD.ProductID, ProductName
FROM Products as P INNER JOIN [Order Details]
AS Od

Trng H Cong Nghiep TP HCM

Khoa Cong Nghe Thong Tin

ON P. ProductID = Od. ProductID


WHERE CategoryID<>2
4.1.a.3 Chn mu tin t mt stored Procedure (trnh by sau)
4.1.a.4 Xy dng mt Table bng SELECT INTO
SELECT DISTINCT C.CustomerID, C.CompanyName
INTO NewCustomers
FROM Customers AS C INNER JOIN Orders
ON C.CustomerID= orders.CustomerID
AND orders.EmployeeID=2
7.4.2 Cp nht (UPDATE) d liu vo CSDL.
SQL Server cung cp 3 phng php thay i/cp nht d liu trong mt bng c
sn. l cu lnh Update, giao din lp trnh ng dng (Application Programming
Interfaces - APIs) v dng con tr (Cursors). Trong phn bi hc ny ch trnh by cu
lnh Update.
UPDATE <table_name>
SET <column_name> = <expression>
[ FROM <table_list>]
[ WHERE <search_condition>
WHERE CURRENT OF <Variable_Cursor>

V d:
USE Northwind
UPDATE dbo.Products
SET UnitPrice=UnitPrice*1.1
GO
UPDATE [Order Details]
SET Discount=Discount+0.05
WHERE Discount<>0 AND ProductId=2
GO
UPDATE [Order Details]
SET UnitPrice=
(SELECT UnitPrice+ UnitPrice*0.2
FROM Products
WHERE = ProductId=2
)
WHERE ProductId=2
7.4.3 Xa d liu trong c s d liu.
4.3.a.1 Dng cu lnh DELETE.
Xa mt hoc nhiu dng trong mt bng hay mt truy vn.
DELETE table_or_view FROM table_sources WHERE search_condition

Trng H Cong Nghiep TP HCM

Khoa Cong Nghe Thong Tin

DELETE Orders
FROM Orders
WHERE EmployeeID IN ( SELECT EmployeeId
FROM Employees
WHERE City='Seattle'
)
4.3.a.2 Dng APIs v cursors xo d liu (trnh by sau).
4.3.a.3 Dng cu lnh TRUNCATE TABLE.

xa ton b d liu trong mt bng.

V phn chc nng, hon ton ging nh cu lnh Delete.

Nhanh hn cu lnh Delete

Khng bt cc by li (trigger)
C php:
TRUNCATE TABLE Tn Table

V d:
TRUNCATE TABLE NewProducts

Trng Cao ang Cong Nghiep 4

Khoa Cong Nghe Thong Tin

BI 8:
KHUNG NHN - VIEW
8.1
Gii thiu v View.
View l mt bng o m ni dung c nh ngha bi mt truy vn (cu Select). Ging
nh mt bng thc, mt view bao gm mt tp cc ct v cc dng d liu. Tuy nhin,
mt view khng l ni lu tr d liu. Cc dng v ct ca d liu c tham chiu t
cc bng trong mt truy vn m nh ngha View v l kt qu ng khi View c tham
chiu.
Dng view :
- Ch cho User xem nhng g cn cho xem.
- n gin ha vic truy cp d liu.
- Dng la chn nhng d liu cn thit ng vi mi user.
- Dng View Import, Export.
- Kt hp cc d liu khc nhau.
Hn ch khi nh ngha View:
- Khng bao gm cc mnh COMPUTER hoc COMPUTER BY.
- Khng bao gm t kha INTO.
- Ch c dng ORDER BY ch khi t kha TOP c dng.
- Khng th tham chiu qu 1024 ct.
- Khng th kt hp vi cu lnh T-SQL khc trong mt cng mt b lnh.
- Khng th nh ngha ch mc full text trn View.
Partitioned Views: Mt partition View kt ni theo chiu dc cc d liu phn tn t mt
tp cc bng mt hay nhiu server, cc d liu s hin ln nh th l chng c ly t
mt bng. C hai loi: Local partition view l view c tham chiu cc table v cc view
khc nm trong cng mt serever. Distributed partition view c t nht mt bng nm
server khc.
8.2

To, hiu chnh, xa View


To View
CREATE VIEW [ < database_name > . ] [ < owner > . ] view_name [ (column [,...n ]) ]
[ WITH < view_attribute > [,...n ] ]
AS
select_statement
[ WITH CHECK OPTION ]
< view_attribute > ::=
{ ENCRYPTION | SCHEMABINDING }

Gii thch
view_name: l tn ca View. Tn View phi tun th cc qui tc nh danh.
Column: Tn c dng cho ct trong view. Tn ct ch dng trong trng hp
ct c pht sinh t mt biu thc, hm, mt hng, cc ct trong cc table trng
tn. Tuy nhin tn ct cng c th c n nh trong cu lnh Select. Khng ch
nh tn ct chnh l tn cc ct trong cu lnh select
select_statement: L cu lnh select nh ngha View. N c th tham chiu
mt hoc nhiu bng hoc cc View khc vi mt cu Select phc tp.

Trng Cao ang Cong Nghiep 4

Khoa Cong Nghe Thong Tin

Lu : to mt view, bn phi c quyn dnh ring trn cc bng hoc view


tham chiu trong nh ngha view.
WITH CHECK OPTION: Bt buc tt c cc cu lnh hiu chnh d liu thc
thi da vo View phi tuyt i tn trng trit n tp tiu chun trong cu lnh
Select. Nu bn dng t kha ny, cc dng khng th c hiu chnh trong cch
m ti sao chng hin trong view. Bt k hiu chnh no m s gy ra tnh trng
thay i u b hy b, v mt li c hin ra.
WITH ENCRYPTION: M ha cu lnh Select to ra view
SCHEMABINDING: Kt view vi mt gin . Khi SCHEMABINDING c
ch nh, cu lnh Select phi ch r ch quyn ca cc bng, cc view. Cc hm
c tham chiu View hay bng tham gia trong view c to vi schema khng
th xa tr phi view b xa hoc thay i c ch ny. Cu lnh Alter Table trn
bng tham gia trong view cng b li.
V d 1: Xem danh sch cc InvoiceNo v CustNo
CREATE VIEW vwSim
AS
SELECT InvoiceNo, CustNo
From tblSim
Where InvoiceDate = Getdate()
ORDER BY InvoiceNo
Xem ni dung View
Select * From vwSim
V d 2:
CREATE VIEW vwSales
AS
Select c.CustNo,c.CustName, sim.InvoiceNo,
sim.InvoiceDate, sid.ItemNo, sid.Quatity
From TblCustomer c INNER JOIN TblSim sim
ON c.CustNo=sim.CustNo INNER JOIN TblSid sid
ON sim.InvoiceDate = sid.InvoiceDate
Xem ni dung View
Select * From vwSales
8.3

To Partition view
- Cc bng tham gia trong Partition view phi c cu trc ging nhau.
- C mt ct c check contraint, vi phm vi ca Check constraint mi bng l
khc nhau.
- To view bng cch kt cc d liu bng t kha UNION ALL
V d: Ta c 3 table tng ng dng lu tr cc khch hng 3 min Bc, Trung,
Nam c cu trc to nh sau:
Create Table KH_BAC

Trng Cao ang Cong Nghiep 4

Khoa Cong Nghe Thong Tin

(Makh int primary key,


TenKh Nchar(30),
Khuvuc Nvarchar(30) CHECK (Khuvuc='Bac bo')
)
Create Table KH_TRUNG
(Makh int primary key,
TenKh Nchar(30),
Khuvuc Nvarchar(30) CHECK (Khuvuc='Trung bo')
)
Create Table KH_NAM
(Makh int primary key,
TenKh Nchar(30),
Khuvuc Nvarchar(30) CHECK (Khuvuc='Nam bo')
)
To mt partition View gp 3 bng trn li vi nhau:
Create View Khachhang
AS
Select * From KH_BAC
UNION ALL
Select * From KH_TRUNG
UNION ALL
Select * From KH_NAM
8.4

Truy xut d liu thng qua View.


(Tng t nh truy xut d liu trn bng)
8.4.1 Xem d liu thng qua view.
Dng cu lnh Select (V d trn)
8.4.2 Hiu chnh d liu thng qua View.
Thao tc hiu chnh d liu ging thao tc hiu chnh d liu trn mt bng. Tuy
nhin, view phi tha mn iu kin sau:
- View ch tham chiu duy nht mt bng.
- Thao tc Delete khng bao gi c php thc hin trn nhiu bng trong
View.
- Cc hm kt hp Group By, Union, Distinct, Top khng dng trong danh sch
chn trong cu Select ca View.
- Khng c cc ct tnh ton.
V d:
INSERT INTO Khachhang VALUES (11,ddddd,Nam bo)

Trng Cao ang Cong Nghiep 4

Khoa Cong Nghe Thong Tin

Hiu chnh d liu thng qua partitioned View


Khi dng lnh Insert v update phi tn trng cc qui tc sau:
- Tt c cc ct phi c gi tr ngay c ct chp nhn null v ct c gi tr
defaul.
- T kha Defaul khng c s dng trong cu Insert, update.
- Phi c gi tr ng ca ct c check constraint.
- Cu lnh insert khng cho php nu bng thnh vin c ct c thuc tnh
identity, ct timestamp.
- Khng insert hoc Update nu c mt kt self-join trong cng view hay bng
thnh vin.
Khi dng lnh delete, ta c th xa cc mu tin trong bng thnh vin thng qua
view. Lnh Delete khng thc thi nu c lin kt Sefl-join

Trng Cao ang Cong Nghiep 4

Khoa Cong Nghe Thong Tin

BI 9:
CHUYN I D LIU
9.1
Khi nim chuyn i v bin i d liu.
Sau khi bn to CSDL ca bn, bn cn nhp cc mu d liu. Thng thng, bn thng
a d liu vo (importing data) hoc hoc chuyn d liu (transfering) c sn t mt
hoc nhiu ngun d liu khc n hoc i t SQL Server 2000. Trong bi ny chng ta
nghin cu import d liu t ngun d liu khc, ng thi cng gii thiu cc cng c
(Tool) chnh s dng importing data v bin i d liu (transforming data). Cc cng
c l DTS, Bcp, v lnh BULK INSERT.
9.1.1 Import/Export d liu.
Import d liu l qu trnh a d liu c sn t ngun d liu khc hoc chnh SQL
Server vo trong SQL Server. Export l qu trnh ngc li vi import, a d liu ca
SQL Server ra ngoi ngun d liu bn ngoi. Ngun d liu c th l mt CSDL hng
th ba, bng tnh, tp tin vn bn (Text). Tuy nhin trc khi bn import/export d liu
ny vo, bn phi thc hin cc tc v chun b c lng d liu bn ngoi v quyt
nh cc bc s phi thc hin trong tin trnh import/export. Cc bc chun b ny
cng s gip bn chn cng c thch hp dng
- Quyt nh tnh nht qun (consistency) ca d liu hin c trong ngun d
liu bn ngoi/bn trong.
- Quyt nh nhng ct c a vo/a ra.
- Quyt nh dng d liu (Format) ca d liu c sn nn hiu chnh n nht
qun trong CSDL ch n (V d: Cn i dng ngy hoc chuyn gi tr s sang
gi tr chui nh 1, 2, 3 chuyn thnh ngho, trung bnh, kh).
- Quyt nh ct d liu c sn nn hiu chnh.
- Quyt nh import/export d liu s l mt tc v thc hin mt ln hay mt tc
v thc hin nh k.
- Quyt nh cc truy xut d liu c sn l truy xut trc tip hay gin tip.
- .
9.1.2 Bin i d liu (Data Transformations)
Sau khi bn c lng d liu trong ngun d liu bn ngoi/bn trong, bn cn quyt
nh cch tin hnh. i khi, nhng thay i d liu c th thc hin ngay trong
ngun d liu bn ngoi nhng thng thng nhng thay i ny khng c th thc
hin trong ngun d liu bn ngoi m khng hoc dng ng dng hin c (v d:
thm ct hoc thay i nh dng ct) hoc tiu tn qu nhiu thi gian (v d: C
gng thc p nht qun d liu ti ni s nht qun cha c. Nhng thay i ny c
th hoc l sau khi d liu c import vo SQL Server, s dng cc bng tm v s
dng cu lnh Transact-SQL lc v tinh ch d liu, hoc c th c thc hin
trong tin trnh import vo chnh bng. Nhng thay i n d liu to trong tin trnh
import v export c ni n nh cc bin i d liu. Mt bin i xy ra khi mt
hoc nhiu thao tc hoc chc nng c p dng tng phn ti d liu trc khi d
liu c chuyn n n ch n. D liu ti ngun th khng thay i. Bin i d
liu thc hin mt cch d dng thc thi tinh ch d liu, chuyn i v xc nhn
tnh hp l d liu phc tp trong sut tin trnh import v export.
9.1.3 Cc cng c chuyn i d liu (Data transfer tools)

Trng Cao ang Cong Nghiep 4

Khoa Cong Nghe Thong Tin

SQL Server 2000 cung cp s cng c dnh cho vic import v export d liu. Cc
cng c ny c nhng kh nng khc nhau trch lc tp cc d liu t ngun d
liu c sn v chuyn i d liu. Bng di y m t ngn gn cc cng c chnh
v kh nng ca n.
Cc cng c chuyn i d liu v chc nng ca chng
Cng c

M t

DTS

DTS l mt cng c ha dng import, export, v transform d liu.


DTS c th lm vic trc tip cc ngun d liu a dng. DTS to cc gi
(package) m c th lp biu. DTS cng c th import v export cc luc
i tng CSDL gia cc th hin (instance) ca SQL Server.

Bcp

Bcp l mt lnh tin ch ti du nhc c dng sao chp d liu t


mt tp tin vn bn thnh mt bng hoc View ca SQL Server thng qua
ODBC. Kh nng bin i d liu ca Bcp b gii hn v qui nh dng
dng tp tin kh hiu. Lm vic vi CSDL ca MicroSoft hoc hng th
3 l mt tin trnh 2 bc.

BULK INSERT l mt lnh Transact-SQL dng sao chp d liu t


Lnh
BULK mt tp tin vn bn ASCII thnh mt mt bng hoc View ca SQL
INSERT trong Servers thng qua OLEDB. Cu lnh BULK INSERT cung cp chc
Transact-SQL nng tng t nh Bcp (v cng hn ch) trong mt cu lnh TransactSQL v c th nhng trong mt gi DTS.
9.2

Dch v chuyn i d liu DTS (Data Transformation Services - DTS)


DTS l mt tp cc cng c mnh m bn c th dng import, export, v transform
d liu n v i t mt ngun v ch d liu a dng.
9.2.1 DTS Package.
Mt DTS package l mt mt tp hp c t chc ca cc DTS Connection, DTS Task,
DTS Package Workflow, DTS transformation.
Mi package gm c mt hoc nhiu bc m c thc thi mt cch tun t hoc
song song khi m package c chy.
9.2.2 DTS Connections.
DTS Connection l cc kt ni n d liu ngun hay ch n.
Data source connection: L mt kt ni n mt CSDL chun (nh l SQL Server,
Access, dBase,), mt kt ni OLE DB n mt ngun d liu ODBC,..
File connection: L mt kt ni n mt tp tin vn bn
Data link connection: Mt kt ni n mt tp tin trung gian m n lu tr mt chui
kt ni to mt kt ni OLE DB m c thc hin ti thi im chy.
9.2.3 DTS Tasks.
L mt tp cc chc nng ri rc, c thc thi nh l mt bc n trong mt
package. Mi tc v (task) nh r mt mc cng vic l:
- Thc thi mt cu lng T-SQL
- Thc thi mt script
- Khi ng mt ng dng m rng.

Trng Cao ang Cong Nghiep 4

Khoa Cong Nghe Thong Tin

- Sao chp cc i tng SQL Server.


- Thc thi hoc ly cc kt qu t mt DTS package.
Cc tc v c th trong DTS Designer
Loi

Tc v

Cc tc v m
sao chp v qun Bulk
l d liu v bin Task
i d liu

M t

Dng chy cu lnh T-SQL BULK INSERT t trong


mt DTS package. Tc v ny h tr phng cch
nhanh nht sao chp thng tin vo mt bng or view,
Insert
nhng n khng ghi nhn li (log) cc dng gy li.
Nu bn cn gi li cc dng gy li vo mt tp tin,
bn nn s dng tc v Transform Data task thay
th.

Dng chy cc cu lnh Transact-SQL trong sut


Execute SQL vic thc thi package. Bn c th thc hin mt s thao
task
tc bao gm vic xa mt bng v chy mt th tc
bng Execute SQL task.
Dng sao chp cc i tng ca CSDL ca SQL
Server (siu d liu - meta data) t mt th hin ca
Copy
SQL SQL Server n th hin khc. Tc v ny c th
Server
chuyn cc i tng t mt th hin ca SQL Server
Objects task 7.0 n th hin khc; t mt th hin ca SQL Server
7.0 n SQL Server 2000; hoc t th hin ca SQL
Server 2000 n th hin khc ca SQL Server 2000.
Mt tp hp cc task m chp thng tin server-wide
(Copy SQL Server Objects task ch sao chp thng tin
c bit ca CSDL) t mt th hin ca SQL Server
Transfer
n th hin khc. Nhng tc v ny bao gm Transfer
Database
Database task, Transfer Error Messages task, Transfer
Objects tasks
Logins task, Transfer Jobs task, v Transfer Master
Stored Procedures task. Cc tc v ny c s dng
bi Copy Database Wizard.
Cc tc v m Transform
transform data Data task

Sao chp, bin i v chn d liu t mt data source


n mt data destination. Tc v ny th hu ht thc
hin c bn ca ng c bom d liu (data pump
engine) trong DTS.

Chn, ty chn, v thc thi mt ca vi thao tc


Transact-SQL (nh l update hoc delete) trn mt
Data Driven
dng da trn d liu trong dng. S dng tc v ny
Query task
nu Transform Data task v Bulk Insert task khng ph
hp vi cc yu cu ca ng dng ca bn.
Cc tc v m
ActiveX
chc nng nh l
Script task
cc cng vic

chy mt ActiveX script. Bn c th dng tc v


ny vit code thc hin cc chc nng m khng
c sn trong DTS Designer.

Dynamic
Properties
task

Truy xut d liu tr mt ngun bn ngoi v gn gi


tr truy xut c cho cc thuc tnh package c
chn. External sources c th l mt tp tin .INI, tp tin
d liu, truy vn, bin ton cc, bin mi trng, hoc

Trng Cao ang Cong Nghiep 4

Loi

Tc v

Khoa Cong Nghe Thong Tin


M t

mt hng s.
Dng chy DTS package khc nh l mt phn ca
Execute
workflow. Khng dng tc v ny mt cch quy bi
Package task v n c th sinh ra trn stack, m u ny c th dn
n MMC b shut down.
Dng chy mt chng trnh hoc tp tin b lnh c
kh nng thc thi. Tc v ny c th c dng m
Execute
bt k application chun no , nh l Microsoft
Process task Excel, nhng n c s dng chnh l chy cc tp
tin b lnh hoc cc ng dng thng mi m n lm
vic vi mt data source.
Dng Download d liu t mt t mt server t xa
bi Protocol task hoc mt Internet location s dng
File Transfer
FTP. FTP task v Ftp.exe dng cng mt phng php
kt ni.

Send
task

Dng gi mt thng bo e-mail message nh l mt


tc v. V d, thng bo c th c gi n nh qun
Mail tr v s thnh cng hay tht bi ca mt thao tc d
phng (backup). s dng tc v ny, bn cn ci t
mt MAPI client th hin ca SQL Server m bn
ang chy.

9.2.4 DTS Package Workflow.


Workflow l lu lm vic ca DTS Package. Bn c th nh r th t thc thi ca
cc bc trong mt package vi rng buc u tin.

Unconditional: Nu Task 2 c kt ni vi task 1 bi mt rng buc


unconditional th Task 2 s phi i cho n khi Task 1 hon tt v sau n
s c thc thi, bt chp s thnh cng hay tht bi ca Task 1

On Success: Nu Task 3 c kt ni vi Task 2 bi rng buc On Success th


Task 2 s i cho n khi Task 2 hon tt, v sau s thc thi nu Task 2
hon tt mt cch thnh cng.

On Failure Nu Task 4 lin kt vi Task 2 bi mt rng buc On Failure, Task


4 s i cho n khi Task 2 hon tt v sau s ch thc thi nu Task 2 failed
th hon tt mt cch thnh cng.
Cc Task khng c cc rng buc u tin thc thi song song
9.2.5 DTS Package Storage.
Bn c th lu mt DTS package vo SQL Server 2000, SQL Server 2000 Meta Data
Services, mt tp tin Microsoft Visual Basic, hay mt tp tin lu tr c cu trc. Khi
bn lu mt DTS package th tt c DTS connections, tasks, transformations, v
workflow u c lu li.

9.3

Thc hin vic bin i v chuyn i d liu bng cng c ha DTS.


9.3.1 DTS Import/Export Wizard

Trng Cao ang Cong Nghiep 4

Khoa Cong Nghe Thong Tin

L mt cch n gin to mt DTS packages sao chp d liu gia cc ngun


d liu nhng n b gii hn i vi nhng bin i d liu phc tp, thm nhiu task
v cc lu tc ph phc tp. DTS Import/Export Wizard c sn sng trong
Enterprise Manager.
9.3.2 DTS Designer
Cho php bn to mi hoc hiu chnh package bng cc i tng ha h tr
xy dng DTS package k c cc lu phc tp. DTS Designer sn dng trong Data
Transformation Services cha trong Enterprise Manager.
Cc bc to mt package

M mi mt package.

Khai bo cc connection.

To cc tc v (task) cn thc hin.

Qui nh cc Wokflow gia cc tc v nu cn.

Lu, thc hin package nu cn.


3.2.a.1 Thao tc m mt Package
M mi mt Package: Trong Enterprise Manager, nhn nt phi chut ti Data
Transformation Services v chn New Package.
M mt Package c sn: Khi m (open) mt package c sn trong Data
Transformation Services tu thuc vo cch m DTS pakage c lu tr nh
th no.

Package lu trong tp tin c cu trc:


- R_Click ti Data Transformation Services
- Chn Open Package m tp tin t a.

Package lu trong SQL Server.


- Click ti hp Local Packages trong Data Transformation Service.
- Double-click vo tn ca DTS package cn m.

Package lu trong Meta data Services Package.


- Click ti nhnh Meta data Services Package trong Data Transformation
Service.
- Double-click vo tn ca DTS package cn m.
Trong ca s DTS Designer cho php bn to cc kt ni ha n ngun v
ch n d liu. Cu hnh cc DTS tasks, thc hin cc DTS transformation, v
ch nh cc rng buc u tin. Bn dng phng php drag v drop v bn tt cc
hp thoi cho cc i tng to cc DTS package trong trang thit k. Hnh
bn di hin th giao din ngi dng ng vi DTS Designer

Trng Cao ang Cong Nghiep 4

Khoa Cong Nghe Thong Tin

Hnh 27: Giao din thit k DTS


3.2.a.2 Khai bo connection
Bc 1: Chn ngun d liu (Data Source)
- Drag mt i tng data source t thanh cng c Connection vo ca s thit
k hoc chn Connection loi data source

Hp thoi Connection Properties xut hin khc nhau ty vo s chn la


data source.
Hon tt hp thoi ch nh data source.

Hnh 28: Kt ni n SQL Server bng Microsoft OLE DB Provider for SQL Server
Bc 2: Chn la v cu hnh mt data destination.
Tng t nh cu hnh mt Data Source

Trng Cao ang Cong Nghiep 4

Khoa Cong Nghe Thong Tin

Hnh 3 hin th mt bng thit k gm 3 data source: 2 kt ni n Microsoft OLE


DB Provider for SQL Server v mt k ni n mt tp tin vn bn (Source).

Hnh 29: Ci t mt data Destination.


Lu :
Mt Connection n tp tin vn bn th phi xc nh r l mt Text file (Source)
hoc Text file (Destination).
3.2.a.3 nh ngha cc tc v (Task) m bn mun thc hin
S dng hoc thc n Task hoc thanh cng c Task.
Lu :
- Nu bn chn tc v Transform d liu, bn c nhc nh xc nh data
source v data destination. Khi mt mi tn mu xm xut hin tr t data
source n data destination.
- Nu bn chn bt k tc v khc th mt hp thoi s xut hin nhc nh
bn cu hnh thuc tnh ca tc v. Tc v xut hin trong ca s thit k nh
l mt biu tng.
Hnh bn di hin th 3 tc v Transform Data v mt tc v SQL thc hin (Execute)
to mt bng.

Trng Cao ang Cong Nghiep 4

Khoa Cong Nghe Thong Tin

Hnh 30: Mt DTS vi 3 tc v transform data v mt tc v Execute SQL


3.2.a.4 Hiu chnh tc v.
hiu chnh v ty chn mt tc v transform d liu, double-click vo mi tn
xm gia data source v data destination m hp thoi cho tc v ny.
Trang Source: nu data source l mt CSDL, bn c th lc cc d liu c sao
chp t cc bng hoc View c th c chn hoc s dng mt truy vn
Transact-SQL. Hnh 5 hin th mt truy vn Transact-SQL c dng lc d
liu c import.

Hnh 31: S dng mt truy vn lc d liu import.


Trang Destination: bn c th xc nh thng tin v d liu c import (nh l
cc ct ch n). Nhng s la chn ca bn s bin i ty vo data destination.
Nu data destination l mt CSDL, bn c th to v nh ngha mt bng mi
hoc chn mt bng c sn import d liu vo.

Trng Cao ang Cong Nghiep 4

Khoa Cong Nghe Thong Tin

Hnh 32: Trang Destination ca hp thoi thuc tnh ca tc v transform data


Trang Transformations: bn c th thit lp s bin i d liu theo ngi
dng. Theo mc nhin, cc ct ngun s c sao chp n cc ct ch m khng
cn hiu chnh.
To mi hoc hiu chnh s chuyn d liu gia data source v data destination:
- Chn ct m bn mun c s hiu chnh trong danh sch tn xung hoc
bng cch click vo mi tn gia source v destination.
- Click vo nt New hoc Edit to mt transformation mi hoc hiu chnh
mt transform c sn. (double-click vo mi tn mu en hiu chnh mt
transforrm).
Nu bn click vo nt New, bn c th chn kiu transform m bn mun t danh
sch cc transform sn sng trong vic to mi mt transform.

Trng Cao ang Cong Nghiep 4

Khoa Cong Nghe Thong Tin

Hnh 33: Trang Tranformations ca hp thoi thuc tnh ca tc v transform data

Hnh 34:To mt transform mi


Nu bn chn ActiveX Script t hp thoi Create New Transformation, bn c th
to mt transform script mi thc thi cc transform phc tp hn xem hnh 10
Trang Lookups: bn c th nh ngha mt truy vn d tm. Mt truy vn d tm i hi
mt data connection chy cc truy vn v cc th tc (stored procedure) tng ng vi
mt data source v data destination. S dng mt truy vn d tm tm ra thng tin dng

Trng Cao ang Cong Nghiep 4

Khoa Cong Nghe Thong Tin

danh sch, thc thi cc cp nht song song trn h thng nhiu CSDL, xc nhn tnh hp
l nhp vo trc khi ti d liu, gi cc th tc trong s tr li n iu kin nhp d
liu v s dng cc gi tr bin ton cc nh l cc tham s ca truy vn.
Trang Options: bn nh ngha mt s thuc tnh thm vo cho transform. Bn c th
nh ngha mt hoc nhiu tp tin ngoi l (exception file) dng ghi nhn li cc
exception record trong sut qu trnh thc thi package. Tp tin ny c th trn a cc
b hoc mng. Bn c th tch cc li ca source v destination trong cc tp tin ring l.
Bn cng c th nh s li ti a cho php trc khi vic thc thi package b dng. Cui
cng, bn cng c th xc nh cc thuc tnh thc thi c bit khi destination connection
l Microsoft OLE DB Provider for SQL Server. Cc thuc tnh ny bao gm vic ch nh
thc thi bulk-copy vi tc cao, kim tra rng buc trong sut qu trnh thc thi
package, kiu kha, kch c ca khi, v nhn dng cc thuc tnh chn.

Hnh 35: Trang khai bo mt s option

Trng Cao ang Cong Nghiep 4

Khoa Cong Nghe Thong Tin

Hnh 36: To mt transformation script mi


Mt khi bn c ci t mt tc v Data Transformation task v bt k cc tc v DTS
khc th DTS package s thc thi, bn phi cu hnh cc rng buc quyn u tin. Trong
v d, chng ta c 2 data source ring l chp n data destination. Chng ta cng c
mt tc v to bng (Create Table task). Bn dng rng buc quyn u tin xc nh
th t ca vic thc thi mi tc v. thit lp u tin ca khi cng vic, hy chn 2
hay nhiu bng theo th t tc v s c thc thi v sau chn loi workflow t thc
n Workflow. V d: Nu tc v Create Table phi thc thi trc khi sao chp d liu
n data destination, Hy chn rng buc u tin l On Success t thc n Workflow.
Xem hnh.
Bn c th to mt tc v Send Mail v cu hnh rng buc u tin On Failure precedence
gia tc v to bng (Create Table) v tc v gi mail (Send Mail). iu ny c ngha l
s gi mt thng bo e-mail n nh qun tr nu tc v Create Table b faile. Khi bn
ang dng t ng hon ton hay cc DTS packages c lp lch thc thi cc qu
trnh hot ng ca CSDL th thng bo li l cn thit
9.4
Dng BULK COPY (BCP) v BULK INSERT
Bulk copy l mt giao din chng trnh ng dng (Application Programming Interface
API) c xy dng trong SQL Server m cho php xut nhp d liu mt cc hiu qu.
Ta dng BCP trong trng hp trong mt ln ta mun chuyn mt s lng ln d liu t

Trng Cao ang Cong Nghiep 4

Khoa Cong Nghe Thong Tin

cc h qun tr CSDL khc vo trong SQL Server. BCP l mt phng php c bn


chuyn i d liu vo ra SQL Server.
BCP l mt API c nh ngha bi SQL Server 2000. Hin nay, giao din ny ch c
a ra thng qua ODBC (Open Database Connectivity- H thng kt ni CSDL m) v
DB-LIB (DataBase Library). SQL Server cung cp mt tin ch (BCP.EXE) m hu ht
ngi dng quen ngh l BCP. Ta c 2 phng php xut nhp d liu l CBP
command-line utility, v BULK INSERT Transact-SQL statement.
Dng d liu
Dng d liu

bcp
Switch

Lnh Bulk Insert

ngha

Native

-n

DataFiletype=native

Kiu d liu l t nhin, khi


cp nht phi tn nhiu thi
gian chuyn i kiu d liu

Character

-c

DataFiletype=char

Kiu d liu l CHAR cho


tt c cc ct

Unicode
character

-w

DataFiletype=widechar

Kiu d liu l Unicode char


cho tt c cc d liu, c th
mt s d liu s b mt nu
kiu d liu ca Source v
Destination khng trng
nhau.

Unicode Native

-N

DataFiletype=widenative Kiu d liu l Native cho


nhng d liu khng l kiu
Char, v dng Unicode cho
nh d liu kiu char (char,
Varchar, nchar, text)

BCP Command-line Utily: l mt hm n gin ca Bulk Copy, thc thi ti du nhc


lnh, dng sau chp d liu vo SQL Server hoc xut d liu ra thnh mt tp tin d
liu. Mun dng c bcp, th trc tin d liu trong chng trnh ngun (mt DBMS
khc) phi c sang mt tp tin d liu vo sau mi chuyn d liu t tp tin data
vo table ca SQL. Ngc li, bcp s chuyn d liu t mt table thnh mt tp tin dnh
cho chng trnh khc chng hn nh Excel.
Data file: l mt tp tin h thng hot ng, dng cha d liu Import vo SQL Server
(gi l Source) hoc tp tin cha d liu khi dng Export (gi Destination) .
bcp [database_name.][owner].]table_name in | out data_file [-c | -n | w | N] [-T]

V d: bcp Northwind..customers out d:\data\kh.txt -c T


-T: ch nh l Connect trc tip vi Server ang log on
SELECT * INTO Cust FROM Customers
TRUNCATE TABLE Cust
bcp Northwind..cust IN d:\data\kh.txt -c T

Trng Cao ang Cong Nghiep 4

Khoa Cong Nghe Thong Tin

CU LNH BULK INSERT: dng chuyn mt d liu vo bng ca SQL Server t


mt tp tin d liu khc. Cu lnh Bulk insert khng th a d liu t bng ca SQL
Server ra thnh tp tin d liu dnh cho chng trnh khc. Tuy vy, n li l mt cu
lnh trong T-SQL nn c th c dng mt cch thun tin trong cc hm hoc th tc
trong SQL Sever.
BULK INSERT 'database_name' [ 'owner' .] 'table_name' FROM 'data_file'
[ WITH (DATAFILETYPE = 'char' | 'native'| 'widechar' | 'widenative') ]

BULK INSERT dbo.Employees FROM 'C:\DATA\Employees.TXT'


WITH (DATAFILETYPE ='widechar')
BULK INSERT dbo.Customers FROM 'C:\DATA\Customers.TXT'
WITH (DATAFILETYPE ='widechar')
Lu :
- S ct hoc s th t ca cc ct ca file text v ca bng khng tng thch th
khng chn d liu vo c. Cch gii quyt?
- Nu trong file Text c gi tr ca ct Identity th s chp nhn gi tr , nu khng c
th n t pht sinh.
- Khi Export vo mt tp tin, tp tin s b ghi d nu nh tp tin hin tn ti.
- Khi BCP ang import d liu vo bng, ngi dng khc vn c th ang dng bng
. Nhng dng c Import ch hin hu khi tp lnh import kt thc.
- Khi BCP ang import d liu, ngi dng khc vn truy xut d liu bnh thng.
- Khi ang import d liu vo bng, c 2 phng php c th s dng: Logged v nologged BCP.

Trng Cao ang Cong Nghiep 4

Khoa Cong Nghe Thong Tin

BI 10:
C BN V LP TRNH BNG TRANSACT- SQL
10.1 Khi nim c bn.
10.1.1 nh danh -IDENTIFIERS.
Tn ca tt c cc i tng u c gi l nh danh. Mi th trong SQL Server u c
mt nh danh, trong bao gm Servers, Databases, v cc i tng (Object) ca
CSDL nh bng, Views, ct, ch mc, rng buc,. C nhng i tng bt buc phi
qui nh mt nh danh, ngc li c mt s i tng khng cn nh danh (SQL Server
s t ng nh danh)
V d:
CREATE TABLE Table1
(Keycol INT PRIMARY KEY, Description NVARCHAR(30))
Qui tc nh danh:
- Ti a 128 k t.
- Bt u l mt k t thng thng A -> Z
- Bt u l mt k hiu (@, #) s c mt ngha khc.
- Nhng nh danh no c khong trng gia th phi kp trong du [ ] hoc

- t cc nh danh sao cho ngn gn, u ngha, phn bit gia cc i


tng vi nhau, khng trng lp, khng trng vi t kha ca T-SQL.
10.1.2 Tham chiu n cc i tng trong SQL Server.
- Tn y :
Server.database.ower.object
- Tn ngn: Nu l local server th ta khi ch Server, nu CSDL hin hnh th
khng cn ch Database, Owner mc nh l user name trong Database.
Nu Tham chiu tng minh th tng tc.
V d:
CREATE TABLE Northwind.dbo.orederhist
CREATE TABLE Northwind..orederhist
Database Owner (dbo)
Dbo l mt ngi dng m c y cc quyn thao tc trong CSDL. Bt k mt
thnh vin thuc nhm sysadmin ng vai tr ngi dng CSDL c gi l dbo.
Cng nh bt k mt i tng no c to bi bt k thnh vin thuc nhm
sysadmin th mc nhin thuc dbo.
V d: nu ngi dng Andrew l thnh vin ca nhm sysadmin to bng T1,
th T1 thuc ch quyn dbo v n thuc dbo (dbo.T1), khng thuc Andrew
(khng l Andrew.T1). Ngc li, nu Andrew khng l thnh vin ca
sysadmin nhng ch l mt thnh vin ca db_owner v to bng T1, T1 thuc
v Andrew v t cch gi l Andrew.T1.

Trng Cao ang Cong Nghiep 4

Khoa Cong Nghe Thong Tin

User dbo khng bao gi b xa v n lun lun hin hu trong mi CSDL. Ch c


nhng i tng c to bi thnh vin ca sysadmin (hoc bi user dbo) th
thuc v dbo.
10.1.3 Kiu d liu (DATA TYPE).
Kiu d liu l mt nh ngha xc nh loi d liu m i tng c th cha
ng. Ct, tham s, bin, gi tr tr v ca hm, th tc, tt c u phi c kiu d
liu.
C 2 loi kiu d liu: System-Supplied datatype v User-defined data types
( c trnh by trong bi trc)
10.1.4 Batch
Batch l mt tp cc pht biu T-SQL nm lin tip v kt thc bi pht biu GO, v
c bin dch ng thi bi SQL Server.
V d:
USE pubs
GO /* Signals the end of the batch */
CREATE VIEW auth_titles
AS
SELECT *
FROM authors
GO /* Signals the end of the batch */
SELECT *
FROM auth_titles
GO /* Signals the end of the batch */
Lu :
- Cc pht biu trong 1 batch c bin dch thnh mt nhm.
- Nu mt trong pht biu ca batch b li th batch cng xem nh li.
- Cc pht biu Create b rng buc trong mt batch n, tc trong batch ch c
pht biu Create. Cc pht biu l: Create DataBase, Create Table, Create
Index,
10.1.5 Kch bn - SCRIPT
Mt Script l mt tp ca mt hay nhiu b lnh c lu li thnh mt tp tin .SQL
10.2 Bin (VARIABLES)
Bin l mt i tng trong tp lnh T-SQL m n dng lu tr d liu. Sau khi bin
c khai bo hoc nh ngha, mt cu lnh trong tp lnh s gn gi tr cho bin v

Trng Cao ang Cong Nghiep 4

Khoa Cong Nghe Thong Tin

cng c th mt cu lnh khc s ly gi tr ca bin ra dng. Phi c khai bo trc


khi dng.
Bin c dng :
- m s ln lp c thc hin hoc dng iu khin vng lp
- Dng lu gi tr d liu c kim tra mt s lnh iu khin
- Lu tr gi tr tr v t mt store Procedure
-
Cc loi bin: c 2 loi bin l bin cc b (local) v bin ton cc (Global). Bin kiu
Global c SQL Server a ra v bn c th dng bt c khi no v cng khng cn
khai bo (c xem nh l nhng hm chun ca SQl Server).
Local variable
- c khai bo trong phn thn ca mt b lnh hoc mt th tc.
- Phm vi hot ng ca bin bt u t im m n c khai bo cho n khi kt
thc mt l (batch) hoc stored procedure hoc Function m n c khai bo.
- Tn ca bin bt u @
Khai bo:
DECLARE @var_name var_type

Gn gi tr cho bin:
Nu bin va khai bo xong th bin mc nhin c gn gi tr l NULL.
gn bin ta dng lnh SET hoc dng cu lnh SELECT
SET @var_name = expression
SELECT { @var_name = expression } [,...n ]

V d 1:
USE Northwind
DECLARE @EmpIDVar INT
SET @EmpIDVar=3
SELECT * FROM [Orders]
WHERE
V d 2:
DECLARE MyVariable INT
SET @MyVariable = 1
GO im kt thc mt l batch.
-- @MyVariable vt qu phm vi v n ht
tn ti
-- Cu lnh SELECT sau s nhn li sai c php bi
v n khng tham chiu c bin @MyVariable.
SELECT * FROM [Orders]
WHERE
V d 3:
USE Northwind

Trng Cao ang Cong Nghiep 4

Khoa Cong Nghe Thong Tin

GO
-- Khai bo 2 bin.
DECLARE @FirstNameVariable NVARCHAR(20),
@RegionVariable NVARCHAR(30)
-- Gn gi tr cho 2 bin.
SET @FirstNameVariable = N'Anne'
SET @RegionVariable = N'WA'
-- Dng chng trong mnh WHERE ca lnh SELECT.
SELECT LastName, FirstName, Title
FROM Employees
WHERE FirstName = @FirstNameVariable
OR Region = @RegionVariable
GO
V d 4:
USE Northwind
GO
-- Khai bo 1 bin
DECLARE @EmpIDVariable INT
-- Gn gi tr bin bng cu lnh Select
SELECT @EmpIDVariable = MAX(EmployeeID)
FROM Employees
GO
-- Nu cu Select tr v l mt tp gi tr th bin s nhn gi tr sau cng.
V d 5:
DECLARE @ProdIDVariable int
SELECT @ProdIDVariable = ProductID
FROM Northwind..Products
V d 6:
USE Northwind
GO
DECLARE @EmpIDVariable INT
SELECT @EmpIDVariable = EmployeeID
FROM Employees
ORDER BY EmployeeID DESC
SELECT @EmpIDVariable
GO
Global variable trong SQL Server 2000 gi l System Function: T SQL Server 7.0
bin Global c nh ngha nh l hm h thng. Mi kt ni s to ra mt session, SQL

Trng Cao ang Cong Nghiep 4

Khoa Cong Nghe Thong Tin

Server to ra sn mt s bin c sn rt tin ch trong vic lp trnh v qun tr h thng.


Cc bin ny khng c kiu, tn bt u @@.
Mt hm h thng thng dng:
@@VERSION

phin bn ca SQL Server v h iu hnh


SELECT @@VERSION

@@TRANCOUNT

Xem coi c bao nhiu transaction ang m


IF (@@TRANCOUNT > 0)
BEGIN
RAISERROR('Task cannot be executed within a
transaction.', 10, 1)
RETURN
END

@@ROWCOUNT

Tr v s dng b nh hng i vi lnh thc thi gn nht


V d 1:
USE Northwind
UPDATE Employees SET LastName = 'Brooke'
WHERE LastName = 'Brook'
IF (@@ROWCOUNT = 0)
BEGIN
PRINT 'Warning: No rows were updated'
RETURN
END
V d 2:
UPDATE Customers
SET Phone =030 + Phone
WHERE Country=Germany
PRINT @@ROWCOUNT

@@IDENTITY

tr v s Identity pht sinh sau cng


CREATE TABLE TABLE_HD
(
mahd int Identity Primary Key,
Ghichu varchar(20) )
CREATE TABLE TABLE_CTHD
(
Mahd int, Masp char(10), Soluong int)
declare @maso Int
Insert into Table_HD Values ('Mau tin 1')
Insert into Table_HD Values ('Mau tin 2')
set @maso= @@IDENTITY
Insert into Table_CTHD
values (@maso, 'sp001',5)

Trng Cao ang Cong Nghiep 4

Khoa Cong Nghe Thong Tin

Insert into Table_CTHD


values (@maso, 'sp002',10)
-- Kim tra
SELECT * FROM Table_HD
SELECT * FROM Table_CTHD
@@ERROR

Tr v li s (STT li) ca lnh sau cng m SQL thc thi, l 0 c ngha l


cu lnh thc thi hon thnh.

@@FETCH_STATUS

Tr v trng thi ca lnh Fetch ca bin con tr c thnh cng hay khng
(0: Thnh cng, -1: b li hoc vt qu phm vi; -2: Tht bi)

Mt s hm thng dng:
GetDate()

Ly ngy, gi hin hnh ca h thng

Month(Date); Year(Date)

Ly thng, nm ca ngy Date

DateAdd(Datepart, Number, Date)

Cng thm Date mt gi tr s

DATEDIFF (datepart, startdate, enddate)

Khong chnh lch gia startdate v enddate

DATEPART (datepart, date)

Tr v s nguyn biu din datepart no ca


ngy c ch nh

CAST (expression AS data_type)

Dng chuyn i kiu d liu

CONVERT (data_type [ (length) ], expression


[, style ])

Dng chuyn i kiu d liu

LOWER (character_expression)

Chuyn sang ch thng

UPPER (character_expression)

Chuyn sang ch hoa

REPLACE ('string_expression1',
'string_expression2', 'string_expression3')

Thay th chui biu thc

DIFFERENCE (character_expression,
character_expression)

So snh 2 biu thc

V d:
USE pubs
SELECT 'The price is ' + CAST(price AS
varchar(12))
FROM titles
WHERE price > 10.00
GO
-- Use CONVERT.
USE pubs
SELECT SUBSTRING(title, 1, 30) AS Title, ytd_sales
FROM titles
WHERE CONVERT(char(20), ytd_sales) LIKE '3%'
GO

Trng Cao ang Cong Nghiep 4

10.3

Khoa Cong Nghe Thong Tin

Cu trc iu khin.
T-SQL cung cp mt s cu trc iu kin c bn bn c th thc thi mt khi
lnh da trn kt qu ca mt php so snh. N cng tng t nh mt s ngn
ng lp trnh khc.

10.3.1 Khi BEGIN END


Nu bn cn nhiu pht biu c thc thi vi nhau th ta t cc pht biu trong
cp Begin End. N c hu dng trong cc cu trc iu khin.
10.3.2 Pht biu PRINT
Pht biu PRINT: Dng in thng tin ra mn hnh kt qu ca SQL
PRINT 'any ASCII text' | @local_variable | @@FUNCTION | string_expr

V d:
PRINT Hello!
PRINT NCho bn
PRINT @@VERSION
10.3.3 Cu trc iu khin IF ELSE
L mt cu trc iu kin, cho php thc thi mt hoc nhiu pht biu ty thuc vo
mt iu kin no . cu lnh thc thi mt khi cc cu lnh theo mt iu kin
no .
C php:
IF condition
{statements}
[ ELSE [Condition 1]
{statements}]

Condition: l mt biu thc logic, c gi tr True hoc False.Ty thuc vo


condition, mt trong hai khi lnh s c thc thi.
V d 1: Kim tra xem trong Customers ca NorthWind c cha cc khch hng
n t Germany khng?
USE NorthWind
IF (SELECT COUNT(*) FROM Customers
WHERE Country='Germany') > 0
BEGIN
Print ' C tn ti cc khch hng t
Germany trong c s d liu.'
Print ' statements to process German
customers'
END

Trng Cao ang Cong Nghiep 4

Khoa Cong Nghe Thong Tin

ELSE
BEGIN
PRINT ' Khng c khch hng n t Germany
trong c s d liu.'
END
V d 2:
USE pubs
GO
DECLARE @msg varchar(255)
IF ( SELECT COUNT(price) FROM titles
WHERE title_id LIKE 'TC%' AND price BETWEEN 10 AND
20) > 0
BEGIN
SET NOCOUNT ON
SET @msg = 'C vi quyn sch c gi t $10 n
$20. Cc sch l:'
PRINT @msg
SELECT title FROM titles
WHERE title_id LIKE 'TC%' AND price BETWEEN 10
AND 20
END
ELSE
BEGIN
SET NOCOUNT ON
SET @msg = 'Khng c quyn sch no c gi t
$10 n $20. Bn nn tham kho cc quyn sch c
gi nh hn $10 sau y.'
PRINT @msg
SELECT title FROM titles
WHERE title_id LIKE 'TC%' AND price < 10
END
V d 3:
USE pubs
IF (SELECT AVG(price) FROM titles WHERE type =
'mod_cook') < $15
BEGIN
PRINT 'The following titles are excellent
mod_cook books:'
PRINT ' '
SELECT SUBSTRING(title, 1, 35) AS Title
FROM titles WHERE type = 'mod_cook'

Trng Cao ang Cong Nghiep 4

Khoa Cong Nghe Thong Tin

END
ELSE
IF (SELECT AVG(price)
FROM titles WHERE type = 'mod_cook')>
$15
BEGIN
PRINT 'The following titles are expensive
mod_cook books:'
PRINT ' '
SELECT SUBSTRING(title, 1, 35) AS Title
FROM titles WHERE type = 'mod_cook'
END
10.3.4 Biu thc CASE.
Biu thc CASE l mt biu thc iu kin c p dng bn trong mt pht biu
khc. Case tr v cc gi tr khc nhau tu thuc vo iu kin hoc mt iu khin
no .
Dng 1:
CASE input_expression
WHEN when_expression THEN result_expression
[ ...n ]
[
ELSE else_result_expression
]
END

Dng 2:
CASE
WHEN Boolean_expression THEN result_expression
[ ...n ]
[
ELSE else_result_expression
]
END

V d 1: Cho 2 s a v b, so snh 2 s , s no ln hn s no?


DECLARE @a As int, @b As int, @ketqua as nvarchar(30)
SET @a=3
SET @b=5
SET @ketqua = CASE
WHEN @a<@b THEN N'A nh hn B'
-- When ch dng trong case
WHEN @a<@b THEN N'A ln hn B'
ELSE N'A bng B'
END -- END ca CASE

Trng Cao ang Cong Nghiep 4

Khoa Cong Nghe Thong Tin

PRINT @ketqua
V d 2: Da vo price ca cc title cho bit price nh th no?
Use Pub
SELECT title, price,
'classification'=CASE
WHEN price < 10.00 THEN 'Low Priced'
WHEN price BETWEEN 10.00 AND 20.00 THEN 'Moderately
Priced'
WHEN price > 20.00 THEN 'Expensive'
ELSE 'Unknown'
END
FROM titles
V d 3: Cho bit ngha ca on lnh sau:
USE NorthWind
SELECT ProductID, Quantity, UnitPrice, [discount%]=
CASE
WHEN Quantity <=5 THEN 0.05
WHEN Quantity BETWEEN 6 and 10 THEN 0.07
WHEN Quantity BETWEEN 11 and 20 THEN 0.09
ELSE
0.1
END
FROM [Order Details]
ORDER BY Quantity, ProductId
V d 4: ngha ca on lnh sau?
SELECT title, pub_id,
CASE WHEN price IS NULL THEN (SELECT MIN(price)
FROM titles)
ELSE price
END
FROM titles
10.3.5 Cu trc vng lp WHILE
L pht biu iu khin vng lp. Vng lp s thc hin cho n khi biu thc iu
kin (Boolean_expression) trong While mang gi tr False. Biu thc iu kin c th
l mt cu SELECT.
WHILE Boolean_expression
{ sql_statement | statement_block }
[ BREAK ]

Trng Cao ang Cong Nghiep 4

Khoa Cong Nghe Thong Tin

{ sql_statement | statement_block }
[ CONTINUE ]

[ BREAK ] : Dng kt thc vng lp khi gp mt trng hp c th no .


[ CONTINUE ] : Lp li u vng lp.
Thng thng 2 t kha Break v Continue phi nm trong trong cu trc If
Else..
V d 1: Trong khi n gi trung bnh vn cn nh hn $30 th cp nht cc n
gi tng ln gp i n gi c.
USE pubs
GO
WHILE (SELECT AVG(price) FROM titles) < $30
BEGIN
UPDATE titles
SET price = price * 2
SELECT MAX(price) FROM titles
IF (SELECT MAX(price) FROM titles) > $50
BREAK
ELSE
CONTINUE
END
PRINT 'Too much for the market to bear'
10.3.6 Lnh RETURN
RETURN [ integer_expression ]

Nu gp pht biu Return, qu trnh x l s kt thc


i khi ta dng RETURN trong th tc th tc c th tr thnh hm nh cc
ngn ng khc.
10.3.7 Lnh WAITFOR
L mt ch th cho SQL Server tm dng mt thi gian trc khi x l tip cc
pht biu sau .
WAITFOR { DELAY 'time' | TIME 'time' }

Time: c vit thao dng hh:mm:ss, ti a l 24 gi


DEPLAY Time: H thng tm dng trong khong thi gian Time.
TIME Time: H thng c tm dng n thi gian Time ch ra.
WAITFOR
02:10
WAITFOR
02:10
10.3.8 Lnh RAISERROR

Khoa Cong Nghe Thong Tin

Trng Cao ang Cong Nghiep 4

Pht sinh li ca ngi dng. Ngi dng c th pht sinh cc li t bng sysmessage
hoc xy dng li ng ty thng tin ca ngi dng. Sau khi mt li c nh
ngha th n c gi n ngi dng nh l mt li h thng.
RAISERROR ({ msg_id | msg_str } {, severity, state }
[, argument [,...n ] ])
[ WITH option [,...n ] ]

msg_id: l m thng bo, n c lu trong bng sysmessage. M thng bo ca


ngi dng nh ngha phi c bt u t trn 50000
msg_str : Ni dung thng bo, ti a 400 k t.
truyn tham s vo trong thng bo th dng dng %<Loai k t>
Loi k t l d, i, o, x, X, hoc u
Cc k t

M t

d hoc I

Biu hin l s nguyn (integer)

Octal khng du

Con tr

Chui

So nguyn khng du

x or X

Hexadecimal khng du

Lu : s float, double, char khng c h tr


severity: nghim kht ca thng bo
Severity Levels: Mc li ca mt thng bo li cung cp mt s biu th loi vn m
SQL Server gp phi.
- Mc li 10 l li v thng tin v biu th nguyn nhn do thng tin nhp vo.
- Mc li t 11 n 16 th thng thng l do cc user.
- Mc t 17 n 25 do li phn mm hoc phn cng. Bn nn bo cho nh qun tr
h thng bt c khi no s c xy ra. Nh qu tr h thng phi gii quyt s c
v theo di chng thng xuyn. Khi mc li 17,18,19 xy ra, bn c th tip tc
lm vic mc d bn khng th thc thi lnh c bit.
- Mc li 17: Nhng thng bo ny cho bit rng cu lnh nguyn nhn SQL
Server cn kit ti nguyn (V d nh lock hoc khng gian a cho CSDL) hoc
vt qu tp gii hn bi nh qun tr
- Ngi qun tr h thng nn gim st tt c cc s c m c pht ra mc trm
trng t 17 n 25 v in ra gii thch li m bao gm cc thng tin quay li t
li.
Nu s c nh hng n ton b mt CSDL, bn dng DBCC CHECKDB
(Database) xc nh phm vi ca s thit hi. DBCC c th xc nh mt vi i
tng m phi b di chuyn v s ty phc hi s thit hi. Nu thit hi l ln,
CSDL c th khng phc hi c. Trong trng hp c bit, ngi dng nh ngha
thng bo li vi RAIERROR, dng m li trn 50000 v mc li trm trng t 0 n
8. Ch c nh qun tr h thng c th pht hnh li vi mc trm trng t 19 n 25.

Trng Cao ang Cong Nghiep 4

Khoa Cong Nghe Thong Tin

Mc li t 20 n 25 ch ra s c h thng. l li khng trnh c, m c


ngha l tin trnh khng cn ang chy. Tin trnh t lit trc khi n dng, ghi
nhn thng tin v ci g xy ra, v sau kt thc.
state: L mt s nguyn ty t 1 n 127 m n m t thng tin din gii v trng
thi li.
Argument: L tham s dng trong vic thay th cho bin nh ngha thng bo li
hoc thng bo tng ng vi m li msg_id. C th khng hoc c nhiu tham s.
Tuy nhin, khng c qu 20. Mi tham s thay th c th l mt bin local hoc bt
k mt trong cc kiu d liu int, char, varchar, binary, varbinary. Cc kiu khc
khng c cung cp.
Thm mt li mi ca ngi dng nh ngha:
Sp_addMessage msg_ID, severity, 'msg' [, 'language' ] [, 'with_log' ] [, 'replace' ]

Xa mt li ca ngi dng
sp_dropmessage Msg-ID

Gii thch
msg_id: l m s ca li mi, l mt s int, khng c trng cc m c sn,
bt u l 50001.
severity: l mc li ca li, l mt s smallint. Mc hp l l t 1 n 25. Ch c
ngi qun tr CSDL mi c th pht sinh thm mt thng bo li mi t 19 n
25.
'msg': l mt chui thng bo li, ti a 255 k t.
'language': l ngn ng ca thng bo li, khng ch nh t mc nh l ngn
ng ca phin kt ni.
'with_log': thng bo li c c gi nhn vo nht k ca ng dng khi n xy ra
hay khng, mc nh l FALSE. Nu l true, th li lun lun c ghi vo nht
k ng dng. Ch c nhng thnh vin thuc sysadmin server role mi c th s
dng tham s ny.
'replace': nu c ch nh chui REPLACE, th thng bo li tn ti c
ghi bi chui thng bo mi v mc li mi. Tham s ny phi ch nh nu
msg_id c.
Lu : nu tr v 0 tc l thm vo thnh cng, 1 tht bi.

Trng Cao ang Cong Nghiep 4

Khoa Cong Nghe Thong Tin

BI 11:
PROCEDURES, FUNCTIONS
11.1 STORED PROCEDURES.
11.1.1 Gii thiu Stored proccedures.
Stored procedure (th tc) l mt tp cc lnh T-SQL v mt s cu trc iu kin, c
lu vi mt tn v c thc thi nh l mt n v cng vic n (single unit of work).
Trong cc ngn ng khc nh C, pascal, Basic, mt th tc thng thng l mt tp cc
cu lnh vi mc ch hon tt mt mc ch no v c th c gi t mt chng
trnh nh l mt lnh n.

Th tc trong SQL Server c lu tr ti server khi n c to ra. V vy, khi


th tc c thi hnh th n c chy ti Server. C th gi th tc chy bng
mt lnh n gin v trong th tc c th cha rt nhiu lnh ca T-SQL.

Trc khi th tc c to, SQL Server s kim tra tnh ng n ca cc c php


lnh. Nu khng c li v c php th th tc c to, tn ca th tc c lu
trong bng h thng SysObjects v ni dung c lu trong bng h thng
SysCommanes.

Trc khi th tc c thc thi, mt k hoch thc thi (Execution plain) c to


ra v th tc c bin dch. T tr v sau tin trnh dch th tc nhanh hn
bi v SQL Server s khng kim tra tnh ng ng ca cc cu lnh na, ch to
li execution plan v bin dch li th tc.

Security (an ton): th tc c mt c tnh quan trng l n c th c nng cao


an ton thng tin thng qua isolation (c lp) hoc encryption (m ha). Ngi
dng CSDL c th c cho quyn thc thi th tc nhng s khng c quyn trc
tip truy xut cc i tng ca th tc. Mt th tc c th c m ha ngay khi
c to hoc chnh sa v th ngi s dng khng th c c cc cu lnh
trong th tc.
Phn loi:
- System sp: c lu tr trong CSDL master v c t tn vi tip u ng l
sp. Chng ng vai tr khc nhau ca cc tc v c cung cp trong SQL Server.
V d: Sp_help, Sp_helpConstraint, .
- Local sp: c lu tr trong cc CSDL ca ngi dng, n thc thi cc tc v
(Task) trong CSDL cha n. Mt Local sp c th c ngi s dng to hoc t
cc sp h thng.
- Temporary sp: ging nh l mt local sp, nhng n ch hin hu cho n khi kt
ni to ra n b ng. N c nm trong CSDL TempDB. C 3 loi temporary
sp: local (private), Global, sp to trc tip trong TempDB.
- Extended sp: L mt th tc c to t cc ngn ng lp trnh khc (khng phi
SQL Server) v n c trin khai tnh nng ca mt th tc trong SQL Server.
Cc th tc ny c tn vi tip u ng l xp.
- Remote sp: l mt th tc c gi thc thi t mt server t xa.
11.1.2 To, thc thi, hiu chnh, xa stored procedures.

Khi thc thi th tc, bn phi cung cp cc gi tr ca tham s ca cc th tc


nu c. Mt th tc c th c gi thc thi hoc t ng thc khi SQL Server
khi ng. Gi thc thi bng t kha EXECUTE.

Trng Cao ang Cong Nghiep 4

Khoa Cong Nghe Thong Tin

Khi cn thm mt thm s (parameter) hoc thay i mt vi phn trong on


m th ta dng lnh ALTER hiu chnh.

Xa mt th tc dng lnh DROP

Cc th tc c th c to trc khi cc i tng m th tc tham chiu, t


tnh ny gi l tnh tr hon.
To th tc
Cch 1: Dng Enterprice Manager
R-Click ti Store procudure trong CSDL, chn New Store procudure
Cch 2: To Stored procedure Wizard

Tool Wizard, click vo DataBase, chn Create Store Procedure Wizard


Cch 3: Bng lnh Create proceduce
CREATE PROC [ EDURE ] procedure_name [ ; number ]
[ { @parameter data_type } [ VARYING ] [ = default ] [ OUTPUT ]
] [,...n ] [ WITH { RECOMPILE | ENCRYPTION | RECOMPILE, ENCRYPTION } ]
[ FOR REPLICATION ]
AS
sql_statement [ ...n ]

[ VARYING ]: Ch dng vi bin Cursor


V d 1: To th tc lit k cc order c ngy giao hng qu hn theo yu
cu
CREATE PROC dbo.overdueOrders qu hn
AS
SELECT *
FROM dbo.orders
WHERE RequiredDate < GETDATE() and shippeddate is
null
Kim tra s tn ti ca Stored procedures
sp_helptext proc_name

Thc thi mt Stored procedures


[ [ EXEC [ UTE ] ]
{
[ @return_status = ]
{ procedure_name [ ;number ] | @procedure_name_var
}
[ [ @parameter = ] { value | @variable [ OUTPUT ] | [ DEFAULT ] ]
[,...n ]
[ WITH RECOMPILE ]

n gin hn
EXECUTE ProductName [ ; number ][<parameter>[, n][ OUTPUT ]]

Khoa Cong Nghe Thong Tin

Trng Cao ang Cong Nghiep 4

V d:

EXECUTE

dbo.overdueOrders

Thc thi sp ngay khi SQL Server khi ng: Store procedure phi nm CSDL
Master.
Cch 1: Dng th tc Sp_procoption gn thuc tnh t ng thc thi
USE Master
EXECute Sp_procoption [ @ProcName = ] 'procedure'
, [ @OptionName = ] Startup
, [ @OptionValue = ] True

V d:
EXECute Sp_procoption dbo.overdueOrders Startup, True
Cch 2: Dng Enterprice Manager
R-Click ti tn th tc Properties Execute whenever SQL Server Start
Hiu chnh mt stored procedures
USE Northwind
GO
ALTER PROC dbo.overdueOrders
AS
SELECT CONVERT(CHAR(8), RequiredDate,1)
RequiredDate, CONVERT(CHAR(8), orderDate,1)
orderDate, orderId, Customerid, EmployeeID
FROM dbo.orders
WHERE RequiredDate<GETDATE()and shippeddate is
null
ORDER BY RequiredDate
Xa mt stored procedures
DROP ProcedureName

11.1.3 Tham s v bin trong Stored procedures.


Tham s v bin l phn c bn to nn s uyn chuyn ca th tc.

Input parameter: tham s nhp, a gi tr ca tham s thng bo cho th tc


nn lm g trong CSDL

Output parameter: tham s xut cha gi tr tr v ca th tc.


Khi dng tham s phi khai bo tham s (Tn tham s, kiu d liu, Gi tr mc nhin
nu c, c ch dn tham s OUT PUT khng)
@parameter_name [AS] datatype
[=default | NULL] [VARYING] [OUTPUT]

V d 1: To th tc dng chn mt mu tin vo bng Customer, vi cc tham


s dng Input
USE SalesDB
GO

Trng Cao ang Cong Nghiep 4

Khoa Cong Nghe Thong Tin

CREATE PROC Sp_InsertCust


@No_para VARCHAR(10),
@Name_para NVARCHAR(50),
@Address_para NVARCHAR(50),
@Phone_para VARCHAR(24),
@Fax_para VARCHAR(24),
@Mail_para VARCHAR(50)
AS
INSERT INTO tblCustomer
(CustNo, CustName, Address, Phone, Fdax, Mail)
VALUES (@No_para, @Name_para, @Address_para,
@Phone_para, @Fax_para,@Mail_para)
Thc thi th tc c tham s
USE SalesDB
GO
Sp_InsertCust CDS, Trng Tin hc ABC,12
Nguyn Vn Bo, 2352344,234652,cds@yahoo.com
Kim tra vic chn d liu
SELECT CustMo, CustName, Address
FROM tblCustomer
V d 2:
USE Northwind
GO
IF EXISTS (SELECT name
FROM sysobjects
WHERE name = GetUnitPrice AND
type = P)
DROP PROCEDURE GetUnitPrice
GO
CREATE PROCEDURE GetUnitPrice @prod_id int, @unit_
price money OUTPUT
AS
SELECT @unit_price = UnitPrice
FROM Products
WHERE ProductID = @prod_id
GO

Trng Cao ang Cong Nghiep 4

Khoa Cong Nghe Thong Tin

Thc thi: Bn phi khai bo mt bin trc khi gi th tc thc thi


DECLARE @price money
EXECUTE GetUnitPrice 77, @unit_price = @price OUTPUT
PRINT CONVERT(varchar(6), @price)
GO
V d 3: To th tc InsertRows nh sau:
USE SalesDB
GO
CREATE TABLE mytable
( column1 int, column2 char(10) )
GO
CREATE PROCEDURE InsertRows @start_value int
AS
DECLARE @loop_counter int, @start_val int
SET
@start_val = @start_value - 1
SET
@loop_counter = 0
WHILE (@loop_counter < 5)
BEGIN
INSERT INTO mytable VALUES (@start_val + 1, "new row")
PRINT (@start_val)
SET @start_val = @start_val + 1
SET @loop_counter = @loop_counter + 1
END
GO
Thc thi: Hy thc thi th tc vi gi tr khi to l 1
EXECUTE InsertRows 1
GO
Kim tra kt qu
SELECT * FROM mytable
V d 4:
--- To th tc Count_tables c 2 tham s Output
USE Pubs
GO
CREATE PROC count_tables
@authorcount INT OUTPUT,
@titlecount INT OUTPUT

Trng Cao ang Cong Nghiep 4

Khoa Cong Nghe Thong Tin

AS
SELECT * FROM authors
SET @authorcount=@@rowcount
SELECT * FROM Titles
SET @titlecount=@@rowcount
---- Thc thi th tc Count_tables
DECLARE @a_count INT, @t_count INT
EXECUTE count_tables @a_count OUTPUT, @t_count OUTPUT
SELECT authorcount=@a_count, titlecount=@t_count
V d 5: Vit mt th tc tnh giai tha ca mt s nm trong khong 0 n 12
Dng T-SQL tnh giai tha bng quy, ca cc s t 0 n 12. Cc tham s c
gi tr ln hn 12 s khng cho php bi v kt qu tr v s vt qu phm vi ca
d liu kiu int
CREATE PROC Giaithua @so1 int
AS
DECLARE @So1Giam1 int, @Ketqua int
IF (@so1 < 0 OR @so1 > 12)
BEGIN
-- Gi tr tham s khng hp l.
RETURN -1
END
IF (@so1=0 or @so1=1)
SELECT @Ketqua=1
ELSE
BEGIN
SET @ So1Giam1=@So1 - 1
EXEC @Ketqua=Giaithua @
li chnh n
IF (@Ketqua= -1)
BEGIN
RETURN -1
END

So1Giam1

SET @Ketqua=@Ketqua * @so1


IF (@@ERROR <> 0)
RETURN -1

qui

gi

Trng Cao ang Cong Nghiep 4

Khoa Cong Nghe Thong Tin

END
RETURN(@Ketqua)
Thc thi: Tnh giai tha cho 3
DECLARE @kq INT
EXEC @kq = giaithua 3
PRINT @kq
Khi th tc Giathua tn ti th chng ta c th dng b lnh sau hin th giai
tha ca tt c cc s t 0 n 12:
DECLARE @Ketqua int, @n int
SET @Ketqua =0
SET @n =0
WHILE (@n <= 12) BEGIN
EXEC @Ketqua = Giaithua @n
IF (@Ketqua = -1) BEGIN
RAISERROR('Error executing factorial procedure.
', 16, -1)
RETURN
END
PRINT CONVERT(varchar, @n) + '! = ' + CONVERT(varchar(5
0), @Ketqua)
SET @n=@n + 1
END
11.2 FUNCTIONS.
Hm thc s tng t nh Stored procedure ca SQl Server, ni dung bao gm cc pht
biu T-SQL kt hp to thnh hm, c th gi thc thi cc hm nh l mt n v c lp.
Hm c dng trong:

Danh sch chn ca mt cu lnh Select cho ra mt gi tr.

Mt iu kin tm kim ca mnh Where trong cc cu lnh T-SQL


Buil-in functions: Nhng hm ny hot ng nh l mt nh ngha trong T-SQL v
khng th hiu chnh. N c th ch c tham chiu trong cc cu lnh T-SQL. Gi tr
tr v ca hm c th l mt Rowset (tp cc dng), argergate v scalar (v hng).
Nn tm hiu v tn dng ti a cc hm Buil-in function ca SQL Server
User-defined function hay cn gi l UDFs: Nhng hm ny do ngi dng t nh
ngha p ng mt mc tiu no . Mt s hn ch so vi th tc l cc tham s
truyn vo khng c mang thuc tnh OUTPUT, ngha l gi tr ca tham s khng
c truyn ra bn ngoi hm UDF, thay vo ta phi s dng gii php l tr v gi tr

Trng Cao ang Cong Nghiep 4

Khoa Cong Nghe Thong Tin

cho hm bng pht biu RETURN. Gi tr tr v ca hm c th l mt gi tr v hng


(Scalar valued) hoc bng (Table-valued)
Scalar Function. Mt hm v hng tr v mt gi tr n v c th c dng bt c
ni no biu thc hay bin c th c dng (cu lnh Select, mnh SET ca cu lnh
Update). Mt hm v hng c th c xem nh kt qu ca vi php ton hoc hm
chui.
Table-valued Function. Mt hm c gi tr bng tr v mt tp kt qu v c th c
dng bt c ni no bng hay view c dng. Hm gi tr bng c th c tham chiu
trong mnh FROM ca cu lnh SELECT. Cc hm ngi dng c th c nhiu phc
tp hn viu v c th c tham s.
Vi cc ngn ng lp trnh khc, nu tham s khng truyn vo th xem nh l hm s ly
gi tr default ca cc tham s, nhng vi SQL Server th phi truyn gi tr Default vo.
11.2.1 Scalar Functions
CREATE FUNCTION [ owner_name. ] function_name
([ { @parameter_name [AS] scalar_parameter_data_type [ = default ] } [,...n ] ])
RETURNS scalar_return_data_type
[ WITH < function_option> [ [,] ...n] ]
[ AS ]
BEGIN
function_body
RETURN scalar_expression
END

V d:
CREATE FUNCTION TotalAmount
(@UnitPrice money, @Quantity smallint, @Discount
real)
RETURNS money
AS
BEGIN
RETURN (@UnitPrice*@Quantity)*(1-@discount)
END
S dng:
SELECT ProductID, Total=dbo.TotalAmount(UnitPrice,
Quantity, Discount)
FROM [Order details]
WHERE OrderID=10250
11.2.2 Table-valued Functons
c chia thnh hai loi nh: inline table-value v multistatement table-valued.

Trng Cao ang Cong Nghiep 4

Khoa Cong Nghe Thong Tin

Mt hm inline table-valued: N c th c xem nh l mt View c tham s.


Chng thc thi mt cu lnh Select nh trong mt view nhng c th bao gm cc
tham s, ging nh th tc.
CREATE FUNCTION [ owner_name. ] function_name
([ { @parameter_name [AS] scalar_parameter_data_type [ = default ] } [,...n ] ])
RETURNS TABLE
[ WITH < function_option > [ [,] ...n ] ]
[ AS ]
RETURN [ (] select-stmt [) ]

V d 1:
CREATE FUNCTION SalesByCategory(@Categoryid Int)
RETURNS TABLE
AS
RETURN
(SELECT c.CategoryName, P. ProductName,
SUM(Quantity) AS TotalQty
FROM Categories c
INNER JOIN Products p ON c.CategoryID= p.
CategoryID
INNER JOIN [Order Details] od ON p.ProductID =
od.ProductID
WHERE c.CategoryID= @Categoryid
GROUP BY c. CategoryName,p.ProductName)
Hm Multistatement Table-valuesd l dng phc tp nht. Loi hm ny xy
dng tp kt qu t mt hay nhiu cu lnh SELECT.
CREATE FUNCTION [owner_name.]function_name
([{@parameter_name [AS] data_type [=default]} [ ,n ]])
RETURNS @return_variable
TABLE ({column_definition | table_constraint} [ ,n ])
[WITH { ENCRYPTION | SCHEMABINDING } [ [,] ...n] ]
[AS]
BEGIN
function_body
RETURN
END

V d:
CREATE FUNCTION Contacts(@suppliers bit=0)

Trng Cao ang Cong Nghiep 4

Khoa Cong Nghe Thong Tin

RETURNS @Contacts TABLE (ContactName nvarchar(30),


Phone nvarchar(24), ContactType nvarchar(15))
AS
BEGIN
INSERT @Contacts
SELECT ContactName, Phone, 'Customer' FROM
Customers
INSERT @Contacts
SELECT FirstName + ' ' + LastName, HomePhone,
'Employee'
FROM Employees
IF @Suppliers=1
INSERT @Contacts
SELECT ContactName, Phone, 'Supplier
FROM Suppliers
RETURN
END
S dng
SELECT * FROM CONTACTS(1) ORDER BY ContactName

Trng Cao ang Cong Nghiep 4

Khoa Cong Nghe Thong Tin

BI 12:
TRANSACTIONS LOCK
SQL Server dng cc transaction v cc lock m bo tnh vng chc v ton vn d
liu, khng chp nhn cc li xy ra trong h thng.
12.1 TRANSACTIONS
Transaction: Mt transactin c th c nh ngha nh l mt chui cc thao tc thc
thi cng vi nhau nh l mt khi thng nht n ca cng vic. Mt khi thng nht ca
cng vic phi c bn c im c gi l ACID (Atomicity, Consistency, Isolation, v
Durability).

Atomicity: c tnh ny th hin rng hoc l tt c cc hiu chnh d liu c


thc hin hoc l tt c chng u khng c thc hin.

Consistency: y l mt trng thi m tt c cc d liu trong tnh trng nht


qun sau khi mt transaction c hon tt mt cch thnh cng. Tt c cc qui
tc (rules) trong mt CSDL quan h phi c tho mn i vi cc hiu chnh
trong mt transaction nhm duy tr ton b cc ton vn d liu.

Isolation: c tnh ny th hin rng bt k s hiu chnh d liu thc hin bi


cc transaction ng thi phi c lp vi cc hiu chnh khc ca cc transaction
ng thi khc. Ni mt cch n gin hn, mt transaction hoc l truy xut d
liu trng thi m trc khi transaction ng thi thc hin hiu chnh hoc l
truy xut d liu sau khi transaction th hai c hon tt.

Durability: c tnh ny th hin rng bt k thay i trong d liu bi mt


transaction hon tt gi nguyn nh hng trong h thng. V vy, bt k s
thay i bi mt transaction hon tt vn cn thm ch trong s kin h thng b
fail. c tnh ny c m bo bi s d phng v phc hi transaction log.
Ba loi Transaction:

Implicip Transactions (Transaction ngm nh): Khi mt connection ang m


trong ch implicip, SQL Server bt u mt transaction mi mt cch t ng
sau khi transaction hin hnh hon tt hoc Roll back. Bn khng cn pht ha bt
u mt transaction; bn ch cn commit hoc Rollback mi transaction. Ch
Implicit transaction pht sinh mt chui cc transaction lin tc
Sau khi ch transactin implicit c bt ON cho mt kt ni, SQL Server t
ng bt u mt transaction khi n thc thi bt k cc lnh sau: Alter Table,
Creat, Delete, Drop, Fetch, Grant, Insert, Open, Revoke, Select, Trucate Table,
Update.

Explicip Transactions: (Transaction tng minh): L mt transaction m


chng ta phi nh ngha bt u mt transaction (Begin transaction) v kt thc
mt transaction (Commit Transaction)
Bt u mt transaction
BEGIN TRAN [ SACTION ] [ transaction_name | @tran_name_variable]

Hon Tt Transaction
COMMIT [ TRAN [ SACTION ] [ transaction_name | @tran_name_variable ] ]

Lu v tr Transaction
SAVE TRAN [ SACTION ] { savepoint_name | @savepoint_variable }

Khoa Cong Nghe Thong Tin

Trng Cao ang Cong Nghiep 4

Hy mt Transaction
ROLLBACK [ TRAN [ SACTION ]
[ transaction_name | @tran_name_variable
| savepoint_name | @savepoint_variable ] ]

@@TRANCOUNT: Tr v s th t m trasaction c m, ti a lng 32 cp,


khng nn lng.

Distributed Transaction: l mt loi explicip Trangsaction nhng giao tc ca n


lin quan nhiu server. S qun l phi c kt hp gia cc nh qun l ti
nguyn ca cc server v iu ny gi l transaction manager. Cc transaction
trong mt server nhng tham chiu t nhiu database, thc ra cung l mt
distributed transaction.

Transaction log l mt tranction dng lock ngn chn ngi dng hiu chnh d liu
nh hng t cc transaction cha hon tt.
Cng dng transaction log

Phc hi cc transaction c bit: Khi mt application a ra lnh ROLL


BACK hoc SQL Server nhn ra mt li, th bng ghi log c dng roll back
bt k hiu chnh trong sut qu trnh ca transaction cha hon tt.

Phc hi tt c cc transaction cha hon tt khi Sql server c bt u:

Hon tr li atabase li n mt thi im b li: Nhm m bo khng pht


sinh mu thun sau khi c s c.
Write-ahead Transaction Log: Dng Write ahead log m bo rng khng c d liu
hiu chnh no c ct vo a trc khi ct trong log record.
Check point : L mt hnh ng thc hin nh k trong CSDL, n s ghi li tt c cc
transaction lin quan n data ln transaction log, nhm phc v cho vic recovery data.
Check point xy ra khi:

Gp cu lnh Check point.

C s hiu chnh trn CSDL

Trc ngay khi SQL Server Shutdow

p nh nh k.
Transaction RecoveryAction Required
None

Transaction 1

Roll Forward

Transaction 2
Transaction 3
Transaction 4
Check Point

Transaction
System
failure 5

Roll back
Roll Forward
Roll back

Trng Cao ang Cong Nghiep 4

Khoa Cong Nghe Thong Tin

12.2 LOCK
Lock: l c cu ngn chn cc xung t do cc user khng th c hoc hiu chnh cc
d liu m cc d liu ny hin ang trong mt tin trnh x l khc. Tuy nhin, bn vn
c th thao tc trn nhng i tng cn ph thuc vo chuyn tc m user khc ang
thc hin. Khi h thng s kim sot tin trnh ca bn c tng thch vi qu trnh
trc hay khng.
Cc vn ng thi (Concurrency problem)

Lost Updates (cp nht mt d liu): Lost updates xy ra khi 2 hoc nhiu
transaction chn cng mt d liu v sau cp nht dng da trn gi tr c. Mi
transaction khng bit nhng transaction khc. Thao tc cp nht cui cng ghi ln
nhng thao tc cp nht khc m kt qu dn n mt d liu.

Uncommitted Dependency (Dirty Read c d liu sai): Uncommitted


Dependency xy ra khi transaction th 2 chn mt dng m ang sn sng cp nht
bi mt transaction. Transaction th 2 ang sn sn c d liu m cha c hon
tt v c th b thay i bi transaction cp nht

Inconsistent Analysis (Nonrepeatable Real c hai ln mu tin): Xy ra khi


transaction th hai truy xut cng mt d liu vi vi ln v c ln nhng d liu
khc nhau mi ln c. Inconsistent Analysis tng t vi Uncommitted
Dependency trong trng hp transaction th nht ang hiu chnh d liu th mt
trasaction th hai c d liu. Tuy nhin, d liu c bi transaction th hai c
commited bi transaction update

Phantom Reads (c cc mu tin ma): Xy ra khi hnh ng insert hoc delete


c thi hnh trn mt dng d liu m n thuc vng d liu c ca mt
transaction khc.
Kiu locks

Share locks: c dng cho nhng thao tc m khng lm thay i hay cp nht
d liu (thao tc ch c), nh l mt cu select

Exclusive locks: c dng cho nh thao tc hiu chnh d liu, nh l Insert,


Update, hay Delete. m bo rng nhiu cp nht khng th c thc hin trong
cng ti nguyn ti cng mt thi im.

Update locks: c dng trn nhng ti nguyn m c th c cp nht. Ngn


chn mt dng thng thng ca deadlock m xy ra khi nhiu session ang c,
ang lock, v c kh nng cp nht ti kuyn sau ny.

Intent locks: Dng thit lp mt lock k tha. Kiu intent lock l : Intent
shared (IS), Intent exclusive (IX), v share with intent exclusive (SIX)

Schema locks: c dng khi thao tc thy thuc vo gin ca table l ang
thc thi. Kiu schema locks l schema modification (Sch-M), schema stability
(Sch-S)

Bulk Update (BU) locks: Cho php chia s cho Bulk-copy thi hnh.

Deadlock
Deadlock xy ra khi c mt s ph thuc chu trnh gia hai hay nhiu lung cho mt
tp hp ti nguyn nguyn no . SQL Server s t gii quyt trng hp deadlock

Trng Cao ang Cong Nghiep 4

Khoa Cong Nghe Thong Tin

bng cch RoolBack mt trong cc transaction, v u tin rollback nhng transaction


c thi gian t hn. gim bt deadlock, bn nn:
Truy xut cc object theo th t.
Trnh s tng tc ngi dng trong thi gian transaction.
C gi transaction cng ngn cng tt.
Dng mc c lp thp nht.
Dng gii hn cc connection.

Trng Cao ang Cong Nghiep 4

Khoa Cong Nghe Thong Tin

BI 13:
S DNG CURSORS TRUY XUT D LIU
13.1 Khi nim
Cursor l mt i tng ca CSDL m n h tr cho php truy xut v thao tc d liu
trong mt tp kt qu (result set). Sau khi cursor c nh v trn mt dng, cc hot
ng c th thc hin trn dng hoc khi cc dng bt u t v tr .
Dng Cursor :

nh v mt dng c bit trong tp kt qu.

Truy xut mt hoc khi dng bt u t v tr cursor trong tp kt qu.

Cung cp thao tc hiu chnh d liu cho cc dng ti v tr ca cursor trong tp


kt qu.

Cung cp cc mc khc nhau ca tnh tng minh trong d thay i c to


bi nhng ngi dng khc n tp kt qu.

Cung cp vic truy cp d liu trong tp kt qu cho cc cu lnh T-SQL trong


scripts, Stored procedure, v triggers.
Cc thao tc cn thc hin trong khi s dng cursor trong SQL Server:

Cursor cn phi khai bo v cc thuc tnh ca n cng cn c xc nh.

M cursor.

Phi ly (fetch) cc dng cn thit t cursor.

D liu trong dng hin hnh c th c hiu chnh nu cn thit.

Tm thi khng dng cursor th phi ng cursor li.

Cursor cn phi c gii phng (deallocate) khi khng cn dng na.


Cursor:

T-SQL Server cursors: Cursor ny c da trn cu lnh khi bo cursor, n


c dng ch yu trong cc script, strore procedure, triggers. N c thi hnh
trn server v c qun l bi cc cu lnh T0SQL gi t client n server. Khi
lm vic vi cursor th phi khai bo, m, truy xut, x l, ng, gii phng.

API Server cursors (API-Application Program interface): N c thc thi


trn server v c qun l bi mt hm cursor API. API Server cursors c
cung cp bi hm cursor API trong OLE DB, ODBC, v DB-Library. Mi ln mt
ng dng ca client gi mt hm cursor API, SQL server OLE DB provider,
ODBC driver, hoc DB-Library DLL gi cc yu cu n server cho hnh ng
ng vi cc hm cursor API. N ch khc vi T-SQL cursor syntax, cn v bn
cht tng t.

Client Cursors: SQL server ODBC driver, DB-Library DLL, v ADO API DLL
gip thi hnh cursor client mt cch ni ti. cursor client c thi hnh bng cch
nm gi tp kt qu d liu ca clients. Mi ln Application ca client gi hm
cursor API, th SQL server OLE DB provider, ODBC driver, hoc DB-Library
DLL thc thi tnh ton ngay trn tp kt qu d liu c gi trn client. Ta ch
dng client cursor lm gim bt s gii hn m server consor khng c cung
cp cc cu lnh T-SQL. Nu con tr static hoc Scroll th ta c th dng client
cursor.

Trng Cao ang Cong Nghiep 4

Khoa Cong Nghe Thong Tin

Loi cursor
Static

Tp kt qu ca contr loi Static c xy dng trong tempdb khi con tr c


m.

Mt static con tr lun lun hin tp kt qu ging nh tp kt qu c c ngay


sau khi con tr m.

Con tr khng phn nh c bt k s thay i no trong database ngay c khi


nhng dng d liu c thay i, cc dng mi c insert bi cc transaction khc
cng vn khng hin ln mc d chng tha iu kin lc d liu.

Thao tc Insert, Update, Delete u khng c tc dng khi dng static cursor
Keyset-driven:

Thnh vin v th t ca cc dng trong mt keyset-driven cursor l c nh khi


cursor c m. Con tr c iu khin bi mt tp gi tr nhn dng goi l
Keyset. Keyset c xy dng t mt tp cc ct m dng nhn dng cc dng
trong tp kt qu. Keyset c xy dng trong Tempdb khi con tr c m

Cho php hiu chnh (update, delete) d liu trn ct khng l keyset (bi ch
cursor hoc t user khc) khi user duyt thng qua con tr.

C th thm (insert) vo bng nu nh cursor th chn d liu vo bng.


Dynamic: Tri ngc vi static cursor.

Dynamic cursors phn nh c ton b s thay i ca cc dng d liu trong


tp kt qu khi duyt con tr.

Gi tr d liu, th t, v thnh vin ca cc dng trong tp kt qu c th thay i


ng vi mi ln duyt con tr.

Tt c cc lnh Insert, Update, Delete ca cc user u hu hiu thng qua con


tr.

S Update hu hiu ngay tc thi nu chng c update thng qua qua con tr
ng vi ti mu tin hin thi, cn nu update bn ngoi con tr th n khng hu
hiu cho n khi n hon tt.
Fast Forward only: Tng t nh Dynamic cursor nhng n ch c th duyt con tr
tho mt chiiu t First n Last

Cusrsor type

Membership Order

Values

Forward-only

Dynamic

Dynamic

Dynamic

Static

Fixed

Fixed

Fixed

Dynamic

Dynamic

Dynamic

Dynamic

Keyset-driven

Fixed

Fixed

Dynamic

13.2 Lm vic vi T-SQL server cursors


Khai bo cursor
Bng cu lnh declare sau t kha AS trong stored procedures hoc functions

Trng Cao ang Cong Nghiep 4

Khoa Cong Nghe Thong Tin

DECLARE cursor_name CURSOR


[ LOCAL | GLOBAL ]
[ FORWARD_ONLY | SCROLL ]
[ STATIC | KEYSET | DYNAMIC | FAST_FORWARD ]
[ READ_ONLY | SCROLL_LOCKS | OPTIMISTIC ]
[ TYPE_WARNING ]
FOR select_statement
[ FOR UPDATE [ OF column_name [,...n ] ] ]

select_statement: l cu lnh truy vn nh ngha tp kt qu ca cursor. T


kha COMPUTE, COMPUTE BY, FOR BROWSE, and INTO Khng cho php
trong select_statement ny.

READ ONLY Khng cho php Update trong cursor ny.

UPDATE [OF column_name [,...n]]: Quy nh ct cho php c update khi dng
cursor. Nu OF column_name [,...n] c ch nh r rng th ch c cc ct c
ch nh mi c cho php hiu chnh, nu khng c column list, all columns c
th update.

M cursor
M cursor trc khi dng (Cursor phi c khai bo ri)
OPEN {cursor_name }

Ly mu tin hoc iu hng cursor (FETCH)


Truy xut tng dng d liu. Kim tra phm vi con tr bng @@Fetch_status
FETCH [[NEXT | PRIOR | FIRST | LAST | ABSOLUTE n | RELATIVE n]]
FROM cursor_name[ INTO @variable_name [,...n ] ]

@@Fetch_status: Tr v gi tr 0 hoc 1. Tr v 1 c ngha l con tr c


di n qu cui tp kt qu. Tr v 0 vn cn trong phm vi ca tp kt qu. Khi
dng vng lp While duyt c tp kt qu ca Cursor.
X l d liu:
C th dng cc cu lnh Upadte hoc Delete hiu chnh d liu

S dng d liu ca mu tin hin hnh: d liu c ly ln v gn cho


cc bin tng tng trong cu lnh Fetch

Cp nht d liu thng qua cursor: thc cht l d liu c hiu chnh
trc tip vo trong bng
Cp nht gi tr cho ct

UPDATE <Ten Table>


SET <TenColumn>= <Value> [,..n]
WHERE CURRENT OF <Cur_Name>

Xo d liu thng qua cursor: Thc s l d liu xa trn bng


DELETE <Ten Table>

Trng Cao ang Cong Nghiep 4

Khoa Cong Nghe Thong Tin

WHERE CURRENT OF <Cur_Name>

ng Cursor
Kt thc hnh ng ca cursor cho ln m (open), n vn hin hu cho n khi
gp mt lnh Open khc hoc gp lnh Close cursor.
CLOSE cursor_name

Gii phng Cursor


Gii phng cursor, huy b tham chiu n con tr t session hin hnh. Tin trnh
ny lm cho ti nguyn tr v trng thi sn sng truy xut.
DEALLOCATE cursor_name

13.3 V d.
Gi s ngi qun l cn mt bng bo co lch s khch hng theo dng sau:
Customer:ALFKI - Alfreds Futterkiste
Order:10643 (Aug 25 1997)
Order:10692 (Oct 3 1999)
Order:10702 (Oct 13 1999)
Customer:ANATR - Ana Trujillo Emparedados y helados
Order:10625 (Aug 8 1997)
Order:10759 (Nov 28 1999)
Customer:ANTON - Antonio Moreno Taquera
Order:10507 (Apr 15 1997)
Order:10535 (May 13 1999)
Order:10573 (Jun 19 1999)
Order:10677 (Sep 22 1999)
Order:10682 (Sep 25 1999)
on Batch thc hin bo co nh sau:
--- Khai bo contr
DECLARE rpt CURSOR FOR
SELECT c.CustomerID, c.CompanyName, o.OrderID,
o.OrderDate
FROM Customers c, Orders o
WHERE c.CustomerID = o.CustomerID AND c.CustomerID LIKE
'A%' AND DatePart( year, o.OrderDate) = 1997
DECLARE @cid char( 8), @cname char( 40),
@ordid char( 8), @orddt datetime, @old char( 8)
--- M contr
OPEN rpt

Trng Cao ang Cong Nghiep 4

Khoa Cong Nghe Thong Tin

--- Ly d liu ca mu tin u tin vo cc bin


FETCH NEXT FROM rpt INTO @cid, @cname, @ordid, @orddt
SELECT @old = '
WHILE @@fetch_status = 0
BEGIN
IF @old = @cid
BEGIN
PRINT ' Order:' + rtrim( @ordid) + ' (' +
cast(@orddt as CHAR( 10)) + ')'
END
ELSE
BEGIN
PRINT 'Customer:' + rtrim( @cid) + ' - ' +
rtrim(@cname)
PRINT ' Order:' + rtrim( @ordid) + ' (' +
cast(@orddt as CHAR( 11)) + ')'
SELECT @old = @cid
END
FETCH NEXT FROM rpt INTO @cid, @cname, @ordid,
@orddt
END
--- ng con tr
CLOSE rpt
--- Gii phng con tr
DEALLOCATE rpt
V d 2:
DECLARE MyCursor CURSOR FOR
SELECT c.CustomerID,c.Companyname,c.contactname,
o.OrderID,o.OrderDate
FROM Customers c, Orders o WHERE c.CustomerID =
o.CustomerID
FOR UPDATE
OPEN MyCursor
DECLARE @cid VARCHAR( 8), @c VARCHAR( 80), @o INT,
@od DATETIME, @cn VARCHAR( 80)
FETCH NEXT FROM MyCursor INTO @cid, @c, @cn, @o, @od
SELECT @cid
BEGIN TRANSACTION
UPDATE Customers SET CompanyName = 'q'

Trng Cao ang Cong Nghiep 4

WHERE CURRENT OF Mycursor


DEALLOCATE MyCursor
SELECT * FROM Customers
ROLLBACK TRANSACTION

Khoa Cong Nghe Thong Tin

Trng Cao ang Cong Nghiep 4

Khoa Cong Nghe Thong Tin

BI 14:
BY LI - TRIGGER
14.1 Gii thiu v trigger
Cht lng ca mt CSDL c nh gi mt phn bi tnh nht qun v chnh xc
ca d liu trong CSDL. m bo tnh ton vn d liu ta c nhiu phng php,
trigger l mt phng php hu hiu.

Trigger l mt loi stored procedure c bit, n c nh ngha t ng thc


thi khi c mt cu lnh Update, Insert, hoc Delete c pht ra trn bng hoc
View.

Trigger l mt cng c mnh m n c th dng rng buc cc qui tc qun l


mt cc t ng khi d liu b hiu chnh.

Trigger cng c th ni rng cc tnh ton vn kim sot logic ca SQL Server.

Trigger t ng thc thi, khng th gi mt trigger thi hnh mt cch trc tip.
Dng trigger khi:

Rng buc ton vn d liu cho ph hp vi m hnh quan h CSDL.

Kim sot d liu hin ti khi c thay i n gi tr trong mu tin trong bng.

Kim tra d liu nhp vo ph hp vi mi quan h d liu gia cc bng.

nh ngha thng bo li ca ngi dng.

So snh trng thi ca d liu trc v sau hiu chnh


c im v gii hn ca trigger

Trigger (After trigger) l Reactive; constraints v instead of trigger l proactive.


(Reactive: khi delete/insert mt dng vo table, th sau khi insert th trigger mi
uc t ng thc thi th gi l reactive, proactive l kim tra trc khi
Insert/Delete)

Cc constraint c kim tra trc, sau mi ti trigger.

Cc bng c th c nhiu trigger cho bt k hnh ng no. Tuy nhin khng nn


dng qu nhiu trigger trong cng mt bng. SQl Server ch cho php ch nh
trigger no thi hnh u tin, thi hnh cui cng, cn cc trigger khc th t thi
hnh khng xc nh. V vy, nu c qu nhiu trigger trn 1 i tng c th s
gp nhiu rt ri khi c nhiu trigger khng xc nh th t.

Khng th to trigger trn cc i tng temporary.

Nn thit k trigger khng tr v tp kt qu nhm m bo tnh cht chuyn tc


gia cc user v lp trnh.

Cc trigger c th x l hnh ng trn nhiu dng.

Trigger khng ngn nga thay i cu trc, trigger ch quan tm n s thay i


d liu trong bng. Khi bn xa i tng trong CSDL vi cc bc hp l, SQL
Server s cho php xa i tng v trigger khng th kim sot c.

Trigger Events: C 3 bin c m trigger s t ng thc thi khi bin c xy ra,


l Insert, Update, Delete. Trigger khng th c gi mt cch trc tip.
C cu thc thi trigger:

Trng Cao ang Cong Nghiep 4

Khoa Cong Nghe Thong Tin

Khi insert hoc update d liu ca bng bt trigger, trigger s lu tr dng d liu
mi hoc dng d liu hiu chnh vo mt bng c tn l Inserted trong b
nh cash, khi xa d liu ca bng bt trigger ln, trigger s lu tr dng d liu
b xa vo bng c tn l Deleted trong b nh cash. Cc bng tn ti trong b
nh v c truy vn bi cc lnh T-SQL trong cc trigger. Bn c th s dng
thng tin trong bng inserted v Deleted so snh, lu tr, rollback, nu cn,
khi bn khng cn to ra cc bin lu tr thng tin v tc truy xut
nhanh.
Hai loi trigger trong SQL Server 2000: INSTEAD OF v AFTER (nu ch ni trigger
c ngha l ni n AFTER Trigger)

FOR triggers v AFTER triggers: cc trigger ny ch c thc thi khi tt c


cc thao tc Insert, Update hay Delete thc hin xong. Tt c cc hnh ng tham
chiu v kim tra constraint cng phi c thc hin xong trc khi trigger thi
hnh. Loi trigger ny ch ci t c trn bng, khng ci t c trn View.
Khi to trigger v khng ch nh r th mc nh l AFTER, FOR ch l t kha
tng thch ngc vi cc phin bn trc ca SQL Server.

INSTEAD OF triggers: Trigger ny ch c trong SQL Server 2000. Trigger ny


s thi hnh thay cho cc cu lnh Insert, Delete, Update. Nh vy khi to trigger
kiu ny bn phi vit li cc lnh insert, Delete, Update i vi d liu. C th p
dng cho c bng v View, tuy nhin n khng cho php p dng vi cc view c
la chn WITH CHECK OPTION.
Nested trigger: c ngha l bng Table1 c trigger, Table2 c trigger khc. Nu ta thao
tc trn Table1 th trigger ca n s thc thi, nu thao tc ny c lin quan n Table2 th
trigger2 bng Table2 thc thi. Gi l lng cc trigger, bn c th lng ti a l 32 cp.

14.2 To v qun l cc trigger


Mt trigger c th to v qun l bng cch s dng Query Analyzer hoc Enterprice
Manager. To mt trigger trn i tng th phi c quyn Owner i vi i tng.
14.2.1 To trigger
CREATE TRIGGER trigger_name
ON { table | view }
[ WITH ENCRYPTION ]
{
{ { FOR | AFTER | INSTEAD OF } { [DELETE] [,] [ INSERT ] [, ] [ UPDATE ] }
[ WITH APPEND ]
[ NOT FOR REPLICATION ]
AS
sql_statement [ ...n ]
}
}

Gii thch:
- trigger_name : Tn ca trigger. Nu trong 1 bng c nhiu trigger th tn ca
cc trigger phi l duy nht.
- ON { table | view }: Ch nh table/View c p dng trigger, ch c instead
of c p dng cho c view v table.
- [ WITH ENCRYPTION ]: Trigger c m ha. Thng tin m ha nm trong
bng syscomment

Trng Cao ang Cong Nghiep 4

Khoa Cong Nghe Thong Tin

{ FOR | AFTER | INSTEAD OF }: Xc nh loi trigger cho thao tc


DELETE, INSERT, UPDATE.
Delete trigger: trigger s c thc thi khi c mu tin b xa khi bng, SQL
Server to ra bng mang tn DELETED ct mu tin b xa, trong trigger ta c
th tham kho n mu tin ny.
Insert trigger: trigger s c thc thi khi c mu tin chn vo bng, SQL server
to ra bng mang tn INSERTED ct mu tin chn, trong trigger ta c th tham
kho n mu tin ny.
Update trigger: Mi khi c mu tin no c cp nht, gi tr nhng ct c
lin quan n trigger s c kim tra trc khi cp nht. Mu tin b cp nht s
c sao lu trong bng Inserted (cha gi tr mi) v Deleted (cha gi tr c).
- [ NOT FOR REPLICATION ]: Trigger s khng thc hin khi bng c lin
quan n k thut sao chp nhn bn (relication)
Lu :

Mt hnh ng (Insert hoc Delete hoc Update) c th kch hot cng


lc nhiu trigger khc nhau.

Trigger s thi hnh cho d thao tc ca ngi s dng c tc ng thc


s trn cc mu tin hay khng, do dng @@ROWCOUNT kim
tra trc khi cho cc hnh ng trong trigger thi hnh.

Cc pht biu sau khng th c trong trigger: cc pht biu Create,


Drop, Alter Table, Alter DataBase, Truncate Table, Grant/Revoke,
Reconfigure, Load DataBase, Transaction, Update statistics, Select
Into, Disk.
14.2.2 Qun l trigger
Alter Trigger 2 Hiu chnh trigger
Drop Trigger : Xa trigger
Sp_rename : i tn.
Sp_helptrigger, Sp_heltext: Xem code trigger
DISABLE TRIGGER/ ENABLE TRIGGER trong cu lnh Alter Table

14.3 Vi v d v trigger.
V d 1: Vit mt trigger cho thao tc Insert, im kim tra ngy lp ho n th lun lun
ln hn ngy giao.
CREATE TRIGGER Trg_NgayLap_NgayGiaoHD
ON Hoadon AFTER INSERT
AS
DECLARE @NgayLapHD DateTime, @NgayGiao DateTime
SELECT @NgayLapHD=hd.NGayLapHD,NgayGiao=hd.NgayGiaoNhan
FROM HoaDon hd INNER JOIN Inserted i ON hd.MaHD=i.Mahd
If @NgayGiao<@NgayLapHD
2

Tham tho c php lnh trong Books-Online

Trng Cao ang Cong Nghiep 4

Khoa Cong Nghe Thong Tin

BEGIN
RAISERROR(500103,10,1)
ROLLBACK TRANSACTION
END
-------------------------------INSERT HoaDon VALUES (1003,'1/1/2004','N','TP.
HCM',111,12/24/2003)
V d 2: To mt trigger c tn l Msg_InstUpd_Kh, trigger ny thc hin chi 2 thao tc
Insert, Update ca bng KhachHang. Trigger s thng bo C n dong da duoc hieu
chinh.
Use SalesDB
GO
CREATE TRIGGER Msg_InstUpd_Kh
On KhachHang
FOR INSERT, UPDATE
AS
RAISEORROR(C %d dng c hiu chnh,
0,1,@@Rowcount)
RETURN
Kim chng: bng cch chn hoc cp nht 1 hoc nhiu mu tin vo bng
KhachHang.
INSERT INTO KhachHang ..
V d 3: Hai bng HoaDon v CT_HoaDon c quan h 1-n, tc l khi thm mt chi tit
ha n trong bng chi tit ho n th ha n ny phi c pht sinh trong bng
ha n. V th ta phi vit mt trigger Insert cho bng CT_HoaDon. Nu ta c trigger
ny th khi ta vi phm SQL Server cng s bo li v vi phm rng buc ton vn kha
ngoi. Tuy nhin ta hy vit mt trigger thc hin thng bao khi c li ny xut hin.
Use SalesDB
GO
CREATE TRIGGER Trigger_Ins_CT_HD
ON HoaDon
FOR INSERT
/* Insert trigger cho bng ha n*/
AS
IF NOT EXISTS
(Select * From Inserted I inner join HoaDon hd ON
i.Mahd = hd.Mahd)

Trng Cao ang Cong Nghiep 4

Khoa Cong Nghe Thong Tin

/* Nu Mahd c chn vo bng CT_HoaDon khng tn ti


trong bng ha n th khng chn c */
BEGIN
RAISERROR(60000,16,1,'MaHd', 'CT_HoaDon','Mahd','Hoa
Don')
ROLLBACK
END
V d 4: Price trong CT_HoaDon lun lun ln hn hay bng GiaGoc trong bng sn
phm. bt rng buc ny bn thng dng Check Constraints, tuy nhin bn cng c
th by li bng trigger
Create Trigger MGT_Gia
ON CT_HoaDon
FOR UPDATE
AS
IF EXISTS (Select * From INSERTED I where i.price <
tblItem.OriginalPrice)
Begin
RAISERROR(Khong th cp nht v gi khng hp
l,16,1)
ROLLBACK TRAN
End

Trng Cao ang Cong Nghiep 4

Khoa Cong Nghe Thong Tin

BI 15:
BO MT TRONG SQL SERVER
15.1 Khi nim v bo mt.
15.1.1 M hnh truy cp bo mt ca SQL Server.

Hnh 37: Cc lp kim tra bo mt chng thc ca SQL Server


Vic kt ni n SQL Server 2000 tht n gin. S bo mt c kim tra ba ni khc
nhau: c th b kim hp l bi Windows 2000, bn thn SQL Server, mc CSDL ring
l. Ngay sau khi bn kt ni vo SQL Server bn cha tht s truy cp c bt k mt
i tng CSDL no, bn cn phi c cp quyn (permissions) truy cp n i tng.
15.1.2 Cc ch bo mt.
SQL Server 2000 cung cp hai ch bo mt:
Hai loi chng thc
Windows Authentication
SQL Server kim tra nhn dng ca user v sau cho php hay t chi ng
nhp truy xut da trn c s tn ca User m khng cn tn ng nhp v
password ring bit. iu ny gi l kt ni tin tng. Khi bn kt ni n SQL
Server theo cch ny th c ngha l bn trnh by vi SQL Server mt y nhim
bo mt ca Windows (nh l mt th bi truy cp ca bn). Bn xy dng cc y
nhim ny trong qu trnh ng nhp vo mng windows 2000. Cc y nhim bo
mt ny c truyn m thm cho bn, v th bn khng cn lm bt c iu g
c bit vt qua vic kim tra bo mt.
SQL Server Authentication
Ngi qun tr CSDL c th to ra cc ti khon v password ng nhp SQL
Server. Cc ti khon ny hon ton khng tu thuc vo cc ti khon hay nhm
ngi dng h iu hnh. Nu c mt kt ni ch nh chng thc SQL Server th

Trng Cao ang Cong Nghiep 4

Khoa Cong Nghe Thong Tin

SQL Server 2000 thc thi chng thc chnh n bng cch kim tra xem ti khon
ang nhp c tn ti hay khng v mt khu ch nh c khp vi mt ghi nhn
trc y trong SQL Server 2000 khng.
Ch chng thc:
Windows Authentication mode: Ngi s dng ch c th kt ni vi SQL Server
200 bng Windows Authentication (Kt ni tin tng)
Mixed mode: Ngi dng c th kt ni vi SQL Server 200 bng cch dng c
Windows Authentication v SQL Server Authentication
Chuyn i ch chng thc:
Sau khi ci t, bn c th s dng Enterprise Manager chuyn i qua li gia
cc ch . Ti ca s Enterprise Manager, nhp nt phi chut ti instance v
chn Properties

Hnh 38: cu hnh Security cho SQL Server


trang Security click chn hoc SQL Server And Windows hoc Windows Only
i ch chng thc.
Sau khi bn chuyn ch , bn phi stop v sau restart dch v ca SQL
Server service s thay i ny c tc dng. Enterprise Manager s hi kin
bn.

Trng Cao ang Cong Nghiep 4

Khoa Cong Nghe Thong Tin

Hnh 39: Hp thoi hi kin ngi dng c mun Stop v Restart Server
15.1.3 Tm hiu cc Server-Wide Permission.
SQL Server 2000 h tr mt s server role c nh ngha trc c kt hp vi
cc quyn qun tr. Cc server role ny cp cc quyn server-wide thc hin cc
tc v khc nhau v bao gm cac quyn m bn c th cp cho nhng ngi dng
thng qua vic s dng cc server role ny. Bn khng th xo cc server role v
khng th thay i cc quyn ca chng. cp cc quyn cho mt ngi dng, th
bn thm ng nhp ca chng server role. Vi Transact-SQL, bn c th thm cc
ngi dng hay nhm cc ngi dng vo mt server role
Lu : Cc Server role v c bn ging nh cc group trong Windows 2000. Trong SQL
Server 2000 c 8 server role
Server Role

Thnh vin ca Server Role c th

sysadmin

Thc thi bt c thao tc no trong mt th hin SQL Server 2000 v trong


bt k CSDL. Mc nhin, tt c cc thnh vin ca nhm Windows built-in
Administrators, ti khon ngi dng sa thuc vo server role ny.

serveradmin

Cu hnh SQL Server 2000 bng cch dng th tc h thng sp_configure


v c th kt thc cc sevice. Cc thnh vin ca nhm iu hnh vin
built-in ca Windows l rt tt nhn server role ny.

setupadmin

Ci t v cu hnh linked server, remote server, v replication. C th ch


nh mt stored procedure c thc thi lc khi ng (startup), nh l
sp_serveroption. Cc thnh vin ca nhm iu hnh vin built-in ca
windows l rt tt nhn server role ny.

Thc hin tt c cc thao tc lin quan n security trong SQL Server 2000,
k c qun l cc quyn cu lnh CREATE DATABASE, iu khin server
securityadmin logins, v c error log. Gip cc nhn vin vn phng. Thnh vin
ca nhm iu hnh vin built-in ca windows l rt tt nhn server role
ny.
processadmin

Qun l cc tin trnh chy cc instance ca SQL Server. C th ngt (kill)


tin trnh ca cc user, cc truy vn.

dbcreator

C th to, hiu chnh, v xa cc CSDL. Nhng nh qun tr CSDL lu


nm m trch server role ny tt.

Diskadmin

C th qun tr cc tp v cc thit b d phng. Ni chung Role ny dng


tng thch ngc vi SQL Server 6.x.

bulkadmin

C th thc hin cc cu lnh BULK INSERT. Cho php cc thnh vin ca


sysadmin server role lm i din cc tc v BULK INSERTm khng cn
gn cc quyn sysadmin. Hy cn thn bi v cc thnh vin cng phi truy
xut c n bt k d liu c chn v quyn INSERT trn bt k bng

Trng Cao ang Cong Nghiep 4

Server Role

Khoa Cong Nghe Thong Tin

Thnh vin ca Server Role c th


m d liu s c chn.

Lu : Mt thnh vin ca bt k server role no u c th thm cc user khc c server


role .
15.1.4 Tm hiu cc quyn (Permission) ch nh trn c s d liu.
Khi Truy xut n SQL Server 2000 th bn cha c quyn truy xut n cc CSDL.
Ngoi tr cc thnh vin trong sysadmin role, thnh vin trong mt server role c sn
quyn truy xut CSDL. Cc quyn truy xut CSDL phi c cp mt cch r rng bi
mt system administrator hoc thnh vin ca administrator role trong CSDL. Cc quyn
c th c cp (grant), t chi (deny), ci b (revoke) v bao gm cc quyn to i
tng, qun tr CSDL, thc thi cc cu lnh T-SQL, chn d liu vo bng, xem d liu
bng view. SQL Server 2000 c mt s c ch cp cc quyn c th cho cc user trong
mt CSDL.
Cc quyn c th trn CSDL
Quyn

M t

Database
owner

User c th c ch nh nh l ch (owner) ca CSDL v c th thc


hin bt k hnh ng lin quan n CSDL.

DBO role

Tt c cc thnh vin ca sysadmin server role th t ng l thnh vin


ca dbo role trong mi CSDL, v c th thc hin bt k thao tc lin quan
n CSDL.

User

Cc user v group c th c cp user truy xut n CSDL theo ti khon


bo mt ca Windows 2000 hoc SQL Server 2000. Sau mt giy php
ngi dng CSDL c cp cc quyn trong CSDL thng qua database
role, role chung, v ch nh cp cc quyn cu lnh v i tng.

Guest user

Mt user m c th truy xut n 1 instance ca SQL Server 2000 (nhng


ngi ny khng c ti khon truy ngi dng truy xut n CSDL c
th) c th c cho php truy xut n CSDL nh l mt ngi khch
(guest user). Ti khon guest c th c cp cc quyn c th trong CSDL
( c d liu). Theo mc nhin, mt CSDL khng c ti khon guest
user.

Public role

Tt c cc user c php truy xut n CSDL tr thnh thnh vin ca


public role trong mi CSDL. Public role c th c cp cc quyn c th
(Tng qut cc quyn cn thit cho tt c cc user ca CSDL).

Cho php cc user c th c thm vo cc fixed database role trong mt


Fixed database
CSDL. Cc Fixed database role cha cc quyn nh trc trong CSDL
role
thi hnh cc hot ng ca database-wide.
User-defined
database role

Cho php cc user c th thm vo user-defined database role trong mt


CSDL. Cc role ny c th c to b administrator v cp mt cch c
th cc quyn a ra hoc cc quyn trong CSDL.

Statement
permissions

Quyn thc thi cc cu lnh qun tr (nh CREATE PROCEDURE) c th


c cp, hu b, t chi cc users, groups, v roles.

Object
permissions

Quyn truy xut n cc i tng CSDL (nh l bng hay view) c th


c cp, hu b, t chi cc users, groups, v roles.

Trng Cao ang Cong Nghiep 4

Quyn

Application
role

Khoa Cong Nghe Thong Tin

M t
Quyn thc thi cc hnh ng trong mt CSDL c th c cp cho mt
application, thm ch cp cho user. Mt application kt ni n mt CSDL
v kch hot application role. Cc User truy xut n mt CSDL thng qua
s kt ni ny dnh ly cc quyn kt hp vi application role trong
sut qu trnh kt ni. Cc quyn pht hnh n mt user c th th khng
lin quan khi user ang truy xut CSDL thng qua application role.

15.1.5 Fixed Database Roles.


Mi CSDL c 9 role v CSDL c nh ngha trc vi cc quyn kt hp vi databasewide thc hin cc tc v khc nhau. Bn khng th xa nhng database role ny v
cng khng th thay i cc quyn ca chng. gn mt ngi dng cc quyn ny
trong mt CSDL, bn thm ti khon ca ngi dng vo database role. Nu nhng fixed
database role ny khng gn tng hp cc quyn m bn cn th bn c th to cc role
vi cc quyn ngi dng (thng thng nhiu quyn hn ch).

Khoa Cong Nghe Thong Tin

Trng Cao ang Cong Nghiep 4

9 fixed database role c th c trong SQL Server 2000.


Database Role

Thnh vin ca CSDL ny c th

db_owner

Thc hin bt k tc v trong CSDL ca SQL Server 2000. Cc thnh


vin ca role ny c cng quyn nh l ch ca CSDL l cc thnh
vin ca dbo role.

db_accessadmin

Thm hay xa cc user v group ca Windows 2000 hoc Win NT4.0


v cc user trong mt CSDL (dng th tc h thng
sp_grantdbaccess).

db_securityadmin

Qun l tt c cc permission, role, role membership, v chuyn ower


(ownership) trong mt CSDL (s dng lnh GRANT, REVOKE, v
DENY).

db_ddladmin

Thm, hiu chnh, xa cc i tng trong CSDL (s dng lnh


CREATE, ALTER, v DROP).

db_backupoperator

Chy cc lnh DBCC, pht hnh checkpoint, v d phng CSDL (s


dng cc cu lnh T-SQL: DBCC, CHECKPOINT, v BACKUP).

db_datareader

c d liu t bt k cc bng hoc view ca ngi dng trong CSDL


(bn c quyn SELECT i vi tt c table v view).

Db_datawriter

Hiu chnh hoc xa d liu t cc bng hay view ca ngi dng


trong CSDL (bn phi c quyn INSERT, UPDATE, v DELETE i
vi tt c cc table v view).

Khng c d liu t bt k bng trong CSDL (bn khng c quyn


SELECT i vi bt k i tng). C th permission on any
Db_denydatareader objects). C th c s dng vi role db_ddladmin cho php to
cc i tng lm ch bng dbo role, nhung khng c th c nhy
cm cha trong cc i tng .
Khng hiu chnh hay xa d liu t cc bng ca ngi dng trong
Db_denydatawriter CSDL (bn khng c quyn INSERT, UPDATE, v DELETE i vi
cc i tng)
15.2
15.3

To ti khon ng nhp (Login).

15.3.1 Dng Create Login Wizard.

Trng Cao ang Cong Nghiep 4

Khoa Cong Nghe Thong Tin

Hnh 40: Chn ch ng nhp cho login ang to


Nu bn chn Windows authentication th bn phi lin kt login ID ny vi mt user
hay group ca Windows 2000 c sn. Khai bo nh trong hnh sau

Hnh 41: Xc nh 1 ti khon ca Windows 2000 v xc nh cho php hoc t chi


login mi truy xut n Server

Trng Cao ang Cong Nghiep 4

Khoa Cong Nghe Thong Tin

Nu bn chn SQL Server authentication, bn s to mt ti khon bo mt ca SQL


Server 2000 nh trong hnh k.

Hnh 42: Khai bo LogiID v Password


Phi ch nh r tn login v Password. ngn chn (deny) mt login, n gin bn ch
cn xa b login t ni cha login trong Enterprise Manager (hoc t bng sysxlogins
trong CSDL master).
Sau khi bn xc nh kiu ng nhp v lin kt hay to ti khon bo mt, bn ch nh
server role (nu cn) cho login ny trong hp thoi k. Nu user s khng l mt serverwide administrator, th khng cn chn cc server role.

Trng Cao ang Cong Nghiep 4

Khoa Cong Nghe Thong Tin

Hnh 43: Ch nh server role cho login ang c to


K tip bn ch nh CSDL (nu cn) cho user ny c th truy xut trong hp thoi k
tip. Nh rng hu ht cc server role khng cung cp CSDL truy xut

Hnh 44: Ch nh 1 hay nhiu CSDL login ny c truy xut


Cui cng, bn c SQL Server cho xem trc cc la chn m bn thc hin trc
khi login mi c to thc s. Click vo nt Finish to login.

Trng Cao ang Cong Nghiep 4

Khoa Cong Nghe Thong Tin

Hnh 45: Chn nt Finish hon tt


15.3.2 Dng Enterprise Manager to mt Login.
to mt login bng Enterprise Manager, nhp nt phi chut ti Security/Login ca 1
instance, v chn New Login. Thng thng, cc trang Server Role, v Database Access
trong hp thoi Propertie ca login

Trng Cao ang Cong Nghiep 4

Khoa Cong Nghe Thong Tin

Hnh 46: Ch nh Name, ch chng thc, chn CSDL mc nh

Hnh 47: Chn ti khon ngi dng ca Windows

Trng Cao ang Cong Nghiep 4

Khoa Cong Nghe Thong Tin

Bn cng chn mt CSDL mc nh v ngn ng trong trang General. CSDL mc nh s


l CSDL hin hnh khi m User ng nhp vo. Mc nh khng chn l CSDL Master
nhng bn nn chn 1 CSDL khc lm mc nh. Ngn ng mt nh l ngn ng mc
nh ca instance hin hnh.
Lu :
Bn cng c th t chi s truy xut ca mt User hay group ca Windows. iu ny
c p t n vic truy xut khc ca user hay group (k c thnh vin ca mt nhm
khc m c login khc).

Hnh 48: Gn login thuc server role no nu cn


Lu rng nu System Administrators server role c chn, th bn c th xem nhm
built-in Administrator group, v login sa ca the SQL Server l nhng thnh vin ca
sysadmin server role.
Chn nt properties xem mt s propererties ca Server role

Trng Cao ang Cong Nghiep 4

Khoa Cong Nghe Thong Tin

Hnh 49:Thnh vin ca server role

Hnh 50: Cc quyn hn c th ca Server role

Trng Cao ang Cong Nghiep 4

Khoa Cong Nghe Thong Tin

Hnh 51: Ch nh CSDL c truy xut ti v cc quyn c th cho login


Khi bn chn 1 CSDL th login l thnh vin ca public role trong mi CSDL. Bn khng
th xa (remove) mt login ra khi public role.
15.3.3 To Login bng T-SQL.
Bn cng c th to cc Login bng T-SQL
Windows Logins
Cc th tc h thng dng cp, hy, t chi, hiu chnh mt login cho mt user hay
group ca Windows. Ch c nhng thnh vin ca sysadmin hoc securityadmin server
roles mi c th thc thi cc th tc h thng ny
Th tc h thng

M t

Sp_grantlogin 'login'

To mt login cho mt user hay group ca Windows 2000.

Sp_revokelogin 'login'

Hy login t SQL Server i vi cc user hay group ca


Windows 2000 (hoc Windows NT 4.0). iu ny khng r rng
lm v n vn c th c cp quyn truy xut n SQL Server
2000.

Sp_denylogin 'login'

Ngn chn mt user hay thnh vin ca Windows 2000 (hoc


Windows NT 4.0) kt ni n SQL Server 2000. Ngn chn cc
user hay group ca thgn qua mt login khc kt vi user hay
group ca Windows.

Sp_defaultdb 'login',
'database'

Thay i CSDL mc nh cho mt login.

Trng Cao ang Cong Nghiep 4

Th tc h thng
Sp_defaultlanguage 'login',
'language'

Khoa Cong Nghe Thong Tin


M t

Thay i ngn ng mc nh ca mt login.

V d:
Sp_grantlogin 'CDCN4\Bill'
SQL Server Logins
Cc th tc h thng sau cho php cp, hy, t chi, hiu chnh mt login kt vi mt ti
khon ngi dng SQL Server. Ch c cc thnh vin ca sysadmin hoc securityadmin
server roles mi c th thc thi cc th tc h thng ny
Th tc h thng

M T

To mt login SQL Server mi. Password l NULL nu


Sp_addlogin 'login', ['password', khng ch nh. CSDL mc nh l master nu khng ch
'database', 'language', 'sid',
nh. Ngn ng mc nh l ngn ng ca server hin hnh
encryption_option']
nu khng ch nh. Mc nh, password trong csdl
master.
Sp_droplogin 'login'

Xa mt SQL Server login.

Sp_password 'old_password',
'new_password', 'login'

Thm hoc thay i password cho SQL Server login.

Sp_defaultdb 'login', 'database'

Thay i CSDL mc nh

Sp_defaultlanguage 'login',
'language'

Thay i ngn ng mc nh.

V d:
Sp_addlogin 'Joe', 'Joe123', 'Northwind'
To mt SQL Server login mi c tn l Joe, vi password l Joe123 v CSDL mc nh
Northwind.
Server Roles
Cc th tc h thng sau c dng thm hay xa mt login vo mt server role. Ch
c thnh vin ca sysadmin server role mi c th thm cc login vo bt k server role.
Cc thnh vin ca server role cng c th thm cc login vo server role .
Th tc h thng

M t

Sp_ addsrvrolemember 'login', 'role' Thm login nh l thnh vin ca server role.
Sp_dropsrvrolemember 'login', 'role' Xo login khng l thnh vin ca mt server role.

V d:
Sp_addsrvrolemember 'Joe', 'securityadmin'
Thm login c tn l Joe vo server role Security Administrator.
Database Access
Cc th tc sau y c dng thm hay xa mt login (Windows hoc SQL Server)
hin hu c quyn truy xut trong CSDL hin hnh. Khng ging nh SQL Server
Enterprise Manager, bn c th cp mt nhm ca Windows 2000 (hoc Windows NT
4.0) group truy xut n CSDL m khng cn to login trc mt cch tng minh trong
bng sysxlogins. Ch c cc thnh vin ca sysadmin server role, v db_accessadmin v
db_owner fixed database role mi c th thc thi cc th tc h thng ny.

Trng Cao ang Cong Nghiep 4

Th tc h thng

Khoa Cong Nghe Thong Tin

M t

Sp_grantdbaccess 'login',
'name_in_db'

Thm mt login nh l mt user trong CSDL hin hnh. Mc d


tn user name trong CSDL c th khc vi tn login, iu ny
khng khuyn co.

Sp_revokedbaccess 'name' B mt login nh l mt user trong CSDL hin hnh.

V d:
USE Northwind
EXEC Sp_grantdbaccess 'Joe'
Cho php login tn l Joe truy xut n CSDL hin hnh, dng user name l Joe trong
CSDL Northwind.
Database Roles
Cc th tc h thng sau y c dng thay i database owner, thm hoc xa mt
ti khon bo mt vo mt database role c sn, hoc to hoc xa mt user-defined
database role.
Use Northwind
EXEC Sp_addrolemember 'db_securityadmin', ' CDCN4\KeToan'
Thm ti khon CDCN4\KeToanvo db_securityadmin database role trogn CSDL
Northwind.
Th tc h thng

M t
Thay i owner ca mt CSDL ngi dng. Ch c nhng thnh

Sp_changedbowner
vin ca sysadmin server role hoc owner database hin hnh mi
'login', remap_alias_flag

c th thau i owner ca CSDL.

Thm mt ti khon vo mt database role trong CSDL hin hnh.


Bn c th thm mt user-defined database role vo fixed hoc
user-defined database role. Ch c nhng thnh vin ca sysadmin
Sp_addrolemember
'role', 'security_account' server role v db_owner and db_security fixed database roles mi
c th thm thnh vin vo database role. Thnh vin ca database
role c th thnh vin vo cho database role .
Xa mt ti khon t mt CSDL vo CSDL hin hnh. Ch c
nhng thnh vin ca sysadmin server role v db_owner v
Sp_droprolemember
db_security fixed dababase roles mi c th xa cc thnh vin ra
'role', 'security_account'
khi database role. Cc thnh vin ca database role mi c th xa
cc thnh vin ra khi database role.
Thm mt user-defined database role mi trong CSDL hin hnh.
Mc d bn c th ch nh mt owner ca role, s dng mc nh
Sp_addrole 'role', 'owner' l dbo l khng c khuyn co. Cc thnh vin ca sysadmin
server role v db_securityadmin v db_owner fixed database roles
mi c th to user-defined database roles.
Sp_droprole 'role'

Xa mt user-defined database role CSDL hin hnh. Cc thnh


vin ca sysadmin server role, db_securityadmin v db_owner fixed
database roles mi c th xa user-defined database roles.

xem cc thng tin v login, dng cc th tc h thng sau:

Trng Cao ang Cong Nghiep 4

Th tc h thng

Khoa Cong Nghe Thong Tin


M t

Sp_helplogins [ 'login' ]

Tr v cc thng tin ca tt c cc login hoc mt login c ch


nh, k c cc CSDL m login c truy xut n v cc database
roles m login l thnh vin.

Sp_helpsrvrolemember [
'role' ]

Tr v thng tin v tt c cc server roles v nhng thnh vin


ca chng hoc tt c cc thnh vin trong mt server role ch
nh.

Sp_helpuser
[ 'security_account' ]

Tr v thng tin v tt c cc user hoc user ch nh trong CSDL


hin hnh, k c tt c cc hi thnh vin ca database role.

Sp_helprolemember [
'role' ]

Tr v cc thng tin ca tt c cc database role hoc tt c cc


thnh vin trong database role ch nh trong CSDL hin hnh.

Sp_helpntgroup [ 'name' ]

Tr v cc thng tin v cc nhm hoc 1 nhm ch nh ca


Windows 2000 (hoc Windows NT 4.0) trong CSDL hin hnh.

Gn cc quyn Database
Cc view v cc stored procedure c th c to trn cc table. Khi mt user c gng ly
thng tin thng qua view hoc procedure, th SQL Server 2000 phi kim tra user c c
php ly d liu hay khng. Nu view hoc procedure c lm ch bi mt user v ca
cc bng c s li l ca mt user khc th SQL Server 2000 phi kim tra cc quyn trn
mi object trong dy chuyn . Khi mt chui cc ownership ko di th iu ny s nh
hng n vic thc hin. Nhng c l quan trng hn l n c th b gt gi cho nh
qun tr vch ra v g li cc t vic a ra bo mt
Cc quyn v lnh
Cu lnh TransactSQL

Quyn thc thi cu lnh Transact-SQL

CREATE
DATABASE

Tha k bi thnh vin ca sysadmin v dbcreator server roles. Mc


d sysadmin v securityadmin server roles c th cp quyn mt cch
trc tip cho cc ti khon thc hin cu lnh ny, Tm li cc ti
khon bo mt s dng dbcreator server role nu system administrator
i din quyn. Quyn ny ch tn ti trong CSDL master.

BACKUP
DATABASE
BACKUP LOG

K tha bi cc thnh vin ca sysadmin server role v db_owner v


db_backupoperator fixed database roles. Mc d bn c th cp quyn
chy nhng cu lnh ny mt cch trc tip n cc ti khon bo
mt, mt cch tng qut bn s s dng db_backupoperator fixed
database role.

CREATE TABLE K tha cc thnh vin ca sysadmin server role v db_owner v


db_ddladmin fixed database roles. Quyn cho php to nhng i
CREATE
VIEW tng th c cp trc tip n nh lp trnh trong sut thi gian trin
khai. Theo mc nh cc object c lm ch bi ngi to ra i
CREATE
tng (mc d cc i tng to bi cc thnh vin ca sysadmin
PROCEDURE
server role th ch s l dbo role). Cc thnh vin ca db_owner hoc
db_ddladmin fixed database roles c th c ch nh dbo role nh l
CREATE
owner ca i tng c to. Ngoi ra, cc thnh vin ca sysadmin

Trng Cao ang Cong Nghiep 4

Cu lnh TransactSQL
DEFAULT
CREATE
CREATE
FUNCTION
CREATE
TRIGGER

Khoa Cong Nghe Thong Tin

Quyn thc thi cu lnh Transact-SQL

server role hoc db_owner hoc db_ddladmin fixed database role c


th ch nh bt k user nh l ch ca object m chng to ra. Tuy
RULE
nhin, cc user m khng l thnh vin ca mt trong cc role ny th
khng th ch nh user khc hoc dbo role lm ch ca object chng
to ra.
K tha bi ch ca table m ca sysadmin server role, v db_owner
and db_ddladmin fixed database roles. Nhng thnh vin ny khng
th cp quyn chy cu lnh ny cho nhng ti khon bo mt
khc..

V d:
CREATE TABLE Northwind.dbo.CustomerTable
(CustID nchar (5), CustomerName nvarchar (40))
Cho php to mt bng, cp ownership cho dbo role. Ch c nhng thnh vin sysadmin
server role v db_owner hoc db_ddladmin fixed database roles c th thc hin mt cch
thnh cng cu lnh ny.
Thay i Ownership ca Object
Mt thnh vin ca db_owner, db_ddladmin, hoc db_securityadmin fixed database role,
hoc a member of the sysadmin server role c th thay i ownership ca bt k object
trong bng cch chy th tc sp_changeobjectowner.
sp_changeobjectowner 'CDCN4\KeToan.Customer', 'dbo'
i ownership ca table Customer t CDCN4\KeToanBill cho dbo role.
Lu
Thay i owner ca mt object th s x tt c cc quyn hin c trn i tng. Nu bn
cn gi li cc quyn th nn to Scrip trc khi i owner.
Dng Enterprise Manager Grant, Deny, or Revoke quyn lnh
Nhp nt phi chut ti CSDL cn thc hin cp/xo/t chi/xem cc quyn

Trng Cao ang Cong Nghiep 4

Khoa Cong Nghe Thong Tin

Hnh 52: Trang Permission ca hp thoi thuc tnh ca CSDL


Dng Transact-SQL Grant, Deny, or Revoke cc quyn
Dng cu lnh GRANT CREATE TABLE TO .
GRANT CREATE TABLE TO Joe, SalesManagers,
[CDCN4\SQLServerAdmins]
Cp quyn lnh CREATE TABLE cho Joe (mt SQL Server login), SalesManagers (a
user-defined database role), v CDCN4\SQLServerAdmins (mt Windows group).
Xem cc quyn bng Transact-SQL : Dng sp_helprotect
EXEC sp_helprotect NULL, NULL, NULL, 's'
Xem tt c cc quyn cu lnh trong CSDL hin hnh.

You might also like