Copy of Giao Trinh SQL Server 2005_dang Hoan Chinh

Embed Size (px)

Citation preview

Mc lcMc lc .................................................................................................................................1 1 Gii thiu v SQL Server 2005 ......................................................................................5 1.1 Ci t SQL Server 2005 Express Edition..............................................................5 1.1.1 1.1.2 Cc yu cu cho h thng 32bit .......................................................................5 Cc bc ci t SQL Server 2005 Express Edition .......................................7

1.2 Mt s thao tc c bn trn SQL Server 2005 Express Edition. ..........................16 1.2.1 To mt CSDL mi .......................................................................................16 1.2.2 1.2.3 1.2.4 2 2.1 2.2 2.3 To bng mi .................................................................................................17 Xa bng, xa CSDL .....................................................................................19 M mt query editor vit cu lnh SQL ...................................................19

Structured Query Language (SQL) ..............................................................................20 SQL l ngn ng ca c s d liu quan h .........................................................20 Vai tr ca SQL ....................................................................................................20 Gii thiu s lc v Transact SQL (T-SQL) ......................................................21 Ngn ng nh ngha d liu ( Data Definition Language DDL) ..............22 Ngn ng iu khin d liu (Data control language DCL) ......................22 Ngn ng thao tc d liu (Data manipulation language DML)................23 C php ca T-SQL .......................................................................................24 Cc kiu d liu .............................................................................................25 Bin (Variables).............................................................................................26 Hm (Function)..............................................................................................27 Cc ton t (Operators) .................................................................................27 Cc thnh phn iu khin (Control of flow) ................................................28

2.3.1 2.3.2 2.3.3 2.3.4 2.3.5 2.3.6 2.3.7 2.3.8 2.3.9

2.3.10 Ch thch (Comment) ...................................................................................28 2.3.11 Gi tr NULL ................................................................................................28 3 Ngn ng thao tc d liu DML ...............................................................................29 3.1 Cu lnh SELECT.................................................................................................29 Danh sch chn trong cu lnh SELECT ......................................................30 Mnh FROM .............................................................................................34 Mnh WHERE - iu kin truy vn d liu ............................................34 Php hp (UNION)........................................................................................38 Php ni .........................................................................................................41 Cc loi php ni ...........................................................................................43 1 3.1.1 3.1.2 3.1.3 3.1.4 3.1.5 3.1.6

3.1.7 3.1.8 3.1.9 3.2 3.2.1 3.2.2 3.2.3 4 4.1 4.2

Php ni theo chun SQL-92.........................................................................45 Mnh GROUP BY ....................................................................................47 Truy vn con (Subquery) ...............................................................................50 Thm d liu..................................................................................................52 Cp nht d liu.............................................................................................53 Xa d liu.....................................................................................................54

Thm, cp nht v xa d liu ..............................................................................51

Ngn ng nh ngha d liu DDL............................................................................56 To bng................................................................................................................56 Cc loi rng buc.................................................................................................58 Rng buc CHECK........................................................................................58 Rng buc PRIMARY KEY..........................................................................59 Rng buc FOREIGN KEY ..........................................................................60

4.2.1 4.2.2 4.2.3 4.3 4.4 4.5 4.6 4.7

Sa i nh ngha bng........................................................................................61 Xa bng ...............................................................................................................63 Khung nhn - VIEW ..............................................................................................63 Thm, cp nht, xa d liu trong VIEW .............................................................65 Thay i nh ngha khung nhn ...........................................................................65

4.8 Xa khung nhn .....................................................................................................66 5 Th tc lu tr, hm v trigger.....................................................................................67 5.1 Th tc lu tr (Stored procedure) .......................................................................67 To th tc lu tr .........................................................................................68 Li gi th tc................................................................................................69 Bin trong th tc lu tr ..............................................................................69 Gi tr tr v trong th tc lu tr.................................................................70 Tham s vi gi tr mc nh .........................................................................71 Sa i th tc ...............................................................................................72 Xa th tc.....................................................................................................72 Hm v hng - Scalar UDF .........................................................................73 Hm ni tuyn - Inline UDF..........................................................................74 Hm bao gm nhiu cu lnh bn trong Multi statement UDF..................75 Thay i hm .................................................................................................76 Xa hm.........................................................................................................77 5.1.1 5.1.2 5.1.3 5.1.4 5.1.5 5.1.6 5.1.7 5.2 5.2.1 5.2.2 5.2.3 5.2.4 5.2.5 5.3

Hm do ngi dng nh ngha (User Defined Function-UDF)...........................72

Trigger...................................................................................................................77 2

5.3.1 5.3.2 5.3.3 5.3.4 5.3.5 5.3.6 5.4 5.5 6 6.1 6.2

Cc c im ca trigger ...............................................................................77 Cc trng hp s dng trigger .....................................................................77 Kh nng sau ca trigger ...............................................................................78 nh ngha trigger..........................................................................................78 Kch hot trigger da trn s thay i d liu trn ct..................................82 S dng trigger v Giao tc (TRANSACTION) ...........................................83

DDL TRIGGER ....................................................................................................84 Enable/ Disable TRIGGER ...................................................................................85 Cc l do phi thc hin Backup ..........................................................................87 Cc loi Backup ....................................................................................................87 Full backup v Differential backup ...............................................................87 Transaction log backup..................................................................................88

Sao lu v phc hi d liu (Backup and Restore) ......................................................87

6.2.1 6.2.2 6.3

Cc thao tc thc hin qu trnh Backup v Restore trong SQL Server 2005 Sao lu (Backup) ...........................................................................................89 Phc hi (Restore) .........................................................................................91

Express Edition........................................................................................................................89 6.3.1 6.3.2 7

Cc hm quan trng trong T-SQL ................................................................................94 7.1 Cc hm lm vic vi kiu d liu s ...................................................................94 7.1.1 Hm ISNUMERIC.........................................................................................94 7.1.2 7.2 7.2.1 7.2.2 7.2.3 7.2.4 7.2.5 7.2.6 7.2.7 7.2.8 7.3 7.3.1 7.3.2 7.3.3 7.3.4 Hm ROUND ................................................................................................94 Hm LEFT .....................................................................................................95 Hm RIGHT ..................................................................................................95 Hm SUBSTRING ........................................................................................95 Hm LEN.......................................................................................................96 Hm REPLACE.............................................................................................96 Hm STUFF...................................................................................................96 Hm LOWER/UPPER...................................................................................97 Hm LTRIM/RTRIM ....................................................................................97 Hm GETDATE ............................................................................................97 Hm DAY/ MONTH/ YEAR ........................................................................97 Hm DATEPART..........................................................................................98 Hm DATENAME ........................................................................................99 3 Cc hm lm vic vi kiu d liu chui..............................................................95

Cc hm lm vic vi kiu d liu Ngy thng/ Thi gian ..................................97

7.4 8

Hm CAST v CONVERTER ..............................................................................99

Kt ni vo SQL Server 2005 t cc ngn ng lp trnh xy dng cc ng dng 8.1 Cu hnh Microsoft SQL Server 2005 ................................................................101 Cho php tip nhn cc kt ni t xa trn th hin ca SQL Server ...........102 Kch hot dch v SQL Server Browser ......................................................102 To cc ngoi l trn Windows Firewall .....................................................103 C# v VB.NET.............................................................................................104 VB 6.............................................................................................................106

lin quan n CSDL ..................................................................................................................101 8.1.1 8.1.2 8.1.3 8.2 8.2.1 8.2.2

Kt ni vo SQL Server trong cc ngn ng lp trnh........................................104

Ti liu tham kho ............................................................................................................108

4

1 Gii thiu v SQL Server 2005SQL 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 computer v SQL Server computer. 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 "n " 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. Workgroup: Tng t bn Standard nhng ch h tr 2 CPU v ti a 3GB RAM Express: Bn min ph, h tr ti a 1CPU, 1GB RAM v kch thc Database gii hn trong 4GB. Chi tit c th tham kho ti a ch: http://www.microsoft.com/sql/prodinfo/features/compare-features.mspx

1.1 Ci t SQL Server 2005 Express Edition1.1.1 Cc yu cu cho h thng 32bit

5

Chi tit yu cu h thng cho cc phin bn Microsoft SQL Server 2005 c th tham kho ti a ch: http://www.microsoft.com/sql/prodinfo/sysreqs/default.mspx 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. G b cc phin bn Beta, CTP hoc Tech Preview ca SQL Server 2005, Visual Studio 2005 v Microsoft .NET Framework 2.0. Download v ci t 6

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 Download ti a ch: http://www.microsoft.com/express/sql/download/default.aspx

1.1.2 Cc bc ci t SQL Server 2005 Express EditionDouble click vo file ci t Microsoft SQL Server Express Edition.

Click Next:

7

8

9

10

11

12

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:

13

14

Ci t SQL Server Management Studio Express. Sau khi ci t, ng nhp vo SQL Server 2005 Express Edition nh sau:

Khi ng nhp c th chn Windows Authentication hoc SQL Server Authentication. Nu chn SQL Server Authentication th phi nhp password. Password ny c thit lp trong qu trnh ci t SQL Server 2005 Express Edition. Nu trong qu trnh ci t SQL Server 2005 Express Edition chng ta khng cho php SQL Server kch hot ngay khi khi ng my, bm nt Connect s gy ra li. khc phc vo Start->Run nh services.msc->Enter. Tm service SQL Server (SQLExpress), double click v trong comboxbox Startup type chn Automatic -> Apply - >Start -> OK. Giao din sau khi ng nhp thnh cng

15

1.2 Mt s thao tc c bn trn SQL Server 2005 Express Edition.Microsoft SQL Server Management Studio cung cp mt giao din thn thin gip cho ngi dng thc hin cc thao tc mt cch d dng. Mt s cc thao tc c bn bao gm: to CSDL mi, xa CSDL, to bng, xa bngCng cn lu rng cc thao tc thc hin thng qua giao din th u c th c thc hin c bng cc cu lnh SQL.

1.2.1 To mt CSDL mi

16

t tn Database trong Textbox Database Name, click OK.

1.2.2 To bng mi

17

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. Sau khi to xong tt c cc ct ca bng, tin hnh Save -> OK

18

1.2.3 Xa bng, xa CSDLClick 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.

1.2.4 M mt query editor vit cu lnh SQL

Cn ch l cu lnh SQL s c tc dng trn CSDL ang c chn trong ComboBox. Do cn ch la chn ng CSDL cn tng tc. 19

2 Structured Query Language (SQL)2.1 SQL l ngn ng ca c s d liu quan hSQL, vit tt ca Structured Query Language (ngn ng hi c cu trc), l cng c s dng t chc, qun l v truy xut d liu uc lu tr trong cc c s d liu. SQL l mt h thng ngn ng bao gm tp cc cu lnh s dng tng tc vi c s d liu quan h. Kh nng ca SQL vt xa so vi mt cng c truy xut d liu, mc d y l mc ch ban u khi SQL c xy dng nn v truy xut d liu vn cn l mt trong nhng chc nng quan trng ca n. SQL c s dng iu khin tt c cc chc nng m mt h qun tr c s d liu cung cp cho ngi dng bao gm: nh ngha d liu: SQL cung cp kh nng nh ngha cc c s d liu, cc cu trc lu tr v t chc d liu cng nh mi quan h gia cc thnh phn d liu. Truy xut v thao tc d liu: Vi SQL, ngi dng c th d dng thc hin cc thao tc truy xut, b sung, cp nht v loi b d liu trong cc c s d liu. iu khin truy cp: SQL c th c s dng cp pht v kim sot cc thao tc ca ngi s dng trn d liu, m bo s an ton cho c s d liu m bo ton vn d liu: SQL nh ngha cc rng buc ton vn trong c s d liu nh m bo tnh hp l v chnh xc ca d liu trc cc thao tc cp nht cng nh cc li ca h thng. Nh vy, c th ni rng SQL l mt ngn ng hon thin c s dng trong cc h thng c s d liu v l mt thnh phn khng th thiu trong cc h qun tr c s d liu. Mc d SQL khng phi l mt ngn ng lp trnh nh C, C++, Java,... song cc cu lnh m SQL cung cp c th c nhng vo trong cc ngn ng lp trnh nhm xy dng cc ng dng tng tc vi c s d liu. Khc vi cc ngn ng lp trnh quen thuc nh C, C++, Java,... SQL l ngn ng c tnh khai bo. Vi SQL, ngi dng ch cn m t cc yu cu cn phi thc hin trn c s d liu m khng cn phi ch ra cch thc thc hin cc yu cu nh th no. Chnh v vy, SQL l ngn ng d tip cn v d s dng.

2.2 Vai tr ca SQLBn thn SQL khng phi l mt h qun tr c s d liu, n khng th tn ti c lp. SQL thc s l mt phn ca h qun tr c s d liu, n xut hin trong cc h qun tr c s d liu vi vai tr ngn ng v l cng c giao tip gia ngi s dng v h qun tr c s d liu. 20

Trong hu ht cc h qun tr c s d liu quan h, SQL c nhng vai tr nh sau: SQL l ngn ng hi c tnh tng tc: Ngi s dng c th d dng thng qua cc trnh tin ch gi cc yu cu di dng cc cu lnh SQL n c s d liu v nhn kt qu tr v t c s d liu SQL l ngn ng lp trnh c s d liu: Cc lp trnh vin c th nhng cc cu lnh SQL vo trong cc ngn ng lp trnh xy dng nn cc chng trnh ng dng giao tip vi c s d liu SQL l ngn ng qun tr c s d liu: Thng qua SQL, ngi qun tr c s d liu c th qun l c c s d liu, nh ngha cc cu trc lu tr d liu, iu khin truy cp c s d liu,... SQL l ngn ng cho cc h thng khch/ch (client/server): Trong cc h thng c s d liu khch/ch, SQL c s dng nh l cng c giao tip gia cc trnh ng dng pha my khch vi my ch c s d liu. SQL l ngn ng truy cp d liu trn Internet: Cho n nay, hu ht cc my ch Web cng nh cc my ch trn Internet s dng SQL vi vai tr l ngn ng tng tc vi d liu trong cc c s d liu. SQL l ngn ng c s d liu phn tn: i vi cc h qun tr c s d liu phn tn, mi mt h thng s dng SQL giao tip vi cc h thng khc trn mng, gi v nhn cc yu cu truy xut d liu vi nhau. SQL l ngn ng s dng cho cc cng giao tip c s d liu: Trong mt h thng mng my tnh vi nhiu h qun tr c s d liu khc nhau, SQL thng c s dng nh l mt chun ngn ng giao tip gia cc h qun tr c s d liu.

2.3 Gii thiu s lc v Transact SQL (T-SQL)Transact-SQL l ngn ng SQL m rng da trn SQL chun ca ISO (International Organization for Standardization) v ANSI (American National Standards Institute) c s dng trong SQL Server khc vi P-SQL (Procedural-SQL) dng trong Oracle. SQL chun bao gm khong 40 cu lnh. Trong cc h qun tr c s d liu khc nhau, mc d cc cu lnh u c cng dng v cng mc ch s dng song mi mt h qun tr c s d liu c th c mt s thay i no . iu ny i khi dn n c php chi tit ca cc cu lnh c th s khc nhau trong cc h qun tr c c s d liu khc nhau. T-SQL c chia lm 3 nhm:

21

2.3.1 Ngn ng nh ngha d liu ( Data Definition Language DDL)y l nhng lnh dng to (create), thay i (alter) hay xa (drop) cc i tng trong CSDL. Cc cu lnh DDL thng c dng: Create object Alter object Drop object Trong object c th l: table, view, storedprocedure, function, trigger V d: Cu lnh Create sau s to mt bng mi c tn l Nhanvien trong CSDL Test. Bng Nhanvien ny gm c ba ct: manv, tennv, diachi. Lu : Nu trong SQL Server 2005 Express Edition cha c CSDL Test, hy to mt CSDL c tn Test theo hng dn trong Chng 1. create table Nhanvien ( manv int primary key, tennv nvarchar(50) not null, diachi nvarchar(50) not null ) chy cu lnh SQL trn, m mt Query Editor, copy cu lnh vo Query Editor, bi en ton b cu lnh v bm F5. Tip theo, dng lnh alter thay i cu trc bng Nhanvien.C th l mt thm mt ct mi c tn ghichu vo bng Nhanvien. alter table Nhanvien add ghichu nvarchar(50) not null Cui cng, dng lnh drop xa hon ton bng Nhanvien ra khi CSDL, ngha l ton b nh ngha bng v cc d liu bn trong u b xa. drop table Nhanvien Lu : Lnh drop khc vi lnh delete. Lnh delete ch xa cc dng d liu c trong bng

2.3.2 Ngn ng iu khin d liu (Data control language DCL)y l cc lnh qun l quyn truy cp ln cc object (table, view, storedprocedure). Bao gm: Grant Deny Revoke 22

V d: Lnh grant s cp quyn Select trn bng Nhanvien trong CSDL Test cho cc Users thuc Role public grant select on nhanvien to public Sau khi thc hin lnh ny, c Users trong Role public c th thc hin cu lnh Select trn bng Nhanvien trong CSDL Test. Dng lnh deny t chi quyn select trn bng Nhanvien trong CSDL Test ca cc Users thuc Role public deny select on nhanvien to public Sau khi thc hin lnh ny, c Users trong Role public s khng th thc hin cu lnh Select trn bng Nhanvien trong CSDL Test. Dng lnh revoke xa b cc quyn c cp hay t chi trc . revoke select on nhanvien to public Sau khi thc hin lnh ny, cc quyn c gn hay t chi ca Users trong Role public trn bng Nhanvien trong CSDL Test s c xa hon ton.

2.3.3 Ngn ng thao tc d liu (Data manipulation language DML)y l cc lnh ph bin dng x l d liu. Bao gm: Select Insert Update Delete V d: Cu lnh sau s lc ra cc nhn vin c tn bt u bng ch A trong bng Nhanvien. select * from Nhanvien as nv where nv.tennv like 'A%' Du * hm l la chn tt c cc ct ca bng Nhanvien. Ton t like v k t i din s c ni trong phn sau. Cu lnh sau s thm d liu v mt nhn vin mi vo trong bng Nhanvien. 23

insert into Nhanvien values(1, N'Nguyn Vn An', N'22 Nguyn Thin Thut') Cu lnh sau s cp nht lai a ch ca nhn vin c manv l 1 update Nhanvien set diachi = N'22 Nguyn Th Minh Khai' where manv = 1 Cu lnh sau s xa thng tin ca nhn vin c manv l 1 trong bng Nhanvien delete Nhanvien where manv = 1

2.3.4 C php ca T-SQLCc i tng trong c s d liu da trn SQL (table, view, index, storedprocedure) c xc nh thng qua tn ca i tng (hay cn gi l identifier). Tn ca cc i tng l duy nht trong mi c s d liu. Tn c s dng nhiu nht trong cc truy vn SQL v c xem l nn tng trong c s d liu quan h l tn bng v tn ct. C hai loi Identifiers mt loi thng thng (Regular Identifier) v mt loi gi l Delimited Identifier, loi ny cn c du "" hay du [] ngn cch. Loi Delimited c dng i vi cc ch trng vi t kha ca SQL Server (reserved keyword) hay cc ch c khong trng. V d: Select * From My table Where [sum] = 10 Trong cc c s d liu ln vi nhiu ngi s dng, khi ta ch nh tn ca mt bng no trong cu lnh SQL, h qun tr c s d liu hiu l tn ca bng do ta s hu (tc l bng do ta to ra). Thng thng, trong cc h qun tr c s d liu ny cho php nhng ngi dng khc nhau to ra nhng bng trng tn vi nhau m khng gy ra xung t v tn. Nu trong mt cu lnh SQL ta cn ch n mt bng do mt ngi dng khc s hu (hin nhin l phi c php) th tn ca bng phi c vit sau tn ca ngi s hu v phn cch vi tn ngi s hu bi du chm: tn_ngi_s_hu.tn_bng Mt s i tng c s d liu khc (nh khung nhn, th tc, hm), vic s dng tn cng tng t nh i vi bng. Ta c th s dng tn ct mt cch bnh thng trong cc cu lnh SQL bng cch ch cn ch nh tn ca ct trong bng. Tuy nhin, nu trong cu lnh c lin quan n hai ct tr 24

ln c cng tn trong cc bng khc nhau th bt buc phi ch nh thm tn bng trc tn ct; tn bng v tn ct c phn cch nhau bi du chm V d: Gi s chng ta c CSDL nh sau:

tm ra khch hng c tn Nguyn Vn An t hng vo ngy no, cu truy vn nh sau: Select orderid, orderdate from orders, customers where orders.customerid = customers.customerid and customername = N'Nguyn Vn An'

2.3.5 Cc kiu d liuBng di y lit k mt s kiu d liu thng dng c s dng trong SQL. Char(n) Nchar(n) Varchar(n) Nvarchar(n) Int Tinyint Smallint Kiu chui vi di c nh Kiu chui vi di c nh h tr UNICODE Kiu chui vi di chnh xc Kiu chui vi di chnh xc h tr UNICODE S nguyn c gi tr t -231 n 231 - 1 S nguyn c gi tr t 0 n 255. S nguyn c gi tr t -215 n 215 1 25

Bigint Numeric Decimal Float Real Money Bit Datetime Smalldatetime Binary Varbinary Image Text Ntext

S nguyn c gi tr t -263 n 263-1 Kiu s vi chnh xc c nh. Tng t kiu Numeric S thc c gi tr t -1.79E+308 n 1.79E+308 S thc c gi tr t -3.40E + 38 n 3.40E + 38 Kiu tin t Kiu bit (c gi tr 0 hoc 1) Kiu ngy gi (chnh xc n phn trm ca giy) Kiu ngy gi (chnh xc n pht) D liu nh phn vi di c nh (ti a 8000 bytes) D liu nh phn vi di chnh xc (ti a 8000 bytes) D liu nh phn vi di chnh xc (ti a 2,147,483,647 bytes) D liu kiu chui vi di ln (ti a 2,147,483,647 k t) D liu kiu chui vi di ln v h tr UNICODE (ti a 1,073,741,823 k t)

V d: Mi ct trong bng s cha nhng d liu thuc v duy nht mt kiu d liu trong SQL Server. Ct no cha nhng d liu thuc kiu no s c quy nh lc nh ngha bng. Create table Nhanvien ( MANV NVARCHAR(10) HOTENNVARCHAR(30) GIOITINH NGAYSINH NOISINH HSLUONG MADV INT ) BIT, SMALLDATETIME, NCHAR(50), DECIMAL(4,2), NOT NULL, NOT NULL,

2.3.6 Bin (Variables)Bin trong T-SQL cng c chc nng tng t nh trong cc ngn ng lp trnh khc ngha l cn khai bo trc loi d liu trc khi s dng. Bin c bt u bng du @ (i vi cc bin ton cc - global variable - th c hai du @@)

26

V d: V d di y khai bo mt bin c tn @numberOfCustomers thng qua t kha declare. Bin ny lu s khch hng m c thng qua hm count. Sau in ra gi tr ca bin. declare @numberOfCustomers int select @numberOfCustomers = count(*) from Customers print @numberOfCustomers

2.3.7 Hm (Function)C 2 loi hm: mt loi l c xy dng sn trong SQL Server 20005 Express Edition (built-in) v mt loi do ngi dng t nh ngha (user-defined) Cc hm Built-In c chia lm 3 nhm: Rowset Functions : Loi ny thng tr v mt object v c i x nh mt table. V d nh hm OPENQUERY s tr v mt recordset v c th ng v tr ca mt table trong cu lnh Select. Aggregate Functions : Loi ny lm vic trn mt s gi tr v tr v mt gi tr n hay l cc gi tr tng. V d nh hm AVG s tr v gi tr trung bnh ca mt ct. Scalar Functions : Loi ny lm vic trn mt gi tr n v tr v mt gi tr n. Trong loi ny li chia lm nhiu loi nh nh cc hm v ton hc, v thi gian, x l kiu d liu String....V d nh hm MONTH('2002-09-30') s tr v thng 9. Cc hm User-Defined (c to ra bi cu lnh CREATE FUNCTION v phn body thng c gi trong cp lnh BEGIN...END) cng c chia lm cc nhm nh sau: Scalar Functions : Loi ny cng tr v mt gi tr n bng cu lnh RETURNS. Table Functions : Loi ny tr v mt table

2.3.8 Cc ton t (Operators)Trong SQL Server cc biu din (expression) c th xut hin nhiu ton t. u tin ca ton t s quyt nh th t thc hin ca cc php tnh. Th t thc hin nh hng rt ln n kt qu. Bng di y m t cc ton t trong SQL Server 2005 Express Edititon v mc u tin ca cc ton t . Level 1 2 Operators * (Multiply), / (Division), % (Modulo) + (Positive), - (Negative), + (Add), (+ Concatenate), - (Subtract), 27

3 4 5 6 7

=, >, =, , !< (Comparison operators) NOT AND ALL, ANY, BETWEEN, IN, LIKE, OR, SOME = (Assignment)

2.3.9 Cc thnh phn iu khin (Control of flow)Nh BEGIN...END, BREAK, CONTINUE, GOTO, IF...ELSE, RETURN, WHILE

2.3.10 Ch thch (Comment)T-SQL dng k hiu -- ch thch cho mt dng n v k hiu /**/ ch thch cho mt nhm dng V d: /* Minh ha ch thch Ch thch cho mt dng n v mt nhm cc dng*/ DECLARE @MyNumber int -- khai bo bin SET @MyNumber = 4 - 2 + 27 -- kt qu l 29 SELECT @MyNumber

2.3.11 Gi tr NULLMt c s d liu l s phn nh ca mt h thng trong th gii thc, do cc gi tr d liu tn ti trong c s d liu c th khng xc nh c. Mt gi tr khng xc nh c xut hin trong c s d liu c th do mt s nguyn nhn sau: Gi tr c tn ti nhng khng bit. Khng xc nh c gi tr c tn ti hay khng. Ti mt thi im no gi tr cha c nhng ri c th s c. Gi tr b li do tnh ton (trn s, chia cho khng,...) Nhng gi tr khng xc nh c biu din trong c s d liu quan h bi cc gi tr NULL. y l gi tr c bit v khng nn nhm ln vi chui rng (i vi d liu kiu chui) hay gi tr khng (i vi gi tr kiu s). Gi tr NULL ng mt vai tr quan trng trong cc c s d liu v hu ht cc h qun tr c s d liu quan h hin nay u h tr vic s dng gi tr ny.

28

3 Ngn ng thao tc d liu DMLSQL c xem nh l cng c hu hiu thc hin cc yu cu truy vn v thao tc trn d liu. Trong chng ny, ta s bn lun n nhm cc cu lnh trong SQL c s dng cho mc ch ny. Nhm cc cu lnh ny c gi chung l ngn ng thao tc d liu (DML: Data Manipulation Language) bao gm cc cu lnh sau: SELECT: S dng truy xut d liu t mt hoc nhiu bng. INSERT: Thm d liu. UPDATE: Cp nht d liu DELETE: Xo d liu Trong s cc cu lnh ny, c th ni SELECT l cu lnh tng i phc tp v c s dng nhiu trong c s d liu. Vi cu lnh ny, ta khng ch thc hin cc yu cu truy xut d liu n thun m cn c th thc hin c cc yu cu thng k d liu phc tp. Cng chnh v vy, phn u ca chng ny s tp trung tng i nhiu n cu lnh SELECT. Cc cu lnh INSERT, UPDATE v DELETE c bn lun n cui chng

3.1 Cu lnh SELECTCu lnh SELECT c s dng truy xut d liu t cc dng 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_chn [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. 29

Cu lnh SELECT c s dng tc ng ln 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:

V d di y hin th tn khch hng v a ch cc khch hng hin c. select customername, gender, address from customers

3.1.1 Danh sch chn trong cu lnh SELECTDanh 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 trng hp sau: 30

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. V d: Select * from Customers

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 tn 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. V d: Select CUSTOMERNAME, ADDRESS From Customers

Lu : Nu truy vn c thc hin trn nhiu bng/khung nhn v trong cc bng/khung nhn c cc trng trng tn th tn ca nhng trng ny nu xut hin trong danh sch chn phi c vit di dng: tn_bng.tn_trng Thay i tiu cc ct: Trong kt qu truy vn, tiu ca cc ct mc nh s l tn ca cc trng tng ng trong bng. Tuy nhin, cc tiu tr nn thn thin hn, ta c th i tn cc tiu ca cc ct. t tiu cho mt ct no , ta s dng cch vit: tiu__ct = tn_trng hoc tn_trng AS tiu__ct hoc tn_trng tiu__ct 31

V d: select [M khch hng] = Customerid, customername as [Tn khch hng], address [a ch] from Customers

S dng cu trc CASEWHEN: Cu trc CASE c s dng trong danh sch chn nhm thay i kt qu ca truy vn tu thuc vo cc trng hp khc nhau. Cu trc ny c c php nh sau: CASE biu_thc WHEN biu_thc_kim_tra THEN kt_qu [ ... ] [ELSE kt_qu_ca_else] END hoc: CASE WHEN iu_kin THEN kt_qu [ ... ] [ELSE kt_qu_ca_else] END V d: Cu lnh SQL di y s hin th gii tnh ca khch hng ty theo gi tr thc c lu trong CSDL. Nu gi tr trong CSDL l FALSE-> hin th gii tnh N, nu gi tr l TRUE-> hin th gii tnh NAM. select CUSTOMERNAME, ADDRESS, case GENDER when 1 then 'NAM' else N'N' end as [GII TNH] from customers Cu lnh trn cng c th vit nh sau: 32

select CUSTOMERNAME, ADDRESS, case when GENDER = 1 then 'NAM' else N'N' end as [GII TNH] from customers

Loi b cc dng d liu trng nhau: T kha DISTINCT s loi b cc dng d liu ging nhau. Trong v d trn, c hai khch hng c tn Cao Van Trung. Nu ta ch truy vn tn khch hng, loi b s trng lp ta dng t kha DISTINCT select distinct CUSTOMERNAME from customers

La chn mt s lng gii hn cc dng: T kha TOP n s tr v ch n dng d liu V d: v d sau ch tr v duy nht hai dng d liu select top 2 Customername from customers

Nu s dung TOP n PERCENT th s tr v n % s dng d liu hin c trong CSDL.

33

3.1.2 Mnh FROMMnh 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. V d: Cu lnh sau hin th thng tin khch hng Select * from Customers

Trong mnh FROM c th s dng b danh (alias) nhm lm cho cu truy vn d nhn hn. V d: Select * from Customers c Where c.CustomerID = 1

3.1.3 Mnh WHERE - iu kin truy vn d liuMnh 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. V d: Lc ra thng tin cc khch hng c m Select * From Customers Where CustomerID > 3

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) 34

Tp hp Kim tra khun dng d liu. Cc gi tr NULL Cc ton t so snh Ton t = > < >= !< ngha Bng Ln hn Nh hn Ln hn hoc bng Nh hn hoc bng Khc Khng ln hn Khng nh hn

V d: V d di y ly tn, ngy sinh theo nh dng dd/MM/yyyy v a ch ca nhng khch hng c tn Le Thi Hoa v tui cc khch hng ny ln hn 20. select CUSTOMERNAME, convert (varchar, BIRTHDAY, 103) as BIRTHDAY, ADDRESS from Customers where Customername = 'Le Thi Hoa' and year(getdate()) - year(BIRTHDAY) > 20

Kim tra gii hn ca d liu kim tra xem gi tr d liu nm trong (ngoi) mt khong no , ta s dng ton t BETWEEN/ NOT BETWEEN nh sau: Mnh variable BETWEEN a AND b variable NOT BETWEEN a AND b n 30 tui. select CUSTOMERNAME, convert (varchar, BIRTHDAY, 103) as BIRTHDAY, ADDRESS from Customers where Customername = 'Le Thi Hoa' and year(getdate()) - year(BIRTHDAY) between 20 and 30 35 ngha a >= < ngha Bng Ln hn Ln hn hoc bng Nh hn 42

! 100000000 49

3.1.9 Truy vn con (Subquery)Truy vn con l mt cu lnh SELECT c lng vo bn trong mt cu lnh SELECT, INSERT, UPDATE, DELETE hoc 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: =, , >, =, = 0 and score1 = 0 and score1 10) V d 4: Xa rng buc CHECK 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. 62 kiu_d_liu [NULL | NOT NULL]

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.

4.4 Xa bngKhi 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 drop table orders

4.5 Khung nhn - VIEWKhung nhn l mt bng tm thi, c cu trc nh mt bng, khung nhn khng lu tr d liu m n c to ra khi s dng, khung nhn l i tng thuc CSDL. Khung nhn c to ra t cu lnh truy vn d liu (lnh SELECT), truy vn t mt hoc nhiu bng d liu. Khung nhn c s dng khai thc d liu nh mt bng d liu, chia s nhiu ngi dng, an ton trong khai thc, khng nh hng d liu gc. C th thc hin truy vn d liu trn cu trc ca khung nhn. 63

Nh vy, mt khung nhn trng ging nh mt bng vi mt tn khung nhn v l mt tp bao gm cc dng v cc ct. im khc bit gia khung nhn v bng l khung nhn khng c xem l mt cu trc lu tr d liu tn ti trong c s d liu. Thc cht d liu quan st c trong khung nhn c ly t cc bng thng qua cu lnh truy vn d liu. Cu lnh CREATE VIEW c s dng to ra khung nhn v c c php nh sau: CREATE VIEW tn_khung_nhn[(danh_sch_tn_ct)] AS cu_lnh_SELECT V d: create view CUSTOMERINFO as select CUSTOMERNAME, (year(getdate()) - year(BIRTHDAY)) as AGE, ADDRESS from customers Thc hin cu truy vn trn khung nhn va to ra: select * from customerinfo

Nu trong cu lnh CREATE VIEW, ta khng ch nh danh sch cc tn ct cho khung nhn, tn cc ct trong khung nhn s chnh l tiu cc ct trong kt qu ca cu lnh SELECT. Trong trng hp tn cc ct ca khung nhn c ch nh, chng phi c cng s lng vi s lng ct trong kt qu ca cu truy vn. V d: create view CUSTOMERINFO (CUSTOMERNAME, AGE, ADDRESS) as select CUSTOMERNAME, year(getdate()) - year(BIRTHDAY), ADDRESS from customers Lu : Phi t tn cho cc ct ca khung nhn trong cc trng hp sau y:

64

Trong kt qu ca cu lnh SELECT c t nht mt ct c sinh ra bi mt biu thc (tc l khng phi l mt tn ct trong bng c s) v ct khng c t tiu . Tn ti hai ct trong kt qu ca cu lnh SELECT c cng tiu ct.

4.6 Thm, cp nht, xa d liu trong VIEWi vi mt s khung nhn, ta c th tin hnh thc hin cc thao tc cp nhp, thm v xo d liu. Thc cht, nhng thao tc ny s c chuyn thnh nhng thao tc trn cc bng c s v c tc ng n nhng bng c s. V mt l thuyt, c th thc hin thao tc b sung, cp nht v xo, mt khung nhn trc tin phi tho mn cc iu kin sau y: Trong cu lnh SELECT nh ngha khung nhn khng c s dng t kho DISTINCT, TOP, GROUP BY v UNION. Cc thnh phn xut hin trong danh sch chn ca cu lnh SELECT phi l cc ct trong cc bng c s. Trong danh sch chn khng c cha cc biu thc tnh ton, cc hm gp. Ngoi nhng iu kin trn, cc thao tc thay i n d liu thng qua khung nhn cn phi m bo tho mn cc rng buc trn cc bng c s, tc l vn m bo tnh ton vn d liu. Mc d thng qua khung nhn c th thc hin c thao tc b sung v cp nht d liu cho bng c s nhng ch hn ch i vi nhng khung nhn n gin. i vi nhng khung nhn phc tp th thng khng thc hin c; hay ni cch khc l d liu trong khung nhn l ch c.

4.7 Thay i nh ngha khung nhnCu lnh ALTER VIEW dng nh ngha li khung nhn c cu trc nh sau: ALTER VIEW tn_khung_nhn [(danh_sch_tn_ct)] AS Cu_lnh_SELECT V d: V d di y nh ngha li khung nhn CUSTOMERINFO alter view customerinfo as select CUSTOMERNAME, (year(getdate()) - year(birthday)) as AGE, ADDRESS, GENDER from customers Lu : lnh CREATE VIEW khng lm thay i cc quyn c cp pht cho ngi s dng trc . 65

4.8 Xa khung nhnCu lnh DROP VIEW dng xa khung nhn c cu trc nh sau: DROP VIEW tn_khung_nhn V d: drop view customerinfo Lu : Nu mt khung nhn b xo, ton b nhng quyn cp pht cho ngi s dng trn khung nhn cng ng thi b xo. Do , nu ta to li khung nhn th phi tin hnh cp pht li quyn cho ngi s dng.

66

5 Th tc lu tr, hm v trigger5.1 Th tc lu tr (Stored procedure)Th tc lu tr l mt i tng trong CSDL, bao gm nhiu cu lnh T-SQL c tp hp li vi nhau thnh mt nhm, v tt c cc lnh ny s c thc thi khi th tc lu tr c thc thi. Vi th tc lu tr, mt phn no kh nng ca ngn ng lp trnh c a vo trong ngn ng SQL. Th tc lu tr c th c cc thnh phn sau: Cc cu trc iu khin (IF, WHILE, FOR) c th c s dng trong th tc. Bn trong th tc lu tr c th s dng cc bin nh trong ngn ng lp trnh nhm lu gi cc gi tr tnh ton c, cc gi tr c truy xut c t c s d liu. Mt tp cc cu lnh SQL c kt hp li vi nhau thnh mt khi lnh bn trong mt th tc. Mt th tc c th nhn cc tham s truyn vo cng nh c th tr v cc gi tr thng qua cc tham s (nh trong cc ngn ng lp trnh). Khi mt th tc lu tr c nh ngha, n c th c gi thng qua tn th tc, nhn cc tham s truyn vo, thc thi cc cu lnh SQL bn trong th tc v c th tr v cc gi tr sau khi thc hin xong. Li ch ca vic s dng th tc lu tr: SQL Server ch bin dch cc th tc lu tr mt ln v s dng li kt qu bin dch ny trong cc ln tip theo tr khi ngi dng c nhng thit lp khc. Vic s dng li kt qu bin dch khng lm nh hng n hiu sut h thng khi th tc lu tr c gi lin tc nhiu ln. Th tc lu tr c phn tch, ti u khi to ra nn vic thc thi chng nhanh hn nhiu so vi vic phi thc hin mt tp ri rc cc cu lnh SQL tng ng theo cch thng thng. Th tc lu tr cho php chng ta thc hin cng mt yu cu bng mt cu lnh n gin thay v phi s dng nhiu dng lnh SQL. iu ny s lm gim thiu s lu thng trn mng. Thay v cp pht quyn trc tip cho ngi s dng trn cc cu lnh SQL v trn cc i tng c s d liu, ta c th cp pht quyn cho ngi s dng thng qua cc th tc lu tr, nh tng kh nng bo mt i vi h thng. Cc th tc lu tr tr v kt qu theo 4 cch: S dng cc tham s output S dng cc lnh tr v gi tr, cc lnh ny lun tr v gi tr s nguyn.

67

Tp cc gi tr tr v ca mi cu lnh SELECT c trong th tc lu tr hoc ca qu trnh gi mt th tc lu tr khc trong mt th tc lu tr. Mt bin con tr ton cc c th tham chiu t bn ngoi th tc.

5.1.1 To th tc lu trTh tc lu tr c to thng qua c.u lnh CREATE PROCEDURE. CREATE PROCEDURE tn_th_tc [(danh_sch_tham_s)] [WITH RECOMPILE|ENCRYPTION|RECOMPILE,ENCRYPTION] AS Cc_cu_lnh_ca_th_tc Trong : WITH RECOMPILE: yu cu SQL Server bin dch li th tc lu tr mi khi c gi. WITH ENCRYPTION: yu cu SQL Server m ha th tc lu tr. Cc_cu_lnh_ca_th_tc: Cc lnh T-SQL. Cc lnh ny c th nm trong cp BEGINEND hoc khng. V d: Gi s cn thc hin cc cng vic theo th t nh sau: Nhp mt n t hng mi ca khch hng c m khch hng l 3 Nhp cc chi tit n t hng cho n t hng trn. thc hin cc cng vic trn chng ta cn cc cu lnh nh sau: Trc tin nhp n t hng cho khch hng c m khch hng l 3 insert into orders values(3, '7/22/2008') Tip theo thm cc chi tit n t hng cho ha n ny. Gi s rng n t hng c m l 4 v khch hng t mt mt hng c m l 1. insert into orderdetail values(4, 1, 10) Cch vit nh trn c hn ch l: trong qu trnh lm vic s c rt nhiu n t hng mi, do ngi dng s phi vit i vit li nhng cu lnh tng t nhau cho cc khch hng khc nhau. Mt cch gii quyt vn ny l dng th tc lu tr v dng tham s nhn cc thng tin thay i. create procedure sp_InsertOrderAndOrderDetail @customerid int, @orderdate datetime, @orderid int, @itemid int, 68

@quantity decimal, as begin insert into orders values(@customerid, @orderdate) insert into orderdetail values(@orderid, @itemid, @quantity) end Thc hin th tc lu tr ny nh sau: sp_InsertOrderAndOrderDetail 3, 22/7/2008, 4, 1, 10)

5.1.2 Li gi th tcTh tc lu tr c gi theo cu trc Tn_th_tc_lu _tr [danh_sch_tham_s] Cn lu l danh sch tham s truyn vo trong li gi phi theo ng th t khai bo cc tham s trong th tc lu tr. Nu th tc c gi t mt th tc khc, thc hin bn trong mt trigger hay phi hp vi cu lnh SELECT, cu trc nh sau; Exec Tn_th_tc_lu _tr [danh_sch_tham_s]

5.1.3 Bin trong th tc lu trTrong th tc lu tr c th c cc bin nhm lu cc kt qu tnh ton hay truy xut t CSDL. Cc bin trong th tc c khai bo bng t kha DECLARE theo cu trc nh sau: DECLARE @tn_bin kiu_d_liu V d: create procedure sp_SelectCustomerWithMaxAge as begin declare @maxAge int select @maxAge = max(year(getdate())-year(BIRTHDAY)) from customers select CUSTOMERNAME, BIRTHDAY from customers where year(getdate())-year(BIRTHDAY)=@maxAge 69

end

5.1.4 Gi tr tr v trong th tc lu trTrong cc v d trc, nu i s truyn cho th tc khi c li gi n th tc l bin, nhng thay i gi tr ca bin trong th tc s khng c gi li khi kt thc qu trnh thc hin th tc. V d: C th tc lu tr nh sau create procedure sp_TestOutput @a int, @b int, @c int as select @c = @a + @b Thc thi th tc: Declare @tong int set @tong = 0 sp_TestOutput 100, 200, @tong select @tong Kt qu l 0. S dng tham s OUTPUT Trong trng hp cn phi gi li gi tr ca i s sau khi kt thc th tc, ta phi khai bo tham s ca th tc theo c php nh sau: @tn_tham_s kiu_d_liu OUTPUT V d trn c vit li nh sau: create procedure sp_TestOutput @a int, @b int, @c int output as select @c = @a + @b Thc thi th tc: Declare @tong int set @tong = 0 sp_TestOutput 100, 100, @tong output select @tong 70

Kt qu l 200. S dng lnh RETURN Tng nh nh vic s dng tham s OUTPUT, cu lnh RETURN tr v gi tr cho i tng thc thi stored procedure. V d: create procedure sp_TestReturn as begin declare @out int select @out = count(*) from customers return @out end Thc thi th tc lu tr declare @a int exec @a = sp_TestReturn select @a

5.1.5 Tham s vi gi tr mc nhCc tham s c khai bo trong th tc c th nhn cc gi tr mc nh. Gi tr mc nh s c gn cho tham s trong trng hp khng truyn i s cho tham s khi c li gi n th tc. Tham s vi gi tr mc nh c khai bo theo c php nh sau: @tn_tham_s kiu_d_liu V d: create procedure sp_TestDefault @customerid int = 3 as begin select * from customers where customerid = @customerid end Thc thi th tc lu tr theo gi tr mc nh ca tham s. sp_TestDefault 71 = gi_tr_mc_nh

Thc thi th tc v truyn gi tr cho tham s: sp_TestDefault 4

5.1.6 Sa i th tcKhi mt th tc c to ra, ta c th tin hnh nh ngha li th tc bng cu lnh ALTER PROCEDURE c c php nh sau: ALTER PROCEDURE tn_th_tc [(danh_sch_tham_s)] [WITH RECOMPILE|ENCRYPTION|RECOMPILE,ENCRYPTION] AS Cc_cu_lnh_ca_th_tc Cu lnh ny s dng tng t nh cu lnh CREATE PROCEDURE. Vic sa i li mt th tc c khng lm thay i n cc quyn cp pht trn th tc cng nh khng tc ng n cc th tc khc hay trigger ph thuc vo th tc ny.

5.1.7 Xa th tc xo mt th tc c, ta s dng cu lnh DROP PROCEDURE vi c php nh sau: DROP PROCEDURE tn_th_tc Khi xo mt th tc, tt c cc quyn cp cho ngi s dng trn th tc cng ng thi b xo b. Do , nu to li th tc, ta phi tin hnh cp pht li cc quyn trn th tc .

5.2 Hm do ngi dng nh ngha (User Defined Function-UDF)Hm do ngi dng nh ngha c chia lm 3 loi: (1) scalar (hm v hng), (2) inline table-valued (hm ni tuyn, gi tr tr v dng bng), (3) multi-statement table-valued (hm bao gm nhiu cu lnh SQL bn trong, tr v gi tr dng bng) Scalar UDF: c s dng tr v mt duy nht mt gi tr da trn mt cc tham s truyn vo. V d: ta c th to ra mt UDF v hng nhn Customerid l tham s v tr v CustomerName. Inline table-valued: tr v mt bng da trn mt cu lnh SQL duy nht nh ngha cc dng v cc ct tr v. 72

Multi-statement table-value: cng tr v kt qu l mt tp hp nhng c th da trn nhiu cu lnh SQL.

5.2.1 Hm v hng - Scalar UDFScarlar UDF c to ra bng cu lnh CREATE FUNCTION c cu trc nh sau; CREATE AS BEGIN cc_cu_lnh_ca_hm END V d: Cu lnh di y nh ngha hm tnh ngy trong tun (th trong tun) ca mt gi tr kiu ngy create function f_ thu(@ngay datetime) returns nvarchar(10) as begin declare @st nvarchar(10) select @st=case datepart(dw,@ngay) when 1 then N'ch nht' when 2 then N'th hai' when 3 then N 'th ba' when 4 then N 'th t' when 5 then N 'th nm' when 6 then N 'th su' else N 'th by' end return (@st) /* tr tr v ca hm */ end Sau khi chy thnh cng, hm tr thnh mt i tng trong CSDL v c th c truy xut nh cc hm c xy dng sn trong SQL Server 2005 Express Edition. FUNCTION tn_hm ([danh_sch_tham_s]) RETURNS (kiu_tr_v_ca_hm)

73

V d: select CUSTOMERNAME, dbo.f_thu(BIRTHDAY) from customers

5.2.2 Hm ni tuyn - Inline UDFHm ni tuyn c nh ngha bng lnh CREATE FUNCTION. CREATE FUNCTION tn_hm ([danh_sch_tham_s]) RETURNS TABLE AS RETURN (cu_lnh_select) C php ca hm ni tuyn phi tun theo cc qui tc sau: Kiu tr v ca hm phi c ch nh bi mnh RETURNS TABLE.

74

Trong phn thn ca hm ch c duy nht mt cu lnh RETURN xc nh gi tr tr v ca hm thng qua duy nht mt cu lnh SELECT. Ngoi ra, khng s dng bt k cu lnh no khc trong phn thn ca hm. V d: V d di y ly ra cc khch hng ty thuc vo gi tr m khch hng truyn vo cho tham s. create function f_SelectCustomer (@customerid int) returns table as return (select * from customers where customerid > @customerid) Vic gi cc hm ni tuyn cng tng t nh vic gi cc hm v hng. V d: select tmp.CUSTOMERNAME, o.ORDERDATE from orders o inner join dbo.f_SelectCustomer(3) as tmp on o.customerid = tmp.customerid

5.2.3 Hm bao gm nhiu cu lnh bn trong Multi statement UDFHm ny cng c nh ngha bng lnh CREATE FUNCTION CREATE FUNCTION tn_hm ([danh_sch_tham_s]) RETURNS @bin_bng TABLE nh_ngha_bng AS BEGIN cc_cu_lnh_trong_thn_hm RETURN END Lu : sau t kha RETURNS l mt bin bng c nh ngha. V sau t kha RETURN cui hm khng c tham s no i km. V d: create function f_SelectCustomer (@customerid int) returns @myCustomers table ( customerid int, 75

customername nvarchar(50), orderdate datetime ) as begin if @customerid = 0 insert into @myCustomers select c.customerid, c.customername, o.orderdate from customers c inner join orders o on o.customerid = c.customerid else insert into @myCustomers select c.customerid, c.customername, o.orderdate from customers c inner join orders o on c.customerid = o.customerid where c.customerid = @customerid return end Vic gi hm multi statement UDF cng tng t cc loi hm khc select * from f_SelectCustomer(0)

select * from f_SelectCustomer(3)

5.2.4 Thay i hmDng lnh ALTER FUNCTION thay i nh ngha hm. Cu trc ca cu lnh ALTER FUNCTION tng t nh CREATE FUNCTION V d: alter function f_SelectCustomer (@customerid int) returns table as return (select * from customers 76

where customerid > @customerid)

5.2.5 Xa hmDng lnh DROP FUNCTION xa hm. Cu trc lnh DROP FUNCTION nh sau DROP FUNCTION tn_hm V d: drop function f_thu Tng t nh th tc lu tr, khi hm b xa cc quyn cp cho ngi dng trn hm cng b xa. Do khi nh ngha li hm ny, ta phi cp li quyn cho cc ngi dng.

5.3 TriggerTrigger l mt dng c bit ca th tc lu tr, c thc thi mt cch t ng khi c s thay i d liu (do tc ng ca cu lnh INSERT, UPDATE, DELETE) trn mt bng no .

5.3.1 Cc c im ca triggerTrigger ch thc thi t ng thng qua cc s kin m khng thc hin bng tay. Trigger s dng c vi khung nhn. Khi trigger thc thi theo cc s kin Insert hoc Delete th d liu khi thay i s c chuyn sang cc bng INSERTED v DELETED, l 2 bng tm thi ch cha trong b nh, cc bng ny ch c s dng vi cc lnh trong trigger. Cc bng ny thng c s dng khi phc li phn d liu thay i (roll back). Trigger chia thnh 2 loi INSTEAD OF v AFTER: INSTEAD OF l loi trigger m hot ng ca s kin gi trigger s b b qua v thay vo l cc lnh trong trigger c thc hin. AFTER trigger l loi ngm nh, khc vi loi INSTEAD OF th loi trigger ny s thc hin cc lnh bnh trong sau khi thc hin xong s kin kch hot trigger.

5.3.2 Cc trng hp s dng triggerS dng Trigger khi cc bin php bo m ton vn d liu khc khng bo m c. Cc cng c ny s thc hin kim tra tnh ton vn trc khi a d liu vo CSDL, cn Trigger thc hin kim tra tnh ton vn khi cng vic thc hin Khi CSDL cha c chun ha (Normalization) th c th xy ra d liu tha, cha nhiu v tr trong CSDL th yu cu t ra l d liu cn cp nht thng nht trong mi ni. Trong trng hp ny ta phi s dng Trigger.

77

Khi xy ra thay i dy chuyn d liu gia cc bng vi nhau (khi d liu bng ny thay i th d liu trong bng khc cng c thay i theo).

5.3.3 Kh nng sau ca triggerMt trigger c th nhn bit, ngn chn v hu b c nhng thao tc lm thay i tri php d liu trong c s d liu. Cc thao tc trn d liu (xo, cp nht v b sung) c th c trigger pht hin ra v t ng thc hin mt lot cc thao tc khc trn c s d liu nhm m bo tnh hp l ca d liu. Thng qua trigger, ta c th to v kim tra c nhng mi quan h phc tp hn gia cc bng trong c s d liu m bn thn cc rng buc khng th thc hin c.

5.3.4 nh ngha triggerCu lnh CREATE TRIGGER c s dng inh ngha trigger v c cu trc nh sau: CREATE TRIGGER tn_trigger ON tn_bng FOR {[INSERT][,][UPDATE][,][DELETE]} AS [IF UPDATE(tn_ct) [AND UPDATE(tn_ct)|OR UPDATE(tn_ct)] ...] cc_cu_lnh_ca_trigger Lu : Nh ni trn, chun SQL nh ngha hai bng logic INSERTED v DELETED s dng trong cc trigger. Cu trc ca hai bng ny tng t nh cu trc ca bng m trigger tc ng. D liu trong hai bng ny tu thuc vo cu lnh tc ng ln bng lm kch hot trigger; c th trong cc trng hp sau: Khi cu lnh DELETE c thc thi trn bng, cc dng d liu b xo s c sao chp vo trong bng DELETED. Bng INSERTED trong trng hp ny khng c d liu. D liu trong bng INSERTED s l dng d liu c b sung vo bng gy nn s kch hot i vi trigger bng cu lnh INSERT. Bng DELETED trong trng hp ny khng c d liu. Khi cu lnh UPDATE c thc thi trn bng, cc dng d liu c chu s tc ng ca cu lnh s c sao chp vo bng DELETED, cn trong bng INSERTED s l cc dng sau khi c cp nht. 78

Hot ng INSERT DELETE UPDATE

Bng INSERTED d liu c insert khng c d liu d liu c cp nht

Bng DELETED khng c d liu d liu b xa d liu trc khi cp nht

V d 1: V d di y minh ha vic trigger c kch hot khi thm d liu vo bng CUSTOMERS if exists (select name from sysobjects where name = 't_CheckCustomerName' and type = 'TR') drop trigger t_CheckCustomerName go create trigger t_CheckCustomerName on customers for insert as declare @lengthOfName int select @lengthOfName = len(inserted.customername) from inserted if @lengthOfName 20 Hm CONVERT v hm CAST c th s dng kt hp vi nhau cho kt qua nh mong mun. V d: select c.CUSTOMERID, c.CUSTOMERNAME, convert(varchar(20),cast(SUM(i.UNITPRICE*od.QUANTITY) SUMTOTAL from inner join orderdetail od on o.orderid = od.orderid inner join items i on i.itemid = od.itemid group by c.customerid, c.customername as money),1) as

customers c inner join orders o on o.customerid = c.customerid

100

8 Kt ni vo SQL Server 2005 t cc ngn ng lp trnh xy dng cc ng dng lin quan n CSDLMc tiu cui cng ca vic hc h qun tr CSDL Microsoft SQL Server 2005 l ngi hc bit dng h qun tr ny trong vic xy dng cc CSDL cho cc ng dng qun l trong thc t. ng thi s dng cc cng c trong Microsoft SQL Server 2005 qun tr CSDL ca mnh.

8.1 Cu hnh Microsoft SQL Server 2005Nh ni trong chng 1, Microsoft SQL Server 2005 s dng hai kiu nh danh ngi dng: Windows Authentication v SQL Server Authentication. Windows Authentication: thch hp trong vic xy dng cc ng dng qun l trn my n ( ngha l SQL Server v ng dng qun l cng trn mt my). Nhng ng dng ny thng c CSDL kh nh v tc tng trng ca CSDL khng cao. SQL Server Authentication: thch hp trong vic xy dng cc ng dng qun l c CSDL ln, nhiu ngi dng cng lc. Trong cc ng dng ny, CSDL c t trn Database Server, ng dng trn cc my trm s thc hin cc kt ni vo Database Server ny v thc hin cc thao tc trn CSDL. Cc kt ni ny c gi l cc kt ni t xa (remote connection). Tuy nhin, khi kt ni mt my tnh n mt th hin (instance) ca Microsoft SQL Server 2005 to mt kt ni t xa, bn c th nhn mt thng bo li nh sau: Microsoft SQL Native Client: An error has occurred while establishing a connection to the server. When connecting to SQL Server 2005, this failure may be caused by the fact that under the default settings SQL Server does not allow remote connections. Li ny xy ra v Microsoft SQL Server cha c cu hnh chp nhn cc kt ni t xa. Mc nh, phin bn SQL Server 2005 Express Edition v phin bn SQL Server 2005 Developer Edition khng cho php cc kt ni t xa. cu hnh SQL Server 2005 chp nhn cc kt ni t xa cn thc hin cc bc sau: Cho php tip nhn cc kt ni t xa trn th hin ca SQL Server m cc ng dng my trm cn kt ni. Kch hot dch v SQL Server Browser Cu hnh tng la cho php cc d liu lin quan n SQL Server v dch v SQL Server Browser c lu thng trn mng.

101

8.1.1 Cho php tip nhn cc kt ni t xa trn th hin ca SQL ServerClick Start -> Programs -> Microsoft SQL Server 2005 -> Configuration Tools -> SQL Server Surface Area Configuration. Trong trang SQL Server 2005 Surface Area Configuration, click Surface Area Configuration for Services and Connections. Trong trang Surface Area Configuration for Services and Connections, m nt Database Engine, click Remote Connections, click Local and remote connections, click chn giao thc thch hp (giao thc ny c la chn da trn giao thc thc t c dng trong mi trng lm vic), sau click Apply. Trong mi trng hc tp, chng ta thng dng giao thc TCP/IP. Lu : Click OK khi nhn c thng bo: Changes to Connection Settings will not take effect until you restart the Database Engine service. Trong trang Surface Area Configuration for Services and Connections, m nt Database Engine, click Service, click Stop, i n khi dch v MSSQLSERVER dng li, sau click Start khi ng li dch v MSSQLSERVER . Lu : nu chng ta khng cn s dng SQL Server 2005 thng xuyn, ta c th ch khi ng ca dch v MSSQLSERVER l manual (ngha l khi no cn dng th s kch hot) nhm gim bt thi gian khi ng Windows v tit kim ti nguyn h thng..

8.1.2 Kch hot dch v SQL Server BrowserNu chng ta thao tc trn SQL Server 2005 bng vic s dng tn th hin (instance name) v khng ch nh mt port c th trong chui kt ni (chng ta s ni v chui kt ni k hn trong phn kt ni cc ngn ng lp trnh vi SQL Server 2005) th chng ta phi kch hot dch v SQL Server Browser cho php cc kt ni t xa. V d: SQL Server 2005 Express Edition c ci t vi mt th hin mc nh l tn_my_tnh\SQLEXPRESS. Chng ta ch cn kch hot dch v SQL Server Browser mt ln bt k chng ta c bao nhiu

102

th hin ca SQL Server 2005 ang c s dng (running). kch hot dch v SQL Server Browser, cn lm theo cc bc sau: Click Start -> Programs -> Microsoft SQL Server 2005 -> Configuration Tools, click SQL Server Surface Area Configuration. Trong trang SQL Server 2005 Surface Area Configuration, click Surface Area Configuration for Services and Connections. Trong trang Surface Area Configuration for Services and Connections, click SQL Server Browser, click Automatic for Startup type, click Apply. Lu : tng t nh dch v MSSQLSERVER, nu chn startup type l Automatic th dch v SQL Server Browser s c khi ng khi Windows khi ng Kim tra tnh trng dch v trong Service status. Sau click Start nu dch v ny ang b Stop. Lu : Thc hin cc bc trn lm tng cc nguy c cho h thng v h thng s hin th thng tin ca cc th hin ca SQL Server ng chy trn h thng. Cc nguy c ny c th c gim thiu bng cch khng kch hot dch v SQL Server Browser v kt ni vo th hin ca SQL Server thng qua mt port. Chi tit c th tham kho Microsoft Book Online theo cc ch sau: SQL Server Browser Service Connecting to the SQL Server Database Engine Client Network Configuration

8.1.3 To cc ngoi l trn Windows FirewallCc bc di y p dng cho Windows Firewall trong Windows XP Service Pack 2 (SP2) v trong Windows Server 2003. Nu tng la c s dng trn my tnh ci t SQL Server 2005, cc kt ni t bn ngoi s b chn tr khi SQL Server 2005 v SQL Serve Browser c th lin lc qua tng la. Chng ta phi to ra cc ngoi l cho mi th hin ca SQL Server 2005 (mun th hin no tip nhn kt ni t xa th chng ta phi to ngoi l cho th hin ) v mt ngoi l cho dch v SQL Server Browser. Vic to ngoi l theo cc bc sau: Click Start -> Programs -> Microsoft SQL Server 2005 ->Configuration Tools -> SQL Server Configuration Manager. 103

Trong trang SQL Server Configuration Manager, click SQL Server Services, right-click tn th hin, v click Properties. Trong trang SQL Server Browser Properties, click tab Advanced, xc nh instanceID trong danh sch thuc tnh, v click OK. Lu : Chng ta c th c nhiu th hin SQL Server, do chng ta phi xc nh ng instanceID no chng tao mun to ngoi l. m Windows Firewall, click Start, click Run, nh firewall.cpl, v click OK. To ngoi l cho SQL Server 2005 trong Windows Firewall Trong Windows Firewall, click tab Exceptions, sau click Add Program. Trong ca s Add a Program window, click Browse. C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Binn\sqlservr.exe, click Open, v click OK. Lu : ng dn c th khc nhau ty thuc vo th mc ci t ca SQL Server 2005. MSSQL.1 l ni lu tr cho instanceID chng ta thu c trong bc trn. Lp li cc bc trn cho mi th hin ca SQL Server 2005 cn thit lp ngoi l. To ngoi l cho dch v SQL Server Browser trong Windows Firewall Trong Windows Firewall, click tab Exceptions, v click Add Program. Trong ca s Add a Program, click Browse. C:\Program Files\Microsoft SQL Server\90\Shared\sqlbrowser.exe, click Open, v click OK. Lu : ng dn c th thay i ty thuc vo th mc ci t ca SQL Server 2005.

8.2 Kt ni vo SQL Server trong cc ngn ng lp trnh8.2.1 C# v VB.NETTy thuc vo vic s dng .NET Data Provider (tp cc i tng phc v vic trao i d liu) no trong .NET Framework v vic s dng hnh thc Authentication no truy xut d liu trong SQL Server 2005, chng ta s c cc cch khc nhau kt ni n SQL Server 2005. Trong phn trnh by ny s s dng System.Data.SqlClient l mt Data Provider ph bin kt ni vi SQL Server 2005. Trong C#: public void ConnectToSql () 104

{ System.Data.SqlClient.SqlConnection conn = new System.Data.SqlClient.SqlConnection (); // TODO Xy dng chui kt ni conn.ConnectionString = "integrated security=true;data source=tn_SQLSERVER;" + "persist security info=False;initial catalog=tn_CSDL"; try { conn.Open(); // Xy dng code tng tc vi CSDL y } catch (Exception ex) { MessageBox.Show("Failed to connect to data source"); } finally { conn.Close(); } } Trong VB.NET Public Sub ConnectToSql() Dim conn As New SqlClient.SqlConnection ' TODO Xy dng chui kt ni conn.ConnectionString = & _ "integrated security=true;data source=tn_SQL Server;" & _ "persist security info=False;initial catalog=tn_CSDL" Try conn.Open() ' Xy dng code tng tc vi CSDL y Catch ex As Exception 105

MessageBox.Show("Failed to connect to data source") Finally conn.Close() End Try End Sub Trong hai v d trn chng ta xy dng hm kt ni vo SQL Server 2005 m thnh phn quan trng nht l chui kt ni vo CSDL: Trong C#: "integrated security=true;data source=tn_SQLSERVER;" + "persist security info=False;initial catalog=tn_CSDL"; Trong VB.NET: "integrated security=true;data source=tn_SQL Server;" & _ "persist security info=False;initial catalog=tn_CSDL" Trong : Intergrated security = true: s dng Windows Authentication data source: ch nh tn th hin ca SQL Server 2005 m chng ta mun kt ni. persist security info: Thit lp mc nh cho t kha persist security info l false. Thit lp sang gi tr true s cho php cc d liu nhy cm bao gm UserID v password c th c truy xut khi kt ni c m initial catalog: Tn CSDL m chng ta mun tng tc. V d chui kt ni s dng Windows Authentication: "integrated security=true;data source=.\\SQLExpress" + "persist security info=False;initial catalog=myDB"; V d chui kt ni s dung SQL Server Authentication: "persist security info=False;User ID = *****; password = ***** + initial catalog=myDB; data source=.\\SQLExpress ";

8.2.2 VB 6V d di y minh ha vic xy dng ng dng CSDL bng VB6. Gi s chng ta c CSDL tn l Test, SQL Server l .\\SQLExpress, User l sa, Password l 1234. Private Sub Command1_Click() Dim connectionString As String Dim commandString As String Dim sqlConnection As ADODB.Connection 106

Dim rs As Recordset connectionString="PROVIDER=SQLOLEDB; DATA SOURCE=.\SQLEXPRESS;

connectionString = UID=sa; PWD=1234;DATABASE=Test" commandString = "select count(*) as count from Users where UserName = '" commandString = commandString & Text1.Text & "' and Password = '" commandString = commandString & Text2.Text & "'" Set sqlConnection = New ADODB.Connection sqlConnection.Open (connectionString) Set rs = New Recordset rs.Open commandString, sqlConnection If (rs("count") = 1) Then MsgBox "Login successfully" End If End Sub

107

Ti liu tham kho1. Gio trnh h qun tr c s d liu SQL Server, Khoa CNTT, i hc Hu. 2. SQL Server 2005, T-SQL Recipes: Problem, Solution, Approach Appress Publisher. 3. Sams Teach yourself Microsoft SQL Server 2005 Express in 24 hours.

108