bai giang he quan tri csdl

Upload: vu-khanh

Post on 11-Jul-2015

5.565 views

Category:

Documents


0 download

TRANSCRIPT

Bi ging H qun tr CSDL

1

MC LCMC LC .............................................................................................................................1 Chng 1: TNG QUAN V H QUN TR CSDL..........................................................3 1.1. nh ngha: .................................................................................................................3 1.2. Cc kh nng ca h qun tr CSDL...........................................................................3 1.3. c im ca mt h qun tr CSDL..........................................................................4 1.3.1. S tru tng ho d liu: ...................................................................................4 1.3.2. Ngn ng c s d liu........................................................................................5 1.3.3. X l cu hi.......................................................................................................6 1.3.4. Qun tr giao dch ................................................................................................6 1.3.5. Qun l lu tr.....................................................................................................7 1.4. Kin trc ca mt h qun tr CSDL ..........................................................................7 1.5. Cc chc nng ca h qun tr CSDL quan h ...........................................................9 1.5.1. Cc khi nim trong m hnh d liu quan h ....................................................9 1.5.2. Cc chc nng ca h qun tr CSDL quan h ..................................................11 Chng 2: CC CU LNH SQL C BN .....................................................................14 2.1. CC CU LNH NH NGHA D LIU ...........................................................14 2.1.1. Lnh CREATE...................................................................................................14 2.1.2. Lnh thay th sa i ALTER ...........................................................................15 2.1.3. Xo cu trc DROP ...........................................................................................16 2.2. CC CU LNH CP NHT D LIU ...............................................................16 2.2.1. Lnh Insert .........................................................................................................16 2.2.2. Lnh Update.......................................................................................................16 2.2.2. Lnh Delete........................................................................................................17 2.3. KIM SOT D LIU............................................................................................17 2.3.1. Trao quyn GRANT ..........................................................................................17 2.3.2. Thu hi quyn REVOTE ...................................................................................17 2.4. TRUY VN D LIU.............................................................................................18 2.4.1. Tm kim theo cu hi n gin ........................................................................18 2.4.2. S dng cc hm th vin..................................................................................19 2.4.3. Tm kim nh cc mnh ................................................................................20 2.4.4. Cu hi phc tp ................................................................................................21 Chng 3: H QUN TR C S D LIU SQL SERVER ...........................................24 3.1. TNG QUAN V H QUN TR SQL SERVER .................................................24 3.1.1. Gii thiu h qun tr SQL Server .....................................................................24 3.1.2.Cc thnh phn ca SQL Server .........................................................................24 3.1.2.1. Cc thnh phn ca SQL Server 2000 ............................................................24 3.1.2.2. Cc thnh phn ca SQL Server 2005 ............................................................28 3.1.3. Qun l cc dch v ca SQL Server.................................................................32 3.1.3.1. Qun l cc dch v ca SQL Server 2000....................................................32 3.1.3.2. Qun l cc dch v ca SQL Server 2005....................................................36 3.2. LM VIC VI CC I TNG TRONG SQL SERVER............................... 44 3.2.1. C s d liu - Database....................................................................................45 3.2.2.Bng - Table........................................................................................................59 3.2.3. View...................................................................................................................67

Bin son: Chu Th Hng

B mn: Cc h thng thng tin

Khoa Cng ngh Thng tin

Bi ging H qun tr CSDL

2

3.2.4. Ch mc - Index .................................................................................................80 3.2.5. Lc - Diagrams ...........................................................................................92 3.3. BO M D LIU TRONG SQL SERVER.......................................................99 3.3.1. Phn quyn v bo mt trong SQL Server.........................................................99 3.3.2. Sao lu - phc hi CSDL.................................................................................127 Chng 4. LP TRNH TRN SQL SERVER ................................................................141 4.1. Gii thiu ngn ng T-SQL....................................................................................141 4.1.1. Khi nim.........................................................................................................141 4.1.2. Pht biu truy vn d liu nng cao.................................................................141 4.1.3. Lp trnh cu trc trong SQL Server ...............................................................149 4.2. Cc store procedure Cc th tc ..........................................................................168 4.2.1. Khi nim.........................................................................................................168 4.2.2. To store procedure .........................................................................................168 4.2.3.Thay i, xa, xem ni dung store procedure...................................................174 4.3. Cc store function Cc hm .................................................................................176 4.3.1. Cc khi nim ..................................................................................................176 4.3.2. To cc hm .....................................................................................................176 4.3.3. Cc v d to cc hm ......................................................................................178 4.3.4.Thay i, xa, xem ni dung store function .....................................................181 4.4. Trigger ....................................................................................................................182 4.4.1. Khi nim.........................................................................................................182 4.4.2. To trigger........................................................................................................184 4.4.3. Cc thao tc qun l trigger .............................................................................193 Chng 5. SQL SERVER V LP TRNH NG DNG...............................................197 5.1. M hnh kt ni ng dng n SQL server.............................................................197 5.1.1. M hnh ADO .................................................................................................. 197 5.1.2. M hnh ADO.NET .........................................................................................199 5.1.3. im khc nhau gia ADO v ADO.NET ...................................................... 204 5.2. Cc lp SqlClient trong m hnh ADO.NET.......................................................... 204 5.2.1. Class SqlConnection ........................................................................................205 5.2.2. Class SqlCommand..........................................................................................208 5.2.3. Class SqlDataAdapter ......................................................................................213 5.2.4. Class DataSet ...................................................................................................219 5.2.5. DataView .........................................................................................................220 5.3. V d minh ha .......................................................................................................223 5.3.1. CSDL trong v d minh ha.............................................................................224 5.3.2. Xy dng Form nhp DSSinhVien ..................................................................225 5.3.3. Xy dng Form nhp DSLop...........................................................................233 5.3.4. Xy dng Form hin th danh sch sinh vin. .................................................235 5.3.5. Xy dng bo co dng Report. ......................................................................241 5.3.6. Xy dng report dng Crystal Report..............................................................255

Bin son: Chu Th Hng

B mn: Cc h thng thng tin

Khoa Cng ngh Thng tin

Bi ging H qun tr CSDL

3

Chng 1: TNG QUAN V H QUN TR CSDL 1.1. nh ngha: - H qun tr c s d liu (Database Management System - DBMS): L mt h thng phn mm cho php to lp c s d liu v iu khin mi truy nhp i vi c s d liu . Trn th trng phn mm hin nay Vit Nam xut hin kh nhiu phn mm h qun tr c s d liu nh: Microsoft Access, Foxpro, DB2, SQL Server, Oracle,.v.v - H qun tr c s d liu quan h (Relation Database Management System - RDBMS) l mt h qun tr c s d liu theo m hnh quan h. 1.2. Cc kh nng ca h qun tr CSDL C hai kh nng chnh cho php phn bit cc h qun tr c s d liu vi cc kiu h thng lp trnh khc: i. Kh nng qun l d liu tn ti lu di: c im ny ch ra rng c mt c s d liu tn ti trong mt thi gian di, ni dung ca c s d liu ny l cc d liu m h qun tr CSDL truy nhp v qun l. Kh nng truy nhp cc khi lng d liu ln mt cch hiu qu.

ii.

Ngoi hai kh nng c bn trn, h qun tr CSDL cn c cc kh nng khc m c th thy trong hu ht cc h qun tr CSDL l: iii. iv. v. vi. H tr t nht mt m hnh d liu hay mt s tru tng ton hc m qua ngi s dng c th quan st d liu. m bo tnh c lp d liu hay s bt bin ca chng trnh ng dng i vi cc thay i v cu trc trong m hnh d liu. H tr cc ngn ng cao cp nht nh cho php ngi s dng nh ngha cu trc d liu, truy nhp d liu v thao tc d liu. Qun l giao dch, c ngha l kh nng cung cp cc truy nhp ng thi, ng n i vi CSDL t nhiu ngi s dng ti cng mt thi im.B mn: Cc h thng thng tin Khoa Cng ngh Thng tin

Bin son: Chu Th Hng

Bi ging H qun tr CSDL

4

vii.

iu khin truy nhp, c ngha l kh nng hn ch truy nhp n cc d liu bi nhng ngi s dng khng c cp php v kh nng kim tra tnh ng n ca CSDL. Phc hi d liu, c ngha l c kh nng phc hi d liu, khng lm mt mt d liu vi cc li h thng.

viii.

1.3. c im ca mt h qun tr CSDL 1.3.1. S tru tng ho d liu: cho h thng c th s dng c, h qun tr CSDL phi tra cu hay tm kim d liu mt cch c hiu qu. iu ny dn n vic thit k cc cu trc d liu phc tp biu din d liu trong CSDL ny. Ngi pht trin che du tnh phc tp ny thng qua mt s mc tru tng n gin ho cc tng tc ca ngi s dng i vi h thng.Khung nhn 1 Mc khung nhn Khung nhn n

Mc logic

Mc vt l

Hnh 1.1. Ba mc tru tng d liu Mc vt l: Mc thp nht ca s tru tng m t d liu c lu tr mt cch thc s nh th no. Ti mc vt l, cc cu trc d liu mc thp phc tp c m t chi tit. Mc logic: Mc cao tip theo ca s tru tng ho m t nhng d liu no c lu tr v cc mi quan h no tn ti gia cc d liu ny. Mc logic ca s tru tng c xc nh ngi qun tr CSDL, c th phi quyt nh nhng thng tin g c lu tr trong CSDL.

-

Bin son: Chu Th Hng

B mn: Cc h thng thng tin

Khoa Cng ngh Thng tin

Bi ging H qun tr CSDL

5

-

Mc khung nhn: Mc cao nht ca s tru tng m t ch mt phn ca ton b CSDL. Mc d s dng cc cu trc n gin mc logic, mt s phc tp vn cn tn ti do kch thc ln ca CSDL. Thc cht nhng ngi s dng ch cn truy nhp n mt phn CSDL, do vy s tng tc ca h vi h thng ny l n gin ho v mc khung nhn ca s tru tng c xc nh. H thng c th c cung cp nhiu khung nhn i vi cng mt c s d liu.

1.3.2. Ngn ng c s d liu Mt h qun tr c s d liu thng cung cp hai kiu ngn ng khc nhau l: ngn ng m t s c s d liu v ngn ng biu din cc truy vn v cc cp nht c s d liu. Ngn ng nh ngha d liu (Data Definition Language - DDL) + Mt s CSDL c t bi mt tp cc nh ngha c biu din bi mt ngn ng c bit c gi l ngn ng nh ngha d liu. Kt qu ca vic dch cc ngn ng ny l mt tp cc bng c lu tr trong mt tp c bit c gi l t in d liu hay th mc d liu. + Mt t in d liu l mt tp cha cc siu d liu c ngha l cc d liu v d liu. Tp ny c tra cu trc khi d liu thc s c c hay c sa i trong h CSDL. + Cu trc v cc phng php truy nhp c s dng bi h CSDL c c t bi mt tp cc nh ngha trong mt kiu c bit ca DDL l ngn ng nh ngha v lu tr d liu. Ngn ng thao tc d liu (Data Manipulation Language - DML): + Cc yu cu v thao tc d liu bao gm: Tm kim thng tin c lu tr trong CSDL.

Bin son: Chu Th Hng

B mn: Cc h thng thng tin

Khoa Cng ngh Thng tin

Bi ging H qun tr CSDL

6

Thm thng tin mi vo CSDL. Xo thng tin t CSDL. Thay i thng tin c lu tr trong CSDL. + Mt ngn ng thao tc d liu (DML) l mt ngn ng cho php ngi s dng truy nhp hay thao tc d liu c t chc bi m hnh d liu thch hp. C hai kiu ngn ng thao tc d liu c bn: Cc DML th tc i hi ngi s dng phi c t d liu no cn tm kim v tm kim nhng d liu ny nh th no. Cc DML phi th tc i hi ngi s dng c t d liu no cn tm kim m khng phi c t tm kim nhng d liu ny nh th no. 1.3.3. X l cu hi Cng vic ca b x l cu hi l bin i mt truy vn hay mt thao tc CSDL c th c biu din cc mc cao thnh mt dy cc yu cu i vi cc d liu lu tr trong CSDL. Thng phn kh nht ca nhim v x l cu hi l ti u ho cu hi, c ngha l la chn mt k hoch tt nht i vi h thng lu tr tr li truy vn ny nhanh nht. 1.3.4. Qun tr giao dch Thng thng mt s thao tc trn CSDL hnh thnh mt n v logic cng vic. iu ny c ngha l hoc tt c cc thao tc c thc hin hoc khng thao tc no c thc hin. Hn na s thc hin cc thao tc ny phi m bo tnh nht qun ca CSDL. Mt giao dch l mt tp hp cc thao tc m x l nh mt n v khng chia ct c. Cc h qun tr CSDL in hnh cho php ngi s dng mt hay nhiu nhm thao tc tra cu hay thay i CSDL thnh mt giao dch.

Bin son: Chu Th Hng

B mn: Cc h thng thng tin

Khoa Cng ngh Thng tin

Bi ging H qun tr CSDL

7

1.3.5. Qun l lu tr Cc CSDL thng i hi mt khi lng ln khng gian lu tr. Do b nh chnh ca my tnh khng th lu tr nhiu thng tin nh vy, cc thng tin ny c lu tr cc thit b nh ngoi nh a cng, a mm,.v.v Khi x l, d liu cn phi c di chuyn t a t vo b nh chnh; s di chuyn ny l kh chm so vi tc x l ca b nh trung tm, do vy cc h CSDL phi t d liu vt l sao cho tt, ti thiu ho s yu cu chuyn d liu gia a t vo b nh chnh. 1.4. Kin trc ca mt h qun tr CSDL Chng ta s phc tho kin trc v thy cch thc ca mt h qun tr CSDL in hnh. Ta c s kin trc hnh 1.2:

Hnh 1.2. Cc thnh phn chnh ca h qun tr CSDL - D liu, siu d liu: y kit trc l thit b nh ngoi lu tr d liu v siu d liu. Trong phn ny khng ch cha d liu c tr trong CSDL m cha c cc siu d liu, tc l thng tin cu trc ca CSDL. V d: Trong

Bin son: Chu Th Hng

B mn: Cc h thng thng tin

Khoa Cng ngh Thng tin

Bi ging H qun tr CSDL

8

h qun tr c s d liu quan h, cc siu d liu bao gm cc tn ca cc quan h, tn cc thuc tnh ca cc quan h, v cc kiu d liu i vi cc thuc tnh ny. - B qun l lu tr: Nhim v ca b qun l lu tr l ly ra cc thng tin c yu cu t nhng thit b lu tr d liu v thay i nhng thng tin ny khi c yu cu bi cc mc trn n ca h thng. - B x l cu hi: B x l cu hi iu khin khng ch cc cu hi m c cc yu cu thay i d liu hay siu d liu. Nhim v ca n l tm ra cch tt nht mt thao tc c yu cu v pht ra lnh i vi b qun l lu tr v thc thi thao tc . - B qun tr giao dch: B qun tr giao dch c trch nhim m bo tnh ton vn ca h thng. N phi m bo rng mt s thao tc thc hin ng thi khng cn tr mi thao tc khc v h thng khng mt d liu thm ch c khi li h thng xy ra. + N tng tc vi b x l cu hi, do vy n phi bit d liu no c thao tc bi cc thao tc hin thi trnh s ng gia cc thao tc v cn thit n c th lm tr mt s truy vn nht nh hay mt s thao tc cp nht ng khng th xy ra. + N tng tc vi b qun l lu tr bi v cc s i vi vic bo v d liu thng ko theo vic lu tr mt nht k cc thay i i vi d liu. Hn na, vic sp th t cc thao tc mt cch thc s c nht k ny s cha trong mt bn ghi i vi mi thay i khi gp li h thng, cc thay i cha c ghi vo a c th c thc hin li. - Cc kiu thao tc i vi h qun tr CSDL: Ti nh kin trc, ta thy c 3 kiu thao tc: + Cc truy vn: y l cc thao tc hi p v d liu c lu tr trong CSDL. Chng c sinh ra theo hai cch sau: Thng qua giao din truy vn chung. V d: H qun tr CSDL quan h cho php ngi s dng nhp cc cu

Bin son: Chu Th Hng

B mn: Cc h thng thng tin

Khoa Cng ngh Thng tin

Bi ging H qun tr CSDL

9

lnh truy vn SQL m n c chuyn qua b x l cu hi v c tr li. Thng qua cc giao din chng trnh ng dng: Mt h qun tr CSDL in hnh cho php ngi lp trnh vit cc chng trnh ng dng gi n h qun tr CSDL ny v truy vn CSDL. + Cc cp nht d liu: y l cc thao tc thay i d liu nh xo, sa d liu trong CSDL. Ging nh cc truy vn, chng c th c pht ra thng qua giao din chung hoc thng qua giao din ca chng trnh. + Cc thay i s : Cc lnh ny thng c pht bi mt ngi s dng c cp php, thng l nhng ngi qun tr CSDL mi c php thay i s ca CSDL hay to lp mt CSDL mi. 1.5. Cc chc nng ca h qun tr CSDL quan h 1.5.1. Cc khi nim trong m hnh d liu quan h - Min (domain): l mt tp cc gi tr hoc cc i tng. - Thc th: Thc th l mt i tng c th hay tru tng trong th gii thc m n tn ti v c th phn bit c vi cc i tng khc. V d: Bn Nguyn Vn A l mt thc th c th. Hay Sinh vin cng l mt thc th, thc th tru tng. - Thuc tnh (Attribute): L tnh cht ca thc th. + Cc thc th c cc c tnh, c gi l cc thuc tnh. N kt hp vi mt thc th trong tp thc th t min gi tr ca thuc tnh. Thng thng, min gi tr ca mt thuc tnh l mt tp cc s nguyn, cc s thc, hay cc xu k t. + Mt thuc tnh hay mt tp thuc tnh m gi tr ca n xc nh duy nht mi thc th trong tp cc thc th c gi l kho i vi tp thc th ny.

Bin son: Chu Th Hng

B mn: Cc h thng thng tin

Khoa Cng ngh Thng tin

Bi ging H qun tr CSDL

10

+ Mi mt thuc tnh nhn tp s cc gi tr nht nh c gi l domain ca thuc tnh . - Mt quan h (Relation): nh ngha mt cch n gin, mt quan h l mt bng d liu c cc ct l cc thuc tnh v cc hng l cc b d liu c th ca quan h. - Cc lin kt: Mt lin kt l mt s kt hp gia mt s thc th (hay quan h). V d: Mi lin kt gia phng ban v nhn vin th hin: Mt nhn vin A s thuc mt phng ban B no . + Cc lin kt mt mt: y l dng lin kt n gin, lin kt trn hai thc th l mt mt, c ngha l mi thc th trong tp thc th ny c nhiu nht mt thc th trong tp thc th kia kt hp vi n v ngc li. + Cc lin kt mt nhiu: Trong mt lin kt mt nhiu, mt thc th trong tp thc th A c kt hp vi khng hay nhiu thc th trong tp thc th B. Nhng mi thc th trong tp thc th B c kt hp vi nhiu nht mt thc th trong tp thc th A. + Cc lin kt nhiu nhiu: y l dng lin kt m mi thc th trong tp thc th ny c th lin kt vi khng hay nhiu thc th trong tp thc th kia v ngc li. V d 1.1. Cc mi lin kt gia cc thc th: LOP(MaLop, TenLop, Khoa), SINHVIEN(MaSV, Hoten, NgSinh, MaLop), MONHOC(MaMon, TenM, SDVHT) v KETQUA (MaSV, MaMon, Diem) Ta c mi quan h gia cc thc th l:LOP MaLop TenLop Khoa SINHVIEN MaSV Hoten NgSinh MaLop KETQUA MaSV MaMon Diem MONHOC MaMon TenM SDVHT

Bin son: Chu Th Hng

B mn: Cc h thng thng tin

Khoa Cng ngh Thng tin

Bi ging H qun tr CSDL

11

- M hnh d liu quan h: Lm vic trn bng hay trn quan h trong : Mi ct l mt thuc tnh, mi dng l mt b (mt bn ghi). + Cc u im ca m hnh d liu quan h o Cu trc d liu d dng, khng cn hiu bit su v k thut ci t. o Ci thin tnh c lp d liu v chng trnh. o Cung cp ngn ng thao tc phi th tc. o Ti u ho cch truy xut d liu. o Tng tnh bo mt v ton vn d liu. o Cung cp cc phng php thit k c h thng. V m ra cho nhiu loi ng dng (ln v nh). + Kho ca quan h: o Kho ca quan h (key): L tp cc thuc tnh dng phn bit hai b bt k trong quan h. o Kho ngoi ca quan h (Foreign Key): Mt thuc tnh c gi l kho ngoi ca quan h nu n l thuc tnh khng kho ca quan h ny nhng l thuc tnh kho ca quan h khc. 1.5.2. Cc chc nng ca h qun tr CSDL quan h Cc chc nng ca h qun tr CSDL quan h c th c phn thnh cc tng chc nng nh hnh 1.3: - Tng giao din (Interface layer): Qun l giao din vi cc ng dng. Cc chng trnh ng dng CSDL c thc hin trn cc khung nhn (view) ca CSDL. i vi mt ng dng, khung nhn rt c ch cho vic biu din mt hnh nh c th v CSDL (c dng chung bi nhiu ng dng). Khung nhn quan h l mt quan h o, c dn xut t cc quan h c s (base relation) bng cch p dng cc php ton i s quan h.

Bin son: Chu Th Hng

B mn: Cc h thng thng tin

Khoa Cng ngh Thng tin

Bi ging H qun tr CSDL

12

Qun l khung nhn bao gm vic phin dch cu vn tin ngi dng trn d liu ngoi thnh d liu khi nim. Nu cu vn tin ca ngi dng c din t bng cc php ton quan h, cu vn tin c p dng cho d liu khi nim vn gi nguyn dng ny. - Tng iu khin (Control Layer): chu trch nhim iu khin cu vn tin bng cch a thm cc v t ton vn ng ngha v cc v t cp quyn. - Tng x l vn tin (Query processing layer): chu trch nhim nh x cu vn tin thnh chui thao tc c ti u mc thp hn. Tng ny lin quan n vn hiu nng. N phn r cu vn tin thnh mt cy biu th cc php ton i s quan h v th tm ra mt th t ti u cho cc php ton ny. Kt xut ca tng ny l cu vn tin c din t bng i s quan h hoc mt dng m mc thp. - Tng thc thi (Execution layer): C trch nhim hng dn vic thc hin cc hoch nh truy xut, bao gm vic qun l giao dch (u thc, ti khi ng) v ng b ho cc php i s quan h. N thng dch cc php ton i s quan h bng cch gi tng truy xut d liu qua cc yu cu truy xut v cp nht. - Tng truy xut d liu (data access layer): Qun l cc cu trc d liu dng ci t cc quan h (tp tin, ch mc). N qun l cc vng m bng cch lu tm cc d liu thng c truy xut n nhiu nht. S dng tng ny lm gim thiu vic truy xut n a. - Tng duy tr nht qun (Consistency layer): chu trch nhim iu khin cc hot ng ng thi v vic ghi vo nht k cc yu cu ct nht. Tng ny cng cho php khi phc li giao dch, h thng v thit b sau khi b s c.

Bin son: Chu Th Hng

B mn: Cc h thng thng tin

Khoa Cng ngh Thng tin

Bi ging H qun tr CSDL

13

Hnh 1.3. Cc chc nng ca h qun tr CSDL quan h

Bin son: Chu Th Hng

B mn: Cc h thng thng tin

Khoa Cng ngh Thng tin

Bi ging H qun tr CSDL

14

Chng 2: CC CU LNH SQL C BN Ngn ng SQL (Structured Query Language) l ngn ng truy vn c cu trc, dng thao tc vi d liu trong c s d liu cng nh to v thay i cu trc ca cc c s d liu. Trong chng ny ta s trnh by mt s cu lnh SQL c bn. 2.1. CC CU LNH NH NGHA D LIU 2.1.1. Lnh CREATE - ngha: Lnh CREATE dng to cc i tng c s d liu nh cc bng, cc view, cc tp ch s .v.v - C php: + CREATE TABLE ( ) + CREATE VIEW ( ) AS Q; vi Q l mt khi cu lnh SELECT nh ngha khung nhn (view). + CREATE [UNIQUE] INDEX ON (Tn ct [ASC|DESC]) - Mt s kiu d liu: Integer - s nguyn; float- du phy ng; char k t, datetime- ngy thng, boolean, V d 2.1. S dng cu lnh CREATE. + CREATE TABLE S (S# Integer NOT NULL, SNAME Char(30), STATUS Integer, CITY Char(50)) PRIMARY KEY (S#); + CREATE VIEW vieS (S# Integer NOT NULL, SNAME Char(30)) AS SELECT S#, SNAME FROM S; + CREATE TABLE PHONGBAN (MaPB Char(5) NOT NULL, TenPB Char(30)) PRIMARY KEY (MaPB);

Bin son: Chu Th Hng

B mn: Cc h thng thng tin

Khoa Cng ngh Thng tin

Bi ging H qun tr CSDL

15

+ CREATE TABLE NHANVIEN (MaNV Char(5) NOT NULL, TenNV Char(30), Ngaysinh date, MaPB Char(5)) PRIMARY KEY (MaNV) FOREIGN KEY (MaPB) REFERENCES TO PHONGBAN; + CREATE INDEX index1 ON SP(S# ASC, P# DESC) 2.1.2. Lnh thay th sa i ALTER - ngha: Dng thay i cu trc lc ca cc i tng CSDL. - C php: + ALTER TABLE Cc lnh trn ct c th l: Xa mt ct: Delete Thm mt ct: Add Thay i tn ct: Change column To Xa kha chnh: Drop PRIMARY KEY Xa kha ngoi: Drop FOREIGN KEY Thit lp kha chnh: PRIMARY KEY (Tn ct) Thit lp kha ngoi: FOREIGN KEY (Tn ct) REFERENCES TO + ALTER VIEW ( ) AS Q; vi Q l mt khi cu lnh SELECT nh ngha khung nhn (view). V d 2.2. Thay i cu trc ca bng NHANVIEN ALTER TABLE NHANVIEN Add Quequan char(50); ALTER TABLE NHANVIEN Delete Ngaysinh; V d 2.3. Thay i khung nhn vieS CREATE VIEW vieS AS SELECT S#, SNAME, CITY FROM S

Bin son: Chu Th Hng

B mn: Cc h thng thng tin

Khoa Cng ngh Thng tin

Bi ging H qun tr CSDL

16

2.1.3. Xo cu trc DROP - ngha: Dng xa cc i tng c s d liu nh Table, View, Index, .v.v - C php: DROP TABLE DROP VIEW DROP INDEX 2.2. CC CU LNH CP NHT D LIU 2.2.1. Lnh Insert - ngha: Dng chn mt hng hoc mt s hng cho bng. - C php: + INSERT INTO (Danh sch cc ct) VALUES (Danh sch cc gi tr) hoc + INSERT INTO (Danh sch cc ct) (Cc cu hi con); V d 2.4. Chn d liu vo bng S. INSERT INTO S (S#, SNAME, STATUS) VALUES (s1, Smith, 20, Paris); INSERT INTO S SELECT * FROM W WHERE CITY="Paris"; 2.2.2. Lnh Update - ngha: Dng sa i d liu. - C php: UPDATE SET Bin son: Chu Th Hng B mn: Cc h thng thng tin Khoa Cng ngh Thng tin

Bi ging H qun tr CSDL

17

[WHERE ] V d 2.5. S dng lnh Update UPDATE SINHVIEN SET TenSV="Nguyn Th Hnh" Where MaSV="20042390" UPDATE HangHoa SET Dongia=Dongia*1.1 Where TenHH IS LIKE 'Bia %' and Dongiab.Diem) - Kt ni nhiu bng: V d 2.20. Cho bit kt qu thi mn Ton ca cc sinh vin. + CREATE VIEW MaToan AS SELECT MaMT From MONTHI Where TenMon='Ton' + CREATE VIEW TAM AS SELECT a.SoBD, a.Diem From KETQUA a, MaToan bBin son: Chu Th Hng B mn: Cc h thng thng tin Khoa Cng ngh Thng tin

Bi ging H qun tr CSDL

22

Where a.MaMT=b.MaMT; + SELECT a.SoBD, TenSV, a.Diem From Tam a, THISINH b Where a.SoBD=b.SoBD V d 2.21. Lin kt nhiu bng authors, titleauthor v title. SELECT au_lname, au_fname, title, price FROM authors JOIN titleauthor ON authors.au_id = titleauthor.au_id JOIN titles ON titleauthor.title_id = titles.title_id ORDER BY au_lname, au_fname - nh x lng V d 2.22. Cho cc quan h: S(S#, SNAME, STATUS, CITY) SP(S#, P#, QTY) P(P#, PNAME, COLOR, WEIGH) Hy cho bit m v tn cc hng c bn sn phm mu . SELECT S#, SNAME From S Where S# IN (SELECT S# From SP Where P# IN (Select P# From P Where COLOR='Red')); - S dng cc lng t: EXISTS, ANY, ALL, V d 2.23. Cho cc bng trong v d 2.22. Tm cc nh cung cp cung cp t nht mt mt hng no . SELECT * From S Where EXISTS (SELECT * From SP Where SP.S# =S.S#); Ta c th thay th bng cu lnh: SELECT * From S Where 0 < (SELECT Count(*) From SP Where SP.S#=S.S#); V d 2.24. Tm tn nhng mt hng c m s mt hng m mt hng no m hng S1 bn. SELECT PNAME From P Where S# = ANY

Bin son: Chu Th Hng

B mn: Cc h thng thng tin

Khoa Cng ngh Thng tin

Bi ging H qun tr CSDL

23

(SELECT P# From SP Where S#='S1'); V d 2.25. Tm nhng hng cung cp s lng mt ln mt mt hng no > s lng mi ln ca cc hng cung cp. SELECT S From SP Where QTY>= ALL (SELECT QTY From SP ); hay SELECT S From SP Where QTY= (SELECT Max(QTY) From SP );

Bin son: Chu Th Hng

B mn: Cc h thng thng tin

Khoa Cng ngh Thng tin

Bi ging H qun tr CSDL

24

Chng 3: H QUN TR C S D LIU SQL SERVER 3.1. TNG QUAN V H QUN TR SQL SERVER 3.1.1. Gii thiu h qun tr SQL Server Microsoft SQL Server l mt h qun tr c s d liu quan h (Relation Database Management System - RDBMS), cung cp cch t chc d liu bng cch lu chng vo cc bng. D liu quan h c lu tr trong cc bng v cc quan h c nh ngha gia cc bng vi nhau. Ngi dng truy cp d liu trn Server thng qua ng dng. Ngi qun tr CSDL truy cp Server trc tip thc hin cc chc nng cu hnh, qun tr v thc hin cc thao tc bo tr CSDL. Ngoi ra, SQL Server l mt CSDL c kh nng m rng, ngha l chng c th lu mt lng ln d liu v h tr tnh nng cho php nhiu ngi dng truy cp d liu ng thi. Cc phin bn ca SQL Server ph bin hin ny trn th trng l SQL Server 7.0, SQL Server 2000, SQL Server 2005, SQL Server 2008. Trong gio trnh ny, tc gi gii thiu vi cc bn trn hai phin bn SQL Server 2000, SQL Server 2005. 3.1.2.Cc thnh phn ca SQL Server 3.1.2.1. Cc thnh phn ca SQL Server 2000 SQL Server cung cp mt s loi thnh phn khc nhau: Nhn ca n l cc thnh phn server, cc thnh phn ny c thc hin nh windows 32 bit. Cc cng c ha da trn client v cc dng tin ch phc v cho cng tc qun tr. Cc cng c v tin ch ny s dng s dng cc thnh phn giao tip client do SQL Server 2000 cung cp. Cc thnh phn giao tip cung cp cc cch khc nhau m

Bin son: Chu Th Hng

B mn: Cc h thng thng tin

Khoa Cng ngh Thng tin

Bi ging H qun tr CSDL

25

trong ng dng client c th truy cp d liu thng qua cc thnh phn server. a) Cc thnh phn server Cc thnh phn server ca SQL Server 2000 thng c thc hin nh cc dch v Windows 32 bit. Do cc dch v ca SQL Server v SQL Server Agent c th chy nh cc ng dng c lp trn bt k nn tng no c h tr h iu hnh Windows. Cc thnh phn Server c m t trong bng 3.1: Bng 3.1. Cc thnh phn server ca SQL Server 2000 Thnh phn server Chc nng Dch v MSSQLServer thc thi c my CSDL SQL Server 2000. C mt dch v ny cho mi th hin ca SQL Server 2000.

Dch v SQL Server

Dch v v cc dch MSSQLServerOLAPService thc thi cc dch v v phn tch ca phn tch ca SQL Server 2000. Ch c mt dch v SQL Server 2000 khng lin quan n s th hin ca SQL Server 2000. Dch v SQL Server Dch v SQLServerAgent thc thi cc tc nhn chy Agent cc tc v qun tr c nh thi gian biu ca SQL Server 2000. Dch v tm kim Dch v tm kim Microsoft thc thi c my tm kim ton vn bn. Ch c mt dch v, khng lin quan n s th hin ca SQL Server 2000.

Dch v MS DTC - Thnh phn iu phi giao dch phn tn, qun l Distributed cc giao dch phn tn gia cc th hin ca SQL Transaction Server 2000. Ch c mt dch v, khng lin quan Coordinator n s th hin ca SQL Server 2000.

Bin son: Chu Th Hng

B mn: Cc h thng thng tin

Khoa Cng ngh Thng tin

Bi ging H qun tr CSDL

26

SQL Server 2000 cung cp cc giao din ha gip cho ngi s dng s dng cc dch v ca SQL Server 2000 (Hnh 3.1. v Bng 3.2).

Hnh 3.1. Cc giao din ha ca SQL Server 2000. Bng 3.2 Cc cng c giao din ha ca SQL Server 2000. Cng c SQL Server Enterprise Manager SQL Query Analyzer Chc nng y l cng c qun tr CSDL server chnh, n cung cp mt giao tip vi ngi dng Microsoft Management Console (MMC). Dng to v qun l cc i tng CSDL v kim tra cc pht biu Transact-SQL, cc b lnh v cc script mt cch tng tc. Gim st v ghi nhn cc s kin SQL Server 2000 chn phn tch v xem li.

SQL Profiler

SQL Server Service ng dng nm trn thanh task bar ca Windows Manager c dng chy, tm dng hoc thay i cc dch v SQL Server 2000. Client Network c dng qun l Net-Libraries ca client vB mn: Cc h thng thng tin Khoa Cng ngh Thng tin

Bin son: Chu Th Hng

Bi ging H qun tr CSDL

27

Utility Server Utility

nh ngha cc b danh server. Network Dng qun l Net-Libraries ca server bao gm thit lp m ha SSL.

b) Cc thnh phn giao tip Client. Ngi dng truy cp SQL Server 2000 thng qua cc ng dng client, SQL Server 2000 cung cp hai kiu ng dng client chnh: Cc ng dng CSDL quan h, l kiu ng dng truyn thng dng mi trng client/server 2 lp. Cc ng dng ny gi cc pht biu T-SQL n c my CSDL quan h v nhn kt qu tr v nh tp kt qu quan h. Cc ng dng Internet, chng l thnh phn ca nn tng Microsoft.NET. Chng gi cc pht biu T-SQL hoc cc truy vn Xpath ti c my CSDL quan h v nhn v kt qu dng XML.

-

Cc tin ch dng lnh thng c s dng do SQL Server 2000 cung cp cho trong bng 3.3. Bng 3.3 Cc tin ch dng lnh ca SQL Server 2000. Tin ch Osql Chc nng Tin ch ny cho php truy vn tng tc mt th hin ca SQL Server 2000 bng cc pht biu T-SQL, cc th tc v cc script. Dng chy, dng, tm dng, ci t, xa hoc thay i cc dch v SQL Server 2000. Tin ch ny thu thp v lu tr cc thng tin chun on x l v n gin ha thng tin thu thp bi dch v h tr sn phm Microsoft. Tin ch ny sao chp d liu gia mt th hin ca SQL Server 2000 v tp tin d liu theo nh dng ca ngi dng.

Scm (Server Control Manager) Sqldiag

Bcp

Bin son: Chu Th Hng

B mn: Cc h thng thng tin

Khoa Cng ngh Thng tin

Bi ging H qun tr CSDL

28

Dtsrun Sqlmaint

Tin ch ny thc thi cc gi c to bi DTS. Tin ch ny thc thi cc hot ng bo tr trn mt hoc nhiu CSDL. Nhng hot ng bao gm vic kim tra tnh nht qun d liu, sao lu tp tin d liu v tp tin giao dch, cp nht cc thng k phn tn, xy dng li cc ch mc.

3.1.2.2. Cc thnh phn ca SQL Server 2005 SQL Server 2005 nng cao hiu nng, tin cy, kh nng lp trnh n gin v giao din d s dng hn so vi SQL Server 2000. SQL Server 2005 tp trung vo kh nng x l giao dch trc tuyn (online transaction processing - OLTP), ng dng thng mi in t (e- ecommerce) v kho d liu (data warehousing). Ngoi ra nhng ci tin quan trng trong SQL Server 2005 l thm cc dch v mi nh: dch v bo co (reporting service), service broker v s thay i ng k trong c my c s d liu. a) Cc phin bn ca SQL Server 2005: Trc khi i vo cc thnh phn ca SQL Server 2005, ta xt cc phin bn ca SQL Server 2005. SQL Server 2005 c s dng rng ri cho nhiu i tng khc nhau nn Microsoft cung cp nhiu phin bn khc nhau cho ph hp vi cc yu cu v chi ph, thi gian thc hin, ca cc t chc, c nhn. Nm phin bn ca SQL Server 2005 l: + Microsoft SQL Server 2005 Enterprise Edition + Microsoft SQL Server 2005 Standard Edition + Microsoft SQL Server 2005 Workgroup Edition + Microsoft SQL Server 2005 Developer Edition + Microsoft SQL Server 2005 Express Edition Hu ht cc t chc u chn trong ba phin bn SQL Server 2005 Enterprise Edition, SQL Server 2005 Standard Edition, v SQL Server 2005 Workgroup Edition. Cc t chc chn mt trong ba phin bn ny vi l do l

Bin son: Chu Th Hng

B mn: Cc h thng thng tin

Khoa Cng ngh Thng tin

Bi ging H qun tr CSDL

29

ch c cc phin bn Enterprise, Standard, v Workgroup c ci t v s dng trong mi trng server phc v cho hot ng thc t. + SQL Server 2005 Enterprise Edition (32-bit v 64-bit) Enterprise Edition c s dng trong cc doanh nghip, t chc c cc mc yu cu x l giao dch trc tuyn trn din rng (online transaction processing - OLTP), kh nng phn tch d liu phc tp cao, h thng kho d liu (data warehousing systems) v web sites. Enterprise Edition ph hp cho cc t chc ln v cc yu cu phc tp. + SQL Server 2005 Standard Edition (32-bit v 64-bit) Standard Edition l phin bn phc v cho vic qun tr v phn tch d liu ph hp cho cc doanh nghip, t chc va v nh. N bao gm cc gii php cn thit cho thng mi in t (ecommerce), kho d liu (data warehousing) v dng doanh nghip (line-of-business). + SQL Server 2005 Workgroup Edition (32-bit only) Workgroup Edition l gii php qun tr d liu ph hp cho cc doanh nghip, t chc nh ch cn mt c s d liu khng gii hn kch thc hoc s ngi s dng. Workgroup Edition l l tng cho cc mc c s d liu tin cy, mnh m v d qun tr. + SQL Server 2005 Developer Edition (32-bit v 64-bit) Developer Edition c tt c cc tnh nng ca phin bn SQL Server 2005 Enterprise Edition, nhng n ch l phin bn s dng cho pht trin v kim tra ng dng. Phin bn ny ph hp cho cc c nhn, t chc xy dng v kim tra ng dng. + SQL Server 2005 Express Edition (32-bit only) SQL Server Express, d s dng v qun tr c s d liu n gin. c tch hp vi Microsoft Visual Studio 2005, SQL Server Express tr nn d dng pht trin cc ng dng d liu giu kh nng, an ton trong lu tr, v nhanh chng trin khai.

Bin son: Chu Th Hng

B mn: Cc h thng thng tin

Khoa Cng ngh Thng tin

Bi ging H qun tr CSDL

30

SQL Server Express l phin bn min ph, c th dng nh mt c s d liu my khch hoc c s d liu my ch n gin. SQL Server Express l la chn tt cho nhng ngi dng ch cn mt phin bn SQL Server 2005 nh gn, dng trn my ch c cu hnh thp, nhng nh pht trin ng dng khng chuyn hay nhng ngi yu thch xy dng cc ng dng nh. b) Cc thnh phn Server ca SQL Server 2005: Cc thnh phn server ca SQL Server 2005 c cho trong bng 3.4. Bng 3.4 Cc thnh phn server ca SQL Server 2005. Thnh phn Server Chc nng C my c s d liu bao gm Database Engine, li dch v cho vic lu tr, x l v bo mt d liu, sao lu v ng b (Replication), tm kim ton vn (Full-Text Search), v cc cng c cho vic qun tr d liu quan h v XML. Analysis Services bao gm cc cng c cho vic to v qun l tin trnh phn tch tr tuyn (online analytical processing - OLAP) v cc ng dng khai thc d liu. Reporting Services bao gm cc thnh phn server v client cho vic to, qun l v trin khai cc bo co. Reporting Services cng l nn tng cho vic pht trin v xy dng cc ng dng bo co. Dch v thng bo Notification Services l nn tng cho s pht trin v trin khai cc ng dng to v gi thng bo. Notification Services c th gi thng bo theo ch thi n hng ngn ngi ng k s dng nhiu loi thit b khc nhau.

SQL Server Database

Analysis Services

Reporting Services

Notification Services

Bin son: Chu Th Hng

B mn: Cc h thng thng tin

Khoa Cng ngh Thng tin

Bi ging H qun tr CSDL

31

Integration Services

Integration Services l mt tp hp cc cng c ha v cc i tng lp trnh cho vic di chuyn, sao chp v chuyn i d liu.

c) Cc thnh phn Client Bng 3.5 Cc thnh phn client ca SQL Server 2005. Thnh phn Client Connectivity Components Chc nng L cc thnh phn cho vic truyn thng gia clients v servers, v cc th vin mng nh DBLibrary, ODBC, and OLE DB.

c) Cc cng c ha Cc cng c giao din ha gip cho vic truy xut v qun tr SQL Server c thay i kh nhiu so vi cc phin bn trc , cc cng c qun tr c cho trong bng 3.6. v hnh 3.2.

Hnh 3.2. Cc giao din ha ca SQL Server 2005. Bng 3.5 Cc cng c qun tr trn SQL Server 2005.

Bin son: Chu Th Hng

B mn: Cc h thng thng tin

Khoa Cng ngh Thng tin

Bi ging H qun tr CSDL

32

Management tools

Chc nng SQL Server Management Studio (SSMS), l cng c mi trn Microsoft SQL Server 2005, n l mt mi trng c tch hp cho vic truy xut, cu hnh, qun tr v pht trin tt c cc thnh phn ca SQL Server. SSMS kt hp cc tnh nng ca Enterprise Manager, Query Analyzer, v Analysis Manager, c bao hm trong cc phin bn trc ca SQL Server, thnh mt mi trng n m cung cp truy xut SQL Server pht trin v qun tr tt c cc mc k nng trn. SQL Server Configuration Manager cung cp cc qun tr cu hnh c s cho cc dch v SQL Server (SQL Server services), cc giao thc server (server protocols), cc giao thc client (client protocols) v cc b danh client (client aliases). SQL Server Profiler cung cp giao din ngi dng ha cho vic gim st th hin ca Database Engine hoc th hin ca Analysis Services. Database Engine Tuning Advisor c vn, gip to cc tp ti u cc ch s (indexes), indexed views, v cc phn vng (partitions).

SQL Server Management Studio

SQL Server Configuration Manager

SQL Server Profiler

Database Engine Tuning Advisor

3.1.3. Qun l cc dch v ca SQL Server. 3.1.3.1. Qun l cc dch v ca SQL Server 2000 a) S dng SQL Server Service Manager Dch v l mt chng trnh hay mt tin trnh thc hin mt chc nng c th h tr chng trnh khc. SQL Server 2000 cung cp cc dch v: Dch v SQL Server: Khi khi ng SQL Server th dch v SQL Server c khi ng trn Windows. Dch v ny qun l ccB mn: Cc h thng thng tin Khoa Cng ngh Thng tin

Bin son: Chu Th Hng

Bi ging H qun tr CSDL

33

tp tin CSDL, x l cc pht biu Transaction SQL, cp pht ti nguyn gia cc kt ni ngi dng ng thi, m bo tnh nht qun d liu,.v.v Dch v SQL Server Agent: Dch v ny h tr lp cc chng trnh, thc thi tc v, cnh bo, thng bo v k hoch bo tr CSDL. N cho php ta thc hin t ng ha cc tc v bo tr CSDL. Dch v Distributed Transaction Coordinator: L trnh qun l giao dch cung cp cc kh nng bao gm nhiu ngun d liu khc nhau k c cc CSDL t xa trong cc giao dch ng dng.

-

Khi ng hoc dng cc dch v SQL Server s dng trnh SQL Server Service Manager thc hin theo cc bc sau: 1. Vo start/Programs/Microsoft SQL Server/Service Manager; Hoc di gc phi ca mn hnh trn thanh task bar h thng ca windows, doubleclick vo biu tng Service Manager. Khi ca s SQL Server Service Manager xut hin nh hnh 3.3. Trong danh sch Server chn tn server v danh sch Service chn dch v SQL Server. Click nt Start/Continue khi chy dch v; Click nt Pause tm dng dch v, tm dng dch v ngn chn ngi dng ng nhp vo SQL Server v c thi gian cho ngi dng ang kt ni c thi gian hon tt cc tc v v thot khi SQL Server trc khi ta ng SQL Server; Click vo nt Stop dng dch v.

2. 3.

Bin son: Chu Th Hng

B mn: Cc h thng thng tin

Khoa Cng ngh Thng tin

Bi ging H qun tr CSDL

34

Hnh 3.3. ng dng SQL Server Service Manager 4. Trong khi chy Service Manager, trng thi hin th ca cc dch v c mc nh l 5giy, thay i thay i thi gian cp nht, ta click chut vo biu tng gc trn bn tri ca SQL Server Service Manager, chn Options xut hin hp thoi SQL Server Service Manager Options nhp vo khong thi gian kim sot vng mi cho cc dch v, chng hn l 10 (Hnh 3.4).

Hnh 3.4. SQL Server Service Manager Options b) S dng Enterprise Manager Enterprise Manager l thnh phn Microsoft Management Console (MMC). MMC l ng dng trung tm dng qun l tt c cc giao tip ca h thng. N cho php thc hin cc tc v sau: + Khi ng, dng, tm dng Server. + ng k server, + Cu hnh server cc b v t xa + Cu hnh v qun l cc th hin ca server, + Thit lp bo mt ng nhp, thm ngi dng, ngi qun tr h thng. + Gn mt khu cho ngi qun tr h thng,Bin son: Chu Th Hng B mn: Cc h thng thng tin Khoa Cng ngh Thng tin

Bi ging H qun tr CSDL

35

+ To v lp thi gian biu thc thi cng vic, + Thit lp v qun l CSDL, bng, ch mc, view, stored proceduce, trigger, + Qun l cc dch v SQL server khc, * Thay i mt khu mc nh Tt c cc SQL server u c mt ti khon qun tr mc nh sn l sa (system administrator). Lc mi ci ti khon ny cha c gn mt khu. m bo mc bo mt cao nht cho SQL server ta phi gn cho ti khon sa mt mt khu. Khi gn mt khu ta thc hin theo cc bc sau: 1. Trong Enterprise Manager chn tn server 2. Chn Security/Logins hin th tt c cc ti khon ngi dng. 3. Right click chut ln ti khon sa, v chn Properties, xut hin ca s SQL Server Login Properties nh hnh 3.5. 4. Nhp mt khu mi vo hp Password sau click OK him h hp thoi Confirm Password. 5. Trong hp thoi Confirm Password nhp li mt khu trn xc nhn li mt khu v chn OK.

Bin son: Chu Th Hng

B mn: Cc h thng thng tin

Khoa Cng ngh Thng tin

Bi ging H qun tr CSDL

36

Hnh 3.5. Thay i mt khu ti khon sa. 3.1.3.2. Qun l cc dch v ca SQL Server 2005 a) S dng SQL Server Configuration Manager SQL Server Configuration Manager l cng c qun l cc dch v kt hp vi SQL Server, cu hnh cc giao thc mng c s dng bi SQL Server, v qun l cu hnh kt ni mng t cc my tnh trm SQL Server. SQL Server Configuration Manager kt hp cc chc nng ca cc cng c trong phin bn SQL Server 2000 l: Server Network Utility, Client Network Utility, v Service Manager. Khi ng hoc dng cc dch v SQL Server s dng SQL Server Configuration Manager ta thc hin theo cc bc sau: 1. Vo start/Programs/Microsoft SQL Server 2005/Configuration Tools/SQL Server Configuration Manager, xut hin ca s SQL Server Configuration Manager 2. Chn SQL Server 2005 Services, trong khu vc chi tit bn phi, right click ln th hin ca SQL Server m ta mun khi chy hoc dng. Gi s SQL Server (SQLEXPRESS) nh hnh 3.6. + Start: Khi chy th hin ca SQL Server + Stop: Dng hot ng ca th hin SQL Server. + Pause: Tm dng hot ng ca th hin SQL Server + Restart: Khi ng li th hin ca SQL Server

Bin son: Chu Th Hng

B mn: Cc h thng thng tin

Khoa Cng ngh Thng tin

Bi ging H qun tr CSDL

37

Hnh 3.6. Ca s SQL Server Configuration Manager. 3. Mun khi chy t ng dch v SQL Server, trong ca s trn chn Properties. Trong hp thoi SQL Server Properties, chn tab Service v chn thuc tnh Start Mode l Automatic.

Hnh 3.7. Ca s SQL Server Properties.

Bin son: Chu Th Hng

B mn: Cc h thng thng tin

Khoa Cng ngh Thng tin

Bi ging H qun tr CSDL

38

b) S dng SQL Server Management Studio Microsoft SQL Server Management Studio l mi trng tch hp cho vic truy cp, cu hnh, qun l, qun tr v pht trin tt c cc thnh phn ca SQL Server. SQL Server Management Studio kt hp mt nhm rng ln cc cng c ha giu trnh bin tp (script editors) cung cp cc truy xut n SQL Server pht trin v qun tr tt c cc mc k nng. V c th dng n qun tr SQL Server 2000. SQL Server Management Studio kt hp cc tnh nng ca Enterprise Manager, Query Analyzer, v Analysis Manager trong phin bn trc. Thm vo , SQL Server Management Studio lm vic vi tt c cc thnh phn cu SQL Server nh l: Reporting Services, Integration Services, SQL Server Mobile, v Notification Services. Microsoft SQL Server Management Studio bao gm cc tnh nng tng qut sau: + Cung cp hu ht cc tc v qun tr cho SQL Server 2005 v SQL Server 2000. + L mi trng n, tch hp cho vic qun tr v trao quyn SQL Server Database Engine. + Cc hp thoi mi cho vic qun l cc i tng trong SQL Server Database Engine, Analysis Services, Reporting Services, Notification Services, v SQL Server Mobile, cho php ta thc thi cc hnh ng ngay lp tc, gi chng ti Code Editor, hoc to tp lnh cho ln thc thi tip theo. + Cc hp thoi cho php truy cp n nhiu iu khin trong khi hp thoi ang c m. + Lp lch cho php ta thc thi cc hnh ng ca cc hp thoi qun tr. + Export v import ng k server SQL Server Management Studio t mt mi trng Management Studio ny n mi trng khc.

Bin son: Chu Th Hng

B mn: Cc h thng thng tin

Khoa Cng ngh Thng tin

Bi ging H qun tr CSDL

39

+ Save hoc in file XML Showplan hoc Deadlock files c sinh bi SQL Server Profiler, xem li, hoc gi chng ti administrators phn tch.v.v truy cp vo SQL Server Management Studio: 1. chy SQL Server Management Studio, trn thanh taskbar, click Start/ Programs/Microsoft SQL Server 2005, v sau click SQL Server Management Studio. 2. Khi khi chy SQL Server Management Studio, mt hp thoi Connect to Server (Hnh 3.8) xut hin. Ta c th chn mt th hin ca Server kt ni hoc khng chn mt th hin no c.

Hnh 3.8. Ca s Connect to Server. + Server type: Chn Database Engine kt ni n c my c s d liu. + Server name: chn hoc nhp tn server + Authentication: Chn ch xc thc l Windows Authentication hoc SQL Server Authentication, nu chn SQL Server Authentication th ta phi cung cp thng tin cho cc mc Login v Password. + Login: Nhp tn ng nhp

Bin son: Chu Th Hng

B mn: Cc h thng thng tin

Khoa Cng ngh Thng tin

Bi ging H qun tr CSDL

40

+ Password: Mt khu ca tn ng nhp + Remember password: Ty chn c chn l ng nhp sau khng phi nh mt khu. Sau hp thoi Connect to Server cho vo ca s SQL Server Management Studio (Hnh 3.9)

Hnh 3.9. Ca s SQL Server Management Studio. * ng k Server Ca s Registered Servers trong SQL Server Management Studio cha danh sch cc th hin danh sch cc server ng k. Ta s dng ca s Registered Servers nhm mc ch: + Lu thng tin kt ni cho cc th hin ca SQL Server trn mng. + Hin th mt th hin ang chy hay khng chy

Bin son: Chu Th Hng

B mn: Cc h thng thng tin

Khoa Cng ngh Thng tin

Bi ging H qun tr CSDL

41

+ Kt ni ti mt th hin trong ca s Object Explorer hoc Query Editor + Nhm cc server ng k mt th hin ca SQL Server ta thc hin cc bc sau 1. Vo View\chn Registered Servers xut hin ca s Registered Servers hnh 3.10. 2. Chn biu tng kiu th hin mun ng k, theo th t t tri sang phi l Database Engine, Analysis Services, Reporting Services, SQL Server Mobile v Integration Services. Ta chn Database Engine.

Hnh 3.10. Ca s Registered Servers. 3. Right click ln biu tng hoc vng trng chn New\Server Registration xut hin ca s New Server Registration (Hnh 3.11)

Bin son: Chu Th Hng

B mn: Cc h thng thng tin

Khoa Cng ngh Thng tin

Bi ging H qun tr CSDL

42

Hnh 3.11. Ca s New Server Registration. Trong ca s ny ta thc hin cc la chn sau: + Server Name: Nhp hoc chn tn th hin ca SQL Server t hp danh sch Server Name, c th chn t tm cc th hin ca SQL Server trn mng. + Authentication: Chn ch xc thc, tng t nh trong ca s Connect to Server. + Registered server name: Tn ca th hin trn ca s Registered Servers. + Nt Test: Dng kim tra xem kt ni c thnh cng hay khng?

Bin son: Chu Th Hng

B mn: Cc h thng thng tin

Khoa Cng ngh Thng tin

Bi ging H qun tr CSDL

43

+ Nt Save: Dng lu thng tin ng k. kt ni ti th hin ca SQL Server v hin th n trong ca s Object Explorer hoc to truy vn mi ta thc hin cc bc sau: 1. Trong ca s Registered Servers chn biu tng kiu th hin mun kt ni. Ta chn Database Engine. 2. Right click ln th hin mun kt ni, chn Connect v chn: + New Query: to mt truy vn kt ni ti th hin ny. + Object Explorer: hin th n trong ca s Object Explorer. * Thay i mt khu mc nh Thay i mt khu cho ti khon ng nhp sa ta thc hin theo cc bc nh sau: 1. Trong ca s Object Explorer ca SQL Server Management Studio chn tn th hin ca server 2. Chn Security/Logins hin th tt c cc ti khon ngi dng. 3. Right click chut ln ti khon sa, v chn Properties, xut hin ca s Login Properties nh hnh 3.12.

Bin son: Chu Th Hng

B mn: Cc h thng thng tin

Khoa Cng ngh Thng tin

Bi ging H qun tr CSDL

44

Hnh 3.12. Ca s Login Properties.

+ Trong tab General: Nhp mt khu mi vo hp Password v xc nhn mt khu vo Confirm Password. + Trong tab Status, mc Login chn Enabled cho php c th login vo theo ti khon sa, hoc Disabled khng th login vo theo ti khon sa.

3.2. LM VIC VI CC I TNG TRONG SQL SERVER

Bin son: Chu Th Hng

B mn: Cc h thng thng tin

Khoa Cng ngh Thng tin

Bi ging H qun tr CSDL

45

3.2.1. C s d liu - Database a) Cc Database h thng Khi ci t SQL Server c 4 Database h thng c ci t, l: master: Ghi nhn thng tin cp h thng, thng tin khi to SQL Server v thit lp cu hnh SQL Server. Database ny cng ghi nhn tt c cc ti khon ng nhp, s tn ti ca cc Database khc, v tr tp tin chnh cho tt c Database ngi dng. tempdb: Gi cc bng tm, cc stored procedure tm,.v.v... c dng cho cc nhu cu lu tr tm ca SQL Server. model: l khun mu cho tt c cc CSDL khc c to trn h thng k c tempdb. Database model phi c tn ti trn h thng, bi v n c dng to li tempdb mi khi SQL server c khi ng. msdb: Gi cc bng m SQL Server Agent dng lp thi gian biu thc thi cc cng vic, cc cnh bo v cc operator.

-

-

b) To Database to Database trong SQL Server 2000 , ta c 3 cch khc nhau to: + S dng Create Database Wizard + SQL Server Enterprise Manager + Dng T-SQL Trong SQL Server 2005 , ta c 2 cch khc nhau to: + SQL Server Management Studio + Dng T-SQL * S dng Create Database Wizard trn SQL Server 2000 : 1. Khi ng SQL Server Enterprise Manager, chn tn server cc b v vo menu Tools\Wizards Xut hin ca s Select Wizard hnh 3.13.

Bin son: Chu Th Hng

B mn: Cc h thng thng tin

Khoa Cng ngh Thng tin

Bi ging H qun tr CSDL

46

Hnh 3.13. Ca s Select Wizard

Hnh 3.14. Ca s Welcome to Create Database Wizard

Bin son: Chu Th Hng

B mn: Cc h thng thng tin

Khoa Cng ngh Thng tin

Bi ging H qun tr CSDL

47

2. 3.

Chn Create Database Wizard v chn OK Xut hin ca s Ca s Welcome to Create Database Wizard hnh 3.14. Click Next Xut hin ca s 3.15. Name the Database And Specify its Location. Nhp tn Database v v tr lu cc file c s d liu v file log v chn Next.

Hnh 3.15. Ca s Name the Database And Specify its Location 4. Mn hnh Name the Database files (hnh 3.16), nhp tn tp tin d liu chnh (c th dng tn mc) v kch thc khi to cho tp tin . Sau chn Next Xut hin ca s 3.17. Theo ty chn mc nh: Tp tin CSDL t ng gia tng v gia tng 10%, khng gii hn dung lng ti a. Ta c th thay i cc tham s thng qua cc ty chn: + Do not automatically grow the data file: Khng t ng gia tng kch thc ca file d liu. + Automatically grow the data file: T ng gia tng kch thc ca file d liu.

5.

Bin son: Chu Th Hng

B mn: Cc h thng thng tin

Khoa Cng ngh Thng tin

Bi ging H qun tr CSDL

48

+ Grow the file in megabytes (MB): Gia tng theo MB. + Grow the file by percent: Gia tng theo phn trm. + Unrestricted file growth: Gia tng khng gii hn cn trn ca file. + Restricted file growth to MB: Gii hn cn trn ca file theo MB. Chn Next. Xut hin ca s Name the Transaction Log Files hnh 3.18. 6. 7. Nhp tn tp tin bn ghi giao dch v kch thc khi to chng. Chn Next. Xut hin ca s Define the Transaction Log File Growth. Cc thng tin in tng t nh ca s Define the Database file Growth. Chn Next tip tc. Chn Finish kt thc.

8.

Hnh 3.16. Ca s Name the Database files

Bin son: Chu Th Hng

B mn: Cc h thng thng tin

Khoa Cng ngh Thng tin

Bi ging H qun tr CSDL

49

Hnh 3.17. Ca s Define the Database file Growth

Hnh 3.18. Ca s Name the Transaction Log Files

Bin son: Chu Th Hng

B mn: Cc h thng thng tin

Khoa Cng ngh Thng tin

Bi ging H qun tr CSDL

50

Hnh 3.19. Ca s Define the Transaction Log File Growth

Hnh 3.20. Ca s hon thnh to Database.

Bin son: Chu Th Hng

B mn: Cc h thng thng tin

Khoa Cng ngh Thng tin

Bi ging H qun tr CSDL

51

* S dng SQL Server Enterprise Manager trn SQL Server 2000 Khi ng SQL Server Enterprise Manager. Chn tn Server v chn Database. Rigth click ln mc Database v chn New Database. Xut hin ca s Database Properties (hnh 3.21).

Hnh 3.21. Ca s Database Properties. + Tab General: Nhp tn Database chng hn QLDiemSV + Tab Data files: t tn cc file d liu, v tr lu tr chng v cc tham s growth. Ch , SQL Server Enterprise Manager t ng to tp tin d liu chnh QLDiemSV_Data (c th thay i c tn) thuc nhm PRIMARY khng th thay i nhm. Ta c th to cc tp tin d liu ph trn cc nhm khc nhau. + Tab Transaction log: Tng t nh trn nhng i vi tp tin ghi cc bn ghi giao dch.

Bin son: Chu Th Hng

B mn: Cc h thng thng tin

Khoa Cng ngh Thng tin

Bi ging H qun tr CSDL

52

* S dng SQL Server Management Studio ca SQL Server 2005: Nh gii thiu trn, SQL Server Management Studio l cng c tch hp SQL Server Enterprise Manager ca phin bn 2000 nn ta c th s dng to database tng t nh phin bn 2000. Cch to nh sau: 1. M rng cc i tng trn th hin ca SQL trong ca s Object Explorer mun to Database. 2. Right click ln mc Database\ chn New Database xut hin ca s New Database (Hnh 3.22).

Hnh 3.22. Ca s New Database. Trong ca s New Database, ti tab General ta thc hin in cc thng s cho cc mc nh sau: + Database name: in tn Database mun to + Owner: Ch nh tn cc Logins s hu Database ang to. chn cc logins ta click vo nt xut hin ca s Select Database Owner (Hnh 3.23). Trong mc Enter the Object names to select ta nhp tn cc logins hoc chn ntBin son: Chu Th Hng B mn: Cc h thng thng tin Khoa Cng ngh Thng tin

Bi ging H qun tr CSDL

53

Browse lit k v chn cc logins trong ca s Browse for Objects (Hnh 3.24)

Hnh 3.23. Ca s Select Database Owner.

Hnh 3.24. Ca s Browse for Objects. + Database files: Thc hin chn cc thuc tnh cho cc files database, bao gm: o Logical name: Tn logic ca file database. o File Type: Kiu file (Data, Log)

Bin son: Chu Th Hng

B mn: Cc h thng thng tin

Khoa Cng ngh Thng tin

Bi ging H qun tr CSDL

54

o Filegroup: Ch nh nhm file. o Initial Size (MB): Kch thc khi to dung lng cc file, tnh theo MB. o Autogrowth: Ch nh cc tham s t ng gia tng dung lng cho cc file. Click vo nt xut hin ca s Change Autogrowth for MyDB (Hnh 3.25) cho php khai bo cc tham s Autogrowth: Ty chn Enable Autogrowth cho php t ng gia tng; File Growth ch nh t ng gia tng theo phn trm (In Percent) hoc theo dung lng ch nh (In Megabytes); Maximum File Size nh ngha gia tng ca file n dung lng ln nht.

Hnh 3.25. Ca s Change Autogrowth for MyDB o Path: Ch nh ng dn vt l lu tr cc files database. Click nt thay i ng dn mc nh.

Bin son: Chu Th Hng

B mn: Cc h thng thng tin

Khoa Cng ngh Thng tin

Bi ging H qun tr CSDL

55

* S dng T-SQL Ta c th s dng T-SQL hay script to Database, vi cch ny ta cn hiu r v cc c php cu lnh trong SQL Server to Database. CREATE DATABASE database_name [ ON [ PRIMARY ] [ [ ,...n ] [ , [ ,...n ] ] [ LOG ON { [ ,...n ] } ] ] ] [;] attach mt database:CREATE DATABASE database_name ON [ ,...n ] FOR { ATTACH | ATTACH_REBUILD_LOG } [;] ::= { ( NAME = logical_file_name , FILENAME = 'os_file_name' [ , SIZE = size [ KB | MB | GB | TB ] ] [ , MAXSIZE = { max_size [ KB | MB | GB | TB ] | UNLIMITED } ] [ , FILEGROWTH = growth_increment [KB | MB | GB | TB | % ] ] ) [ ,...n ] } ::= { FILEGROUP filegroup_name [ DEFAULT ] [ ,...n ] }

Cc tham s trong : database_name: L tn ca CSDL. Nu tn ca file d liu (data file) khng c ch nh th SQL Server s dng database_name l tn cho logical_file_name v os_file_name.Bin son: Chu Th Hng B mn: Cc h thng thng tin Khoa Cng ngh Thng tin

Bi ging H qun tr CSDL

56

ON Ch nh nh ngha cc file trn a c s dng lu tr cc phn d liu ca database, data files. PRIMARY Ch nh ny lin quan n danh sch nh ngha primary file . File u tin c ch nh trong ca nhm filegroup primary filegroup tr thnh file primary. Mt database ch c th duy nht mt file primary. Nu t kha PRIMARY khng c ch nh th file u tin trong danh sch cc fie ca cu lnh CREATE DATABASE s tr thnh file primary. LOG ON Ch nh nh ngha file log lu tr trn a, log files. FOR ATTACH Ch nh database c to bng vic attach tp cc file h thng tn ti. FOR ATTACH c cc yu cu sau: Cc files data (MDF v NDF) phi tn ti. Nu nhiu files log tn ti, th tt c phi sn c.

FOR ATTACH_REBUILD_LOG Ch nh database c to bng vic attach tp cc file h thng tn ti. Nu mt hoc nhiu files log giao dch b li th file log s c xy dng li. iu khin cc thuc tnh ca file. -

NAME logical_file_name: Ch nh tn logical cho file. NAME c yu cu khi FILENAME c ch nh. FILENAME os_file_name: Ch nh tn, ng dn file h iu hnh (file vt l). SIZE size: Ch nh kch thc file.B mn: Cc h thng thng tin Khoa Cng ngh Thng tin

Bin son: Chu Th Hng

Bi ging H qun tr CSDL

57

-

MAXSIZE max_size: Ch nh kch thc ln nht m file c th pht trin n. T kha UNLIMITED ch nh file c pht trin cho n khi a b y. FILEGROWTH growth_increment: Ch nh t ng gia tng ca file.

-

iu khin cc thuc tnh ca filegroup.-

FILEGROUP filegroup_name: Ch nh tn logical ca filegroup. DEFAULT: Ch nh tn filegroup l filegroup mc nh trn database.

-

V d 3.1. a ra mt cch to Database MyDB vi tp tin d liu chnh l MyDB_Data.mdf, dung lng khi to l 1MB v ti a l 10MB v gia tng kch thc l 10%. Tp tin bn ghi giao dch l MyDB_Log.ldf vi dung lng ban u l 2MB v kch thc ti a khng gii hn, gia tng dung lng l 10MB. to script (dng T- SQL) ta m ca s query son tho: i vi SQL Server 2000: Vo Start/Programs/Microsoft SQL Server/Query Analyzer, xut hin hp thoi Connect to SQL Server, trong danh sch server chn server cc b my mnh v nhp on m lnh sau. i vi SQL Server 2005: Trong ca s SQL Server Management Studio, trn thanh Standard chn nt New Query to ca s truy vn kt ni n th hin SQL ang c kt ni hoc nt Database Engine Query xut hin ca s kt ni (Hnh 3.8) ta thc hin kt ni n th hin SQL m mun thc hin trn . Xut hin ca s truy vn ta thc hin nhp on m lnh sau:Use master go create database MyDBT On ( Name= MyDBT_Data,

-

Bin son: Chu Th Hng

B mn: Cc h thng thng tin

Khoa Cng ngh Thng tin

Bi ging H qun tr CSDL

58

FileName='E:\Tempt\MyDBT_Data.mdf', Size=10MB, MaxSize=100MB, FileGrowth=10% ) Log On ( Name= MyDBT_log, FileName='E:\Tempt\MyDBT_Log.ldf', Size=2MB, MaxSize=UNLIMITED, FileGrowth=10% )

-

Click nt Execute hoc F5 chy.

c) Xa Database * Dng Enterprise Manager trong SQL Server 2000: Trong Enterprisse Manager, chn nhm server cc b v m rng mc Database. Sau right click ln CSDL mun xa v chn Delete Database. Xut hin hp thoi xc nhn xa v chn Yes. * S dng SQL Server Management Studio ca SQL Server 2005: xa mt database ta ng nhp vo SQL Server Management Studio vi mt login c quyn xa database v thc hin cc bc sau: 1. M rng cc i tng trn th hin ca SQL trong ca s Object Explorer mun xa Database. 2. M rng mc Database v Right click ln database mun xa v chn Delete xut hin ca s Delete Object chn OK xa. * Dng T-SQL xa Database ta s dng c php sau: DROP DATABASE database_name [ ,...n ] V d: nhp on T-SQL sau xa Database MyDB.Use master Go Drop Database MyDB Go

Bin son: Chu Th Hng

B mn: Cc h thng thng tin

Khoa Cng ngh Thng tin

Bi ging H qun tr CSDL

59

3.2.2.Bng - Table Trc khi i vo cc thao tc i vi bng, ta xt cc kiu d liu c s dng trong SQL Server. a) Cc kiu d liu Kiu d liu bigint binary[(n)] S nguyn 8 byte. D liu nh phn c kch thc c nh n byte. Kch thc lu tr l n+4 byte. Vi 1 7 AND 6 < 15

ANY

5 > ANY (SELECT qty FROM sales)

BETWEEN Kim tra gi tr c nm gia phm vi c ch nh hay khng. Tr v gi tr TRUE nu n nm trong khong gi tr v ngc li tr gi tr FALSE. EXISTS Kim tra xem c gi tr no tr v khi thc hin mt cu truy vn. Nu c cc gi tr tr v th ton t cho gi tr TRUE, ngc li tr v gi tr FALSE. Kim tra xem mt gi tr c tn ti trong mt tp cc gi tr hay khng. Nu gi tr m thuc tp gi tr th ton t tr v gi tr TRUE, ngc li tr v gi tr FALSE. Dng so khp cc gi tr vi mt mu theo t kha LIKE. N s tr v gi tr TRUE nu khp vi mu ngc li tr v gi tr FALSE. K t % i din cho mt dy k t bt k, _ i din cho mt k t bt k.

5 BETWEEN (3 AND 10)

EXISTS (SELECT * FROM test)

IN

5 IN (SELECT qty FROM sales)

LIKE

SELECT name WHERE name LIKE S%

Bin son: Chu Th Hng

B mn: Cc h thng thng tin

Khoa Cng ngh Thng tin

Bi ging H qun tr CSDL

151NOT 5 > 2 5 > 2 OR 10 < 3

NOT OR

Dng ph nh mt biu thc Boolean. Kt hp v so snh gia hai biu thc Boolean, nu mt trong hai biu thc l TRUE th n tr v gi tr TRUE v ngc li n tr v gi tr FALSE. So snh mt gi tr v hng vi mt tp cc gi tr ca mt ct c ly t mt cu truy vn con. N s tr v gi tr TRUE nu c bt c gi tr no trong ct tr v gi tr TRUE. Nu khng c mt gi tr no tr v gi tr TRUE th n tr v gi tr FALSE. SOME tng t nh ton t ANY.

SOME

5 > SOME (SELECT * FROM sales)

- Ton t ghp chui (+): Dng ghp hai chui vi nhau thnh mt chui. Ton t ghp chui c dng vi cc kiu d liu char, varchar, nchar, nvarchar, text, v ntext.SELECT 'This' + ' is a test.'

- Ton t bit: Thc hin thao tc vi cc bit-lavel vi cc kiu d liu Integer. Cc ton t c cho trong bng 4.2. Bng 4.2. Cc ton t Bitwise Ton t & ngha Thc hin AND gia cc bit tng ng gia hai biu din nh phn ca hai s integer. Thc hin OR gia cc bit tng ng gia hai biu din nh phn ca hai s integer. Thc hin XOR gia cc bit tng ng gia hai biu din nh phn ca hai s integer. (hai bit ging nhau tr v bit 0, khc nhau tr v bit 1) V d7 & 51 = 3 ( 7=111, 51=110011, 3=11) 7 | 51 = 55

| ^

7 ^51 = 52

Bin son: Chu Th Hng

B mn: Cc h thng thng tin

Khoa Cng ngh Thng tin

Bi ging H qun tr CSDL

152~7 = -8

~

Thc hin NOT ca biu thc biu din nh phn ca mt s nguyn b) Cu trc lp

SQL Server cung cp hai cu trc lp l: cu trc WHILE v GOTO. Cu trc lp WHILE: Cu lnh WHILE s kim tra iu kin trc khi thc hin lnh. Mt khi lnh l mt tp cc cu lnh c bao trong cp t kha BEGIN END. C php: WHILE Boolean_expression {sql_statement| statement_block} [BREAK] {sql_statement| statement_block} [CONTINUE] trong : + Boolean_expression: L biu thc iu kin kim tra iu kin lp. Vng lp s c thc hin khi biu thc tr v gi tr True v kt thc vng lp khi tr v gi tr False. + sql_statement|statement_block: l cu lnh SQL hoc khi cc cu lnh SQL s c lp li trong cu lnh While. Khi cc cu lnh SQL c bao trong cp t kha BEGIN END + BREAK: T kha dng ch nh dng vic thc thi vng lp hin ti. Tt c cc cu lnh sau t kha BREAK v trc t kha END s b b qua. + CONTINUE: T kha dng restart li vng lp hin ti ti v tr bt u. Tt c cc cu lnh sau t kha CONTINUE v trc t kha END s b b qua. V d 4.5. S dng cu trc lp WHILE n gin.Use pubs go CREATE TABLE WhileLoopTest ( LoopID INT, Bin son: Chu Th Hng B mn: Cc h thng thng tin Khoa Cng ngh Thng tin

Bi ging H qun tr CSDL

153

LoopValue VARCHAR(32) ) GO SET NOCOUNT ON DECLARE @intCounter INT DECLARE @vchLoopValue VARCHAR(32) SELECT @intCounter = 1 WHILE (@intCounter 10 THEN 'Number is greater than 10.' END RETURN END SELECT CASE CONVERT(INT, @chrNumber) WHEN 1 THEN 'One' WHEN 2 THEN 'Two' WHEN 3 THEN 'Three' WHEN 4 THEN 'Four' WHEN 5 THEN 'Five' WHEN 6 THEN 'Six' WHEN 7 THEN 'Seven' WHEN 8 THEN 'Eight' WHEN 9 THEN 'Nine' WHEN 10 THEN 'Ten' END

d) Cu trc WAITFOR Cu trc WaitFor c dng ngn vic thc thi mt l, th tc, hay mt giao dch cho n mt thi im no hoc sau mt khong thi gian no . C php ca WAITFOR nh sau: WAITFOR { DELAY 'time' | TIME 'time' } Trong : + DELAY: Ch nh khong thi gian phi ch. Ti a l 24 gi. + TIME: Ch nh thi im thc thi mt l, th tc, hay mt giao dch.

Bin son: Chu Th Hng

B mn: Cc h thng thng tin

Khoa Cng ngh Thng tin

Bi ging H qun tr CSDL

158

V d 4.9. S dng cu trc WAITFOR ch n lc 21h30 th thc hin xa bn ghi.BEGIN WAITFOR TIME '21:30' DELETE FROM DMLOP WHERE MALOP='TH6A' END

V d 4.10. Xy dng th tc time_delay ch trong mt khong thi gian no v a ra thng bo khong thi gian ch .CREATE PROCEDURE time_delay @DELAYLENGTH char(9) AS DECLARE @RETURNINFO varchar(255) BEGIN WAITFOR DELAY @DELAYLENGTH SELECT @RETURNINFO = 'A total time of ' + SUBSTRING(@DELAYLENGTH, 1, 2) + ' hours, ' + SUBSTRING(@DELAYLENGTH, 4, 2) + ' minutes, and ' + SUBSTRING(@DELAYLENGTH, 7, 2) + ' seconds ' + 'has elapsed! Your time is up.'; PRINT @RETURNINFO; END; GO -- This next statement executes the time_delay procedure. EXEC time_delay '00:05:00' GO

e) Cu trc TRYCATCH Trong SQL Server 2005, cu trc TRY CATCH c s dng qun l li tng t nh cc ngn ng lp trnh VB.NET, C# v C++. C php: BEGIN TRY { sql_statement | statement_block } END TRY BEGIN CATCH { sql_statement | statement_block } END CATCH[ ; ] Hot ng ca cu trc TRY CATCH: + Cu trc TRYCATCH gm hai phn: Khi TRY v khi CATCH. Khi mt iu kin li c d thy mt cu lnh Transact-SQL thuc khi TRY, iu khin c chuyn sang khiBin son: Chu Th Hng B mn: Cc h thng thng tin Khoa Cng ngh Thng tin

Bi ging H qun tr CSDL

159

CATCH x l. Sau khi khi CATCH iu khin ngoi l, iu khin c chuyn cho cu lnh Transact-SQL ngay sau lnh END CATCH. + Nu khng li trong khi TRY, iu khin c chuyn ngay lp tc cho cu lnh sau END CATCH. V d 4.11. S dng cu trc TRY CATCH iu khin li.BEGIN TRY INSERT INTO [QLDiemSV].[dbo].[DMLOP]([MaLop],[TenLop], [Khoa]) VALUES ('TH6A','Tin hc 6A','6') END TRY BEGIN CATCH Print ERROR_MESSAGE() END CATCH

V d 4.11. Xy dng th tc a ra thng tin li.USE QLDiemSV; GO BEGIN TRANSACTION; BEGIN TRY -- Generate a constraint violation error. DELETE FROM LOP WHERE MaLop='TH5A'; END TRY BEGIN CATCH SELECT ERROR_NUMBER() AS ErrorNumber, ERROR_SEVERITY() AS ErrorSeverity, ERROR_STATE() as ErrorState, ERROR_PROCEDURE() as ErrorProcedure, ERROR_LINE() as ErrorLine, ERROR_MESSAGE() as ErrorMessage; IF @@TRANCOUNT > 0 ROLLBACK TRANSACTION; END CATCH; IF @@TRANCOUNT > 0 COMMIT TRANSACTION; GO

f) Functions - Hm Hm c dng hoc l nh dng v thao tc d liu hoc l tr v thng tin cho ngi s dng. C hai loi hm: hm do h thng nh nghaBin son: Chu Th Hng B mn: Cc h thng thng tin Khoa Cng ngh Thng tin

Bi ging H qun tr CSDL

160

hoc hm do ngi dng nh ngha. Hm do h thng nh ngha c to do Microsoft v c ci t khi SQL Server ci t. Hm do ngi dng nh ngha c nh ngha bi ngi s dng bng cch s dng cu lnh CREATE FUNCTION . i vi loi hm ny ta s tho lun chng trong phn tip theo ca chng. Cc hm do h thng nh ngha c chia thnh cc kiu hm sau: String functions, Date functions, Mathematical functions, aggregate Functions, System functions,.v.v... String functions: L cc hm thao tc vi d liu kiu k t. Sau y l mt s hm thng dng. +CHARINDEX(string1, string2, start_position):

Tm v tr bt u ca chui k t ch nh string1 trong chui string2 v bt u tm v tr start_position trong chui string2. V d 4.9. S dng hm CHARINDEXSELECT CHARINDEX('test', 'This is a test', 1)

Hm s tr v gi tr 11, v tr bt u ca chui test trong chui 'This is a test'.+ LEFT (string, number_of_characters):

Tr v

chui gm number_of_characters k t tnh t tri sang ca chui string. V d 4.10. S dng hm LEFTSELECT LEFT(This is a test, 4)

Hm s tr v chui This+ LEN(string): Xc nh di ca chui k t string.

V d 4.11. S dng hm LENSELECT LEN(This is a test)

Hm s tr v gi tr 14+ LOWER(string): Hm tr v chui k t thng.

Bin son: Chu Th Hng

B mn: Cc h thng thng tin

Khoa Cng ngh Thng tin

Bi ging H qun tr CSDL

161

V d 4.12. S dng hm LOWERSELECT LOWER(This is a TEST)

Hm s tr v chui this is a test+ LTRIM(string): Ct b cc k t trng bn tri ca

chui. V d 4.13. S dng hm LTRIMSELECT LTRIM( This is a test )

Hm s tr v chui This is a test+ RIGHT (string,

number_of_characters): tr v

chui gm number_of_characters k t tnh t phi sang ca chui string. V d 4.14. S dng hm RIGHTSELECT RIGHT(This is a test, 4)

Hm s tr v chui test+ RTRIM(string): Ct b cc k t trng bn phi ca chui.

V d 4.15. S dng hm RTRIMSELECT RTRIM( This is a test )

Hm s tr v chui +

This is a test

SUBSTRING ( expression ,start , length ): Hm

tr v chui con gm length k t ca expression tnh t v tr start.SELECT x = SUBSTRING('abcdef', 2, 3) + UPPER(string): Chuyn i cc k thng thnh ch hoa.

V d 4.16. S dng hm UPPERSELECT UPPER(This is a TEST)

Hm s tr v chui THIS IS A TEST Ch : Cn phi cn thn khi s dng cc hm, chng hn khi ta s dng hm UPPER trong v tri ca ton t so snh. Khi n s bt SQL Server

Bin son: Chu Th Hng

B mn: Cc h thng thng tin

Khoa Cng ngh Thng tin

Bi ging H qun tr CSDL

162

phi thc hin trn mt bng tm kim gi tr. Ta xt hai truy vn trong v d 4.17 sau:select au_lname from authors where au_lname = Green select au_lname from authors where upper(au_lname) = Green

i vi truy vn th hai, s dng hm Upper mt thi gian lu hn so vi truy vn th nht. Date Functions: L cc hm lm vic vi d liu kiu datetime. Mt s hm lm vic vi cc kiu thng tin c bit c gi l datepart. Trc khi i vo cc hm, ta xt cc k hiu ca datepart cho trong bng 4.3. Bng 4.3. Cc thnh phn datepart K hiu datepart yy yyyy q qq m mm dy y d dd wk ww dw hh mi n ss datepart Year (nm) Year (nm) Quarter (qu) Quarter (qu) Month (thng) Month (thng) Dayofyear Dayofyear Day Day Week Week weekday hour Minute minute Second

Bin son: Chu Th Hng

B mn: Cc h thng thng tin

Khoa Cng ngh Thng tin

Bi ging H qun tr CSDL

163

s ms Sau y l mt s hm hay s dng:+

Second millisecond

DATEADD (datepart, amount, date): Cng thm

mt s amount thi gian thnh phn datepart ca date. V d 4.17. S dng hm DATEADDSELECT DATEADD(year, 1, GETDATE()))

Hm s tr v ngy hin ti cng thm mt nm.+ DATEDIFF (datepart, date1, date2): So snh

im khc nhau gia hai ngy bng vic s dng tham s datepart. V d 4.18. S dng hm DATEDIFFSELECT DATEDIFF(hour, 1/1/2008 12:00:00, 1/1/2008 16:00:00)

Hm s tr v gi tr 4. y l im khc nhau gia hai ngy, hai ngy chnh nhau 4 gi.SELECT DATEDIFF(hour, 1/1/2008 12:00:00, 1/2/2008 16:00:00)

Hm s tr v gi tr 28. y l im khc nhau gia hai ngy, hai ngy chnh nhau 28 gi.+ DATEPART(datepart, date): Hm tr v gi tr ca

thnh phn datepart trong date. V d 4.19. S dng hm DATEPARTSELECT DATEPART(month, 1/1/2008 16:00:00)

Hm s tr v gi tr thng 1.+ DAY(date): Xc nh s ngy ca thng trong d liu

ngy gi date.

Bin son: Chu Th Hng

B mn: Cc h thng thng tin

Khoa Cng ngh Thng tin

Bi ging H qun tr CSDL

164

V d 4.20. S dng hm DAYSELECT DAY ('7/22/1979 00:04:00')

Hm s tr v gi tr ngy l 22. + + +GETDATE(): Tr v gi tr ngy hin ti ca h thng. MONTH(date): Tng t nh hm DAY, hm MONTH

tr v thng ca d liu ngy gi.YEAR(date): Tr v nm ca d liu ngy gi.

Mathematical Functions: Sau y ta trnh by mt s hm ton hc thng thng. + + + + + + ABS(number): Tr v gi tr tuyt i ca s number. CEILING(number): Tr v s nguyn nh nht ln hn hoc bng number.FLOOR(number): Tr v s nguyn ln nht nh hn

hoc bng number. ROUND(number,precision): Hm lm trn s number ly precision ch s sau du thp phn. SQUARE(number): Hm tr v gi tr bnh phng s number. SQRT(number): Hm tr v gi tr cn bc hai s number. Aggregate Functions: Cc hm tp hp thc hin tnh ton trn mt tp hp cc gi tr v tr v mt gi tr n. Ngoi tr hm COUNT, hm tp hp b qua cc gi tr NULL. Cc hm tp hp thng s dng vi mnh GROUP BY trong khi cu lnh SELECT. Hm tp hp c php dng nh l cc biu thc trong trng hp: o Trong danh sch select ca khi cu lnh SELECT.

Bin son: Chu Th Hng

B mn: Cc h thng thng tin

Khoa Cng ngh Thng tin

Bi ging H qun tr CSDL

165

o Trong mnh COMPUTE hoc COMPUTE BY . o Trong mnh HAVING Sau y l mt s hm tp hp hay c s dng: + AVG ([ALL|DISTINCT]expression): Hm tr v gi tr trung bnh ca tp cc gi tr trong mt nhm. ALL: p dng cho cc hm tp hp ch nh cho tt c cc gi tr. ALL l t kha mc nh. DISTINCT:Ch nh ch ly mt th hin duy nht ca mt gi tr. Ngha l trong tp hp c nhiu phn t c cng mt gi tr th ch ly mt gi tr i din cho n. V d 4.21. S dng hm AVGUSE pubs SELECT AVG(advance), SUM(ytd_sales) FROM titles WHERE type = 'business'

+

COUNT({[ALL|DISTINCT]expression]|*}): Hm tr v kiu int s cc phn t ca mt nhm. Ch . S dng hm COUNT COUNT(*): Tr v s cc phn t trong mt nhm bao gm c gi tr NULL v gi tr duplicates. COUNT(ALL expression): Thc hin nh gi tr cho expression ti mi dng trong nhm v tr v s cc gi tr khng NULL. COUNT(DISTINCT expression): Thc hin nh gi tr cho expression ti mi dng trong nhm v tr v s cc gi tr duy nht v khng NULL. V d 4.22. S dng hm COUNTUSE pubs

Bin son: Chu Th Hng

B mn: Cc h thng thng tin

Khoa Cng ngh Thng tin

Bi ging H qun tr CSDL

166

GO SELECT COUNT(DISTINCT city) FROM authors GO

+

COUNT_BIG({[ALL|DISTINCT]expression}|*): Tr v s cc phn t trong mt nhm. Hm COUNT_BIG lm vic nh hm COUNT. im khc nhau gia chng l hm COUNT tr v gi tr kiu int cn hm COUNT_BIG tr v gi tr kiu bigint.

+ + +

MAX ([ALL|DISTINCT]expression): Tr v gi tr ln nht trong biu thc expression. MIN ([ALL|DISTINCT]expression): Tr v gi tr ln nht trong biu thc expression. SUM([ALL|DISTINCT]expression): Tr v tng ca tt c cc gi tr ca biu thc hoc tng cc gi tr DISTINCT ca biu thc expression. Hm SUM ch p dng cho cc ct kiu s. Cc gi tr NULL c b qua. V d 4.23. S dng hm SUMUSE pubs GO -- Aggregate functions SELECT type, SUM(price), SUM(advance) FROM titles WHERE type LIKE '%cook' GROUP BY type ORDER BY type GO

V d 4.24. S dng hm SUM tnh im trung bnh trong CSDL QLDiemSVSELECT DIEM.Masv,(Convert(real, Sum( dbo.fncDiemCN(DiemL1,DiemL2)*MONHOC.SD

Bin son: Chu Th Hng

B mn: Cc h thng thng tin

Khoa Cng ngh Thng tin

Bi ging H qun tr CSDL

167

VHT))/convert(real,Sum(MONHOC.SDVHT))) AS DTB FROM DIEM INNER JOIN MONHOC ON DIEM.MAMH=MONHOC.MaMH GROUP BY DIEM.MaSV

System Functions: Cc hm h thng l cc hm ly thng tin h thng v cc i tng v thit lp trong SQL Server. + CONVERT i biu data_type. V d 4.25. S dng hm CONVERTSELECT CONVERT(VARCHAR(5), 12345)

(data_type, thc

expression): Chuyn thnh kiu d liu

expression

Hm s tr v chui 12345. + + CAST (expression AS data_type): Chuyn i biu thc expression thnh kiu d liu data_type. CURRENT_USER: Tr v ngi s dng hin ti. V d 4.26. S dng hm CURRENT_USERSELECT CURRENT_USER

+ +

DATALENGTH(expression): Tr v s byte c s dng trong biu thc expression. HOST_NAME(): tr v tn my tnh m ngi s dng hin ti ang login. V d 4.27. S dng hm HOST_NAME()SELECT HOST_NAME()

+

SYSTEM_USER: Hm tr v tn ca cc User ang login h thng. V d 4.28. S dng hm SYSTEM_USERSELECT SYSTEM_USER

Bin son: Chu Th Hng

B mn: Cc h thng thng tin

Khoa Cng ngh Thng tin

Bi ging H qun tr CSDL

168

+

USER_NAME(): Hm tr v username khi a s user ID. V d 4.29. S dng hm USER_NAME()SELECT name FROM USER_NAME(uid) = 'dbo' sysobjects WHERE

4.2. Cc store procedure Cc th tc 4.2.1. Khi nim Store Procedure l mt tp cc pht biu T-SQL m SQL Server bin dch thnh mt k hoch thc thi n. Ln u tin khi SQL Server thc thi store procedure th n bin dch store procedure thnh k hoch v lu trong b nh m. Mi khi gi thc hin store procedure ny th n s dng li k hoch ny m khng phi bin dch li ln na. T- SQL store procedure tng t nh cc ngn ng lp trnh khc, chng chp nhn cc tham s nhp, tr v gi tr xut thng qua tham s hoc tr v thng ip cho bit th tc thnh cng hay tht bi. Cc ng dng c th giao tip vi SQL Server thng qua hai cch: + Chng trnh ng dng gi cc pht biu T-SQL t client n server. Cc pht biu ny c gi qua mng v c SQL Server bin dch li mi khi thc thi chng. + To store procedure, chng c lu v bin dch thnh mt k hoch server. Nh vy vi cch ny, s dng store procedure s gim c lu thng mng, hiu qu nhanh hn so vi cch gi cc pht biu T-SQL. 4.2.2. To store procedure C php: CREATE {PROC|PROCEDURE}[schema_name.] procedure_name [ ; number ] [{@parameter [type_schema_name.] data_type } [VARYING][= default ][[ OUT|OUTPUT ] [,...n ]

Bin son: Chu Th Hng

B mn: Cc h thng thng tin

Khoa Cng ngh Thng tin

Bi ging H qun tr CSDL

169

[ WITH [ ,...n ] AS { [ BEGIN ] statements [ END ] } [;] ::= [ ENCRYPTION ] [ RECOMPILE ] Trong : + procedure_name: l tn ca store procedure s c to. + parameter: L cc tham s truyn vo store procedure, ta phi nh ngha chng trong phn khai bo ca store procedure. Khai bo bo gm tn ca tham s (trc tn tham s s dng tin t @), kiu d liu ca tham s v mt s ch nh c bit ph thuc vo mc ch s dng ca tham s . + ; number: L s nguyn ty chn c s dng trong nhm cc th tc c cng tn. + data type: Kiu ca tham s trong phn khai bo. + [VARYING]: y l ty chn c ch nh khi cursor tr v nh mt tham s. + [= default] : Gn gi tr mc nh cho tham s. Nu khng gn gi tr mc nh th tham s nhn gi tr NULL. + OUTPUT: y l t kha ch nh tham s l tham s xut. Tham s xut khng dng c vi kiu d liu Text v image. + [,...n]: Ch nh rng c th khai bo nhiu tham s. + RECOMPILE:Ch nh Database Engine khng xy dng k hoch cho th tc ny v th tc s c bin dch ti thi im thc thi th tc. + ENCRYPTION:Ch nh SQL Server s m ha bn text lnh CREATE PROCEDURE. Users khng th truy cp vo cc bng h thng hoc file d liu truy xut bn text m ha.

Bin son: Chu Th Hng

B mn: Cc h thng thng tin

Khoa Cng ngh Thng tin

Bi ging H qun tr CSDL

170

* Thc thi store procedure trong SQL Server: thc thi mt th tc trong SQL Server ta s dng c php sau: { EXEC | EXECUTE } { module_name [ ;number ]} [ [ @parameter = ] { value | @variable [ OUTPUT ] | [ DEFAULT ] } ] [ ,...n ] [ WITH RECOMPILE ] Trong : + module_name: L tn th tc cn thc hin. + ;number: Ch nh th tc trong nhm th tc cng tn. + @parameter: Tn tham s trong th tc. + @variable: Ch nh bin cha cc tham s hoc tr v tham s. + DEFAULT: Ch nh ly gi tr mc nh ca bin. V d 4.30. Xy dng th tc XemDSSV.Use QLDiemSV Go IF EXISTS(Select name from sysobjects where name ='p_DSSV' and type='p') DROP PROCEDURE p_DSSV GO CREATE PROCEDURE p_DSSV AS SELECT MaSV, Hodem + ' '+TensV as Hoten, Ngaysinh, MaLop From HOSOSV GO

- Thc thi th tc p_DSSVUse QLDiemSV Go EXEC p_DSSV Bin son: Chu Th Hng B mn: Cc h thng thng tin Khoa Cng ngh Thng tin

Bi ging H qun tr CSDL

171

* Truyn tham s nhp vo trong store procedure. V d 4.32. Xy dng th tc pp_DSSV hin th danh sch sinh vin theo tham s m lp. M lp c truyn vo khi th tc c thc hin.Use QLDiemSV Go IF EXISTS(Select name from sysobjects where name ='p_DSSV' and type='p') DROP PROCEDURE p_DSSV GO CREATE PROCEDURE p_DSSV @parMaLop Varchar(10)='TH%' AS SELECT MaSV, Hodem + ' '+TensV as Hoten, Ngaysinh From HOSOSV Where MaLop like @parMaLop GO

Gi thc thi th tc trn vi truyn gi tr cho tham s nhp nh sau:EXEC p_DSSV TH03A EXEC p_DSSV @parMaLop=DEFAULT

* S dng tham s xut trong store procedure. V d 4.33. Xy dng th tc pp_Siso xut gi tr s s ca mt lp theo tham s m lp. M lp c truyn vo khi th tc c thc hin.Use QLDiemSV Go IF EXISTS(Select name from sysobjects ='pp_Siso' and type='p') DROP PROCEDURE pp_Siso GO CREATE PROCEDURE pp_Siso @parMaLop Char(10), @parSiso Int OUTPUT AS SELECT @parSiso=count(*) From HOSOSV Where MaLop=@parMaLop GO DECLARE @siso int

where

name

Bin son: Chu Th Hng

B mn: Cc h thng thng tin

Khoa Cng ngh Thng tin

Bi ging H qun tr CSDL

172

exec pp_Siso 'TH03A',@parSiso=@siso OUTPUT Print 'Si so lop TH03A l :'+ convert(varchar(3),@siso) Go

Kt qu thc hin chng trnh:Si so lop TH03A l :12

* S dng bin cc b: Cc bin cc b c s dng trong b lnh, trong chng trnh gi (Scipt) hoc trong th tc (xem v d 4.5 v 4.6). Bin cc b thng c gi cc gi tr s c kim tra trong pht biu iu kin v gi gi tr s c tr v bi lnh RETURN. Phm v ca bin cc b trong store procedure l t im bin c khai bo cho n khi thot store procedure. Ngay khi store procedure kt thc th bin khng c tham chiu na. C php khai bo bin cc b: DECLARE [AS] Ging nh khai bo cc bin trn, trc tn bin phi c tin t @. Gi tr khi to ban u ca bin l NULL. thit lp gi tr ca bin ta s dng c php: SET = SELECT = * Cu lnh PRINT: Dng hin th chui thng bo ti ngi s dng. Chui thng bo ny n th di ti 8000 k t. C php ca lnh PRINT nh sau: PRINT < messages> * S dng SELECT tr v gi tr: Ta c th tr v gi tr bng vic s dng SELECT trong th tc hoc tr v kt qu thit lp t truy vn SELECT. V d 4.34. Xy dng th tc pp_Siso xut gi tr s s ca mt lp theo tham s m lp ra ngoi. M lp c truyn vo khi th tc c thc hin.Use QLDiemSV Go

Bin son: Chu Th Hng

B mn: Cc h thng thng tin

Khoa Cng ngh Thng tin

Bi ging H qun tr CSDL

173

IF EXISTS(Select name from sysobjects where name ='pp_Siso' and type='p') DROP PROCEDURE pp_Siso GO CREATE PROCEDURE pp_Siso @parMaLop Char(10), @parSiso Int OUTPUT AS SELECT @parSiso=count(*) From HOSOSV Where MaLop=@parMaLop GO DECLARE @siso int exec pp_Siso 'TH03A',@parSiso=@siso OUTPUT SELECT 'Si so lop TH03A l :'= @siso Go

* Lnh RETURN: Ta c th s dng lnh RETURN thot khng iu kin khi th tc. Khi lnh RETURN c thc thi trong th tc, khi cc cu lnh sau RETURN trong th tc s b b qua v thot khi th tc tr v dng lnh tip theo trong chng trnh gi. Ngoi ra, ta c th s dng lnh RETURN tr v gi tr cho chng trnh gi, gi tr tr v phi l mt s nguyn, n c th l mt hng s hoc mt bin. C php nh sau: RETURN [ integer_expression ] V d 4.35. Cho CSDL pubs. Xy dng th tc usp_4_31 kim tra mt ch c tn ti trong bng titles hay khng? Nu tn ti mt ch th hin th ch . Nu khng tn ti ch th th tc tr v gi tr 1 hoc c nhiu hn mt ch th tr v gi tr 2.Use pubs Go IF EXISTS(Select name from sysobjects where name ='usp_4_31' and type='p') DROP PROCEDURE usp_4_31 GO CREATE PROCEDURE usp_4_31 @vchTitlePattern VARCHAR(80) = '%' AS SELECT @vchTitlePattern = '%' + @vchTitlePattern + '%' IF (SELECT COUNT(*) FROM titles WHERE title LIKE @vchTitlePattern) < 1 BEGIN RETURN 1 END IF (SELECT COUNT(*) FROM titles WHERE title LIKE @vchTitlePattern) > 1 Bin son: Chu Th Hng B mn: Cc h thng thng tin Khoa Cng ngh Thng tin

Bi ging H qun tr CSDL

174

BEGIN RETURN 2 END SELECT title, price FROM titles WHERE title LIKE @vchTitlePattern RETURN 0 GO DECLARE @intReturnValue INT EXEC @intReturnValue = usp_4_31 'Tin hoc' IF (@intReturnValue = 1) BEGIN PRINT 'There are no corresponding titles.' END IF (@intReturnValue = 2) BEGIN PRINT 'There are multiple titles that match this criteria. Please narrow your search.' END GO

4.2.3.Thay i, xa, xem ni dung store procedure a) Thay i store procedure C php: ALTER {PROC|PROCEDURE}[schema_name.] procedure_name [ ; number ] [{@parameter [type_schema_name.] data_type } [VARYING][= default ][[ OUT|OUTPUT ] [,...n ] [ WITH [ ,...n ] AS { [ BEGIN ] statements [ END ] } [;] ::= [ ENCRYPTION ] [ RECOMPILE ] V d 4.36. Ta sa li th tc p_DSSV trong v d 4.32 nh sau:Use QLDiemSV Go ALTER PROCEDURE p_DSSV @parMaLop Char(10) AS SELECT MaSV, Hodem, TensV, Ngaysinh Bin son: Chu Th Hng B mn: Cc h thng thng tin Khoa Cng ngh Thng tin

Bi ging H qun tr CSDL

175

GO

From HOSOSV Where MaLop=@parMaLop

b) Xa store procedure C php: DROP{ PROC|PROCEDURE}{[schema_name.] procedure } V d 4.37. Xa th tc p_DSSV:Use QLDiemSV Go DROP PROCEDURE p_DSSV Go

c) Xem ni dung store procedure xem ni dung ca th tc ta s dng th tc h thng sp_helptext. V d 4.38. Xem ni dung th tc pp_DSSV:Use QLDiemSV Go Exec sp_helptext pp_DSSV Go

Kt qu vic thi hnh cc cu lnh ny cho trong hnh 4.8.

Hnh 4.8. S dung th tc sp_helptext

Bin son: Chu Th Hng

B mn: Cc h thng thng tin

Khoa Cng ngh Thng tin

Bi ging H qun tr CSDL

176

4.3. Cc store function Cc hm 4.3.1. Cc khi nim Tt c cc ngn ng lp trnh, bao gm c T-SQL, vic c cc hm to cho cc ng dng tr ln mnh m. Ngoi ra, ngi lp trnh c th t to mt hm ring cho mnh lm cho h thng d c m rng. Mt hm - function - trong SQL Server c nh ngha l mt th tc n gin bao gm mt nhm cc cu lnh SQL 4.3.2. To cc hm Mt hm do ngi dng nh ngha c to bng cch s dng cu lnh CREATE FUNCTION theo c php sau: CREATE FUNCTION [owner_name.]function_name ( [ {@parameter_name scalar_data_type [= default]} [,...n] ] ) RETURNS scalar_data_type | TABLE(column_definition | table_constraint [,...n]) [WITH ENCRYPTION | SCHEMABINDING [,...n] ] [AS] [BEGIN function_body END] | RETURN [(] select_statement [)] Trong : + [owner_name.]: Ch nh tn i tng s s hu. Ta khng phi bt buc ch nh tn ngi s to i tng s hu n. + function_name: tn ca hm ta s to.

Bin son: Chu Th Hng

B mn: Cc h thng thng tin

Khoa Cng ngh Thng tin

Bi ging H qun tr CSDL

177

+ parameter_name: L cc tham s Input cho hm. Cc tham s ny xy dng cng tng t nh trong stored procedure. + scalar_data_type: L kiu d liu v hng ca tham s. Mt hm c th nhn bt k kiu d liu no nh l tham s tr cc kiu timestamp, cursor, text, ntext, image. + default: Ch nh gi tr mc nh cho tham s, tng t nh trong stored procedure. + [,...n]: Ch nh mt hm c th to nhiu tham s. Mt hm trong SQL Server c th cha ti 1024 tham s. + RETURNS: t kha ny ch nh kiu d liu hm s tr v. Kiu d liu ca hm c th l mt kiu d liu v hng hoc mt bng. + scalar_data_type: Ta s ch nh kiu d liu nu nh hm tr v mt gi tr v hng. y ta phi ch nh kiu di d liu. + TABLE: y l kiu d liu cho php hm c th tr v nhiu dng d liu. + column_definition: nh ngha cc ct cho kiu d liu TABLE. Cc ct ny c nh ngha tng t nh nh ngha cc ct trong bng. + table_constraint: nh ngha cc rng buc trong kiu d liu TABLE ny. + [,...n]: Ch nh c th c nhiu ct v nhiu rng buc trong bng. + WITH ENCRYPTION: T kha ch nh code ca hm s c m ha trong bng syscomments. + SCHEMABINDING: T kha ny ch nh hm c to buc vo tt c cc i tng m n tham chiu.

Bin son: Chu Th Hng

B mn: Cc h thng thng tin

Khoa Cng ngh Thng tin

Bi ging H qun tr CSDL

178

+ [,...n]: Ch dnh c th c nhiu t kha khc ngoi hai t kha trn. + AS: T kha cho bit code ca hm bt u. + BEGIN: i cng vi END to thnh bao khi bao cc cu lnh trong thn hm. + function_body: thn ca hm. + END: i cng vi BEGIN to thnh bao khi bao cc cu lnh trong thn hm. + RETURN: T kha ny s gi gi tr ti th tc gi hm. + select_statement: i km vi RETURN gi gi tr ti th tc gi hm. 4.3.3. Cc v d to cc hm V d 4.38. Xy Dng mt hm fncGetThreeBusinessDays tr v ngy lm vic th 3 tnh t ngy bt u @dtmDateStart.CREATE FUNCTION fncGetThreeBusinessDays (@dtmDateStart DATETIME) RETURNS DATETIME AS BEGIN IF DATEPART(dw, @dtmDateStart) = 4 BEGIN RETURN(DATEADD(dw, 5, @dtmDateStart)) END ELSE IF DATEPART(dw, @dtmDateStart) = 5 BEGIN RETURN(DATEADD(dw, 5, @dtmDateStart)) END ELSE IF DATEPART(dw, @dtmDateStart) = 6 BEGIN RETURN(DATEADD(dw, 5, @dtmDateStart)) END

Bin son: Chu Th Hng

B mn: Cc h thng thng tin

Khoa Cng ngh Thng tin

Bi ging H qun tr CSDL

179

ELSE IF DATEPART(dw, @dtmDateStart) = 7 BEGIN RETURN(DATEADD(dw, 4, @dtmDateStart)) END RETURN(DATEADD(dw, 3, @dtmDateStart)) END

Thc hin th nghim hm trn, ta xy dng scipt sau:DECLARE @dtmDate DATETIME SELECT @dtmDate = '1/10/2008' SELECT DATENAME(dw, @dtmDate) SELECT DATENAME(dw, dbo. fncGetThreeBusinessDays(@dtmDate))

V d 4.39. S dng hm fncGetThreeBusinessDays trn tnh ton trn mt ct trong mt bng.CREATE TABLE OrderInfo ( OrderID INT NOT NULL, ShippingMethod VARCHAR(16) NOT NULL, OrderDate DATETIME NOT NULL DEFAULT GETDATE(), ExpectedDate AS( dbo.fncGetThreeBusinessDays(OrderDate) ) ) GO INSERT OrderInfo VALUES (1, 'UPS GROUND', GETDATE()) INSERT OrderInfo VALUES (2, 'FEDEX STANDARD', DATEADD(dd, 2, GETDATE())) INSERT OrderInfo VALUES (3, 'PRIORITY MAIL', DATEADD(dd, 4, GETDATE())) GO SELECT OrderID,ShippingMethod,CONVERT(VARCHAR(12), OrderDate,1) + '(' + DATENAME(dw, OrderDate) + ')' AS 'OrderDate', CONVERT(VARCHAR(12),ExpectedDate,1)+ '('+ DATENAME(dw, ExpectedDate) + ')' AS 'ExpectedDate' FROM OrderInfo

Bin son: Chu Th Hng

B mn: Cc h thng thng tin

Khoa Cng ngh Thng tin

Bi ging H qun tr CSDL

180

V d 3.40. Xy dng hm tr v cc dng d liu gm thng tin v im ca cc mn hc theo M lp.CREATE FUNCTION fncBangDiem(@MaLop CHAR(10)) RETURNS @TableName TABLE ( MaSV CHAR(10), Hoten nvarchar(100), TenMH NVARCHAR(50), DiemL1 INT, DiemL2 INT )

AS BEGIN

INSERT INTO @TableName SELECT Di.MaSV, Ho.HoDem + ' '+ Ho.TenSV, Mo.TenMH, Di.DiemL1,Di.DiemL2 FROM DIEM Di JOIN HOSOSV Ho ON (Di.MaSV = Ho.MaSV) JOIN MONHOC Mo ON (Di.MaMH = Mo.MaMH) WHERE Ho.MaLop = @MaLop RETURN END GO

Th nghim gi hm ny trong on script chng trnh sau v kt qu cho trong hnh 4.10: Select * from fncBangDiem('TH03A')

Hnh 4.10. Gi hm fncBangDiemBin son: Chu Th Hng B mn: Cc h thng thng tin Khoa Cng ngh Thng tin

Bi ging H qun tr CSDL

181

V d 4.41. Xy dng hm a ra danh sch sinh vin ca mt lp ph thuc tham s m lp a vo.CREATE FUNCTION fncDSSV(@MaLop CHAR(10)) RETURNS TABLE AS RETURN SELECT MaSV, HoDem + ' '+ TenSV As Hoten, NgaySinh FROM HOSOSV WHERE MaLop=@MaLop GO

Gi hm ny trong on script chng trnh sau: Select * from fncDSSV ('TH03A') 4.3.4.Thay i, xa, xem ni dung store function a) Thay i cc hm thay i cc hm ta dng cu lnh ALTER FUNCTION. ALTER FUNCTION [owner_name.]function_name ( [ {@parameter_name scalar_data_type [= default]} [,...n] ] ) RETURNS scalar_data_type | TABLE(column_definition | table_constraint [,...n]) [WITH ENCRYPTION | SCHEMABINDING [,...n] ] [AS] [BEGIN function_body END] | RETURN [(] select_statement [)] V d 4.42. Thay i hm fncDSSVALTER FUNCTION fncDSSV(@MaLop CHAR(10)) RETURNS TABLE AS RETURN Bin son: Chu Th Hng B mn: Cc h thng thng tin Khoa Cng ngh Thng tin

Bi ging H qun tr CSDL

182

SELECT MaSV, HoDem + ' '+ TenSV As Hoten FROM HOSOSV WHERE MaLop=@MaLop GO

b) Xa hm xa hm ta dng cu lnh DROP FUNCTION. DROP FUNCTION { [ schema_name. ] function_name } V d 4.43. Xa hm fncDSSVDROP FUNCTION fncDSSV

4.4. Tr