Upload
blurayhd
View
218
Download
0
Embed Size (px)
Citation preview
7/31/2019 17413 - Bai Giang Thuc Tap Chuyen Nganh SQL Server
1/46
TRNG I HC HNG HI VIT NAM
KHOA CNG NGH THNG TIN
B MN H THNG THNG TIN
-----***-----
BI GING
THC TP CHUYN NGNH (SQL SERVER)
TN HC PHN : THC TP CHUYN NGNH(SQL SERVER)
M HC PHN : 17413TRNH O TO : I HC CHNH QUYDNG CHO SV NGNH : CNG NGH THNG TIN
HI PHNG - 2011
7/31/2019 17413 - Bai Giang Thuc Tap Chuyen Nganh SQL Server
2/46
2
MC LC
Ni dung TrangChng 1: Gii thiu Microsoft SQL Server (2005) 51.1. Cc thnh phn v chc nng ca SQL Server 51.2. Gii thiu b cng c qun l SQL Server (2005) (SQL Server Management Studio -SSMS)
5
Chng 2: Ci t Microsoft SQL Server (2005) 72.1. Cc yu cu ci t (Installation requirements) 72.2. Thc hin ci t (Installation walkthrough) 8Chng 3: Bo mt v qun tr ngi dng 93.1. Qun l ng nhp SQL Server (Logins) 93.2. Qun l ngi dng SQL Server (Users) 93.3. Qun l cc nhm quyn CSDL (Database roles) 10
3.4. Qun l phn quyn ngi dng trong SQL Server (Permissions) 11Chng 4: To v qun l c s d liu 124.1. To c s d liu (Database) 124.2. Xa c s d liu 13Chng 5: To v qun l cc bng 145.1. To bng (Tables) 145.2. nh ngha cc ct (Columns) 155.3. nh ngha cc rng buc (Constrains) 175.4. Sa bng (ALTER TABLE) 205.5. Xa bng (DROP TABLE) 215.6. Thm bn ghi mi (INSERT) 225.7. Cp nht bn ghi (UPDATE) 235.8. Xa bn ghi (DELETE) 23Chng 6: Truy vn d liu 256.1. Truy vn c bn 256.2. Truy vn t nhiu bng 276.3. Truy vn lng nhau (Subqueries) 29Chng 7: Sao lu v phc hi CSDL 317.1. Sao lu CSDL 317.2. Phc hi CSDL 34Chng 8: Lp trnh vi ADO.NET 38
8.1. Gii thiu v nn tng .NET 388.2. ADO.NET 2.0 v SQL Server 388.3. Kt ni n SQL Server 398.4. Thc thi cc cu lnh SQL 40MT S THI MU 44
7/31/2019 17413 - Bai Giang Thuc Tap Chuyen Nganh SQL Server
3/46
3
Tn hc phn: Thc tp chuyn ngnh 2- SQL Server Loi hc phn: 2B mn ph trch ging dy: H thng Thng tin Khoa ph trch: CNTT.M hc phn: 17413 Tng s TC: 3Tng s tit L thuyt Thc hnh/Xemina T hc Bi tp ln n mn hc
75 30 45 0 c khng
Hc phn hc trc: C s d liu; H qun tr c s d liu.Hc phn tin quyt: Khng yu cu.Hc phn song song: Khng yu cu.Mc tiu ca hc phn:Cung cp cho sinh vin kin thc v k nng cn thit qun tr c s d liu (CSDL) trongMicrosoft SQL Server (2005); Gip sinh vin hiu cc chc nng ca Microsoft SQL Server (2005) xy dng cc ng dng c s d liu.Ni dung ch yu:Gii thiu Microsoft SQL Server (2005); Ci t v cu hnh Microsoft SQL Server; Bo mt vqun tr ngi dng; To v qun l CSDL; To v qun l cc bng; Truy vn d liu; Sao lu v
phc hi CSDL; SQL Server v nn tng .NET; Xy dng cc ng dng SQL Server;Ni dung chi tit:
TN CHNG MCPHN PHI S TIT
TS LT TH BT KT
Chng 1: Gii thiu Microsoft SQL Server (2005) 2 1 11.1. Cc thnh phn v chc nng ca SQL Server1.2. Gii thiu b cng c qun l SQL Server (2005) (SQLServer Management Studio- SSMS)Chng 2: Ci t Microsoft SQL Server (2005) 3 1 22.1. Cc yu cu ci t (Installation requirements)2.2. Thc hin ci t (Installation walkthrough)Chng 3: Bo mt v qun tr ngi dng 5 2 33.1. Qun l ng nhp SQL Server (Logins)3.2. Qun l ngi dng SQL Server (Users)3.3. Qun l cc nhm quyn CSDL (Database roles)3.4. Qun l phn quyn ngi dng trong SQL Server(Permissions)Chng 4: To v qun l c s d liu 5 2 34.1. To c s d liu (Database)4.2. Xa c s d liuChng 5: To v qun l cc bng 10 4 6
5.1. To bng (Tables)5.2. nh ngha cc ct (Columns)5.3. nh ngha cc rng buc (Constrains)5.4. Sa bng (ALTER TABLE)5.5. Xa bng (DROP TABLE)5.6. Thm bn ghi mi (INSERT)5.7. Cp nht bn ghi (UPDATE)5.8. Xa bn ghi (DELETE)Chng 6: Truy vn d liu 10 4 66.1. Truy vn c bn
6.2. Truy vn t nhiu bng6.3. Truy vn lng nhau (Subqueries)Chng 7: Sao lu v phc hi CSDL 5 2 37.1. Sao lu CSDL
7/31/2019 17413 - Bai Giang Thuc Tap Chuyen Nganh SQL Server
4/46
4
TN CHNG MCPHN PHI S TIT
TS LT TH BT KT
7.2. Phc hi CSDLChng 8: Lp trnh vi ADO.NET 30 12 188.1. Gii thiu v nn tng .NET8.2. ADO.NET 2.0 v SQL Server
8.3. Kt ni n SQL Server8.4. Thc thi cc cu lnh SQL8.5. Xy dng cc ng dng SQL Server
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. Ray Rankins, Paul Bertucci, Chris Gallelli, Alex T.Silverstein, Microsoft SQL Server 2005Unleashed, Sams Publishing, 2007.
2. Brian Knightet al, Professional SQL Server 2005 Administration, Wrox Press, 2007.
Hnh thc v tiu chun nh gi sinh vin:- Hnh thc thi: t lun 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 giahc 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,3X + 0,7Y.
Bi ging ny l ti liu chnh thc v thng nhtca B mn H thng Thng tin, Khoa Cngngh Thng tin v c dng ging dy cho sinh vin.
Ngy ph duyt: / /
Trng B mn
7/31/2019 17413 - Bai Giang Thuc Tap Chuyen Nganh SQL Server
5/46
5
Chng 1: Gii thiu Microsoft SQL Server(2005)
1.1. Cc thnh phn v chc nng ca SQL ServerSQL Server 2005 l mt h thng qun l c s d liu (Relational Database Management System
(RDBMS) ) s dng Transact-SQL trao i d liu gia Client v SQL Server. Mt RDBMS
bao gm databases, database engine v cc ng dng dng qun l. d liu vcc b phn khc
nhau trong RDBMS.
SQL Server 2005 c tiu c th chy trn mi trng c s d liu rt ln (Very Large
Database Environment) ln n Tera-Byte v c th phc v cng lc cho hng ngn user. SQL
Server 2005 c th kt hp vi cc server khc nh Microsoft Internet Information Server (IIS), E -
Commerce Server, Proxy Server....
Cc phin bn ca SQL Server 2005:
Enterprise: H tr khng gii hn s lng CPU v kch thc Database. H tr khng gii hn
RAM (nhng ty thuc vo kch thc RAM ti a m HH h tr) v cc h thng 64bit.
Standard: Tng t nh bn Enterprise nhng ch h tr 4 CPU. Ngoi ra phin bn ny cng
khng c trang b mt s tnh nng cao cp khc.
1.2. Gii thiu b cng c qun l SQL Server (2005) (SQLServer Management Studio- SSMS)ng nhp
:
Qun l c s d liu:
7/31/2019 17413 - Bai Giang Thuc Tap Chuyen Nganh SQL Server
6/46
6
Bi tp:1. Cc phng php ng nhp SQL Server2. Cc thnh phn trong ca s qun l SQL Server
7/31/2019 17413 - Bai Giang Thuc Tap Chuyen Nganh SQL Server
7/46
7
Chng 2: Ci t Microsoft SQL Server(2005)
2.1. Cc yu cu ci t (Installation requirements)
7/31/2019 17413 - Bai Giang Thuc Tap Chuyen Nganh SQL Server
8/46
8
2.2. Thc hin ci t (Installation walkthrough)Download v ci t Microsoft .NET Framework 2.0:
ci t thnh cng SQL Server Express Edition hay cc phin bn SQL Server 2005 khc,
Microsoft .NET Framework 2.0phi c ci t trc.
Ci t SQL Server 2005 Express Edition:Microsoft SQL Server 2005 Express Edition l phin bn min ph, d s dng v nh ca
Microsoft SQL Server 2005. Microsoft SQL Server 2005 Express Edition c tch hp trong
Visual Studio 2005 to ra s d dng trong vic pht trin cc ng dng hng CSDL. SQL Server
2005 Express Edition c t do sdng trong cc ng dng thng mi v d dng cp nht ln
cc phin bn cao hn khi cnthit.
Ci t SQL Server Management Studio Express:
SQL Server Management Studio Express cung cp giao din ngi dng d dng tng tc vi
cc thnh phn ca Microsoft SQL Server 2005 Express Edition. Trc khi ci t SQL Server
Management Studio Express, MSXML 6.0 phi c ci t
Double click vo file ci t Microsoft SQL Server Express Edition
Click Next.
Lu : SQL Server 2005 c hai kiu authentication (kim tra ngi dng).
Windows authentication mode: Vic kim tra ngi dng ca SQL Server 2005 s ph thuc vo
vic kim tra ngi dng ca Windows. Khi ngi dng c quyn ng nhp vo Windows, ngi
dng s c quyn ng nhp vo SQL Server. Kiu kim tra ngi dngny thng c s
dng khi ng dng khai thc d liu v SQL Server c ci trn cngmt my tnh.
SQL Server authentication mode: Vic kim tra ngi dng ca SQL Server 2005 skhng ph
thuc vo vic kim tra ngi dng ca Windows. Khi ngi dng c quyn ng nhp vo
Windows, ngi dng cha chc s c quyn ng nhp vo SQL Server. ngnhp vo
SQL Server, ngi dng ny phi c mt b username v password do SQL Serverqun l. Kiu
kim tra ngi dng ny thng c s dng khi ng dng khai thc d liu v SQL Server khng
c ci trn cng mt my tnh.
Khi chnMixed mode, SQL Server c th dng bt k kiu kim tra ngi dng no khi cn thit.
y l mt thit lp thc s rt hu ch khi xy dng cc ng dng CSDL. Ngoi ra, ta cng phi
nh password vo hai bn di c th ng nhp vo SQL Server khi ta xydng mt ng
dng truy xut vo CSDL my ny khi ta ang my khc.
Click Next ba ln.
Bi tp:
Thc hin ci t SQL Server trn my ch v my khch
7/31/2019 17413 - Bai Giang Thuc Tap Chuyen Nganh SQL Server
9/46
9
Chng 3: Bo mt v qun tr ngi dng
3.1. Qun l ng nhp SQL Server (Logins)ng nhp:
3.2. Qun l ngi dng SQL Server (Users)To ngi dng mi:
7/31/2019 17413 - Bai Giang Thuc Tap Chuyen Nganh SQL Server
10/46
10
3.3. Qun l cc nhm quyn CSDL (Database roles)Thit lp nhm quyn i vi c s d liu:
7/31/2019 17413 - Bai Giang Thuc Tap Chuyen Nganh SQL Server
11/46
11
3.4. Qun l quyn ngi dng trong SQL Server(Permissions)Thit lp quyn ca ngi s dng;
Bi tp:
1. Cc nhm quyn trong CSDL SQL Server
2. Cc quyn ngi dng trong CSDL SQL Server
7/31/2019 17413 - Bai Giang Thuc Tap Chuyen Nganh SQL Server
12/46
12
Chng 4: To v qun l cs d liu
4.1. To c s d liu (Database)
t tn Database trong Textbox Database Name, click OK.
7/31/2019 17413 - Bai Giang Thuc Tap Chuyen Nganh SQL Server
13/46
13
4.2. Xa c s d liuClick chut phi ln bng hay CSDL mun xa -> Delete - >OK. Trong trng hp xamt CSDL,
nn chn du tch vo Close existing connections. Khi SQL Server 2005 s ngt tt c cc ktni vo CSDL ny v vic xa s khng gy bo li.
Bi tp:
1. Thc hin to mt CSDL trong SQL Server
2. Thc hin sa i cu trc v d liu ca mt CSDL c trong SQL Server
3. Thc hin xo mt CSDL c trong SQL Server
7/31/2019 17413 - Bai Giang Thuc Tap Chuyen Nganh SQL Server
14/46
14
Chng 5: To v qun l cc bng
5.1. To bng (Tables)
Bng gm cc cc ct. Mi ct gm tn ct (Column Name), kiu d liu (Data Type) vmt gi trcho bit ct c th cha gi tr NULL hay khng. Trong bng s c t nht mt ct lm kha
chnh (primary key). Ct lm kha chnh s c biu tng cha kha trc tn ct.
7/31/2019 17413 - Bai Giang Thuc Tap Chuyen Nganh SQL Server
15/46
15Sau khi to xong tt c cc ct ca bng, tin hnh Save -> OK
5.2. nhngha cc ct (Columns)Cu lnh CREATE TABLE c s dng nh ngha mt bng d liu mi trong CSDL. Khi
nh ngha mt bng d liu mi, ta cn phi xc nh c cc yu cu sau y:
Bng mi c to ra s dng vi mc ch g v c vai tr nh th no trongc s d liu.
Cu trc ca bng bao gm nhng trng (ct) no, mi mt trng cnghanh th no trong
vic biu din d liu, kiu d liu ca mi trng l g v trng c chophp nhn gi tr
NULL hay khng.
Nhng trng no s thamgia vo kha chnh ca bng. Bng c quan h vi nhng bng khc hay
khng v nu c th quan h nh th no.
7/31/2019 17413 - Bai Giang Thuc Tap Chuyen Nganh SQL Server
16/46
16Trn cc trng ca bng c tn ti nhng rng buc v khun dng, iu kin hp l cad liu
hay khng; nu c th s dng u v nh th no.
Cu lnh CREATE TABLE c c php nh sau
CREATE TABLE tn_bng
(
tn_ct thuc_tnh_ct cc_rng_buc
[,...
,tn_ct_n thuc_tnh_ct_n cc_rng_buc_ct_n]
[,cc_rng_buc_trn_bng]
)
Tn_bng: tun theo quy tc nh danh, khng vt qu 128 k t
Tn_ct: cc ct trong bng, mi bng c t nht mt ct.
Thuc_tnh_ct: bao gm kiu d liu ca ct, gitr mc nh ca ct, ct c c thitlp thuc
tnh identity, ct c chp nhn gi tr NULL hay khng. Trong kiu d liu l thuc tnh bt
buc.
Cc_rng_buc: gm cc rng buc v khun dng d liu (rng buc CHECK) hay cc rng buc
v bo ton d liu (PRIMARY KEY, FOREIGN KEY, UNIQUE)
V d: V d di y to mt bng c tn CUSTOMERS
create table customers
(
customerid int identity (1,1) primary key,
customername nvarchar(50) not null,
address nvarchar(100 ) null ,
birthday datetime null,
gender bit default('true') not null
)
Ct customeridc kiu d liu int, c ch nh thuc tnh identity(1,1) ngha l d liuct nyc thm t ngbt u t 1 v mi ln c dng mi thm vo, gi tr ct ny ctng ln 1.
Ct ny cng c ch nh lm kha chnh ca bng thng qua thuc tnhprimary key.
Thuc tnh NULL/ NOT NULL ch ra rng ct c chp nhn/ khng chp nhn gi tr NULL.
Ct genderc ch nh gi tr mc nh l true ngha l nu khng ch nh gi tr choct ny th
ct ny c gi tr l true
V d:
Thm dng mi vo bng customers vi gi tr truyn vo y cho cc ctinsert into customers
values('Nguyen Van An', '22 Nguyen Thien Thuat', '5/5/1988', 'True')
7/31/2019 17413 - Bai Giang Thuc Tap Chuyen Nganh SQL Server
17/46
17Thm dng mi vo bng customers s dng gi tr mc nh
insert into customers (customername, addr ess, birthday)
values('Nguyen Van An', '22 Nguyen Thien Thuat', '5/5/1988')
Thm dng mi vo bng customers v khng truyn gi tr cho cc ct cho php gi tr NULL
insert into customers (customername )
values('Nguyen Van An')
5.3. nh ngha cc rng buc (Constrains)Rng buc CHECK
Rng buc CHECK c s dng nhm ch nh iu kin hp l i vi d liu. M i khi c s
thay i d liu trn bng (INSERT, UPDATE), nhng r ng buc ny s c s dngnhm kim
tra xem d liu mi c hp l hay khng.
Rng buc CHECK c khai bo theo c php nh sau:
[CONSTRAINT tn_rng_buc] CHECK (iu_kin)
V d:
create table students
(
studentid int identity(1,1) primary key,
studentname nvarchar(50) not null,
address nvarchar(100) not null,
score1 tinyint not null
constraint chk_score1 CHECK (score1 >= 0 and score1
7/31/2019 17413 - Bai Giang Thuc Tap Chuyen Nganh SQL Server
18/46
18Nu kho chnh ca bng ch bao gm ng mt ct v rng buc PRIMARY KEY cch
nh mc ct, ta khng cn thit phi ch nh danh sch ct sau t kho PRIMARY KEY. Tuy
nhin, nu vic khai bo kho chnh c tin hnh mc bng (s dng khi slng cc ct tham
gia vo kho l t hai tr ln) th bt buc phi ch nh danh sch ct ngay sau t kha PRIMARY
KEY v tn cc ct c phn cch nhau bi du phy.
V d 1: nh ngha mt bng ch c mt kha chnh
create table customers
(
customerid int identity(1,2)
constraint chk_primarykey primary key,
customername nvarchar(50) not null,
address nvarchar(100) not null,
gender bit not null
)
Hoc l
create table customers
(
customerid int identity(1,2) primary key,
customername nvarchar(50) not null,
60
address nvarchar(100) not null,
gender bit not null
)
V d 2: nh ngha bng c hai kha chnh:
create table orderdetail
(
customerid int,
orderid int,
itemid int not null,
quantity decimal(8,2) not null,
constraint chk_primarykey primary key (customerid, orderid)
)
Rng buc FOREIGN KEY
FOREIGN KEY l mt ct hay mt s kt hp ca nhiu ct c s dng p t mi lin ktd liu gia hai table. FOREIGN KEY ca mt bng s gi gi tr ca PRIMARYKEY ca mt
bng khc v chng ta c th to ra nhiu FOREIGN KEY trong mt table.
7/31/2019 17413 - Bai Giang Thuc Tap Chuyen Nganh SQL Server
19/46
19FOREIGN KEY c th tham chiu vo PRIMARY KEY hay ct c rng buc duy nht.
FOREIGN KEY c th cha gi tr NULL. Mc d mc ch chnh ca rng buc FOREIGN KEY
l kim sot d liu cha trong bng c FOREIGN KEY (tc table con) nhng thccht n cng
kim sot lun c d liu trong bng cha PRIMARY KEY (tc table cha).
V d
nu ta xa d liu trong bng cha th d liu trong bng con tr nn "m ci" (orphan) v khng th
tham chiu ngc v bng cha. Do rng buc FOREIGN KEY s m bo iu khng xy ra.
Nu bn mun xa d liu trong bng cha th trc ht bn phi xa hay v hiuha rng buc
FOREIGN KEY trong bng con trc.
Rng buc FOREIGN KEY c nh ngha theo c php di y:
[CONSTRAINT tn_rng_buc] FOREIGN KEY [(danh_sch_ct)]
REFERENCES tn_bng_tham_chiu(danh_sch_ct_tham_chiu)
[ON DELETE CASCADE | NO ACTION | SET NULL | SET DEFAULT]
[ON UPDATE CASCADE | NO ACTION | SET NULL | SET DEFAULT]
Vic nh ngha mt rng buc FOREIGN KEY bao gm cc yu t sau:
Tn ct hoc danh sch ct ca b ng c nh ngha tham gia vo kho ngoi.
Tn ca bng c tham chiu bi kho ngoi v danh sch cc ct c tham chiu n
trong bng tham chiu.
Cch thc x l i vi cc bn ghi trong bng c nh ngha trong trng hp cc bn ghi c
tham chiu trong bng tham chiu b xo (ON DELETE) hay cp nht (ON UPDATE). SQL chun
a ra 4 cch x l.
CASCADE: T ng xo (cp nht) nu bn ghi ctham chiu b xo (cp nht).
NO ACTION: (Mc nh) Nu bn ghi trong bng tham chiu ang c thamchiu bi
mt bn ghi bt k trong bng cnh ngha th bn ghi khng c phpxo hoc
cp nht (i vi ct c tham chiu).
SET NULL: Cp nht li kho ngoi ca bn ghi thnh gi tr NULL (nu ct chophp nhn
gi tr NULL).
SET DEFAULT: Cp nht li kho ngoi ca bn ghi nhn gi tr mc nh (nu ct c qui
nh gi tr mc nh).
V d:
drop table orderdetail
create table orderdetail
(
orderid int
constraint fk_orderdetail_orders foreign k ey references orders(orderid)
on delete cascade
7/31/2019 17413 - Bai Giang Thuc Tap Chuyen Nganh SQL Server
20/46
20on update cascade,
customerid int
constraint fk_orderdetail_customer foreign key references customers(customerid)
on delete cascade
on update cascade,
itemid int
constraint fk_orderdetail_items fore ign key references items(itemid)
on delete cascade
on update cascade,
quantity decimal(18,2) not null,
)
5.4. Sa bng (ALTER TABLE)Mt bng sau khi c nh ngha bngcu lnh CREATE TABLE c th c sai thng
qua cu lnh ALTER TABLE. Cu lnh ny cho php thc hin c cc thao tc sau:
B sung mt ct vo bng.
Xo mt ct khi bng.
Thay i nh ngha ca mt ct trong bng.
Xo b hoc b sung cc rng buc cho bng
C php ca cu lnh ALTER TABLE nh sau:
ALTER TABLE tn_bng
ADD nh_ngha_ct |
ALTER COLUMN tn_ct kiu_d_liu [NULL | NOT NULL]
DROP COLUMN tn_ct |
ADD CONSTRAINT tn_rng_bu c nh_ngha_rng_buc
DROP CONSTRAINT tn_rng_buc
V d 1: Thm mt ct mi vo bng ORDERSalter table orders
add description nvarchar(100) not null
V d 2: Thay i nh ngha ct desciption
alter table orders
alter column description nvarchar(200) null
V d 3: Thm rng buc CHECK vo ct decription
alter table ordersadd constraint chk_descriptionlength CHECK (len(description) > 10)
V d 4: Xa rng buc CHECK
7/31/2019 17413 - Bai Giang Thuc Tap Chuyen Nganh SQL Server
21/46
21alter table orders
drop chk_descriptionlength
V d 5: Xa ct description
alter table orders
drop column description
V d 6: Thm mt ct mi vo bng orders v thm rng buc cho ct ny
alter table orders
add
description nvarchar(100) null,
constraint chk_descriptionlength CHECK (len(description) > 0)
Nu b sung thm mt ct vo bng v trong bng c t nhtmt bn ghi th ct micn b sung
phi cho php chp nhn gi tr NULL hoc phi c gi tr mc nh.
Mun xo mt ct ang c rng buc bi mt rng buc hoc ang c tham chiubi mt
kho ngoi, ta phi xo rng buc hoc kho ngoi trc sao cho trn ct khng cn bt k mt
rng buc v khng cn c tham chiu bi bt k kho ngoi no.
Nu b sung thm rng buc cho mt bng c d liu v rng buc cn b sung khngc tho
mn bi cc bn ghi c trong bng th cu lnh ALTER TABLE khng thc hinc.
5.5. Xa bng (DROP TABLE)
Khi mt bng khng cn cn thit, ta c th xo n ra khi c s d liu bng cu lnh DROPTABLE. Cu lnh ny cng ng thi xo tt c nhng rng buc, ch mc, trigger lin quan n
bng .
Cu lnh c c php nh sau:
DROP TABLE tn_bng
Trong cc h qun tr c s d liu, khi xo mt bng bng lnh DROP TABLE, ta khng th
khi phc li bng cng nh d liu ca n. Do , cn phi cn thn khis dng cu lnh ny.
Cu lnh DROP TABLE khng th thc hin cnu bng cn xo ang c thamchiu bi mtrng buc FOREIGN KEY. Trong trng hp ny, rng buc FOREIGNKEY ang tham chiu
hoc bng ang tham chiu n bng cn xo phi c xo trc.
Khi mt bng b xo, tt c cc rng buc, ch mc v trigger lin quan nbng cng ng thi b
xa theo. Do , nu ta to li bng th cng phi to li cc i tng ny.
V d: xa bng ORDERS trc tin ta phi xa rng buc FOREIGN KEY t bng
ORDERDETAIL
alter table orderdetail
drop constraint fk_orderdetail_orders
Sau xa bng ORDERS
7/31/2019 17413 - Bai Giang Thuc Tap Chuyen Nganh SQL Server
22/46
22drop table orders
5.6. Thm bn ghi mi (INSERT)D liu trong cc bng c th hin di dng cc dng (bn ghi). b sung thm cc dng d
liu vo mt bng, ta s dng cu lnh INSERT. Hu ht cc h qun tr CSDL da trn SQL cung
cp cc cch di y thc hin thao tc thm d liu cho bng:
Thm tng dng d liu vi mi cu lnh INSERT. y l cc s dng thng gp nht
trong giao tc SQL.
Thm nhiu dng d liu bng cch truy xut d liu t cc bng d liu khc.
Thm tng dng d liu b sung mt dng d liu mi vo bng, ta s dngcu lnh INSERT vi c php nh sau:
INSERT INTO tn_bng[(danh_sch_ct)] VALUES(danh_sch_tr)
Trong cu lnh INSERT, danh sch ct ngay sau t n bng khng cn thit phi ch nh nu gi tr
cc trng ca bn ghi mi c ch nh y trong danh sch tr. Trongtrng hp ny, th t
cc gi tr trong danh sch tr phi bng vi s l ng cc trng ca bng cn b sung d liu cng
nh phi tun theo ng th t ca cc trngnh khibng c nh ngha
V d: Thm thng tin mt khch hng mi vo bng Customer
insert into customers (customername, birthday, gender, address)
values('Nguyen Van An', '4/2/1976', 'True', '14 Thong Nhat')
hocinsert into customers
values('Nguyen Van An', '4/2/1976', 'True', '14 Thong Nhat')
Lu : Trng CUSTOMERID c thit lp identity l YES nn ta khng cn thm gi tr
trng ny m SQL s t ng to ra mt gi tr cho trng ny.
Trong trng hp ch nhp gi tr cho mt s ct trong bng, ta phi ch nh danh sch cc ct cn
nhp d liu ngay sau t n bng. Khi , cc ct khng c nhp d liu s nhn gi tr mc nh
(nu c) hoc nhn gi tr NULL (nu ct cho php chp nhn gi trNULL). Nu mt ct khng cgi tr mc nh v khng chp nhn gi tr NULL m khnguc nhp d liu, cu lnh s b li.
Thm mt tp cc dng d liu vo bngMt cch s dng khc ca cu lnh INSERT cs dng b sung nhiu dng dliu vo mt
bng, cc dng d liuny c ly t mt bng khc thng qua cu lnhSELECT. cch ny,
cc gi tr d liu c b sung vo bng khng c ch nh tngminh m thay vo l mt
cu lnh SELECT truy vn d liu t bng khc.
C php cu lnh INSERT c dng nh sau:INSERT INTO tn_bng[(danh_sch_ct)] cu_lnh_SELECT
V d:
7/31/2019 17413 - Bai Giang Thuc Tap Chuyen Nganh SQL Server
23/46
23insert into Customers_Backup
select * from Customers
Lu : Kt qu ca cu lnh SELECT phi c s ct bng vi s ct cch nh trong
bng ch v phi tng thch v kiu d liu.
5.7. Cp nht bn ghi (UPDATE)Cu lnh UPDATE trong SQL c s dng cp nht d liu trong cc bng. Cu lnh
ny c c php nh sau:
UPDATE tn_bng
SET tn_ct = biu_thc
[, ..., tn_ct_k = biu_thc_k]
[FROM danh_sch_bng]
[WHERE iu_kin]
Sau UPDATE l tn ca bng cn cp nht dliu. Mt cu lnh UPDATE c th cpnht d liu
cho nhiu ct bng cch ch nh cc danh sch t n ct v biu thc tng ng saut kho SET.
Mnh WHERE trong cu lnh UPDATE cs dng ch nh ccdng d liu chu tc
ng ca cu lnh (nu khng ch nh, ph m vi tc ng ca cu lnh c hiu l ton b cc
dng trong bng).
V d:
update customers
set customername = 'Cao Van Chung'
where customerid = 9
Trong cu lnh UPDATE c th s dng CASEWHEN.
V d:
select *
into tmp1
from customersupdate tmp1
set address = case when customerid < 2 then 'Nguyen Trung Truc'
else 'Nguyen Thi Minh Khai'
end
5.8. Xa bn ghi (DELETE) xo d liu trong mt bng, ta s dng cu lnhDELETE. C php ca cu lnh ny nh sau:
DELETE FROM tn_bng
[FROM danh_sch_bng]
[WHERE iu_kin]
7/31/2019 17413 - Bai Giang Thuc Tap Chuyen Nganh SQL Server
24/46
24Trong cu lnh ny, tn ca bng cn xo d liu c ch nh sau DELETE FROM.
Mnh WHERE trong cu lnh c s dng ch nh iu kin i vi cc dng d liu cn
xo. Nu cu lnh DELETE khng c mnh WHERE th ton b cc dng d liu trong bng
u b xo.
V d:
delete from Items
where itemid = 3
Xo d liu khi iu kin lin quan n nhiu bngNu iu kin trong cu lnh DELETE lin quan n ccbng khng phi l bng cnxa d liu,
ta phi s dng thm mnh FROM v sau l danh sch tn cc bng .Trong trng hp
ny, trong mnh WHERE ta ch nh thm iu kin ni gia cc bng.
V d:
delete
from orderdetail
from items
where items.itemid = orderdetail.itemid
and items.itemname = 'LAPTOP'
S dng truy vn con trong cu lnh DELETEMt cu lnh SELECT c th c lng vo trong mnh WHERE trong cu lnhDELETE
lm iu kin cho cu lnh tng t nh cu lnh UPDATE.
V d:
delete
from orderdetail
from items
where items.itemid = (select i.itemid
from items i inner join orderdetail od
on i.itemid = od.itemid
WHERE itemname = 'LAPTOP')
Bi tp:
Thc hin cc thao tc to, sa, xo cc bng trong c s d liu sau Sach (MaSH, TenSH, TacGia, NXB, NamXB)
DocGia (MaDG, TenDG, CMND, NgaySinh, DiaChi)
PhieuMuon (MaPM, MaDG, NgayMuon)
ChiTietPM (MaCTPN, MaPM, MaSH, NgayTra)
7/31/2019 17413 - Bai Giang Thuc Tap Chuyen Nganh SQL Server
25/46
25
Chng 6: Truy vn d liu
6.1. Truy vn c bnCu lnh SELECT c s dng truy xut d liu t cc d ng v cc ct ca mt haynhiu
bng, khung nhn. Cu lnh ny c th dng thc hin php chn (tc l truy xut mttp con
cc dng trong mt hay nhiu bng), php chiu (tc l truy xut mt tp con cc cttrong mt hay
nhiu bng) v php ni (tc l lin kt cc dng trong hai hay nhiu bng truy xut d liu).
Ngoi ra, cu lnh ny cn cung cp kh nng thc hin cc thao tc truyvn v thng k d liu
phc tp khc.
C php chung ca cu lnh SELECT c dng:
SELECT [ALL | DISTINCT][TOP n] danh_sch_ch n
[INTO tn_bng_mi]
FROM danh_sch_bng/khung_nhn
[WHERE iu_kin]
[GROUP BY danh_sch_ct]
[HAVING iu_kin]
[ORDER BY ct_sp_xp]
[COMPUTE danh_sch_hm_gp [BY danh_sch_ct]]
iu cn lu. u tin i vi cu lnh ny l cc thnh phn trong cu lnh SELECTnu c s
dng phi tun theo ng th t nh trong c php. Nu khng, cu lnh s cxem l khng hp
l.
Cu lnh SELECT c s dng tc ng l n cc bng d liu v kt qu ca cu lnhcng
c hin th di dng bng,tc l mt tp hp cc dng v cc ct (ngoi tr trnghp s dng
cu lnh SELECT vi mnh COMPUTE).
V d:
7/31/2019 17413 - Bai Giang Thuc Tap Chuyen Nganh SQL Server
26/46
26
V d di y hin th tn khch hng v a ch cc khch hng hin c.
select customername, gender, address
from customers
Danh sch chn trong cu lnh SELECT
Danh sch chn trong cu lnh SELECT c s dng ch nh cc trng, cc biu thc cn
hin th trong cc ct ca kt qu truy vn. Cc trng, cc biu thc c ch nh ngay sau t
kho SELECT v phn cch nhau bi du phy. S dng danh sch chn trong cu lnh SELECTbao gm cc t rng hp sau:
Chn tt c cc ct: Nh ni trong chng 1, chng ta dng du * trong cu lnh Select hm
chn ht tt c cc ct. Trong trng hp ny, cc ct c hin th trong kt qu truy vn s tun
theo th t m chng c to ra khi bng c nh ngha.
Chn mt s ct c th: Trong trng hp cn ch nh c th cc ct cn hin th trong kt qu
truy vn, ta ch nh danh sch cc t n ct trong danh sch chn. Th t ca cc ct trong kt qu
truy vn tun theo th t ca cc trng trong danh sch chn.Mnh FROM
7/31/2019 17413 - Bai Giang Thuc Tap Chuyen Nganh SQL Server
27/46
27Mnh FROM trong cu lnh SELECT c s dung nhm ch nh cc bng v khung nhn
cn truy xut d liu. Sau FROM l danh sch tn ca cc bng v khung nhn tham gia vo truy
vn, tn ca cc bng v khung nhn c phn cch nhau bi du phy.
Mnh WHERE - iu kin truy vn d liu
Mnh WHERE trong cu lnh SELECT c s dng nhm xc nh cc iukin i vi vic
truy xut d liu. Sau mnh WHERE l mt biu thc logic v ch nhng dng d liu no tho
mn iu kin c ch nh mi c hin th trong kt qu truy vn.
Trong mnh WHERE thng s dng:
Cc ton t kt hp iu kin (AND, OR)
Cc ton t so snh
Kim tra gii hn ca d liu (BETWEEN/ NOT BETWEEN)
Tp hp
Kim tra khun dng d liu.
Cc gi tr NULL
6.2. Truy vn t nhiu bngPhp ni bng: Mt php ni bng (equi-join) l mt php ni trong gi tr ca cc ctc s
dng ni c so snh vi nhau da trn tiu chun bng v tt c cc ct trong ccbng tham
gia ni u c a ra trong kt qu.
Mt dng c bit ca php ni bng c s dng nhiu l php ni t nhin (natural Join). Trong
php ni t nhin, iukin ni gia hai bng chnh l iu kin bnggia kho ngoi v kho
chnh ca hai bng; V trong danh sch chn ca cu lnh ch gi li mt cttrong hai ct tham gia
vo iu kin ca php ni.
V d php kt ni bng:
select *
from Customers c, Orders o
where c.customerid = o.customerid
V d php kt ni t nhin:
select c.CUSTOMERID, c.CUSTOMERNAME,
c.BIRTHDAY, c.GENDER, c.ADDRESS, o.ORDERDATE
from Customers c, Orders o
where c.customerid = o.customeridhoc vit gn:
select c.*, o.ORDERDATE
7/31/2019 17413 - Bai Giang Thuc Tap Chuyen Nganh SQL Server
28/46
28from Customers c, Orders o
where c.customerid = o.customerid
Trong php kt ni bng, trng CUSTOMERID xut hin hai ln. S d tha c loi b bngcch s dng php kt ni t nhin v vic ch nh r cc ct ct cn truy xut.
Trong cc cu lnh ni, ngoi iu kin ca php ni c ch nh trong mnh WHERE cn c
th ch nh cc iu kin tm kim d liu khc (iu kin chn). Thngthng, cc iu kin ny
c kt hp vi iu kin ni thng qua ton t AND.
V d:
select c.*, o.ORDERDATE
from Customers c, Orders o
where c.customerid = o.customerid
and c.customerid = 3
Php t niPhp t ni l php ni m trong iu kin ni c ch nh lin quan n cc ct cacng mt
bng. Trong trng hp ny, s c s xut hin tn ca cng mt bng nhiu ln trong mnh
FROM v do cc bng cn phi c t b danh.
V d: Gi s c yu cu tm ra cc khch hng c nhi u hn mt n t hng trong cng ngyselect c1.CUSTOMERID, c1.CUSTOMERNAME
from customers c1, customers c2, orders o1, orders o2
where c1.customerid = o1.customerid
and c2.customerid = o2.customerid
and c1.customerid = c2.customerid
and o1.orderdate = o2.orderdate
and o1.orderid o2.orderid
Cu truy vn c gii thch nh sau: Ln lt ly ra cc m khch hng, m ha n vngy t
hng t bng c1, o1 em so snh ln lt vi cc m khch hng, m ha n v ngy t hng t
bng c2, o2. Nu vic so snh hai tp hp n y tha iu kin sau y: m khch hng trng nhau,
ngy t hng trng nhau v c m ha n khc nhau th thng tin khchhng ny c cho vo
kt qua truy vn.
Php ni ngoiTrong cc php ni cp trn, ch nhng dng c gi tr trong cc ct c chnh tho mn
iu kin kt ni mi c hin th trong kt qu truy vn, v c gi l phpni trong (inner
join) Theo mt ngha no , nhng php ni ny loi b thng tin cha trongnhng dng khng
tho mn iu kin ni. Tuy nhin, i khi ta cng cn gi li nhng thng tin ny bng cch cho
7/31/2019 17413 - Bai Giang Thuc Tap Chuyen Nganh SQL Server
29/46
29php nhng dng khng tho mn iu kin ni c mt trong kt qu caphp ni. lm iu
ny, ta c th s dng php ni ngoi.
SQL cung cp cc loi php ni ngoi sau y:
Php ni ngoi tri (k hiu: *=): Php ni ny hin th trong kt qu truy vn tt c cc
dng d liu ca bng nm bn tri trong iu kin ni cho d nhng dng ny khng tho
mn iu kin ca php ni
Php ni ngoi phi (k. hiu: =*): Php ni n y hin th trong kt qu truy vn tt c cc
dng d liu ca bng nm bn phi trong iu kin ni cho d nhng dng ny khng tho
iu kin ca php ni.
6.3. Truy vn lng nhau (Subqueries)Truy vn con l mt cu lnh SELECT c lng vo bn trong mt cu lnh SELECT, INSERT,
UPDATE, DELETE ho c bn trong mt truy vn con khc. Loi truyvn ny c s dng
biu din cho nhng truy vn trong iu kin truy vn d liu cnphi s dng n kt qu ca
mt truy vn khc.
C php ca truy vn con nh sau:
(SELECT [ALL | DISTINCT] danh_sch_chn
FROM danh_sch_bng
[WHERE iu_kin]
[GROUP BY danh_sch_ct][HAVING iu_kin])
Khi s dng truy vn con cn lu mt s quy tc sau:
Mt truy vn con phi c vit trong cp du ngoc. Trong hu ht cc trng hp, mt truy vn
con thng phi c kt qu l mt ct (tc l ch c duy nht mt ct trongdanh sch chn).
Mnh COMPUTE v ORDER BY khng c php s dng trong truy vn con.
Cc tn ct xut hin trong truy vn con c th l cc ct ca cc bng trong truy vn ngoi.
Mt truy vn con thng c s dng lm iu kin trong mnh WHERE hoc HAVING camt truy vn khc.
Nu truy vn con tr v ng mt gi tr, n c th s dng nh l mt thnh phn bntrong mt
biu thc (chng hn xut hin trong mt php so snh bng).
Php so snh i vi vi kt qu truy vn conKt qu ca truy vn con c th c s dng thc hin php so snh s hc vi mt biu thc
ca truy vn cha. Trong trnghp ny, truy vn con c s dng di dng:
WHERE biu_thc php_ton_s_hc [ANY|ALL] (truy_vn_con)Trong php ton s hc c th s dng bao gm: =, , >, =,
7/31/2019 17413 - Bai Giang Thuc Tap Chuyen Nganh SQL Server
30/46
30V d: Cu truy vn sau y tm tn khch hng c tui ln nht
select c.CUSTOMERNAME, c.ADDRESS
from customers c
where year(getdate()) - year(BIRTHDAY) =
(select max(year(getdate()) - year(BIRTHDAY))
from customers)
Nu truy vn con tr v nhiuhn mt gi tr, vic s dng php so snh nh trn skhng hp l.
Trong trng hp ny, sau php ton so snh phi s dng thm lng t ALL hoc ANY. Lng
t ALL c s dng khi cn so snh gi tr ca biu thc vi tt c cc gi tr tr v trong kt qu
ca truy vn con; ngclai, php so snh vi lng t ANY c kt qung khi ch cn mt gi tr
bt k no trong kt qu ca truy vn con tho mn iu kin
Ton t IN/NOT INKhi cn thc hin php kim tra gi tr ca mt biu thc c xut hin (khng xut hin) trong tp
cc gi tr ca truy vn con hay khng, ta c ths dng ton t IN (NOT IN) nh sau:
WHERE biu_thc [NOT] IN (truy_vn_con)
Truy vn con vi EXISTSLng t EXISTS c s dng kt hp vi truy vn con di dng:
WHERE [NOT] EXISTS (truy_v n_con)
Lng t EXISTS (tng ng NOT EXISTS) tr v gi tr True (t ng ng False) nu kt qu ca
truy vn con c t nht mt d ng (tng ng khng c dng no). iu khc bitca vic s dng
EXISTS vi hai cch nu trn l trong danh sch chn ca truy vn con c th c nhiu hn
hai ct.
Truy vn con v mnh HAVINGMt truy vn con c th c s dng trong mnh HAVING ca mt truy vn khc. Trong
trng hp ny, kt qu ca truy vn con c s dng to nn iu kin i vi cchm gp.
Bi tp:
1. Cho cc lc quan h sau:Sach (MaSH, TenSH, TacGia, NXB, NamXB)
DocGia (MaDG, TenDG, CMND, NgaySinh, DiaChi)
PhieuMuon (MaPM, MaDG, NgayMuon)
ChiTietPM (MaCTPN, MaPM, MaSH, NgayTra)
a) Vit cu lnh SQL thc hin truy vn sau: Lp danh sch chi tit phiu mn gm MaSH,
TenSH, NgayTra ca tt c cc quyn sch trong phiu mn c MaPM l PM0001.
b) Vit cu lnh SQL thc hin truy vn sau: Lp danh sch gm MaDG, TenDG ca cc c gimn sch trong ny 24/2/2009.
7/31/2019 17413 - Bai Giang Thuc Tap Chuyen Nganh SQL Server
31/46
31
Chng 7: Sao lu v phc hi CSDL
Trong qu trnh thc hin qun tr CSDL SQL Server th mt s nguyn nhn sau y bt buc bn
phi xem xt n k thut sao luv khi phc d liu:
Thit b lu tr (CSDL nm trn cc thit b lu tr ny) b h hng.
Ngi dng v tnh xa d liu.
Cc hnh ng v tnh hay c ph hoi CSDL.
7.1. Sao lu CSDL
Microsoft SQL Server 2005 cung cp hai k thut sao lu CSDL chnh: full backup v differential
backup.
Full backup v Differential backup
Full backup: sao lu mt bn y ca CSDL tr n cc phng tin lu tr. Qu trnh full
backup c th tin hnh m khng cn offline CSDL, nhng qu trnh ny li chim mt
lng ln ti nguyn h thng v c th nh hng nghim trng ti thi gian p ng cc
yu cu ca h thng.
Differential backup: c xy dng nhm lm gim thi gian cn thit thc hin qu
trnh full backup. Differential backup ch sao lu nhng thay i trn d liu k t ln full
backup gn nht. Trong nhng h thng CSDL ln, qu tr nh differential backup s s dng
ti nguyn t hn rt nhiu so vi qu trnh full backup v c th khng nh hng n hiu
sutca h thng.Qu trnh differential ch sao lu nhng s thay i ca d liu t ln full
backup gnnht, do khi c s c vi CSDL nu khng c bn sao luca qu trnh full
backup th bnsao lu ca qu trnh differential backup s tr nn v ngha.
V d:
Cng ty XYZ thc hin full backup vo cui ngy th 6 hng tun v thc hin differential backup
vo t i cc ngy t th 2ti th 5. Nu CSDL c s c vo sng th 4,qun tr vin CSDL s phc
hi d liu bng bn sao lu ca qu trnh full backup ca ngyth 6 tun trc v sau phc hi
cc thay i ca d liu bng cch p dng bn sao luca qu trnh differential backup vo ngy
th 3.
Transaction log backup
Qu trnh full backup v differential backup chim nhiu ti nguyn h thng v nhhng n
hiu sut lm vic h thng nn thng c thc hin vo sau gi lm vic. Tuynhin iu ny c
th dn n cc mtmt d liu trong mt ng y lm vic nu CSDL c s c trc khi qu trnh
sao lu din ra. Transaction log backup l mt gii php nhm gim thiu ti a lng d liu c
th mt khi c s c CSDL.
7/31/2019 17413 - Bai Giang Thuc Tap Chuyen Nganh SQL Server
32/46
32Trong qu trnh hot ng, SQL Server s dng transaction log theo di tt c cc thayi
trn CSDL.Logbo m CSDL c th phc hi sau nhng s c t xut v cng m bongi
dng c th quay ngc cc kt qu trong cc giao tc CSDL. Cc giao tc cha hon thnh c
lu trong log trc khi c lu vnh vin trong CSDL.
Transaction log backup sao lu transactio n log ca CSDL vo thit b lu tr. Mi khi transaction
log c sao lu, SQL Server b i cc transaction thc hin thnh cng (committed tracsaction)
v ghi cc transaction vo phng ti n sao lu. Transaction log backup s dng ti nguyn h
thng t hn rt nhiu so vi full backup v differential backup, do cth s dng transaction log
backup bt k thi gian no m khng s nh hng n hiu suth thng.
Tr li vi v d v cng ty XYZ. Cng ty ny thc hin full backup vo ti th 6 v differential
backup vo ti t th 2 ti th 5. Cng ty thc hin thm qu trnh transaction logbackup mi gi
mt ln. Gi s s c CSDL xy ra vo 9h:05 sng th 4. Qu trnh khi phcli CSDL nhu sau:
Dng full backup v differential backup c a ti th 6 v ti th 3 phchi li trng thi CSDL
vo ti th 3. Tuy nhin qu trnh ny vn cn mt d liu trong 2 gi (7 9h) sng th 4. Tip
theo s dng 2 bn sao lu transaction backup lc 8h v 9h sng khi phc CSDL v trng thi
lc 9h sng th 4.
Cc thao tc thc hin qu trnh Backup
7/31/2019 17413 - Bai Giang Thuc Tap Chuyen Nganh SQL Server
33/46
33
Click OK
7/31/2019 17413 - Bai Giang Thuc Tap Chuyen Nganh SQL Server
34/46
34
Click OK. Qu trnh sao lu hon tt
7.2. Phc hi CSDL
7/31/2019 17413 - Bai Giang Thuc Tap Chuyen Nganh SQL Server
35/46
35
7/31/2019 17413 - Bai Giang Thuc Tap Chuyen Nganh SQL Server
36/46
36
Click OK hai ln
7/31/2019 17413 - Bai Giang Thuc Tap Chuyen Nganh SQL Server
37/46
37
Click OK. Qu trnh phc hi hon tt
Bi tp:
Thc hin sao lu v phc hi cc c s d liu to chng trc.
7/31/2019 17413 - Bai Giang Thuc Tap Chuyen Nganh SQL Server
38/46
38
Chng 8: Lp trnh vi ADO.NET
8.1. Gii thiu v nn tng .NET L mt cng ngh ca MicroSoftPht trin trn nn tng ADO.
Cung cp cc lp i tng v hmg th vin phc vcho vic kt ni v x l d liu.
M hnh .NET Framework
ADO.NET l mt phn ca .NET Framework, n c xem l b th vin lp chu trch nhim
x l d liu trong ngn ng MS.NET. ADO.NET c thit k vi dng d liu ngt kt ni,
ngha l chng ta c th ly c mt cu trc phc tp ca d liu t database, sau ngt kt ni vi
database ri mi thc hin cc thao tc cn thit. y l mt s tin b v mt thit k bi v thit
k ADO trc y lun cn duy tr mt kt ni trong qu trnh thao tc d liu.
8.2. ADO.NET 2.0 v SQL Server.NET Data Providers
.NET Data Providers l mt tp cc i tng phc v cho vic trao i d liu gia Data Source
(d liu ngun) v i tng DataSet. N chia ra gm 2 loi tp i tng : 1 tp cc i tng
chu trch nhim qun l cc kt ni (connections) ti DataSource (d liu ngun) v 1 tp cc i
tng cn li chu trch nhim x l d liu.
ADO.NET cung cp 2 loi .NET Data Providers l SQL Server .NET Data Provider v OLE DB
.NET Data Provider.
SQL Server .NET Data Provider s dng truy xut Database SQL Server 7.0 tr v sau. Cn OLEDB .NET Data Provider s dng cho phin bn 6.5 tr v trc v cc loi Database khc (Access,
7/31/2019 17413 - Bai Giang Thuc Tap Chuyen Nganh SQL Server
39/46
39Oracle). SQL Server .NET Data Provider hot ng hiu qu hnbi v n thao tc trc tip
vi SQL Server m khng cn phi thng qua OLE DB Provider.
s dng 2 loi .NET Data Provider ny ta phi import 2 Namespace : System.Data.SqlClient cho
SQL Server .NET Data Provider v System.Data.OleDb cho OLE DB Data Provider.
8.3. Kt ni n SQL Serveri tng Connectioni tng Connection l i tng chu trch nhim qun l kt ni ti ngun d liu
(DataSource). C 2 dng Connection tng ng vi 2 kiu d liu SQL Server v OLE DB l:
SqlConnection v OleDbConnection. C 2 i tng ny u implement t interface
IDbConnection. Bng cch s dng Interface IDbConnection, cc nh cung cp dch v Database
khc nhau c th to ra cc ci t ph hp cho Database ring ca h.
i tng Connection ca ADO.NETch nhn mt tham s u vo l chui kt ni (connectionstring). Trong chui kt ni, cc thng s c cch nhau bng du ;, connection string c cc
thng s sau:
Provider: Tn nh cung cp Database, i vi OLEDB cn khai bo l SQLOLEDB. i
vi SQL Server th khng thuc tnh ny.
DataSource (hoc Server): tn/a ch database server cn kt ni ti.
Initial catalog (hoc Database): tn ca Database cn truy xut.
Uid: username ng nhp vo Database Server. Pwd:password ng nhp vo Database Server.
Cn y l vd v 1 chui kt ni i vi Database dng SQL Server:
Server=CSC;database=Northwind;uid=sa;pwd=sa;
Sau y l cc thuc tnh, phng thc, s kin thng dng ca c SqlConnection v
OleDbConnection:
Thuc tnh
ConnectionString: thuc tnh thit lp / ly chui kt ni. ConnectionTimeout: thuc tnh thit lp / ly thi gian ch trong khi truy xut vo database.
Khi truy xut vo Database, chng trnh s ch ng khong thi gian ny nu ch qua
khong thi gian ny m vn khng kt ni c vo database th chng trnh s bo li.
Database: thuc tnh thit lp/ ly tn database ca i tng connection hin thi.
DataSource: thuc tnh thit lp/ly tn ca database server ca i tng connection hin
thi.
State: Ly trng thihin thi ca Connection c cc trng thi sau: Connecting, Broken,Open, Closed, Executing, Fetching.
Phng thc
7/31/2019 17413 - Bai Giang Thuc Tap Chuyen Nganh SQL Server
40/46
40 BeginTransaction: s dng cho trng hp x l giao tc ca ng dng. Vic x l giao
tc rt c li trong khi x l d liu t database v c lc trong khi x l d liu gp li th
c th thc hin cu lnh nh Rollback hay trong lc thao tc cng c th thc hin c
cc giao tc chnh nh trn SQL Server nh Commit
Close: ng 1 connection. Open: M 1 connection vi cc thuc tnh hin hnh.
S kin
InfoMessage: Xy ra khi provider gi ra 1 li cnh co hay thng tin.
StateChange: Xy ra khi trng thi ca connection thay i.
Sau y l on source code s dng i tng Connection kt ni vo c s d liu:
* Dim connString As String = "server=CSC;database=Northwind;uid=sa;pwd=sa"
Dim conn As SqlConnection = New SqlConnection(connString)'mo ket noi
conn.Open()
'Thuc hien cac thao tac du lieu
'dong ket noi
conn.Close()
8.4. Thc thi cc cu lnh SQLi tng CommandSau khi chng ta kt ni vo ngun d liu, chng ta cn phi thc hin thao tc cc d liu.
thao tc c vi cc d liu chng ta phi dng i tng Command. i tng Command l i
tng rt a nng, n va x l csqlserver stored procedures va x l c cc giao tc
(transaction).
Tng t nh i tng Connection, i tng Command cng chia ra lm 2 loi tu theo ngun
d liu: SqlCommand (cho SQL Server) v OleDbCommand (cho OLE DB).
Mt s thuc tnh v phng thc thng dng ca i tng Command:Thuc tnh:
CommandText: Thit lp/ Ly lnh thao tc vi d liu.
CommandTimeout: Thit lp/ Ly thi gian ch thc hin lnh. Sau khi ch 1 khong thi
gian nu vt qu s bo li.
CommandType: Thit lp/ Ly kiu ca i tng lnh (lnh trc tip, stored procedure)
Parameters: Cc tham s truyn vo cho i tng command ( kiu
OleDbParameterCollection/ SQLParameterCollection). Connection: Thit lp / ly kt ni ang c i tng Command s dng.
Transaction: Thit lp / ly giao tc m i tng Command thc thi.
7/31/2019 17413 - Bai Giang Thuc Tap Chuyen Nganh SQL Server
41/46
41Phng thc:
ExecuteReader: Thc thi cu lnh CommandText ca i tng Command v tr v kiu
DataReader (OleDbDataReader / SqlDataReader ).
ExecuteNonQuery: Thc thi cu lnh CommandText ca itng Command, y l dng
cu lnh cp nht c s d liu (xo /sa) nn ch tr v s dng b nh hng m khng trv dng d liu no.
ExecuteScalar: Thc thi cu truy vn ca i tng Command v ch tr v ct u tin ca
dng u tin ca kt qu. Cc kt qu cn li b b qua.
- Cc hm khi to ca i tng SqlCommand (Tng t cho i tng OleDbCommand):
New(): khng c tham s no.
New(cmdText as String) ,trong :
o cmdText l cu lnh truyn vo cho i tng Command.
New(cmdText as String, connectin as SqlConnection), trong :
o cmdText nh trn.
o connection l i tng kt ni truyn vo cho i tng Command.
New(cmdText as String, connection as SqlConnection, transaction as SqlTransaction), trong
:
o cmdText,connnection nh trn.
o Transaction: l giao tc truyn cho i tng Command.
Cc v d:
- S dng cu lnh ExecuteNonQuery update d liu:
* Dim connStr As String = "server=CSC;database=Northwind;uid=sa;pwd=sa"
Dim cmdStr As String = "Update Customers set CompanyName='CSC' where
CustomerID='Seves'"
Dim conn As New SqlConnection(connStr)
conn.Open()
Dim cmd As SqlCommand = New SqlCommand(cmdStr, conn)
cmd.ExecuteNonQuery()
conn.Close()
- S dng cu lnh ExecuteReader ly d liu:
* Dim conn As New SqlConnection("server=CSC; database=Northwind;uid=sa; pwd=sa")
Dim cmd As New SqlCommand("Select * From Customers", conn)
conn.Open()
Dim rdr As SqlDataReader = cmd.ExecuteReader()
While rdr.Read()
Response.Write(rdr.GetString(0) + "")
7/31/2019 17413 - Bai Giang Thuc Tap Chuyen Nganh SQL Server
42/46
42End While
rdr.Close()
- S dng cu lnh ExecuteScalar ly d liu:
* Dim conn As New SqlConnection("server=CSC; database=Northwind2;uid=sa; pwd=sa")
conn.Open()
Dim cmdStr As String = "Select * From Customers"
Dim cmd As SqlCommand = New SqlCommand(cmdStr, conn)
Response.Write(cmd.ExecuteScalar())
conn.Close()
Bi tp:
1. Trnh by cc phng thc v thuc tnh ca i tng Connection?
2. Trnh by cc phng thc v thuc tnh ca i tng Command?
7/31/2019 17413 - Bai Giang Thuc Tap Chuyen Nganh SQL Server
43/46
43
TI LIU THAM KHO
[1] Gio trnh h qun tr c s d liu SQL Server, Khoa CNTT, i hc Hu.[2] Gio trnh MSSQL 2005,http://www.bloghoctap.net/post/giao-trinh-mssql-2005.php
http://www.bloghoctap.net/post/giao-trinh-mssql-2005.phphttp://www.bloghoctap.net/post/giao-trinh-mssql-2005.phphttp://www.bloghoctap.net/post/giao-trinh-mssql-2005.phphttp://www.bloghoctap.net/post/giao-trinh-mssql-2005.php7/31/2019 17413 - Bai Giang Thuc Tap Chuyen Nganh SQL Server
44/46
44
MT S THI MU
http://www.bloghoctap.net/post/giao-trinh-mssql-2005.phphttp://www.bloghoctap.net/post/giao-trinh-mssql-2005.php7/31/2019 17413 - Bai Giang Thuc Tap Chuyen Nganh SQL Server
45/46
7/31/2019 17413 - Bai Giang Thuc Tap Chuyen Nganh SQL Server
46/46
46Trng i Hc Hng Hi Vit Nam
Khoa Cng ngh Thng tinB MN H THNG THNG TIN
-----***-----
THI KT THC HC PHN
Tn hc phn:THC TP CHUYN NGNH (SQL SERVER)Nm hc: x
thi s: K duyt :
x
Thi gian: 60 pht
Cu 1: (5 im)
Cho lc quan h sau:
Suppliers(sid: integer, sname: string, address: string)
Parts(pid: integer, pname: string, color: string)
Catalog(sid: integer, pid: integer, cost: real)
(Suppliers: thng tin v cc nh cung cp; Parts: thng tin v cc loi hng ha;Catalog: thng tin v gi bn cc loi hng ha ca cc nh cung cp).
c. To mt c s d liu c cc bng tng ng vi lc quan h trn.
d. Thc hin truy vn sau bng SQL: Hin th danh schtn ca nhng nh cungcp c tt c cc loi sn phm.
Cu 2: (5 im)Xy dng mt ng dng vi c s d liu cu 1 cho php ngi s dng
cp nht, sa, xo thng tin v cc nh cung cp, cc loi hng ho v thng tin vgi bn cc loi hng ho ca cc nh cung cp.
----------------------------------------***HT***----------------------------------------
Lu : -Khng sa, xa thi, np li sau khi thi
http://www.bloghoctap.net/post/giao-trinh-mssql-2005.phphttp://www.bloghoctap.net/post/giao-trinh-mssql-2005.phphttp://www.bloghoctap.net/post/giao-trinh-mssql-2005.phphttp://www.bloghoctap.net/post/giao-trinh-mssql-2005.phphttp://www.bloghoctap.net/post/giao-trinh-mssql-2005.phphttp://www.bloghoctap.net/post/giao-trinh-mssql-2005.phphttp://www.bloghoctap.net/post/giao-trinh-mssql-2005.phphttp://www.bloghoctap.net/post/giao-trinh-mssql-2005.phphttp://www.bloghoctap.net/post/giao-trinh-mssql-2005.phphttp://www.bloghoctap.net/post/giao-trinh-mssql-2005.phphttp://www.bloghoctap.net/post/giao-trinh-mssql-2005.phphttp://www.bloghoctap.net/post/giao-trinh-mssql-2005.phphttp://www.bloghoctap.net/post/giao-trinh-mssql-2005.phphttp://www.bloghoctap.net/post/giao-trinh-mssql-2005.phphttp://www.bloghoctap.net/post/giao-trinh-mssql-2005.phphttp://www.bloghoctap.net/post/giao-trinh-mssql-2005.phphttp://www.bloghoctap.net/post/giao-trinh-mssql-2005.phphttp://www.bloghoctap.net/post/giao-trinh-mssql-2005.phphttp://www.bloghoctap.net/post/giao-trinh-mssql-2005.phphttp://www.bloghoctap.net/post/giao-trinh-mssql-2005.phphttp://www.bloghoctap.net/post/giao-trinh-mssql-2005.phphttp://www.bloghoctap.net/post/giao-trinh-mssql-2005.phphttp://www.bloghoctap.net/post/giao-trinh-mssql-2005.phphttp://www.bloghoctap.net/post/giao-trinh-mssql-2005.phphttp://www.bloghoctap.net/post/giao-trinh-mssql-2005.phphttp://www.bloghoctap.net/post/giao-trinh-mssql-2005.phphttp://www.bloghoctap.net/post/giao-trinh-mssql-2005.phphttp://www.bloghoctap.net/post/giao-trinh-mssql-2005.phphttp://www.bloghoctap.net/post/giao-trinh-mssql-2005.phphttp://www.bloghoctap.net/post/giao-trinh-mssql-2005.phphttp://www.bloghoctap.net/post/giao-trinh-mssql-2005.phphttp://www.bloghoctap.net/post/giao-trinh-mssql-2005.phphttp://www.bloghoctap.net/post/giao-trinh-mssql-2005.phphttp://www.bloghoctap.net/post/giao-trinh-mssql-2005.phphttp://www.bloghoctap.net/post/giao-trinh-mssql-2005.phphttp://www.bloghoctap.net/post/giao-trinh-mssql-2005.phphttp://www.bloghoctap.net/post/giao-trinh-mssql-2005.phphttp://www.bloghoctap.net/post/giao-trinh-mssql-2005.phphttp://www.bloghoctap.net/post/giao-trinh-mssql-2005.phphttp://www.bloghoctap.net/post/giao-trinh-mssql-2005.phphttp://www.bloghoctap.net/post/giao-trinh-mssql-2005.phphttp://www.bloghoctap.net/post/giao-trinh-mssql-2005.phphttp://www.bloghoctap.net/post/giao-trinh-mssql-2005.phphttp://www.bloghoctap.net/post/giao-trinh-mssql-2005.phphttp://www.bloghoctap.net/post/giao-trinh-mssql-2005.phphttp://www.bloghoctap.net/post/giao-trinh-mssql-2005.phphttp://www.bloghoctap.net/post/giao-trinh-mssql-2005.phphttp://www.bloghoctap.net/post/giao-trinh-mssql-2005.phphttp://www.bloghoctap.net/post/giao-trinh-mssql-2005.phphttp://www.bloghoctap.net/post/giao-trinh-mssql-2005.phphttp://www.bloghoctap.net/post/giao-trinh-mssql-2005.phphttp://www.bloghoctap.net/post/giao-trinh-mssql-2005.phphttp://www.bloghoctap.net/post/giao-trinh-mssql-2005.phphttp://www.bloghoctap.net/post/giao-trinh-mssql-2005.phphttp://www.bloghoctap.net/post/giao-trinh-mssql-2005.phphttp://www.bloghoctap.net/post/giao-trinh-mssql-2005.phphttp://www.bloghoctap.net/post/giao-trinh-mssql-2005.phphttp://www.bloghoctap.net/post/giao-trinh-mssql-2005.phphttp://www.bloghoctap.net/post/giao-trinh-mssql-2005.phphttp://www.bloghoctap.net/post/giao-trinh-mssql-2005.php