You are on page 1of 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 : 17413 TRNH O TO : I HC CHNH QUY DNG CHO SV NGNH : CNG NGH THNG TIN

HI PHNG - 2011

MC LC
Ni dung Chng 1: Gii thiu Microsoft SQL Server (2005) 1.1. Cc thnh phn v chc nng ca SQL Server 1.2. Gii thiu b cng c qun l SQL Server (2005) (SQL Server Management StudioSSMS) Chng 2: Ci t Microsoft SQL Server (2005) 2.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 3.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 4.1. To c s d liu (Database) 4.2. Xa c s d liu Chng 5: To v qun l cc bng 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 6.1. Truy vn c bn 6.2. Truy vn t nhiu bng 6.3. Truy vn lng nhau (Subqueries) Chng 7: Sao lu v phc hi CSDL 7.1. Sao lu CSDL 7.2. Phc hi CSDL Chng 8: Lp trnh vi ADO.NET 8.1. Gii thiu v nn tng .NET 8.2. ADO.NET 2.0 v SQL Server 8.3. Kt ni n SQL Server 8.4. Thc thi cc cu lnh SQL MT S THI MU Trang 5 5 5 7 7 8 9 9 9 10 11 12 12 13 14 14 15 17 20 21 22 23 23 25 25 27 29 31 31 34 38 38 38 39 40 44

3
Tn hc phn: Thc tp chuyn ngnh 2- SQL Server Loi hc phn: 2 B mn ph trch ging dy: H thng Thng tin Khoa ph trch: CNTT. M hc phn: 17413 Tng s TC: 3 Tng 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) trong Microsoft 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 v qun 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: PHN PHI S TIT TN CHNG MC TS LT TH BT KT Chng 1: Gii thiu Microsoft SQL Server (2005) 2 1 1 1.1. Cc thnh phn v chc nng ca SQL Server 1.2. Gii thiu b cng c qun l SQL Server (2005) (SQL Server Management Studio- SSMS) Chng 2: Ci t Microsoft SQL Server (2005) 3 1 2 2.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 3 3.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 3 4.1. To c s d liu (Database) 4.2. Xa c s d liu Chng 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 6 6.1. Truy vn c bn 6.2. Truy vn t nhiu bng 6.3. Truy vn lng nhau (Subqueries) Chng 7: Sao lu v phc hi CSDL 5 2 3 7.1. Sao lu CSDL

4
TN CHNG MC 7.2. Phc hi CSDL Chng 8: Lp trnh vi ADO.NET 8.1. Gii thiu v nn tng .NET 8.2. ADO.NET 2.0 v SQL Server 8.3. Kt ni n SQL Server 8.4. Thc thi cc cu lnh SQL 8.5. Xy dng cc ng dng SQL Server PHN PHI S TIT TS LT TH BT KT 30 12 18

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 2005 Unleashed, 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 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,3X + 0,7Y. 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. Ngy ph duyt: Trng B mn / /

Chng 1: Gii thiu Microsoft SQL Server (2005)


1.1. Cc thnh phn v chc nng ca SQL Server
SQL 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 v cc b phn khc nhau trong RDBMS. SQL Server 2005 c ti u 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) (SQL Server Management Studio- SSMS)
ng nhp

: Qun l c s d liu:

Bi tp: 1. Cc phng php ng nhp SQL Server 2. Cc thnh phn trong ca s qun l SQL Server

Chng 2: Ci t Microsoft SQL Server (2005)


2.1. Cc yu cu ci t (Installation requirements)

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.0 phi 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 s dng trong cc ng dng thng mi v d dng cp nht ln cc phin bn cao hn khi cn thit. 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 dng ny thng c s dng khi ng dng khai thc d liu v SQL Server c ci trn cng mt my tnh. SQL Server authentication mode: Vic kim tra ngi dng ca SQL Server 2005 s khng 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. ng nhp vo SQL Server, ngi dng ny phi c mt b username v password do SQL Server qun 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 chn Mixed 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 xy dng 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

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:

10

3.3. Qun l cc nhm quyn CSDL (Database roles)


Thit lp nhm quyn i vi c s d liu:

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

12

Chng 4: To v qun l c s d liu


4.1. To c s d liu (Database)

t tn Database trong Textbox Database Name, click OK.

13

4.2. Xa c s d liu
Click chut phi ln bng hay CSDL mun xa -> Delete - >OK. Trong trng hp xa mt CSDL, nn chn du tch vo Close existing connections. Khi SQL Server 2005 s ngt tt c cc kt ni 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

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) v mt gi tr cho 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.

15
Sau khi to xong tt c cc ct ca bng, tin hnh Save -> OK

5.2. nh ngha 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 trong c s d liu. Cu trc ca bng bao gm nhng trng (ct) no, mi mt trng c ngha nh th no trong vic biu din d liu, kiu d liu ca mi trng l g v trng c cho php nhn gi tr NULL hay khng. Nhng trng no s tham gia vo kha chnh ca bng. Bng c quan h vi nhng bng khc hay khng v nu c th quan h nh th no.

16
Trn cc trng ca bng c tn ti nhng rng buc v khun dng, iu kin hp l ca d 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, gi tr mc nh ca ct, ct c c thit lp 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 customerid c kiu d liu int, c ch nh thuc tnh identity(1,1) ngha l d liu ct ny c thm t ng bt u t 1 v mi ln c dng mi thm vo, gi tr ct ny c tng ln 1. Ct ny cng c ch nh lm kha chnh ca bng thng qua thuc tnh primary key. Thuc tnh NULL/ NOT NULL ch ra rng ct c chp nhn/ khng chp nhn gi tr NULL. Ct gender c ch nh gi tr mc nh l true ngha l nu khng ch nh gi tr cho ct 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 ct insert into customers values('Nguyen Van An', '22 Nguyen Thien Thuat', '5/5/1988', 'True')

17
Thm 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. Mi khi c s thay i d liu trn bng (INSERT, UPDATE), nhng r ng buc ny s c s dng nhm 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 <= 10), score2 tinyint not null constraint chk_score2 CHECK (score2 between 0 and 10), score3 tinyint not null constraint chk_score3 CHECK (score3 in (1,2,3,4,5,6,7,8,9,10)), ) Rng buc PRIMARY KEY Rng buc PRIMARY KEY c s dng nh ngha kho chnh ca bng. Kho chnh ca mt bng l mt hoc mt tp nhiu ct m gi tr ca chng l duy nht trong bng. Hay ni cch khc, gi tr c a kho chnh s gip cho ta xc nh c duy nht mt dng (bn ghi) trong bng d liu. Mi mt bng ch c th c duy nht mt kho chnh v bn thn kho chnh khng chp nhn gi tr NULL. Rng buc PRIMARY KEY l c s cho vic m bo tnh ton vn thc th cng nh ton vn tham chiu. khai bo mt rng buc PRIMARY KEY, ta s dng c php nh sau: [CONSTRAINT tn_rng_buc] PRIMARY KEY [(danh_sch_ct)]

18
Nu kho chnh ca bng ch bao gm ng mt ct v rng buc PRIMARY KEY c ch 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 s lng 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 kt d liu gia hai table. FOREIGN KEY ca mt bng s gi gi tr ca PRIMARY KEY ca mt bng khc v chng ta c th to ra nhiu FOREIGN KEY trong mt table.

19
FOREIGN 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 thc cht 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 hiu ha 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 c tham chiu b xo (cp nht). NO ACTION: (Mc nh) Nu bn ghi trong bng tham chiu ang c tham chiu bi mt bn ghi bt k trong bng c nh ngha th bn ghi khng c php xo 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 cho php 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

20
on 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 bng cu lnh CREATE TABLE c th c sa i 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 ORDERS alter 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 orders add constraint chk_descriptionlength CHECK (len(description) > 10) V d 4: Xa rng buc CHECK

21
alter 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 nht mt bn ghi th ct mi cn 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 chiu bi 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 khng c tho mn bi cc bn ghi c trong bng th cu lnh ALTER TABLE khng thc hin c.

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 DROP TABLE. 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 khi s dng cu lnh ny. Cu lnh DROP TABLE khng th thc hin c nu bng cn xo ang c tham chiu bi mt rng buc FOREIGN KEY. Trong trng hp ny, rng buc FOREIGN KEY 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 n bng 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

22
drop 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 dng cu 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. Trong trng 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 trng nh khi bng 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') hoc insert 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 tr NULL). Nu mt ct khng c gi tr mc nh v khng chp nhn gi tr NULL m khng uc nhp d liu, cu lnh s b li. Thm mt tp cc dng d liu vo bng Mt cch s dng khc ca cu lnh INSERT c s dng b sung nhiu dng d liu vo mt bng, cc dng d liu ny c ly t mt bng khc thng qua cu lnh SELECT. cch ny, cc gi tr d liu c b sung vo bng khng c ch nh tng minh 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:

23
insert into Customers_Backup select * from Customers Lu : Kt qu ca cu lnh SELECT phi c s ct bng vi s ct c ch 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 d liu. Mt cu lnh UPDATE c th cp nht d liu cho nhiu ct bng cch ch nh cc danh sch t n ct v biu thc tng ng sau t kho SET. Mnh WHERE trong cu lnh UPDATE c s dng ch nh cc dng 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 customers update 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 lnh DELETE. C php ca cu lnh ny nh sau: DELETE FROM tn_bng [FROM danh_sch_bng] [WHERE iu_kin]

24
Trong 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 bng Nu iu kin trong cu lnh DELETE lin quan n cc bng khng phi l bng cn xa 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 DELETE Mt cu lnh SELECT c th c lng vo trong mnh WHERE trong cu lnh DELETE 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)

25

Chng 6: Truy vn d liu


6.1. Truy vn c bn
Cu lnh SELECT c s dng truy xut d liu t cc d ng v cc ct ca mt hay nhiu bng, khung nhn. Cu lnh ny c th dng thc hin php chn (tc l truy xut mt tp con cc dng trong mt hay nhiu bng), php chiu (tc l truy xut mt tp con cc ct trong 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 truy vn 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 SELECT nu c s dng phi tun theo ng th t nh trong c php. Nu khng, cu lnh s c xem l khng hp l. Cu lnh SELECT c s dng tc ng l n cc bng d liu v kt qu ca cu lnh cng c hin th di dng bng, tc l mt tp hp cc dng v cc ct (ngoi tr trng hp s dng cu lnh SELECT vi mnh COMPUTE). V d:

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 SELECT bao 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

27
Mnh 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 iu kin 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 bng


Php ni bng: Mt php ni bng (equi-join) l mt php ni trong gi tr ca cc ct c s dng ni c so snh vi nhau da trn tiu chun bng v tt c cc ct trong cc bng 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, iu kin ni gia hai bng chnh l iu kin bng gia kho ngoi v kho chnh ca hai bng; V trong danh sch chn ca cu lnh ch gi li mt ct trong 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.customerid hoc vit gn: select c.*, o.ORDERDATE

28
from 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 bng cch 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). Thng thng, 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 ni Php t ni l php ni m trong iu kin ni c ch nh lin quan n cc ct ca cng 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 ngy select 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 v ngy 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 khch hng ny c cho vo kt qua truy vn. Php ni ngoi Trong cc php ni cp trn, ch nhng dng c gi tr trong cc ct c ch nh tho mn iu kin kt ni mi c hin th trong kt qu truy vn, v c gi l php ni trong (inner join) Theo mt ngha no , nhng php ni ny loi b thng tin cha trong nhng dng khng tho mn iu kin ni. Tuy nhin, i khi ta cng cn gi li nhng thng tin ny bng cch cho

29
php nhng dng khng tho mn iu kin ni c mt trong kt qu ca php 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 truy vn ny c s dng biu din cho nhng truy vn trong iu kin truy vn d liu cn phi 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 trong danh 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 ca mt truy vn khc. Nu truy vn con tr v ng mt gi tr, n c th s dng nh l mt thnh phn bn trong mt biu thc (chng hn xut hin trong mt php so snh bng). Php so snh i vi vi kt qu truy vn con Kt 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 trng hp 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: =, <>, >, <, >=, <=; V truy vn con phi c kt qu bao gm ng mt ct.

30
V 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 nhiu hn mt gi tr, vic s dng php so snh nh trn s khng 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; ngc lai, php so snh vi lng t ANY c kt qu ng khi ch cn mt gi tr bt k no trong kt qu ca truy vn con tho mn iu kin Ton t IN/NOT IN Khi 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 th s dng ton t IN (NOT IN) nh sau: WHERE biu_thc [NOT] IN (truy_vn_con) Truy vn con vi EXISTS Lng 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 bit ca 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 HAVING Mt 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 cc hm 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 gi mn sch trong ny 24/2/2009.

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 lu v 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 sut ca h thng. Qu trnh differential ch sao lu nhng s thay i ca d liu t ln full backup gn nht, do khi c s c vi CSDL nu khng c bn sao lu ca qu trnh full backup th bn sao 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 2 ti 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 ngy th 6 tun trc v sau phc hi cc thay i ca d liu bng cch p dng bn sao lu ca 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 nh hng n hiu sut lm vic h thng nn thng c thc hin vo sau gi lm vic. Tuy nhin iu ny c th dn n cc mt mt 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.

32
Trong qu trnh hot ng, SQL Server s dng transaction log theo di tt c cc thay i trn CSDL. Log bo m CSDL c th phc hi sau nhng s c t xut v cng m bo ngi 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 c th s dng transaction log backup bt k thi gian no m khng s nh hng n hiu sut h 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 log backup mi gi mt ln. Gi s s c CSDL xy ra vo 9h:05 sng th 4. Qu trnh khi phc li CSDL nhu sau: Dng full backup v differential backup c a ti th 6 v ti th 3 phc hi 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

33

Click OK

34

Click OK. Qu trnh sao lu hon tt

7.2. Phc hi CSDL

35

36

Click OK hai ln

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.

38

Chng 8: Lp trnh vi ADO.NET


8.1. Gii thiu v nn tng .NET
L mt cng ngh ca MicroSoft Pht trin trn nn tng ADO. Cung cp cc lp i tng v hmg th vin phc v cho 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 OLE DB .NET Data Provider s dng cho phin bn 6.5 tr v trc v cc loi Database khc (Access,

39
Oracle). SQL Server .NET Data Provider hot ng hiu qu hn bi 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 Server


i tng Connection
i 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.NET ch nhn mt tham s u vo l chui kt ni (connection string). 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 thi hin thi ca Connection c cc trng thi sau: Connecting, Broken, Open, Closed, Executing, Fetching. Phng thc

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 SQL


i tng Command
Sau 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 c sqlserver 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.

41
Phng 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 i tng 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 tr v 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) + "")

42
End 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?

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

44

MT S THI MU

45 Trng i Hc Hng Hi Vit Nam Khoa Cng ngh Thng tin B MN H THNG THNG TIN -----***-----

THI KT THC HC PHN


Tn hc phn: THC TP CHUYN NGNH (SQL SERVER) Nm hc: x Thi gian: 60 pht thi s: x K duyt :

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). a. To mt c s d liu c cc bng tng ng vi lc quan h trn. b. Thc hin truy vn sau bng SQL: Hin th danh sch tn ca nhng nh cung cp c sn phm mu (RED) hoc mu xanh (GREEN)

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 v gi bn cc loi hng ho ca cc nh cung cp. ----------------------------------------***HT***---------------------------------------Lu : - Khng sa, xa thi, np li sau khi thi

46 Trng i Hc Hng Hi Vit Nam Khoa Cng ngh Thng tin B MN H THNG THNG TIN -----***-----

THI KT THC HC PHN


Tn hc phn: THC TP CHUYN NGNH (SQL SERVER) Nm hc: x Thi gian: 60 pht thi s: x K duyt :

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 sch tn ca nhng nh cung cp 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 v gi bn cc loi hng ho ca cc nh cung cp. ----------------------------------------***HT***---------------------------------------Lu : - Khng sa, xa thi, np li sau khi thi

You might also like