Professional Documents
Culture Documents
Bai giảng HQT SQL Server - DH Hang Hai PDF
Bai giảng HQT SQL Server - DH Hang Hai PDF
BI GING
H QUN TR C S D LIU
Bin son: K.S Nguyn Vng Thnh
Hi Phng 2008
B GIAO THNG VN TI
TRNG I HC HNG HI
KHOA CNG NGH THNG TIN
B MN H THNG THNG TIN
BI GING
H QUN TR C S D LIU
TN HC PHN
M HC PHN
TRNH O TO
DNG CHO SV NGNH
: C S D LIU
: 17402
: I HC CHNH QUY
: CNG NGH THNG TIN
HI PHNG - 2008
2
Tn hc phn: H qun tr C s d liu
B mn ph trch ging dy: H thng Thng tin
M hc phn: 17402
TS tit
90
L thuyt
45
T hc
0
Loi hc phn: 4
Khoa ph trch: CNTT.
Tng s TC: 4
Bi tp ln
x
n mn hc
0
3
PHN PHI S TIT
TS
LT
BT
TH KT
TN CHNG MC
3.2.3. Right Outer Join
3.2.4. Full Outer Join
3.2.5. Cross Join
3.2.6. Self Join
3.2.7. Non - Equal Join
3.2.8. Union
3.3. Truy vn lng nhau (Subquery)
3.3.1. Nested Scalar Subquery
3.3.2. Correlated Subquery
3.4. Bng o (View)
3.4.1. nh ngha View
3.4.2. Sa i View
3.4.3. Xa View
Chng 4. Th tc thng tr v hm ngi dng
9
1
4.1. Lp trnh vi T - SQL
4.2. Th tc thng tr (Stored Procedure)
4.3. Hm ngi dng nh ngha (User Defined Fuction)
Chng 5. Trigger v Transaction
6
5.1. Trigger v ng dng ca Trigger
5.1.1. After Trigger
5.1.2. Instead Of Trigger
5.2. Cc loi Transaction v ng dng
5.2.1. Transaction t ng
5.2.2. Transaction tng minh
5.2.3. Transaction n
5.2.4. Transaction lng nhau
Chng 6: Cc tc v qun tr h thng
6
6.1. Qun l ng k SQL Server (Server Registration)
6.2. Bo mt v phn quyn ngi dng
6.3. Sao lu (Backup) v phc hi (Restore) d liu
6.4. Hoch nh tc v qun tr
Nhim v ca sinh vin:
Tham d cc bui hc l thuyt v thc hnh, lm cc bi tp c giao, lm cc bi thi
gia hc phn v bi thi kt thc hc phn theo ng quy nh.
Ti liu hc tp:
1. Dng Quang Thin, SQL Server 2000: Lp trnh T - SQL, NXB Vn ha Si Gn, 2007.
2. Paul Turley & Dan Wood, Beginning Transact-SQL with SQL Server 2000 and 2005, Wrox
Press, 2006.
3. Brian Knightet al, Professional SQL Server 2005 Administration, Wrox Press, 2007.
4. Ray Rankins, Paul Bertucci, Chris Gallelli, Alex T.Silverstein, Microsoft SQL Server 2005
Unleashed, Sams Publishing, 2007.
Hnh thc v tiu chun nh gi sinh vin:
Hnh thc thi: thi vit hoc vn p.
Tiu chun nh gi sinh vin: cn c vo s tham gia hc tp ca sinh vin trong cc bui
hc l thuyt v thc hnh, kt qu lm cc bi tp c giao, kt qu ca cc bi thi gia
hc phn v bi thi kt thc hc phn.
Thang im: Thang im ch A, B, C, D, F.
im nh gi hc phn: Z = 0,4X + 0,6Y.
4
Bi ging ny l ti liu chnh thc v thng nht ca B mn H thng Thng tin, Khoa
Cng ngh Thng tin v c dng ging dy cho sinh vin.
Trng B mn
Ngy ph duyt:
/
/ .
MC LC
MC LC..................................................................................................................................................................... 1
M U ....................................................................................................................................................................... 4
PHN I. QUN TR SQL SERVER ........................................................................................................................... 4
BT U VI SQL SERVER ................................................................................................................................ 4
TM HIU V H QUN TR CSDL SQL SERVER .......................................................................................... 4
M HNH HOT NG CA SQL SERVER TRN MNG MY TNH. ......................................................... 6
CC THNH PHN CA SQL SERVER. ........................................................................................................ 11
CC THNH PHN CA SQL SERVER. ........................................................................................................ 11
CI T SQL SERVER. ................................................................................................................................... 13
QUN TR SERVER ............................................................................................................................................. 22
INSTANCE ........................................................................................................................................................ 22
IU KHIN CC DCH V CA SQL SERVER. ......................................................................................... 22
QUN TR SERVER.......................................................................................................................................... 26
THIT LP KT NI N SERVER. .............................................................................................................. 27
CU HNH KT NI MNG CA SERVER. .................................................................................................. 37
QUN TR CC CLIENT.................................................................................................................................. 38
QUN TR C S D LIU................................................................................................................................. 45
CU TRC C S D LIU. ......................................................................................................................... 45
QUN L C S D LIU. ............................................................................................................................ 50
BNG D LIU TABLE.................................................................................................................................... 58
CC CHUN TC. ........................................................................................................................................... 58
THIT K BNG D LIU. ............................................................................................................................ 60
TO BNG D LIU. ...................................................................................................................................... 69
KHA INDEX ....................................................................................................................................................... 77
THIT K KHA INDEX. ................................................................................................................................ 77
TO KHA INDEX. ......................................................................................................................................... 79
XA INDEX. ..................................................................................................................................................... 81
KHUNG NHN VIEW ......................................................................................................................................... 82
KHI NIM KHUNG NHN. ............................................................................................................................ 82
TO KHUNG NHN.......................................................................................................................................... 82
S DNG VIEW............................................................................................................................................... 84
TH TC LU TR ............................................................................................................................................. 86
KHI NIM TH TC LU TR V HM.................................................................................................... 86
Phn 1.
BT U VI SQL SERVER
TM HIU V H QUN TR CSDL SQL SERVER
Gii thiu SQL Server.
SQL Server l h thng qun tr c s d liu quan h (Relational DataBase
Management System- RDBMS) s dng cc lnh gio chuyn Transaction-SQL
trao i d liu gia Client Computer v Server Computer.
SQL Server c mt s c tnh sau:
Cho php qun tr mt h CSDL ln (ln n vi tega byte), c tc x l
d liu nhanh p ng yu cu v thi gian.
Cho php nhiu ngi cng khai thc trong mt thi im i vi mt CSDL
v ton b qun tr CSDL (ln n vi chc ngn user).
C h thng phn quyn bo mt tng thch vi h thng bo mt ca cng
ngh NT (Network Technology), tch hp vi h thng bo mt ca
Windows NT hoc s dng h thng bo v c lp ca SQL Server.
H tr trong vic trin khai CSDL phn tn v pht trin ng dng trn
Internet
Cho php lp trnh kt ni vi nhiu ngn ng lp trnh khc dng xy dng
cc ng dng c th (Visual Basic, C, C++, ASP, ASP.NET, XML,...).
S dng cu lnh truy vn d liu Transaction-SQL (Access l SQL, Oracle
l PL/SQL).
Cc n bn ca SQL Server.
SQL Server c cc n bn chnh sau:
Enterpise Manager: L n bn y ca SQL Server c th chy trn
32CPU v 64GB RAM. C cc dch v phn tch d liu Analysis Service.
Standard: Ging nh Enterprise nhng b hn ch mt s tnh nng cao cp,
c th chy trn 2CPU, 4GB RAM.
M hnh Desktop.
Nu xt trn mt my Desktop s kt ni trao i d liu c th hin nh sau:
M hnh Client/Server.
Nu xt theo m hnh client/server, ng dng trao i vi SQL Server theo
s sau:
Trong s trn cho thy, SQL Server c th thc hin trao i d liu vi
cc ng dngt heo nhiu giao thc truyn tin khc nhau (TCP/IP, NetBeUI, Names
Pipes,), cc ng dng c th s dng nhiu phng thc kt ni khc nhau (OLE
DB, ODBC, DB-Library).
10
Replication.
L cng c dng nhn bn d liu, bn c th to mt Server khc vi b d
liu ging b d liu trn Server chnh. Cng c to c ch t ng b d liu gia
Server chnh v Server nhn bn. Mc ch ca vic to Server nhn bn l gim ti
11
cho Server chnh, nng cao hiu qu phc v vi s lng ngi, phin giao dch
ln.
Data Transformation Service DTS.
L cng c gip bn chuyn d liu gia cc Server qun tr CSDL khc
nhau, DTS c th chuyn d liu t SQL Server sang Oracle, Access, DB, trc
khi chuyn d liu DTS nh dng kiu d liu chuyn sang h qun tr CSDL
khc.
Analysis service.
L cng c gip khai thc phn tch d liu, hay khai ph d liu theo
phng thc a chiu. T mt tp d liu sn c bn c th khai ph ri t a
ra nhng nhn nh, phn tch, nh gi v d on theo lnh vc no , mi chiu
trong ng cnh ny c coi l mt tiu ch xem xt ca d liu.
English query.
y l cng c tra cu d liu bng ting anh, c php c th s dng theo
vn phm ting anh thng thng.
SQL Server tools.
L b cng c cung cp giao din cho ngi qun tr nh Enterprise
amanger, Query Analyzer ,SQL Server sau khi ci t SQL Server group gm
nhng thnh phn c bn trong group nh sau:
12
CI T SQL SERVER.
Chun b ci t.
Ty theo mi trng ca my tnh ca bn m thc hnh ci t phin bn
no, bng sau l tham s vi SQL Server 2000 phin bn Standard.
Computer
Memory (RAM)
Hard disk
Monitor
13
Thc hnh ci t.
- S dng a CD ROM c b ci t SQL Server 2000 (tu theo yu cu
ca bn l Standard, Personal hay Enterprise,...)
- Chy trnh Autorun.exe (thng t chy khi a a vo my tnh)
14
15
- Chn Next.
16
17
18
19
20
21
QUN TR SERVER
INSTANCE
SQL Server h tr nhiu hot ng trn mng, nh cc m hnh xem xt
trc ta c th thit lp nhiu my tnh ci t SQL Server, cc my tnh c th lin
kt vi nhau, trao i d liu vi nhau.
Tuy nhin mt my tnh cng c th thit lp nhiu h thng SQL Server
khc nhau, mi h thng u c mt tn quy nh, mi h thng nh vy gi l mt
Instance.
Mi Instance trn mt my tnh c coi nh mt h thng SQL Server c
lp, tng t nh cc h thng SQL Server ci t trn cc my tnh khc nhau.
22
Gm cc dch v c bn sau:
+ Distributed Transaction Coordinator - DTC.
+ Microsoft Search.
+ SQL Server.
+ SQL Server Agent.
Cc dch v ny ta c th bt u, tm dng hoc kt thc, mi dch v u
iu khin cc ng dng, cng c qun tr ca SQL Server.
thc hin iu khin dch v u tin ta lm nh sau:
Services -> Start/Continue (Pause, Stop)
dch v khi ng t ng khi khi ng h iu hnh hy chn vo nt chn
Auto-start service when OS starts.
23
Dch v MS SQLServer.
Dng qun l tt c cc file gm cc CSDL m SQL Server qun l, l thnh
phn x l tt c cc lnh ca Transact-SQL c gi t cc trnh ng dng client,
phn phi cc ngun ti nguyn khi c nhiu user cng truy nhp mt lc. y l
dch v qun tr c bn, khi ngt dch v ny h thng s ngng tt c cc cng vic
khai thc d liu.
Dch v SQLServerAgent.
H tr cc tnh nng cho php lp thi biu cc hot dng theo tng giai on
tren SQL Server, hoc thng bo cho ngi qun l h thng v nhng s c ca
h thng, bao gm cc thnh phn Jobs, Alerts, Operator.
24
Dch v MS DTC.
L dch v cho php trong mt phin giao vn c th s dng d liu c phn
phi trn nhiu server khc nhau, thc hin theo cc bc c bn sau:
+ Gi cc th tc lu tr trn cc server xa s dng SQL Server
+ T ng gi hoc to cc phin giao vn cc b v cc giao vn vi cc
my ch t xa
+ To b d liu c cp nht hoc c phn phi bi cc server xa.
Xem xt s hot ng sau:
25
QUN TR SERVER.
Nh nu trn mi Instance c coi l mt h thng qun tr CSDL SQL
Server v c th gi tt l Server. Server c chc nng qun tr ton b h thng
ca SQL Server (d liu, bo mt, ngi dng, tc v, cc dch v khc,...).
Cc ng dng hoc cc cng c khai thc d liu (GUI) s thc hin khai
thc d liu do Server qun l khi c kt ni n Server. Tuy nhin mt vn
quan trng l Server phi sn sng phc v.
26
Thc hin qun tr Server l vic thc hin cc cng vic sau:
+ Bt/tt/tm dng dch v ca SQL Server.
28
29
Cc thao tc i tn, xa c thc hin bng cch nhn phi chut vo group cn
thao tc.
30
31
- Nhp tn Server.
32
- Nhn Finish.
33
34
35
36
37
QUN TR CC CLIENT.
Khi Server sn sng cho kt ni, vic tip theo l xem xt n cc client
kt ni n server. Trong phn ny ta s xem xt cu hnh client kt ni n server.
Cc client kt ni n server u thc hin trn c s h thng truyn tin ca
mng my tnh, tuy nhin cc ng dng client kt ni n server thc hin khai
thc d liu trn server thng qua mt s phng thc kt ni sau:
- OLE DB: C 2 kiu Microsoft OLE DB Provider for SQL Server v
Microsoft OLE DB Provider for ODBC.
- ODBC: Kt ni thng qua SQL Server Enterprise Manager v SQL Query
Analyzer s dng SQL Server ODBC.
- DB-Library: S dng lnh SQL Server isql.
Cu hnh Net-Library.
Nh xem xt trc mi Instance khi cu hnh xc nh mt a ch v s
hiu cng ring, nn vic kt ni thng qua Net-Library l kt ni thng qua a ch
v nh vy kt ni xcnh c n Instance.
Trn Server thng thng c cu hnh theo TCP/IP Sockets v Named
Pipes Net-Libraries, trn client thng thng cu hnh theo Thc hin cu hnh ta
s dng Client network utility.
39
- Chn bng Drivers, trong danh sch kim tra xem c SQL Server cha
40
- Nhn Finish.
41
kim tra kt ni c thnh cng khng bn nhn Test Data Source sau o
nhn Ok kt thc v thu c mn hnh sau:
43
44
QUN TR C S D LIU
Trong chng ny ta s xem xt cu trc vt l, to, xa, sa tham s ca c
s d liu.
CU TRC C S D LIU.
Chc hn khi nghin cu n h qun tr CSDL SQL Server bn xem xt
n cc h qun tr CSDL nh DBase hoc Access, vi h qun tr CSDL nh trn
mi c s d liu khi s dng (thc hin m CSDL) s m trc tip t tp tin cha
CSDL, tp tin cha CSDL s c mt tp tin chnh (v d *.dbf hoc *.mdb) v tp
tin ph nhng khi ta thao tc ta ch cn quan tm n tp tin chnh. Nn trong cc
ng dng thng thng ta thng dng cc thao tc m (open) m tp tin chnh
cha CSDL v ng (close) ng tp tin chnh cha CSDL m khng cn quan tm
n vic kt ni n CSDL cha (khng c phng thc kt ni).
SQL Server qun l trc tip cc CSDL, danh sch mi Server s gm danh
sch cc tn CSDL, tn cc CSDL l duy nht, khng trng nhau. Mi CSDL SQL
Server s qun l cc cu trc vt l ca n. Chnh t cch thc qun l nh trn
m vic qun tr c s d liu c mt s c im sau:
+ Client khai thc CSDL trc ht phi thc hin kt ni n Server qun
tr CSDL .
+ Ch thc hin khai thc vi cc CSDL c tn trong danh sch cc CSDL
m Server qun l.
+ Khng c cc phng thc m CSDL trc tip t tp tin nh Dbase hoc
Access.
+ Khi kt ni n Server, Client ch thc hin c quyn khai thc theo
quy nh nh sn trong CSDL (phn quyn trong CSDL).
Cu trc c s d liu.
C s d liu trong SQL Server lu tr theo 2 phn: phn d liu (gm mt
tp tin bt buc *.mdf v cc tp tin ph *.ndf) v phn nht k (*.ldf). Nh vy
mt c s d liu c t nht 2 tp tin.
Cu trc logic trong CSDL gm cc table, view v cc object khc. Sau y l cu
trc mt CSDL.
45
46
Tn tp tin vt l
Master.mdf
Mastlog.ldf
Tempdb.mdf
Templog.ldf
Model.mdf
Modellog.ldf
Msdbdata.mdf
Msdblog.ldf
Cu trc vt l ca CSDL.
Nh cc cu trc cc CSDL h qun tr CSDL thng thng (Dbase,
Access), SQL Server cng qun l tp tin d liu ca CSDL dng vt l theo
trang (page) v phn on (extent).
Page.
SQL Server qun l mt page c kch thc l 8KB, nh vy 1MB c 128
page, trong mi trang c 96 byte cha thng tin ca trang. C 8 kiu page nh sau:
Tn
Ni dung
Data
Cha tt c cc kiu d liu loi tr text, ntext v
image
Index
Cc kha Index.
Text/Image
Text, ntext, and image data.
Global Allocation Map,
Cha cc thng tin nh v ca cc extent.
Secondary Global
Allocation Map
Page Free Space
Cha thng tin khong trng ca page.
Index Allocation Map
Cha cc thng tin v Extent s dng cho Index
v Page.
Bulk Changed Map
Cha thng thng tin v cc lnh BACKUP LOG.
Differential Changed
Cha cc thng tin lnh BACKUP DATABASE.
Map
47
48
File.
Tp tin lu tr mt CSDL trong SQL Server c 3 loi.
Primary data file: L file chnh lu tr d liu (*.mdf = Master Data File), mi
CSDL c mt file primary, lu tr im bt u ca mt CSDL v cc im kt ni
n cc file lu tr tip theo (sencondary).
Secondary data file: L tp tin lu tr d liu sau Primary data file, mt CSDL c
th c nhiu tp tin sencondary. Loi tp tin ny cho php mt CSDL c th phn
tn d liu nhiu ni trn my tnh hoc trn mng.
Log file: L loi tp tin lu tr thng tin nht k ca CSDL.
Gi s to mt CSDL c tn MyDB, thng thng h thng ngm nh cc
tp tin nh sau:
49
Cc tp tin lu tr d liu phn thnh tng trang, cc trang nh s id lin tip theo
tng file:
File group.
SQL Server s dng cng c file group gip ngi dng d dng qun l
file, cc file lu tr d liu ca mt CSDL c th nhm thnh tng nhm, gm 2
kiu nhm chnh:
- Primary: L nhm bt buc c, dng xc nh cho file primary (*.mdf) v
nhng file khc.
- User-defined: Nhm do ngi dng to ta, t t tn d qun l.
QUN L C S D LIU.
To c s d liu.
Theo l thuyt c s d liu, trc khi to CSDL ta phi thc hin phn tch
cc thng tin lin quan mc ch s dng CSDL cho i ton ca mnh: Tn CSDL,
cc table, rng buc, tun theo cc chun CSDL (phn ny s bn k trong bi
sau)
Trong cc thao tc vi CSDL v i tng khc s gm 2 phn: Phn thao
tc theo cng c wizard v cu lnh T-SQL.
50
To theo cng c:
- Vo Enterprise Manager -> Databases.
- Nhp tn CSDL.
51
52
To theo cu lnh.
S dng cu lnh Create Database to CSDL, cng c thc hin lnh:
- Trong Enterprise Manager -> Databases -> Tools -> SQL Query Analyzer
53
files\microsoft
sql
files\microsoft
sql
Cng c SQL Query Analyzer cho php bn thc hin tng cu lnh bng
cch bi en vo on lnh cn thc hin sau nhn F5 hoc nt thc hin.
Khi to CSDL mi th n phi ng v tr CSDL Master, khi mun thc
hin lnh vi mt CSDL c th c no bn phi chn vo CSDL v thc
hin lnh.
54
Trong on lnh trn lnh User Master thc hin chn CSDL Master bng
cu lnh; lnh Use xc nh CSDL thc hin.
Lnh Go xc nh cu lnh kt thc v bt u cu lnh khc, cu lnh c
hiu l dng lnh. Trong lnh T-SQL mt s lnh khc nhau vn c th nm trn
mt dng lnh nn trong mt s tnh hung kich bn cu lnh khng cn s dng
lnh Go.
Xa c s d liu.
Xa theo cng c.
- Chn vo CSDL.
- Nhn nt phi chut -> Delete.
- Chn Yes.
Xa theo cu lnh.
- S dng lnh Drop Database
Drop Database QLTV
Sa tham s.
Sa theo cng c.
- Chn CSDL.
- Nhn nt phi chut
55
- Chn Properties.
Mi cu lnh lin quan bn c th tra cu, tham kho trong Book Onlines.
57
Tn sch
NXB
Tc gi 1
Tc gi 2
Id_Sinhvien
Ngy mn
58
Chun th ba.
Chun th ba xc nh bn ghi tun th theo chun th hai v khng c bt
k phn ph thuc chuyn tip no. Phn ph thuc chuyn tip tn ti khi mt
bng cha mt ct c trng. Ct ny khng phi l kha nhng vn xc nh cc
ct khc.
Ta xem xt mt v d vi phm chun nh sau:
Gi s trong th vin c mt bng lit k sch tn trong kho, khi sinh vin
mn sch s lng sch m sinh vin mn s tng, nu nht k mn sch c
thc hin theo bng sau:
Id_sach
Id_Sinhvien
Ngy mn
S lng mn
Id_Sinhvien
S lng mn
hung ny l phi nhanh, th truy xut theo mt bng c sn l nhanh hn, sau
y l mt s trng hp khng cn chun tc ha (ty theo tnh hung):
- Thng tin tnh ton.
- Thng tin s kin.
- S phn hoch.
THIT K BNG D LIU.
Table (bng d liu) l mt thnh phn c bn ca CSDL, mt CSDL c
thit k t mt hoc nhiu bng d liu, mi bng d liu c cu trc t cc hng
v ct d liu, mi hng dng m t mt i tng, vn , s kin,... ct th hin
thuc tnh ca cc i tng, s kin,... ca hng. D liu cng ct c cng kiu
(data type). Ngoi cc hng, ct bng cn c cc kha, lin kt, rng buc,...
Trc khi bt tay vo thit lp bng d liu trc ht ta phi xc nh xem
bng s xy dng nh th no, da trn mt s thng tin sau:
- Kiu d liu trong bng.
- Cc ct, kiu d liu tng ng (v di nu cn thit).
- Ct no cho php gi tr NULL (l gi tr m phn d liu thuc hng, ct
xc nh khng c gn gi tr no, v vy nn 2 phn t c cng gi tr NULL l
khng bng nhau).
- Gi tr ngm nh (l gi tr m khi cha nhp vo n nhn gi tr ny).
- Ch s Index, kha chnh, kha ngoi.
Kiu d liu.
SQL Server gm nhng kiu d liu sau:
Binary: L kiu d liu cha dng s h hexa, gm 3 kiu d liu Binary,
Varbinary, Image.
Text: L kiu k t, cha ch ci, k hiu, s, gm nhng kiu d liu sau:
- Char: Kiu k t, khi xc nh di th di trong CSDL s xc nh
theo di t trc m khng theo di d liu thc c, khng s dng vi k
t dng Unicode, di ti a l 8000.
- Nchar: Tng t nh Char nhng s dng vi k t Unicode, di ti a
4000.
60
Text in row.
Nh xem xt trc, d liu kiu char, varchar c di ti a l 8000byte,
d liu kiu text, ntext c 2 kiu lu tr: lu tr trc tip, lu tr qun l theo kiu
con tr.
61
Auto number.
t ct d liu kiu s, tng t ng khi mt hng c thm, ct kiu ny
khng sa d liu. D liu kiu ny tng ng vi vic khi thm hng d liu chn
thm gi tr dng s theo hm NewID().
Reference integrity
Entry integrity
Data integrity
User-defined
integrity
Domain integrity
63
64
66
67
Gi tr ngm nh Default.
Gi tr gn cho ct d liu khi thm bn ghi v cha nhp d liu vo ct
ny.
68
TO BNG D LIU.
Sau khi xc nh y cc thng tin thit k CSDL, bc tip theo l
thc hin to cu trc CSDL. to cu trc CSDL bc quan trng l to bng
d liu.
Khi to CSDL h thng t ng to ra mt s bng d liu ngm nh, cc
bng d liu ny s cung cp, qun l thng tin qun tr ca CSDL, cung cp mt
s hm h thng tr gip bgi dng.
To bng cng c.
- Chn CSDL
- Chn Tables
- Nhn phi chut ca s bn phi
69
t kha chnh.
xc nh kha chnh ta thc hin chn nhng ct tham gia kha bng
cch gi phm shift v chn chut -> nhn chut phi -> chn Set primary key.
70
Xc nh Identity.
- Chn ct d liu -> Chn yes trong mc Identity -> t seed (gi tr khi
u) -> t increment (bc t ng tng).
71
- Xa ct t bng c.
ALTER TABLE NXB_Drop column_Dia_chi
72
key
Xa bng.
S dng cng c.
- Chn bng
- Nht chut phi
- Chn Delete -> Yes.
S dng lnh. (Drop Table)
Drop Table NXB
Bng d liu c tham gia mi quan h Relationship khi xa bn cn ch : Nu
bng cha kha ngoi th vic xa thc hin bnh thng, nu bng cha kha
chnh ca mi quan h th khng xa c.
73
74
S dng cu lnh.
c th hn ta thc hin theo v d c s cu trc sau:
75
Create
Table
NXB(id
int
not
null
primary
key
identity(1,1),
Ten
Nvarchar(100),
Ghi_chu
Ntext,
Dia_chi nvarchar(150))
Go
Create Table ChungLoai(id int not null primary
identity, ten nvarchar(50), ghi_chu nvarchar(200))
key
Go
Create Table Sach(id int not null primary key identity,
Ten nvarchar(100), so_trang int default(0), Chung_loai
int
references
Chungloai(id),
NXB
int
references
NXB(id), Tom_tat ntext)
76
KHA INDEX
THIT K KHA INDEX.
Index l mt kha quan trng i vi CSDL c bit l c s d liu ln.
Index c thit lp t mt hoc nhiu ct d liu ca bng d liu. cc gi tr ca
kha Index s c sp xp v lu tr theo mt danh sch (bng khc). Mi gi tr
trong kha Index l duy nht trong danh sch, mi gi tr kha Index s lin kt n
gi tr trong bng d liu (lin kt dng con tr). Vic lu tr d liu ca bng c
kha Index c thc hin theo cu trc cy B-Tree nhm tng tc truy xut d
liu i vi a (thit b th cp).
77
Vic thit k kha Index da trn nhu cu truy vn, chn d liu trn mt
bng, xc nh da vo mt s tham s sau:
+ Ct thng c s dng lm kha truy vn d liu (xc nh ct tham gia
kha Index).
+ Tp lnh thng s dng try vn cn tc cao (xc nh tp ct tham gia
truy vn).
+ D liu nhp vo bng c kha Index cn nhanh hn hay truy vn cn
nhanh hn (xc nh t clustered hoc nonclustered).
+ Lng d liu nhp ng lot nhiu hay t (xc nh tham s fillfactor).
Clustered Index.
Khi kha t thuc tnh Clustered, d liu ca bng s c sp xp vt l
trn a, nh vy khi thit k kha dng ny d liu c chn v s tm ng v tr
trn a lu tr (vng a dnh cho bng d liu), chnh v vy m c th xy ra
trng hp phi dch chuyn danh sch cc gi tr c a. Nhng vic to kha
Index dng ny s khng cn sp xp gi tr dng logic m khi truy nhp a
bo m d liu c so xp.
Bng d liu ch c th to ti a mt kha Lustered Index.
78
Nonclustered Index.
D liu Index khng sp xp dng vt l m ch sp xp logic, d liu ca
bng lu tr gi tr kha Index c sp xp, nhanh trong nhp d liu.
Unique Index.
Xc nh d liu ca ct tham gia kha Index khng lp li.
Fill Factor.
Khi to kha Index, d liu tham gi to kha Index s c phn theo mc
ca B-Tree, cc mc c phn theo page d liu, gi tr Fill factor xc nh phn
khong trng ti a ca page theo t l phn trm. Nh khong trng ny m tc
b tr cu trc Index, tc truy lc thng tin trong cy c ci thin.
TO KHA INDEX.
To theo cng c.
- Chn chc nng Design table
- Vo bng Index manager.
- New
79
To theo cu lnh.
- S dng trong cu lnh Create Table, Alter Table.
- S dng lnh Create Index.
CREATE [ UNIQUE ] [ CLUSTERED | NONCLUSTERED ] INDEX index_name
ON { table | view } ( column [ ASC | DESC ] [ ,...n ] )
V d:
CREATE INDEX sach_idx
ON sach (id)
80
XA INDEX.
S dng cng c.
- Vo Index amnager
- Chn kha Index -> Delete
S dng cu lnh.
S dng lnh Drop Index.
Drop Index Sach(sach_idx)
81
TO KHUNG NHN.
S dng cng c.
- Chn chc nng Views ca CSDL.
82
FROM
JOIN
dbo.titles ON dbo.titleauthor.title_id = dbo.titles.title_id
S DNG VIEW.
- Chn View
- Nhn nt phi chut.
84
85
TH TC LU TR
86
87
88
S dng cu lnh.
S dng lnh Create Procedure, tin xem xt ta xt theo cc v d , cc v
d di y thc hin to th tc v thao tc vi CSDL pubs tin trong d liu
mu, tm hiu c php cu lnh T-SQL bn xem phn cu lnh T-SQL trong
cng ti liu ny.
Th tc khng c tham s.
Th tc sau s thc hin lit k tt c cc tc gi, sch v nh xut bn m
tc gi vit sch.
Use Pubs
CREATE PROCEDURE au_info_all
AS
SELECT au_lname, au_fname, title, pub_name
FROM authors a INNER JOIN titleauthor ta
ON a.au_id = ta.au_id INNER JOIN titles t
ON t.title_id = ta.title_id INNER JOIN publishers p
ON t.pub_id = p.pub_id
GO
89
Kt qu thc hin:
Th tc c tham s.
Th tc sau thc hin lc tm tc gi c tn, h truyn theo tham s.
USE pubs
GO
CREATE PROCEDURE au_info
@lastname varchar(40),
@firstname varchar(20)
AS
SELECT au_lname, au_fname, title, pub_name
FROM authors a INNER JOIN titleauthor ta
ON a.au_id = ta.au_id INNER JOIN titles t
ON
t.title_id
publishers p
ta.title_id
ON t.pub_id = p.pub_id
WHERE
au_fname = @firstname
INNER
JOIN
91
dng cho hai cu lnh Select, bin @@Sum xc nh l bin tham tr dng ly gi
tr ra.
Cch s dng tham s nh sau:
DECLARE @@TOTALCOST money
EXECUTE titles_sum 'The%', @@TOTALCOST OUTPUT
IF @@TOTALCOST < 200
BEGIN
PRINT ' '
PRINT 'All of these titles can be purchased for less
than $200.'
END
ELSE
SELECT 'The total cost of these titles is $'
+ RTRIM(CAST(@@TOTALCOST AS varchar(20)))
AS
SET @titles_cursor = CURSOR
FORWARD_ONLY STATIC FOR
SELECT *
FROM titles
OPEN @titles_cursor
GO
GO
Khi s dng th tc h thng sp_helptext xem ni dung th tc:
EXEC sp_helptext encrypt_this
Kt qu nh sau:
The object's comments have been encrypted.
SA, XA TH TC
S dng cng c.
- Chn th tc cn sa, xa -> thc hin sa ni dung hoc chc nng xa.
S dng cu lnh.
- Sa s dng lnh Alter Procedure
- Xa s dng lnh Drop Procedure
95
TRIGGER
KHI NIM TRIGGER.
Trigger l mt th tc c bit m vic thc thi ca n t ng khi c s kin
xy ra, cc s kin gi th tc c bit ny c nh ngha trong cu lnh, thng
thng c thc hin vi cc s kin lin quan n Insert, Update, Delete d liu.
Trigger c s dng trong vic bo m ton vn d liu theo quy tc xc
nh, c qun l theo bng d liu hoc khung nhn.
NHNG TRNG HP S DNG TRIGGER.
- S dng Trigger khi cc bin php ton vn d liu nh Constraint, rule,
khng bo m. Khc vi cc cng c bao m ton vn d liu nu, cc cng
c ny s thc hin kim tra tnh ton vn trc khi a d liu vo CSDL (cn gi
l Declarative Data Integrity), cn Trigger thc hin kim tra tnh ton vn khi
cng vic thc hin ri (cn gi l Procedural Data Integrity).
- Khi CSDL cha c chun ha (Normalization) th c th xy ra d liu
tha, cha nhiu v tr trong CSDL th yu cu t ra l d liu cn cp nht
thng nht trong mi ni. Trong trng hp ny ta phi s dng Trigger.
- Khi thay i day chuyn d liu gia cc bng vi nhau (khi d liu bng
ny thay i th d liu trong bng khc cng c thay i theo).
C IM CA TRIGGER.
- Mt trigger c th thc hin nhiu cng vic (theo kch bn), c th nhiu
s kin kch hot thc thi trigger, c th tch ri cc s kin trong mt trigger.
- Trigger khng c to trn bng temprate hay system.
- Trigger ch thc thi t ng thng qua cc s kin m khng thc hin
bng tay.
- Trigger s dng c vi khung nhn.
- Khi trigger thc thi theo cc s kin Insert hoc Delete th d liu khi thay
i s c chuyn sang cc bng Inserted Table, Deleted Tabla, l 2 bng tm thi
ch cha trong b nh, cc bng ny ch c s dng vi cc lnh trong trigger.
96
Cc tham s c bn:
+ trigger_name: Tn trigger.
+ table/view: Tn bng hoc khung nhn.
+ For/After/Instead Of: Loi trigger.
+ { [DELETE] [,] [INSERT] [,] [UPDATE] }: S kin khi t ng gi thc
thi trigger.
+ sql_statement [ ...n ]: Kch bn cc cu lnh x l ca trigger.
CREATE DATABASE
DISK INIT
DISK RESIZE
DROP DATABASE
LOAD DATABASE
LOAD LOG
RECONFIGURE
RESTORE DATABASE
RESTORE LOG
c th hn ta xt mt s v d sau:
98
BEGIN
RAISERROR ('The level for job_id:%d should be
between %d and %d.',
16, 1, @job_id, @min_lvl, @max_lvl)
ROLLBACK TRANSACTION
END
SA, XA TRIGGER.
S dng cng c.
- Chn trigger trong mc Manage Triggers
- Thc hin sa ni dung hoc xa.
101
102
103
- nh du Change the default database to -> Chn CSDL -> Next ->
Finish
Sau khi to xong trong danh sch xut hin ODBC bn va to, t danh sch
bn c th sa i, xa ODBC khi cn thit.
104
To lin kt t Access.
T h qun tr CSDL Access bn c th to lin kt n cc h qun tr
CSDL khc (Acess, Dbase,), hoc thng qua ODBC. Trong v d minh ha s
dng lin kt t Access vi ODBC (i vi SQL Server hoc Oracle, My SQL th
Access phi lin kt thng qua ODBC v cc h qun tr CSDL ny khng thc
hin khai thc d liu qua tp tin ch khai thc thng qua tn CSDL, m Access ch
thc hin theo phng thc m tp tin).
Cc bc thc hin nh sau:
- M h qun tr CSDL Access.
- M hoc to CSDL mi t Access
- Chn File -> Get External Data -> Link Tables.
105
- Ok.
- Nhp Login ID v mt khu.
- Chn bng hoc khung nhn cn lin kt trong danh sch.
106
- Nhn Ok, danh sch cc bng trong Access c khai thc tng t nh
cc bng khc.
107
- Nhp cc tham s:
108
+ Tn Server.
+ Provider (Driver ca h qun tr CSDL cn thit lp lin kt, trong v
d minh ha thc hin vi Access).
- Thc hin khai thc thng qua cu lnh, trong cu lSQL phi ch ng
dn, v d
Select * from Biblio...Authors
s thc hin lit k ton b danh sch cc bn ghi ca bng authors.
109
To bng cu lnh.
S dng lnh sp_addlinkedserver to server lin kt.
V d to Linked Server Biblio:
sp_addlinkedserver 'Biblio',
Access 97', 'Microsoft.Jet.OLEDB.4.0',
'c:\data\biblio.mdb'
Xa Linked Server.
- S dng cng c: Chn Linked Server cn xa -> thc hin xa.
- S dng lnh :
sp_dropserver [ @server = ] 'server'
[ , [ @droplogins = ] { 'droplogins' | NULL} ]
Abraham
Bennet
Reginald
Blotchet-Halls
Cheryl
Carson
Michel
DeFrance
Innes
del Castillo
Ann
Dull
Marjorie
Green
Morningstar Greene
Burt
Gringlesby
Sheryl
Hunter
Livia
Karsen
111
Charlene
Locksley
Stearns
MacFeather
Heather
McBadden
Michael
O'Leary
Sylvia
Panteley
Albert
Ringer
Anne
Ringer
Meander
Smith
Dean Straight
Dirk Stringer
Johnson
White
AkikoYokomoto
Mt s tham s c bn:
- Out: Copy ton b mt Table hoc view ra tp tin.
- Queryout: Copy tp d liu c truy vn theo cu lnh.
- c: Ch ra rng cu lnh dng kiu k t phn nh cc ct, nu khng
ch th cu lnh t nhn tab (\t) phn nh v dng new line xung dng mi.
112
- Nhn Ok.
114
115
- Next -> Chn Data Source (C th l SQL Server, Oracle, Access,...), trong
v d minh ha chn Access.
- Chn tp tin (file name) -> Next
116
- Chn cch chuyn ton b bng d liu hay thng qua cu lnh truyn vn
(trong v d minh ha chn bng d liu) -> Next
117
- Chn chc nng thc hin ngy hay theo lch > Next -> Finish
118
119
120
121
Nhn hnh trn ta thy CSDL c lp lch Full Database Backup vo ngy ch
nht, Differential Database Backup vo ngy th ba v th nm, cn Log Database
Backup vo 5 ngy trong tun, ngy th su c s c vi CSDL data file b hng,
vn t ra l phi phc hi d liu v CSDL hot ng bnh thng. Ta phi lm
cc bc sau:
+ Thc hin Backup log file (gi s log file khng b hng).
+ Khi phc Full Database ca ngy ch nht.
+ Phc hi Differential Database ca ngy th nm.
+ Khi phc Transaction log backup ngy th nm.
SAO LU C S D LIU - BACKUP DATABASE.
Trc khi xem xt k thut sao lu CSDL, ta thng nht mt s thut ng
bng ting Anh nh sau:
+ Backup: L qu trnh copy ton b hoc mt phn database, transaction
log, file, file group thnh lp mt backup set c cha trong backup media (disk
hoc tape) bng cch s dng mt backup device (tape drive name hoc physical
filename).
+ Backup Device: Mt file vt l hoc mt drive tape.
122
- Chn mc Databases -> Nhn nt phi chut -> All Tasks -> Restore
Database
124
PHN QUYN, BO MT
Chng ny s gii thiu bn c k thut phn quyn, qun l ngi dng,
t cc mc bo mt cho CSDL.
CH BO MT SECURITY MODE.
Nh gp trong phn ci t SQL Server, SQL Server c 2 ch bo mt:
+ Windows Authentication Mode (Windows Authentication)
+ Mixed Mode (Windows Authentication and SQL Server Authentication)
Windows Authentication.
L ch bo mt m nhng User truy nhp SQL Server phi l nhng User
ca Windows. Khi Server t ch bo mt ny, nhng User phi l nhng
User c Windows qun l mi c truy nhp.
Nhn trn hnh ta thy khi thc hin ch ny ngi s dng mun khai thc SQL
Server phi thng qua 4 bc xc thc (1- Domain, 2- Computer, 3- SQL Server,
4- Database).
SQL Server Authentication.
125
t ch .
- Nhn phi chut chn tn Server (Instance).
- Chn Properties.
- Chn bng Security.
126
- Chn ch bo mt -> Ok
SERVER ROLE, DATABASE ROLE.
Role l i tng xc nh nhm thuc tnh gn quyn cho cc user tham
gia khai thc SQL Server.
Server Role.
Nhm cc quyn thc hin qun tr h thng, gm cc nhm sau:
+ Bulk Insert Administrators: c php thc hin Bulk Insert.
+ Database Creators: c php to v sa i cu trc CSDL.
+ Disk Administrators: C th qun tr cc file trn a.
+ Proccess Administrator: Qun tr cc dch v ang chy ca SQL Server.
+ Security Administrators: Qun tr h thng bo mt.
+ Setup Administrators: Qun tr cc th tc m rng (xp_).
127
Database Role.
Role l i tng m thng qua n ngi qun tr c th gn quyn khai thc
cho ngi s dng. Role do CSDL qun l, khi to CSDL h thng t t mt s
Role ngm nh.
128
Sau khi to xong, thc hin gn quyn khai thc cho Role.
- Chn Role cn gn quyn.
- Chn Perrmissions...
129
130
131
[ , [ @sid = ] sid ]
[ , [ @encryptopt = ] 'encryption_option' ]
V d: To login c tn Albert, mt khu corporate
EXEC sp_addlogin 'Albert', 'food', 'corporate'
Mi thao tc sa, xa c thc hin nh cc i tng khc.
User.
User l i tng khai thc CSDL, nu login ch xc nh truy nhp vo SQL
Server th User l login ID tham gia khai thc CSDL, user do CSDL qun l trc
tip.
- Chn CSDL -> users
- Nhn phi chut -> new user...
- Chn Login, nhp user name, chn role m user thuc ->Ok
Cc thao tc xa, sa thc hin nh cc i tng khc, gn quyn cho user bn
c th chn li user va to cho CSDL sau vo nhn vo Permissions.
132
NHN BN D LIU
Chng ny bn s gii thiu vi bn k thut lm gim lu lng d liu
giao dch vi SQL Server khi cu hnh nhiu Server trn mng.
GII THIU V NHN BN D LIU.
Nhn bn d liu tn ting anh gi l Replication, l cng c c s dng
copy mt hoc nhiu CSDL n mt hoc nhiu server (SQL Server) khc, cc
Server c t trong mng my tnh ni b (LAN), ngi khai thc c th thc
hin truy nhp n CSDL c trong Server c chuyn d liu n. D liu gia
cc my c thc hin ng b vi nhau theo lch hoc theo s kin, khi c yu
cu. Nhn bn d liu c nhng u im sau:
+ D liu c lu tr nhiu ni, hiu qu trong vic c nhiu ng dng
cng truy nhp, khai thc.
+ Thch hp cc ng dng phn tch d liu OLTP ca DataWare House.
+ C th khai thc d liu khi khng kt ni n Server.
+ Gim thiu xung khc do s lng ln cc giao dch trn mng.
+ L mt gii php an ton khi Server b li hoc bo dng.
M hnh nhn bn.
Dch v nhn bn d liu gm cc thnh phn c bn sau: Publisher,
Distributor, Subscribers, Publications, Articles, Subscriptions.
Publisher: L server cung cp d liu nhn bn cho cc server khc. Mt publisher
c th thit lp nhiu b d liu nhn bn (gi l publication).
Distributor: L server qun l cc thng tin nhn bn, lu tr d liu trong cc giao
dch thc hin nhn v chuyn d liu t Publisher n cc Subscriber. Remote
distributor l server tch ri khi publisher v c cu hnh l distributor. Local
distributor l mt server c cu hnh l Publisher v Distributor.
Subscriber: L server nhn d liu nhn bn. Subscriber gn lin vi publication (l
my ch nhn d liu nhn bn ca mt b d liu cu hnh nhn bn).
Article: L mt bng, tp d liu hoc i tng ca CSDL cu hnh nhn bn.
Publication: L mt tp gm mt hoc nhiu article.
Subscription: L mt giao dch yu cu bn sao b d liu hoc cc i tng ca
CSDL thc hin nhn bn. Trong mi giao dch publisher thc hin dy (push
subscription) d liu, subscriber thc hin ko (pull subscription).
133
134
135
136
Merge replication: L kiu nhn bn d liu cho php thc hin nhn sa i d
liu trn nhiu Subscriber, c th kt ni (online) hoc khng kt ni (offline) n
138
139
- t tn CSDL ca Distribution.
140
- Kt thc.
TO PUBLICATION.
Bc ny s thc hin to Publication, cch thc hin nh sau:
+ Chn Publication trong Replication ca Publisher.
+ Nhn phi chut -> New Publication...
141
142
- t tn cho Publication.
- Kt thc.
TO PUSH SUBSCRIPTION.
Bc ny thc hin to th tc y (push) t Publisher (Distributor trong v
d ny) n Subscriber, c thc hin trn Publisher. Cc bc thc hin nh sau:
143
- Chn Publication ca Publisher -> Nhn phi chut -> Push new
Subscription...
- Chn Subscriber.
144
145
147
Phn 2.
CU LNH T-SQL
Trong phn ny s gii thiu cu trc, k thut son kch bn lnh T-SQL,
i vi cc h qun tr CSDL Foxfro, Access th cu lnh thc hin truy vn, khai
thc CSDL l ngn ng truy vn SQL (Structure Query Language), cc lnh c
thc hin theo tng cu lnh m khng thc hin theo kch bn hoc theo tp hp
nhiu cu lnh vi nhau. i vi h qun tr CSDL Oracle th ngn ng truy vn d
liu l SQL/PL (SQL Plus), cn SQL Server ngn ng c tn Transact-SQL vit tt
l T-SQL.
NH NGHA D LIU (DATA DEFINITION LAGUAGE - DDL).
Phn ny s xem xt cc lnh lin quan n to mi, sa i, xa cc i
tng lin quan n Table, View v cc i tng khc.
To kiu d liu mi.
To kiu d liu dng user-defined.
C php:
sp_addtype [ @typename = ] type,
[ @phystype = ] system_data_type
[ , [ @nulltype = ] 'null_type' ]
[ , [ @owner = ] 'owner_name' ]
V d:
sp_addtype ssn, varchar(11), NOT NULL
V d:
Sp_droptype ssn
To rng buc (Constraint).
To rng buc c thc hin trong 2 cu lnh Create Table hoc Alter
Table: Check, Default, Foreign Key, Primary Key, Unique.
148
Xt mt s v d sau:
+ To mt Check. trong bng authors.
ALTER TABLE authors ADD CONSTRAINT chau_id CHECK(au_id
LIKE [0-9][0-9][0-9]-[0-9][0-9]- [0-9][0-9] [0-9][0-9])
+ To Check trong bng Publishers.
ALTER TABLE publishers ADD chpub_id CHECK(pub_id IN (1389,
0736, 0877, 1622, 1756) OR pub_id LIKE 99[0-9][0-9])
+ To rng buc Default.
ALTER TABLE authors ADD DEFAULT UNKNOWN for au_lname
+ To rng buc Foreign Key.
ALTER TABLE titles ADD CONSTRAINT FK_pub_id FOREIGN
KEY(pub_id) REFERENCES publishers(pub_id)
+ To rng buc Primary Key.
ALTER TABLE authors ADD CONSTRAINT UPKCL_auidind PRIMARY
KEY CLUSTERED (au_id)
+ To rng buc Unique.
ALTER TABLE stores ADD CONSTRAINT UNC_name_city UNIQUE
NONCLUSTERED(store_name, city)
Xa rng buc.
S dng Drop trong cc cu lnh Create Table hoc Alter Table.
+ V d xa Constraint s dng cu lnh Alter Table.
ALTER TABLE authors DROP CONSTRAINT UPKCL_auidind
Hin th rng buc.
sp_helpconstraint titltes
To bng.
to bng d liu c th s dng 2 cu lnh Create Table hoc Select Into.
+ To bng tm thi local (l bng ch hin vi phin hin thi, tn bng c bt
u bng mt du #).
CREATE TABLE #MyTempTable (cola INT PRIMARY KEY)
INSERT INTO #MyTempTable VALUES (1)
+ To bng tm thi global (hin vi tt c cc phin, tn bng c bt u bng 2
du #).
CREATE TABLE ##MyTempTable (cola INT PRIMARY KEY)
149
GO
ALTER TABLE doc_exb DROP COLUMN column_b
GO
EXEC sp_help doc_exb
GO
DROP TABLE doc_exb
GO
To Index.
S dng lnh Create Index.
+ To Index.
SET NOCOUNT OFF
USE pubs
IF EXISTS (SELECT name FROM sysindexes
WHERE name = 'au_id_ind')
DROP INDEX authors.au_id_ind
GO
USE pubs
CREATE UNIQUE CLUSTERED INDEX au_id_ind
ON authors (au_id)
GO
Xem thng tin Index.
S dng th tc sp_helpindex
+ Xem Index ca bng authors.
sp_helpindex authors
Xa Index.
S dng lnh Drop Index.
+ Xa Index ca bng authors.
DROP INDEX authors.au_id_ind
To khung nhn.
S dng lnh Create View.
+ To View.
USE pubs
IF EXISTS (SELECT TABLE_NAME FROM
INFORMATION_SCHEMA.VIEWS
WHERE TABLE_NAME = 'titles_view')
152
155
Lnh Update s dng sa d liu trong bng hoc View, xem xt cu php
thng qua cc v d sau.
+ Sa d liu s dng lnh Update s dng mnh SET.
UPDATE Northwind.dbo.Products
SET UnitPrice = UnitPrice * 1.1
WHERE CategoryID = 2
Hoc gn gi tr trc tip:
UPDATE authors
SET authors.au_fname = 'Annie'
WHERE au_fname = 'Anne'
Hoc gn gi tr NULL cho mt ct.
UPDATE publishers
SET pub_name = NULL
+ Sa d liu s dng mnh Where xc nh hng c sa d liu.
UPDATE authors
SET state = 'PC', city = 'Bay City'
WHERE state = 'CA' AND city = 'Oakland'
FROM sales
WHERE sales.title_id = titles.title_id
AND sales.ord_date IN (SELECT MAX(ord_date)
FROM sales))
FROM titles, sales
USE pubs
GO
EXEC sp_dboption 'pubs', 'select into/bulkcopy', 'true'
GO
DECLARE @ptrval binary(16)
SELECT @ptrval = TEXTPTR(pr_info)
FROM pub_info pr, publishers p
WHERE p.pub_id = pr.pub_id
AND p.pub_name = 'New Moon Books'
UPDATETEXT pub_info.pr_info @ptrval 88 1 'b'
GO
EXEC sp_dboption 'pubs', 'select into/bulkcopy',
'false'
GO
Cursor - iu khin con tr.
Cursor l kiu bin xc nh con tr cho mt tp d liu, l kt qu ca cu
lnh Select. Cursor c kt hp cng lnh Fetch xc nh v tr hng trong tp
d liu. Cursor c 2 kiu Cursor thng thng v Scroll Cursor.
Cc thao tc thc hin vi Cursor:
+ Declare: Khai bo.
+ Open: M con tr lm vic vi tp d liu.
+ Fetch: Dch chuyn v tr hng trong tp d liu.
+ Close: ng con tr.
+ DeAllocate: Gii phng con tr.
+ V d s dng Curcor, lit k danh sch cc hng ca bng Authors.
USE pubs
GO
DECLARE authors_cursor CURSOR FOR
SELECT au_lname FROM authors
WHERE au_lname LIKE "B%"
ORDER BY au_lname
OPEN authors_cursor
-- Perform the first fetch.
FETCH NEXT FROM authors_cursor
159
WHILE @@FETCH_STATUS = 0
BEGIN
-- Concatenate and display the current values in the
variables.
PRINT "Author: " + @au_fname + " " + @au_lname
-- This is executed as long as the previous fetch
succeeds.
FETCH NEXT FROM authors_cursor
INTO @au_lname, @au_fname
END
CLOSE authors_cursor
DEALLOCATE authors_cursor
GO
+ V d s dng Scroll Cursor, con tr cho php s dng cc phng thc: LAST,
PRIOR, RELATIVE, ABSOLUTE.
USE pubs
GO
-- Execute the SELECT statement alone to show the
-- full result set that is used by the cursor.
SELECT au_lname, au_fname FROM authors
ORDER BY au_lname, au_fname
-- Declare the cursor.
DECLARE authors_cursor SCROLL CURSOR FOR
SELECT au_lname, au_fname FROM authors
ORDER BY au_lname, au_fname
OPEN authors_cursor
-- Fetch the last row in the cursor.
FETCH LAST FROM authors_cursor
-- Fetch the row immediately prior to the current row
in the cursor.
FETCH PRIOR FROM authors_cursor
161
+ Xa mt tp cc hng.
USE pubs
DELETE FROM authors
WHERE au_lname = 'McBadden'
163
USE pubs
GO
DECLARE @MyMsg VARCHAR(50)
SELECT @MyMsg = 'Hello, World.'
GO -- @MyMsg is not valid after this GO ends the batch.
-- Yields an error because @MyMsg not declared in this
batch.
PRINT @MyMsg
GO
SELECT @@VERSION;
-- Yields an error: Must be EXEC sp_who if not first
statement in
-- batch.
sp_who
GO
Contrrol-of-Flow - iu khin lung.
Tng t nh cc ngn ng lp trnh thit k ng dng, T-SQL cho php
thit lp kch bn cu lnh, cho php s dng cc lnh iu khin khi, lung, vng
lp, iu kin, r nhnh, Sau y l bng cc lnh:
T kha
BEGINEND
GOTO
IFELSE
RETURN
WAITFOR
WHILE..BREAK..CONTINUE
CASE
DECLARE
PRINT
RAISEERROR
EXECUTE (EXEC)
M t
Khi lnh
Lnh nhy
Lnh iu kin
Thot
Ch thc hin lnh
Vng lp, thot khi vng lp, quay li lp
R nhnh
Khai bo
In thng bo
Tr li m li
Thc hin lnh
164
TRUY VN D LU.
Trong trc ta xem xt nhng cu lnh thao tc vi d liu nh Insert,
Update, Delete, phn ny ta s xem xt cc cu lnh khai thc truy vn d liu nh
Select, cc php Join,
Lnh Use - Chn C s d liu.
S dung lnh Use chn CSDL trong kch bn cu lnh.
Use Pubs
165
USE Northwind
GO
SELECT OrderID, ProductID, UnitPrice, Quantity,
Discount
FROM [Order Details]
ORDER BY OrderID ASC
GO
Shortened Title
-------------------Net Etiquette
The Psychology of Co
The Gourmet Microwav
You Can Combat Compu
Life Without Fear
Emotional Security:
Is Anger the Enemy?
Cooking with Compute
Fifty Years in Bucki
Sushi, Anyone?
Prolonged Data Depri
Silicon Valley Gastr
Straight Talk About
The Busy Executive's
167
Expensive
Expensive
Expensive
Expensive
book!
book!
book!
book!
Secrets of Silicon V
Onions, Leeks, and G
Computer Phobic And
But Is It User Frien
t tn cho ct.
S dng du phy xc nh tn ct, ti a l 30 k t.
SELECT sum= SUM(ytd_sales) FROM titles
Cc gi tr tnh ton c.
i cc kiu d liu tnh ton c s dng cc php ton +, -, *, /, %.
SELECT title_id, ytd_sales*2 FROM titles
168
Mnh Where.
Mnh Where xc nh iu kin cc hng c truy vn, biu thc trong
mnh Where xc nh theo biu thc logic. Cc php ton, cu lnh xc nh
gm:
- Cc php ton so snh: =, <>, <, >, !<, !>.
- T kha xc nh phm vi: Between, Not Between.
- Danh sch: In, Not In.
- Theo mu inh dng: Like, Not Like.
- Gi tr NULL: Is Null, Is Not Null.
- Cc php ton logic: And, Or.
+ T kha Between:
SELECT UnitsInStock, ProductID, ProductName
169
FROM Northwind.dbo.Products
WHERE UnitsInStock BETWEEN 15 AND 25
ORDER BY UnitsInStock
+ T kha Like.
170
Mt k t bt k no .
[]
[^]
+ Gi tr NULL.
Gi tr NULL c nhp bng cch t ngm nh hoc gn theo cu lnh.
tm gi tr NULL trong bng s dng t kha Is Null hoc Is Not Null.
SELECT title_id, type, advance
FROM pubs.dbo.titles
WHERE advance IS NULL
172
+ S dng mnh Compute By: Tnh ton theo nhm (tng t Group By).
USE pubs
SELECT type, price, advance
FROM titles
ORDER BY type
COMPUTE SUM(price), SUM(advance) BY type
TON T UNION.
Ton t Union thc hin hp 2 tp vi nhau, php ton ny thc hin ch ly
i din khi c hai hng ca hai tp trng nhau.
Gi s c 2 bng d liu nh sau:
Table1
ColumnA
char(4)
------abc
def
ghi
Table2
ColumnB
int
--1
2
3
ColumnC
char(4)
------ghi
jkl
mno
Kt qu thc hin:
ColumnA
------abc
def
ghi
jkl
ColumnB
-------1
2
3
4
174
ColumnD
int
--3
4
5
mno
175
176
USE pubs
SELECT au1.au_fname, au1.au_lname, au2.au_fname,
au2.au_lname
FROM authors au1, authors au2
WHERE au1.zip = au2.zip and au1.city = 'Oakland'
ORDER BY au1.au_fname ASC, au1.au_lname ASC
au_lname
---------------Blotchet-Halls
DeFrance
del Castillo
Dull
Green
Greene
Gringlesby
Hunter
Karsen
Locksley
MacFeather
McBadden
O'Leary
Panteley
Ringer
Ringer
Smith
Straight
Stringer
White
Yokomoto
Bennet
Carson
pub_name
-------NULL
NULL
NULL
NULL
NULL
NULL
NULL
NULL
NULL
NULL
NULL
NULL
NULL
NULL
NULL
NULL
NULL
NULL
NULL
NULL
NULL
Algodata Infosystems
Algodata Infosystems
Kt qu thc hin:
au_fname
-------------------Abraham
Infosystems
Cheryl
Infosystems
NULL
NULL
Publishing
NULL
NULL
NULL
NULL
NULL
au_lname
pub_name
---------------------- -------------------Bennet
Algodata
Carson
Algodata
NULL
NULL
NULL
NULL
NULL
NULL
NULL
GGG&G
Lucerne Publishing
New Moon Books
Ramona Publishers
Scootney Books
(9 row(s) affected)
Lin kt bng:
USE pubs
SELECT *
FROM authors AS a INNER JOIN publishers AS p
ON a.city = p.city
ORDER BY a.au_lname DESC
179
T lin kt bng:
USE pubs
SELECT au1.au_fname, au1.au_lname, au2.au_fname,
au2.au_lname
FROM authors au1 INNER JOIN authors au2
ON au1.zip = au2.zip
WHERE au1.city = 'Oakland'
ORDER BY au1.au_fname ASC, au1.au_lname ASC
ON
ON
WHERE
ORDER
Kt qu nh sau:
181
au_fname
--------------Reginald
Michel
Innes
Ann
Marjorie
Morningstar
Burt
Sheryl
Livia
Charlene
Stearns
Heather
Michael
Sylvia
Albert
Anne
Meander
Dean
Dirk
Johnson
Akiko
Abraham
Cheryl
NULL
NULL
NULL
NULL
NULL
NULL
NULL
au_lname
----------------------Blotchet-Halls
DeFrance
del Castillo
Dull
Green
Greene
Gringlesby
Hunter
Karsen
Locksley
MacFeather
McBadden
O'Leary
Panteley
Ringer
Ringer
Smith
Straight
Stringer
White
Yokomoto
Bennet
Carson
NULL
NULL
NULL
NULL
NULL
NULL
NULL
pub_name
----------------NULL
NULL
NULL
NULL
NULL
NULL
NULL
NULL
NULL
NULL
NULL
NULL
NULL
NULL
NULL
NULL
NULL
NULL
NULL
NULL
NULL
Algodata Infosystems
Algodata Infosystems
Binnet & Hardley
Five Lakes Publishing
GGG&G
Lucerne Publishing
New Moon Books
Ramona Publishers
Scootney Books
182
table1
a
------1
NULL
4
table2
c
------NULL
4
b
-----one
three
join4
d
-----two
four
Kt qu thc hin:
a
b
c
d
----------- ------ ----------- -----4
join4 4
four
(1 row(s) affected)
AVG([ALL | DISTINCT])
m cc hng c la chn.
MAX()
Tnh gi tr ln nht.
183
MIN()
Tnh gi tr nh nht.
184
ProdID
----------3
4
5
6
8
15
44
61
63
65
66
77
AmountSold
----------328
453
298
301
372
122
601
603
445
745
239
791
Mnh Having.
Having c s dng cng vi cc hm tnh ton xc nh iu kin lc cc
hng, thng c kt hp cng mnh Group By thc hin cc hm tnh ton
theo nhm.
+ Having vi hm SUM.
USE pubs
SELECT pub_id, total = SUM(ytd_sales)
FROM titles
GROUP BY pub_id
HAVING SUM(ytd_sales) > 40000
+ Having vi hm Count.
USE pubs
SELECT pub_id, total = SUM(ytd_sales)
FROM titles
GROUP BY pub_id
HAVING COUNT(*) > 5
185
186
u tin cu lnh s xc nh hng trong lnh Select trong, lnh truy vn ny phi
a ra kt qu duy nht.
187
Truy vn vi hm All.
Kim tra vi tt c cc hng.
USE pubs
SELECT t1.type
FROM titles t1
GROUP BY t1.type
HAVING MAX(t1.advance) >= ALL
(SELECT 2 * AVG(t2.advance)
FROM titles t2
WHERE t1.type = t2.type)
Truy vn vi hm Any.
Kim tra tha mn vi bt k hng no.
USE pubs
SELECT title
FROM titles
WHERE advance > ANY
(SELECT advance
FROM publishers INNER JOIN titles
ON titles.pub_id = publishers.pub_id
AND pub_name = 'Algodata Infosystems')
Truy vn vi hm Some.
Kim tra vi t nht mt hng.
USE pubs
SELECT t1.type
FROM titles t1
GROUP BY t1.type
HAVING MAX(t1.advance) >= SOME
(SELECT 2 * AVG(t2.advance)
FROM titles t2
WHERE t1.type = t2.type)
188
Kt hp vi lenh Select.
UPDATE titles
SET price = price * 2
WHERE pub_id IN
(SELECT pub_id
FROM publishers
WHERE pub_name = 'New Moon Books')
Kt hp vi lnh Join.
UPDATE titles
SET price = price * 2
FROM titles INNER JOIN publishers ON titles.pub_id =
publishers.pub_id
AND pub_name = 'New Moon Books'
189
'c:\MSOffice\Access\Samples\northwind.mdb';'admin';'myp
wd', Orders)
AS a
GO
Lnh OpenDataSource.
Lnh OpenDataSource thc hin m d liu ngoi Instance, khng cn n
linked_server.
+ Kt ni n Instance khc.
SELECT
FROM
OPENDATASOURCE(
'SQLOLEDB',
'Data Source=ServerName;User
ID=MyUID;Password=MyPass'
).Northwind.dbo.Categories
+ Kt ni n Excel.
192
SELECT *
FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',
'Data Source="c:\Finance\account.xls";User
ID=Admin;Password=;Extended properties=Excel
5.0')...xactions
Lnh OpenQuery.
Lnh OpenQuery thc hin thao tc vi d liu ngoi thng qua
LinkedServer.
EXEC sp_addlinkedserver 'OracleSvr',
'Oracle 7.3',
'MSDAORA',
'ORCLDB'
GO
SELECT *
FROM OPENQUERY(OracleSvr, 'SELECT name, id FROM
joe.titles')
GO
MT S HM C BN.
Hm h thng.
DB_ID
DB_NAME
HOST_ID
Tr v ID ca my ch.
HOST_NAME
Tr v tn my ch
SUSER_ID
SUSER_NAME
USER_ID
USER_NAME
193
Hm thao tc vi chui.
+ SUBSTRING - Ly chui nh trong chui.
SUBSTRING ( expression , start , length )
S dng vi chui k t:
USE pubs
SELECT au_lname, SUBSTRING(au_fname, 1, 1)
FROM authors
ORDER BY au_lname
194
V d:
SELECT STUFF('abcdef', 2, 3, 'ijklmn')
GO
Kt qu thc hin:
aijklmnef
+ SOUNDEX Tr v hm pht m.
Hm Soundex s dng so snh pht m gia 2 chui, v d sau s cho 2 m
Soundex nh nhau:
SELECT SOUNDEX ('Smith'), SOUNDEX ('Smythe')
Kt qu thc hin:
S530
S530
Cc hm DateTime.
+ GETDATE: Tr v ngy, gi hin ti.
+ DATEPART: Tr v gi tr ngay hoc thng hoc nm ca mt biu thc ngy.
DATEPART ( datepart , date )
Dng rt gn
year
yy, yyyy
quarter
qq, q
month
mm, m
dayofyear
dy, y
day
dd, d
week
wk, ww
weekday
dw
hour
hh
minute
mi, n
second
ss, s
millisecond
ms
USE pubs
GO
SELECT DATEADD(day, 21, pubdate) AS timeframe
FROM titles
GO
Cc hm chuyn i.
+ CONVERT
+ CAST
198
t tn giao dch:
199
200
SELECT * FROM t1
GO
-- Need to commit this tran too!
DROP TABLE t1
COMMIT TRAN
GO
202
LOCK KHA.
Khi 2 hay nhiu ngi cng truy nhp ng thi mt CSDL, SQL Server s
dng kho xc nh hot ng cho mt ngi v khng xc didnhj cho ngi
khc. Kho l vic ngn khng cho nhng ngi c d liu m khng b ngi
khc s i.
Hu ht SQL Server u kho t ng, bn c th thit tit CSDL mt cch
c hiu qu hn bng vic tm hiu v kho v chn kho cho ng dng ca bn.
Tm hiu v kho.
Kho gm cc loi sau:
Kiu kho
Shared
Update
Exclusive
M t
L kho khng lm thay i, ghi d liu, dng cho lnh Select
Kho hoc cho php sa i d liu
Kho vi cc thao tc Update, Insert, Delete
Tn
Page
Extent
Table
Intent
M t
Trang d liu 2K hoc trang ch mc Index, thng c dng
Nhm cc trang c kch thc 8k, ch dng vi trng hp xc
nh
C bng d liu, gm d liu v index
L kiu c bit t kiu kho ca trang hin ti trn bng
Shared
Yes
Yes
No
Update
Yes
No
No
Exclusive
No
No
No
M t
c s dng vi c lnh Select, ngi oc c th c d liu
khi d liu gc khi cha c ghi d liu mi trong giao dch
ang s dng
HOLDLOCK Khoa Shared c gi n khi phin giao dch c hon tt khi
kho cha c gii phng
UPDLOCK
Dng cp nht d liu ca kiu kho Shared trong qu trnh
c bng d liu v c gi n khi kt thc lnh ca phin
giao dch. Khoa ny dng khi cp nht d liu, ngn khng cho
ngi khc c n khi phin giao dch cp nht c hon tt
TABLOCK
Dng kho Shared trn mt bng d liu, cho php nhng ngi
khc c d liu nhng ngn khng cho cp nht
PAGELOCK s dng kiu kho Shared phm vi trang d liu (Page), y l
204
V d? 2:
Select * from authors(UPDLOCK)
t mc kho.
Trong :
o Read Committed: Dng kiu kho Shared trong qu trnh c d liu
o Read Uncommitted: Khng t kho Shared v kho Exclusive, c th
c d liu gc khi ang c phin giao ch sa i d liu
o RepeateTable Read: Kho tt c d liu ang c s dng trong truy
vn, ngn nhng ngi khc sa d liu nhng ngi khc c th chn
thm d liu mi vo bng (hng mi)
o Serializable: t kho trong mt tp d liu (kho phm vi) ngn
khng cho ngi khc c th sa, thm hng mi vo tp d liu n
khi giao dch kt thc, tng nh HoldLock trong lnh Select
V d:
SET TRANSACTION ISOLATION LEVEL REPEATABLE READ
205
GO
BEGIN TRANSACTION
SELECT * FROM publishers
SELECT * FROM authors
...
COMMIT TRANSACTION
CREATE DATABASE
CREATE DEFAULT
CREATE FUNCTION
CREATE PROCEDURE
CREATE RULE
CREATE TABLE
CREATE VIEW
BACKUP DATABASE
BACKUP LOG
CREATE
DATABASE
BULK INSERT
DBCC
X (1)
DENY
X (2)
GRANT
X (2)
KILL
RECONFIGURE
RESTORE
REVOKE
X
X
X (2)
SHUTDOWN
207
db_
db_
db_
db_
db_
backup
owner datareader datawriter ddladmin operator
ALTER DATABASE
ALTER FUNCTION
ALTER PROCEDURE
ALTER TABLE
X (1)
ALTER TRIGGER
ALTER VIEW
X (1)
BACKUP
CHECKPOINT
CREATE DEFAULT
CREATE FUNCTION
CREATE INDEX
X (1)
CREATE PROCEDURE X
CREATE RULE
CREATE TABLE
CREATE TRIGGER
X (1)
CREATE VIEW
DBCC
DELETE
X (1)
DENY
DENY on object
DROP
X (1)
EXECUTE
X (1)
GRANT
GRANT on object
X (1)
INSERT
X (1)
READTEXT
X (1)
REFERENCES
X (1)
RESTORE
REVOKE
REVOKE on object
X (1)
db_
security
admin
X (2)
X
X
X
X
X
X
X
X
208
SELECT
X (1)
SETUSER
TRUNCATE TABLE
X (1)
UPDATE
X (1)
X
X
X
X (1)
WRITETEXT
X (1)
Th cc sp_grandlogin.
L th tc thc hin gn quyn truy nhp cho user ca Windows NT hoc
nhm user ca Windows NT.
sp_grantlogin [@loginame =] 'login'
Th tc sp_grandaccess.
Gn quyn khai thc cho user ca SQL Server hoc Windows NT.
sp_grantdbaccess [@loginame =] 'login'
[,[@name_in_db =] 'name_in_db' [OUTPUT]]
210
REVOKE TC QUYN.
Revoke l cu lnh tc quyn khai thc ca user.
Tc quyn c thc hin cu lnh.
REVOKE { ALL | statement [ ,...n ] }
FROM security_account [ ,...n ]
211
V d gn quyn khai thc cho role, sau thc hin t chi thc hin ca cc user
trong role:
USE pubs
GO
GRANT SELECT
ON authors
TO public
GO
DENY SELECT, INSERT, UPDATE, DELETE
ON authors
TO Mary, John, Tom
TR GIP.
Trong qu trnh thc hin son lnh T-SQL bn c th thc hin tra cu lnh
trong Book Online.
212
Phn 3.
213
OLE DB
Thnh phn
Chc nng
Application Gi cc i tng, thnh phn, phng thc v cc thuc tnh
ca ADO. Thng qua cc thnh phn ny ng dng s gi cc
cu lnh SQL v nhn kt qu x l.
ADO
Qun l vic trao i d liu gia ng dng v OLE DB
OLE DB
X l cc lnh gi t ng dng qua ADO, kt ni vi Data
provider
Source.
Processes all ADO calls from the application, connects to a
data source, passes SQL statements from the application to the
data source, and returns results to the application.
Data source Contains the information used by a provider to access a
specific instance of data in a DBMS.
Khi thc hin lp trnh ng dng vi SQL Server s dng ADO, ngi lp
trnh phi thc hin cc thao tc sau:
+ Kt ni n ngun d liu (data source).
+ Gi cu lnh SQL n ngun d liu.
+ X l kt qu nhn c t cu lnh gi.
+ X l cc li v thng bo.
+ Ngt kt ni n ngun d liu.
i vi mt s ng dng phc tp s dng ADO c th s dng mt s thao
tc sau:
+ S dng con tr (cursor) iu khin v tr trong tp kt qu.
+ Thc hin th tc lu tr trn Server.
+ Thc hin hm t nh ngha trn Server.
+ Qun l cc php truy vn m c nhiu tp kt qu.
214
Kt ni n SQL Server.
kt ni n SQL Server, cc cng vic c bn cn thc hin nh sau:
+ Cu hnh kt ni.
+ Thit lp hoc ngt kt ni n ngun d liu.
+ Xc nh OLE DB provider.
+ Thc hin truy vn.
+ Qun l cc phin lm vic trn kt ni.
Khi s dng SQLOLEDB ta phi thc hin t cc thuc tnh sau cho kt
ni:
+ Initial Catalog: Xc nh CSDL.
+ Data Source: Xc nh tn Server.
+ Integrated Security: Xc nh ch xc thc, nu l SSPI ch xc
thc l Windows Authentication, hoc xc nh User ID, Password ca ch
xc thc SQL Server Authentication.
V d thc hin kt ni n SQL Server t tng thuc tnh ting bit t Visual
Basic:
' Initialize variables.
Dim cn As New ADODB.Connection
. . .
Dim ServerName As String, DatabaseName As String, _
UserName As String, Password As String
' Put text box values into connection variables.
ServerName = txtServerName.Text
DatabaseName = txtDatabaseName.Text
215
UserName = txtUserName.Text
Password = txtPassword.Text
' Specify the OLE DB provider.
cn.Provider = "sqloledb"
' Set SQLOLEDB connection properties.
cn.Properties("Data Source").Value = ServerName
cn.Properties("Initial Catalog").Value = DatabaseName
' Decision code for login authorization type:
' Windows NT or SQL Server authentication.
If optWinNTAuth.Value = True Then
cn.Properties("Integrated Security").Value = "SSPI"
Else
cn.Properties("User ID").Value = UserName
cn.Properties("Password").Value = Password
End If
' Open the database.
cn.Open
V d kt ni s dng ODBC:
216
M t
Tn file cha i tng recordset
217
adCmdStoreProc
adCmdTable
adCmdTableDirect
adCmdText
adCmdUnknown
adCmdUnspecified
Stored procedure
Tn bng
Tn bng m cc ct c truy vn
Cu lnh SQL
Cha xc nh
Cha xc nh tham s cho lnh
cn As New ADODB.Connection
cmd As New ADODB.Command
rs As New ADODB.Recordset
prm As ADODB.Parameter
218
i tng Recordset.
S dng i tng Recordset lu tr kt qu ca lnh Select.
219
i tng Field.
S dng i tng field l cc ct ca Recordset, thng qua n ta c th ly
gi tr, thuc tnh ca ct.
Dim
Dim
Dim
Dim
rs As New ADODB.Recordset
fld As ADODB.Field
cn As ADODB.Connection
cmdText As String
cn.Provider = "sqloledb"
cn.Properties("Data Source").Value = "MyServerName"
cn.Properties("Initial Catalog").Value = "northwind"
cn.Properties("Integrated Security").Value = "SSPI"
cn.Open
cmdText = "select * from authors"
rs.Open cmdText, cn
Set Flds = rs.Fields
Dim TotalCount As Integer
TotalCount = Flds.Count
For Each fld In
Debug.Print
Debug.Print
Debug.Print
Next
rs.Close
Flds
fld.Name
fld.Type
fld.Value
M t
- adOpenForwardOnly: Ngm nh
CursorType
Xc nh kiu con tr c s dng:
- adOpenForwardOnly: Ch c, ch c th cp nht d liu
trn hng d liu hin thi.
- adOpenStatic: Trng thi tnh, khi m kiu ny h thng s
cung cp mt nh d liu (snapshot), d liu thay i trn
bng c s s khng c th hin trn snapshot dng ny.
- adOpenKeyset: Theo v tr ty chn, khi di chuyn hng
cp nht con tr kiu ny s chiu n hng d liu c s,
hng d liu c kh v bn c th cp nht, ly d liu t
hng c s.
- adOpenDynamic: ng, con tr kiu ny gn ging keyset
cursor , nhng con tr kiu ny phn nh nhng thay i trn
bng c s.
CursorLocation -adUseServer: Ngm nh.
- adUseClient: Nu t l ta ch c th m trng thi tnh.
-adLockReadOnly: Ngm nh.
LockType
Xc nh kiu kha trong qu trnh cp nht d liu
(adLockPessimistic, adLockOptimistic,
adLockBatchOptimistic).
Ngm nh: 1
CacheSize
Xc nh s hng t trong b m hoc c trong mt thi
im.
Next
GoTo Done
End Sub
Qun l d liu kiu ln Text, image.
D liu kiu text, ntext, image l kiu d liu phc tp, vic qun l, khai
thc khng c thc hin thng thng, ADO h tr cc phng thc ring
thc hin.
Thay v c, cp nht d liu trc tip th d liu kiu ny c thao tc theo
on (chunk) bng cch s dng cc phng thc AppendChunk, GetChunk.
Trc khi thc hin bn phi t tham s bng cch thc hin lnh sau:
EXEC sp_dboption 'pubs', 'Select into/bulkcopy', 'True'
Xt v d sau trn CSDL Pubs:
- Copy bng pub_info sang bng mi
USE pubs
SELECT * INTO pub_info_x
FROM pub_info
GO
- Thc hin chn d liu vo bng:
Public Sub AppendChunkX()
Dim
Dim
Dim
Dim
Dim
Dim
Dim
Dim
Dim
cn As ADODB.Connection
rstPubInfo As ADODB.Recordset
strCn As String
strPubID As String
strPRInfo As String
lngOffset As Long
lngLogoSize As Long
varLogo As Variant
varChunk As Variant
225
Kt ni t ASP.
Trong c v d saiu y thc hin lm vic vi SQL Server t ASP, s dng
ngn ng lp trnh VBScript, lm c v d ny bn c phi c kin thc v
thit k Web site (HTML).
Thit k form kt ni:
<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>
<html>
<head>
<title>Login SQL Server example</title>
<meta
http-equiv="Content-Type"
content="text/html;
charset=utf-8">
<style type="text/css">
<!-226
.style1 {
font-size: 24px;
font-weight: bold;
}
-->
</style>
</head>
<body>
<p align="center" class="style1">Login SQL Server</p>
<p> </p>
<form name="frmlogin">
<table width="100%" border="0">
<tr>
<td
width="40%"><div
align="right">User
name
</div></td>
<td width="60%">
<input name="txtUser" type="text" id="txtUser">
</td>
</tr>
<tr>
<td><div align="right">Password </div></td>
<td><input
name="txtPassword"
type="password"
id="txtPassword"></td>
</tr>
<tr>
<td><div align="right">Server name </div></td>
<td><input
name="txtServer"
type="text"
id="txtServer"></td>
</tr>
</table>
<div align="center">
<input name="cmdLogin" type="button" id="cmdLogin"
value="Login">
<input type="reset" name="cmdReset" value="Reset">
</div>
</form>
</body>
</html>
<Script language=vbscript>
sub cmdLogin_Onclick
227
frmlogin.method="post"
frmlogin.action="connect.asp"
frmlogin.submit
end sub
</script>
228
Set cn=Server.CreateObject("ADODB.Connection")
cn.Open txt
%>
<div
align="center"><span
class="style1">Kết
nối thành công</span>
<%
cn.close
%>
<br>
<a href="Login.asp<< Về form login</a>
</div>
+ ng Recordset:
Rs.close
password = ""
servername="TDCong"
txt= "Provider=SQLOLEDB; "
txt=txt & " Data Source=" & servername & ";"
txt=txt & " Initial Catalog=pubs; "
txt=txt & " User ID=" & username & ";"
txt=txt & " PWD=" & password
Set cn=Server.CreateObject("ADODB.Connection")
cn.Open txt
Set rs=Server.CreateObject("ADODB.Recordset")
rs.ActiveConnection =cn
rs.Source ="Select * from Authors"
rs.Open
%>
<body>
<p align="center"><strong>LIST OF AUTHORS
</strong></p>
<p> </p>
<table width="100%" border="0.2">
<tr bgcolor="#999999">
<td
width="5%"><div
align="center"
class="style5">No</div></td>
<td width="14%"><div align="center" class="style6
style7">au_id</div></td>
<td
width="14%"><div
align="center"
class="style9"><strong>au_lname</strong></div></td>
<td
width="14%"><div
align="center"
class="style9"><strong>au_fname</strong></div></td>
<td
width="14%"><div
align="center"
class="style9"><strong>phone</strong></div></td>
<td
width="26%"><div
align="center"
class="style9"><strong>address</strong></div></td>
<td
width="13%"><div
align="center"
class="style9"><strong>city</strong></div></td>
</tr>
<%
i=0
do while not rs.eof and not rs.bof
i=i+1
if i mod 2<>0 then
%>
231
<tr bgcolor="#FFFFFF">
<td><div
align="center"><span
class="style12"><%=i%></span></div></td>
<td><div
align="center"><span
class="style12"><%=rs.fields("au_id")%></span></div></t
d>
<td><span
class="style12"><%=rs.fields("au_fname")%></span></td>
<td><span
class="style12"><%=rs.fields("au_lname")%></span></td>
<td><span
class="style12"><%=rs.fields("Phone")%></span></td>
<td><span
class="style12"><%=rs.fields("Address")%></span></td>
<td><span
class="style12"><%=rs.fields("City")%></span></td>
</tr>
<%
else
%>
<tr bgcolor="#CCCCCC">
<td><div
align="center"><span
class="style12"><%=i%></span></div></td>
<td><div
align="center"><span
class="style12"><%=rs.fields("au_id")%></span></div></t
d>
<td><span
class="style12"><%=rs.fields("au_lname")%></span></td>
<td><span
class="style12"><%=rs.fields("au_fname")%></span></td>
<td><span
class="style12"><%=rs.fields("Phone")%></span></td>
<td><span
class="style12"><%=rs.fields("Address")%></span></td>
<td><span
class="style12"><%=rs.fields("City")%></span></td>
</tr>
<%
end if
rs.movenext
loop
%>
232
</table>
</body>
<%
rs.close
%>
</html>
233
Khai bo i tng.
Sau khi thc hin khai bo th vin trong project, ta c th khai bo bin
kiu i tng (object) hoc kiu i tng ca SQL DMO.
V d khai bo bin kiu SQL Server:
Dim oSQLServer As SQLDMO.SQLServer
Kt ni n SQL Server.
234
"LoginName",
236