Professional Documents
Culture Documents
GTSQLServer
GTSQLServer
Phn Server: cha cc CSDL, cung cp cc chc nng phc v cho vic t chc v qun l CSDL, cho php nhiu ngi s dng cng truy cp d liu. iu ny khng ch tit kim m cn th hin tnh nht qun v mt d liu. Tt c d liu u c truy xut thng qua server, khng c truy xut trc tip. Do , c bo mt cao, tnh nng chu li, chy ng thi, sao lu d phng Phn Client (ng dng khch): L cc phn mm chy trn my trm cho php ngi s dng giao tip CSDL trn Server. SQL Server s dng ngn ng lp trnh v truy vn CSDL Transact-SQL, mt version ca Structured Query Language. Vi Transact-SQL, bn c th truy xut d liu, cp nht v qun l h thng CSDL quan h. Vi mi My ch bn ch c mt h thng QTCSDL SQL Server. Nu mun c nhiu h thng QTCSDL bn cn c nhiu my ch tng ng. Cc phin bn SQL Server 2000 : a) Phin bn chun (Standard Edition): l phin bn cung cp ton b chc nng v c thit k nhm chy trn my tnh vi HH Windows NT hoc Windows 2000 Server. b) Phin bn Personal Engine: Chy trn my n vi HH Windows NT; Windows 2000 Server v c Windows 9x. N h tr hu ht cc tnh nng ca SQL Server. Do , bn c th xy dng CSDL vi phin bn ny, sau trin khai trn cc phin bn khc. Ngoi ra cn cc phin bn khc chy trn Window NT hoc 2000 Server nh : Enterprise Edition: dng cho x nghip Developer Edition : dng cho cc doanh nghip nh Desktop Engine
-1-
Sau khi ci t, SQL Server c 4 CSDL h thng v 2 CSDL v d sau: 1- Master: l CSDL kim sot tt c cc hot ng trn SQL Server, cha thng tin v h thng SQL Server : Cc ti khon ng nhp, cu hnh h thng, thng tin v cc CSDL to, cc th tc h thng thc hin cc tc v qun tr h thng, cc th tc ca ngi dng to thm V d: khi User to CSDL mi, thm hay xa Stored Procedure, cc thng tin ny u c lu tr trong CSDL master. Ch : Cn Backup CSDL Master mi khi bn sa i h thng. 2- Model : Cha cc template dng lm mu to CSDL mi. Khi bn to CSDL th SQL Server ly tt c cc mu (bao gm Tables, Views,) t CSDL ny. 3- MSDB: dng h tr dch v SQL Server Agent, bao gm sp xp thng tin v cc cng vic theo lch biu, cc cnh bo li, cc s kin, nhn bn. Lch s v cc hot ng Backup u c lu trong CSDL ny. V d: Khi bn to mt lch trnh cho vic backup d liu hay lch trnh thc hin Stored Procedure, tt c cc tc v ny u lu trong CSDL ny. Nu xa CSDL ny, bn phi ci t li n khi cn dng hoc khi h thng yu cu. 4- Tempdb: l ni lu tr cc thng tin tm thi ca cc hot ng trn SQL, v d nh cc table tm phc v cho vic sp xp d liu. CSDL tempdb t khi to li mi khi SQL Server c khi ng li. 5- Pubs: l CSDL mu v mt nh xut bn, bao gm cc tc gi, cc cun sch, v thng tin v vic bn sch. Hu ht cc tnh nng CSDL u c th hin trong CSDL ny. 6- NorthWind: L CSDL h tr cho vic hc tp SQL Server i vi nhng ngi s dng MS Access
-1
y l trnh qun l cc dch v trn SQL Server nh: MSSQL Server, SQL Server Agent, Microsoft Distrinuted Transaction Coordinator (MS DTC). MSSQL Server : l RDBMS, x l cc pht biu Transact-SQLv qun l cc file lu tr cc CSDL SQL Server Agent : dng lp lch thc hin t ng cc cng vic nh Backup d liu, Replication, Microsoft Distributed Transaction Coordinator (MSDTC): H tr cho cc ng dng Client lm vic vi cc d liu c phn b trn nhiu my ch.
-3-
kh nng truy xut t my ca bn. Tuy nhin, bn c th g tn my ch cn kt ni khng c trong danh sch v click nt mi tn trn hp Services, Tin ch Services Manager s c gng kt ni ti my ch xa. Combo Services: Cha tn cc dch v c cung cp bi SQL Server chn. Mi dch v s 1 trong 3 trng thi. Mt s dch v khng cung cp chc nng tm dng. V d MSSQLServer vn tip tc hot ng khi n tm dng, nhng cc kt ni mi th khng c php.
-2
Enterprise Manager cung cp cc chc nng pht trin v qun tr SS bng giao din ha. Cc tnh nng ca EM: To, xa, cp nht CSDL v cc i tng ca n. Qun l lch trnh Backup d liu Qun l ngi dng ang truy cp CSDL trn SS. To, xa cp nht quyn Login User nh cu hnh cho Server
-4-
To v qun l tm kim.
Databases : cha cc CSDL c ci t trn my ch. Data Transform Service (DTS) : Cung cp phng tin chuyn i d liu t nhiu ngun khc nhau vo SQL Server hoc t SQL Server sang cc ngun khc. N cng c giao din cho php lp trnh xy dng nhng gi dch v chuyn i d liu. Management: Cho php bn thc hin cc tc v qun tr CSDL, xem nht k hot ng ca Server, qun l SQL Server Agent. Replication: cho php phn b d liu v cc i tng Database t mt CSDL n mt database n mt database khc. Typically, replication is used between physically distributed servers. Security : cha cc chc nng iu khin tt c cc hot ng lin quan n vic bo mt ca SQL Server. Support Services: cho php iu khin cc dch v khc c quan h vi SQL Server nh : Distributed Transaction Coordinator, Full Text Search v SQL Mail cho php nhn e-mail t SQL Server. Metadata Services enables you to manage metadata, or data about data.
-3
-5-
QA cho php thc hin 32 kt ni ring r cng mt lc. Mi kt ni c mt thanh tiu nhn dng cc yu t sau: My tnh c ng nhp CSDL ang s dng Thng tin ng nhp Tn File truy vn ang m S ca ca s c hin th Query Analyzer Icons Use this To do this M ca s truy vn mi M mt file truy vn (.sql) Lu cc lnh vo file. M mt file truy vn mu Xa ni dung ca s Cch hin th kt qu truy vn: Result to text, result to grid, result to file. Kim tra c php. Thc hin truy vn. Kt thc truy vn. Hin th s nh gi tc thc hin truy vn. Hin n khung lit k cc i tng CSDL (Objects Browser) M hp thoi khai bo thuc tnh kt ni. Hin n khung cha kt qu truy vn
-6-
Bn c th chn CSDL cn truy cp t DB Conmbo box trn thanh cng c hoc c th s dng lnh: Use <database name> . Transact-SQL Script l tp hp cc lnh c lu tr v thi hnh cng lc. Lnh File\Open v File\Save cho php m v lu mt truy vn (hoc tp hp cc truy vn). Theo mc nh, cc Sript c phn m rng l .SQL. HighLight t kha bng chut v n Shift-F1 m phn tr gip lin quan. Bn c th chy mt lnh trong ca s Query bng cch Highlight cu lnh bng chut v sau cho thi hnh.
-4
Cung cp cc th vin nghi thc kt ni mng (Netword-Libraries) cho php cc my trm c th truy cp CSDL trn my Server: Named Pipes; TCP/IP; Multiprotocol; NW Link IPX/SPX
-5
Books Online:
Sch hng dn trc tuyn c lu di dng HTML c bin dch, nn c th xem chng bng cc trnh duyt Web.
V-
-1
kt ni vi SS, ngi s dng phi c mt ti khon ng nhp(Login Account) c cung cp bi ngi qun tr h thng. Khi SQL Server chy trn Windows NT, Ngi Qun tr h thng c th ch nh n chy 1 trong 2 ch xc nhn : -a Ch xc nhn Windows NT (Windows NT Authentication Mode): Khi User ch cn s dng ti khon ng nhp ca Windows NT truy cp vo mng l c th kt ni ti SS v cc ti nguyn khc trn mng. Ngi qun tr h thng phi gn quyn truy xut SQL Server cho mi ti khon ngi dng hoc ti khon nhm ngi dng trn mng. SQL Server ci t trn Windows 9x khng h tr ch ny. -b Ch hn hp (Mixed Mode): Mt s User c th kt ni vi SQL Server vi xc nhn Windows NT. Mt s User khc ch s dng xc nhn ca SQL Server (SQL Server Authentication) da trn Login Name v Password do ngi qun tr CSDL cp.
-2
Ty theo yu cu, mi ngi dng c th c gn hoc khng gn cc quyn nh : Quyn s dng cc ng dng CSDL trong SQL Server Quyn to v sa i cu trc cc i tng trong SQL Server Quyn truy cp v x l d liu.
-7-
Real : -3.40E + 38 n 3.40E + 38. Ngy gi Bao trong du Datetime : 1-1- 1753 n 31-12- 9999, chnh xc 3/100 giy hay 3.33 nhy n. milliseconds. Smalldatetime : 1-1- 1900 n 6-6- 2079, vi chnh xc l 1 pht. Chui k t (khng theo Unicode) - Character Strings Bao trong du Char(n) : di c nh, ti a l 8000 k t. nhy n Varchar(n): di khng c nh, ti a l 8000 k t. Text : di khng c nh, ti a l 2^31 1 k t. Chui k t Unicode - Unicode Character Strings Bao trong du nChar(n) : di c nh, ti a l 4000 k t. nhy n v phi nVarchar(n) : di khng c nh, ti a l 4000 k t. bt u bng ch nText : di khng c nh, ti a l 2^30 1 k t. N: Nsssss S nh phn - Binary Strings 0Xnnnn Binary(n) : di c nh (ti a 8000 bytes). Varbinary(n) : di thay i (ti a 8000 bytes). Image : di thay i (ti a 2^31-1 bytes). Other Data Types Cursor : kiu con tr Sql_Variant : Nhn gi tr ca nhiu kiu d liu khc nhau trong SQL Server ngoi tr cc kiu text, ntext, timestamp, v sql_variant. Table : dng lu tr cc tp d liu cho ln x l sau. Timestamp : kiu s (binary(8) hay varbinary(8)). Ct khai bo kiu ny s c t ng cp nht vi gi tr phn bit mi khi thm mt mu tin mi.. UniqueIdentifier : A globally unique identifier (GUID). Ch : Kiu Text, nText, v Image khng dng cho bin cc b. Trc hng (Literals): bao gm hng s (Number - V d. 1234.56 1234.56), hng vn bn (Text) v ngy gi trong cp du nhy n (V d. Nguyn Hng Anh ) v hng lgic (True hay False)
-1
FROM CLAUSE :
Ch nh ngun d liu. truy vn thng tin t nhiu bng, S dng php kt gia cc bng trong mnh FROM: (theo ANSI) <table_source> <join_type> <table_source> ON <search_condition> <join_type>: Gm cc php kt : INNER JOIN, LEFT [OUTER] JOIN; RIGHT [OUTER] JOIN; FULL [OUTER] JOIN : kt hp Left Join v Right Join CROSS JOIN : khng c mnh ON v l php tch Cartesian.
-9-
-2
SELECT CLAUSE :
SELECT [DISTINCT] [TOP n [PERCENT] [ WITH TIES] ] <column_list> [FROM <table_list>]
DISTINCT : Ch hin nhng dng c d liu phn bit.Mc nh cc dng trng d liu u c xut hin trong kt qu. - TOP n [PERCENT] : ch hin n dng hoc n% dng u tin. n l s nguyn t 0 n 100. - WITH TIES: hin lun nhng dng c cng gi tr ca nhng ct kha sp xp trong mnh ORDER BY. - <column_list> ::= { * | { table_name | view_name | table_alias }.* | column_name [ [AS] column_alias ] | expression [ [AS] column_alias ] | column_alias = expression } [,...n] Du * : hin th tt c cc ct ca cc table { TableName | ViewName | TableAlias }.* : Hin tt c cc ct ca bng ch nh. ColumnName [AS] ColunmAlias : i tn ct trn bng ngun. Nu b danh c du cch hoc trng vi t kho ca SS, bn phi ghi b danh trong du nhy n hoc du ngoc vung ([]) column_alias = expression hoc expression [AS] column_alias: To ct tnh ton. Nu khng ch nh Column Alias th ct khng c tn. expression l dy cc ton hng (Operand) ni vi nhau bi cc php ton (Operator): -a Cc php ton c th l: Cc php ton s hc: * (nhn), / (chia), % (phn d); + (cng), - (tr). Th t u tin cao nht theo 3 cm t tri qua phi. Php ni chui : ( + ) -b Ton hng c th l: Tn thuc tnh (c th km theo tn bng v du chm ng trc). Hm (function). Trc hng (Literals): bao gm hng s (Number - V d. 1234.56 1234.56), hng vn bn (Text) v ngy gi trong cp du nhy n (V d. Nguyn Hng Anh ) v hng lgic (True hay False); Gi tr NULL. Tn bin (Variable) -c Cc hm ton hc: ABS(x) : Tr tuyt i ca x SQRT(x) : Cn bc hai ca x SQUARE( x) : x2 POWER( y, x ) : yx LOG(x) : Logarit t nhin ca x EXP(x) : Hm m c s e ca x: ex. SIGN(x) : Ly du ca s x (-1: x<0, 0: x=0, +1: x>0) ROUND(x,n) : Lm trn ti n s l. CEILING( x) : S nguyn nh nht nhng ln hn x FLOOR(X) : S nguyn ln nht nhng nh hn x ... v cc hm lng gic: SIN, COS, TAN, ASIN, ACOS, ATAN ... -d Cc hm x l chui k t: ACSII( ch ) : M ASCII ca k t ch
- 10 -
CHAR( n ) : K t c m ASCII l n LOWER( str ) : Tr v chui ch thng UPPER(str) : Tr v chui ch hoa LTRIM(str) : Tr v chui khng c du cch bn tri RTRIM(str) : Tr v chui khng c du cch bn phi LEFT(str,n): Ly n k t pha tri ca dy str. RIGHT(str,n): Ly n k t pha phi ca dy str. SUBSTRING(str, start, n): Ly n k t ca dy str k t v tr start trong dy. REPLACE(str1, str2, str3): thay th tt c str2 trong str1 bng str3. STUFF(str1, start, n, str2 ): Thay th n k t trong str1 t v tr start bng chui str2. STR( x, len [, Dec]): Chuyn s x thnh chui. -e Cc hm x l ngy thng v thi gian: GETDATE(): Cho ngy thng nm hin ti (Oracle: SYSDATE) DAY(dd): Cho s th t ngy trong thng ca biu thc ngy dd. MONTH(dd): Cho s th t thng trong nm ca biu thc ngy dd. YEAR(dd): Cho nm ca biu thc ngy dd. DATEPART(datepart, date) Datepart Abbreviations DATEADD(datepart,number, date) Year yy, yyyy DATEDIFF(datepart, date1, date2) Quarter qq, q Month mm, m Day of year dy, y Day of Month dd, d Week of year wk, ww Weekday dw Hour hh Minute mi, n Second ss, s Millisecond Ms -f Cc hm chuyn i kiu gi tr: CAST(expression AS data_type[(length)]) CONVERT (data_type[(length)], expression [, style]) Style : Dng thc kiu ngy m bn mun khi chuyn i d liu kiu datetime hoc smalldatetime ti kiu k t (nchar, nvarchar, char, varchar, nchar, or nvarchar), Hoc dng chui m bn mun khi chuyn d liu kiu s (float, real, money, or smallmoney) sang kiu k t(nchar, nvarchar, char, varchar, nchar, or nvarchar). Trong bng, 2 ct bn tri biu din dng gi tr datetime hoc smalldatetime chuyn sang character. Cng thm 100 cho gi tr style c dng nm 4 ch s. Without With century Standard Input/Output** century (yy) (yyyy) 0 or 100 (*) Default mon dd yyyy hh:miAM (or PM) 1 101 USA mm/dd/yy 2 102 ANSI yy.mm.dd 3 103 British/French dd/mm/yy 4 104 German dd.mm.yy 5 105 Italian dd-mm-yy 6 106 dd mon yy
- 11 -
7 8 10
-g
mon dd, yy hh:mm:ss mon dd yyyy hh:mi:ss:mmmAM (or PM) 110 USA mm-dd-yy V d: Select Conver(Char(8), GetDate(), 2) -- kt qu : 04.09.16 Gi tr Style chuyn kiu float hay real sang kiu k t. 0 (the default): Ti a 6 ch s, dng trong k hiu khoa hc. 1 lun lun 8 ch s. Lun dng trong k hiu khoa hc. 2 lun lun 16 ch s. Lun dng trong k hiu khoa hc.. In the following table, the column on the left represents the style value for money or smallmoney conversion to character data. 0 (the default) Khng du phy phn cch hng ngn; c 2 ch s thp phn. V d: 4235.98. 1 C du phn cch hng ngn v 2 ch s thp phn; V d: 3,510.92. 2 Khng du phy phn cch hng ngn, ; c 4 ch s thp phn. V d: 4235.9819. Mt s hm h thng: ISDATE(variable | column name): Kim tra dng ngy hp l. Tr v 1 nu hp l v 0 nu khng hp l. ISNUMERIC(variable | column name): Kim tra dng s hp l. Tr v 1 nu hp l v 0 nu khng hp l. ISNULL(expression, value) : Tr v gi tr value nu expression c gi tr NULL, ngc li tr v gi tr ca expression. Gi tr tr v cng kiu vi exoression. NULLIF(exp1, exp2) : Tr v gi tr NULL nu exp1 = exp2. COALESCE(exp1, exp2, .., expN) : tr v biu thc khc NULL u tin. @@ROWCOUNT: Tr v s dng (kiu integer) tr v bi pht biu cui cng. d: cp nht d liu vi UPDATE v dng @@ROWCOUNT xc nh s dng c thay i. UPDATE authors SET au_lname = 'Jones' WHERE au_id = '999-888-7777' IF @@ROWCOUNT = 0 print 'Warning: No rows were updated' @@ERROR : Tr v m li (integer) nu c ca pht biu T-SQL cui cng. Tr v s 0 nu khng c li. d: Dng @@ERROR kim tra vi phm rng buc (error #547) trong pht biu cp nht. USE pubs GO UPDATE authors SET au_id = '172 32 1176' WHERE au_id = "172-32-1176" IF @@ERROR = 547 print "Vi phm rng buc"
- 12 -
Default+milliseconds
-3
WHERE CLAUSE:
Chn la nhng mu tin theo iu kin. Syntax: WHERE <search_condition> | <old_outer_join> <old_outer_join> ::= column_name { *= | =* } column_name 3.1 Cc php ton so snh: <, <=, !<, >, >=, !>, =, <> hay !=. Kt qu php so snh l gi tr lgc (True hoc False). 3.2 Cc php ton lgic: NOT, AND (conjunction), OR (disjunction). Kt qu cc php ton lgc l mt gi tr lgc. 3.3 Cc php ton phm vi: IS [NOT] NULL [NOT] IN (<danh sch gi tr>) [NOT] BETWEEN <Min> AND <Max> [NOT] LIKE Mu v.bn --Dng k hiu thay th l du % v du (_ ) [NOT] EXISTS(SubQuery) : Tr v True nu tn ti t nht 1 mu tin. 3.4 <php so snh> [<lng t>] (SubQuery): <Php so snh> c th l cc php so snh s hc (>, >=, <, <=, <>, =) hoc php ton tp hp IN, LIKE hoc NOT LIKE. <Lng t> c th l ALL, ANY (hoc SOME). Php so snh = ANY c th c thay tng ng bng php ton IN; php so snh <> ALL c th thay tng ng bng php ton NOT IN. 3.5 Php kt ngoi (outer join): column_name { *= | =* } column_name Trong , php ton (*= ) Left outer join v php ton (=*) Right outer join. Ch : nh li th t cc phn ca kiu ngy ph hp vi hng kiu ngy trong biu thc iu kin. S dng lnh : SET DATEFORMAT mdy | dmy | ymd | ydm | myd | dym
-4
ORDER BY CLAUSE:
Mnh ORDER BY dng sp xp kt qu tm c. C php mnh ny l: ORDER BY <tnct>|<biuthc> [ASC | DESC], <tnct>|<biuthc> [ASC | DESC], ...
-5
Tng hp d liu:
5.1 Cc hm tng hp: AVG( [Distinct] Column_name) Count( * ) Count([Distinct] Column_name) Max(Column_name) Min(Column_name) Sum([Distinct] Column_name) V d: Cho bit s mt hng bn trong ngy cui cng: SELECT COUNT( DISTINCT MaMH) FROM HoaDon, CTHD WHERE HoaDon.NgayHD IN (SELECT MAX(NgayHD) FROM HoaDon) AND HoaDon.MaHD = CTHD.MaHD 5.2 GROUP BY CLAUSE: C php: GROUP BY [ALL] <danh sch ct kha phn nhm> Phn nhm mu tin theo gi tr ca cc ct lm chun phn nhm, Mi nhm d liu tr v mt dng tng hp.
- 13 -
Mnh GROUP BY ALL tr v tt c cc nhm, k c nhng nhm khng tha mn iu kin ca mnh WHERE. Ch : Mnh GROUP BY phi cha tt c cc ct khng tng hp c trong mnh SELECT. 5.3 HAVING CLAUSE: C php: HAVING <iu kin chn nhm> Dng ch nh nhng dng tng hp xut hin phi tha mn iu kin ch nh.
V-1
-a -b
-2
SA D LIU:
C php 1: UPDATE <table name> SET {<column name> = <value>} [,...n ] [FROM { < table_source > } [ ,...n ] ] [WHERE <conditions>]; C php 2: UPDATE <table name> SET {<column name> = <Select statement>}[,n] [FROM { < table_source > } [ ,...n ] ]
- 14 -
[WHERE <conditions>];
V d : Cp nht s tn v gp i n gi ca cc mt hng c m loi hng bng 1 UPDATE MatHang SET SoTon = IsNull(SoTon, 0) + 100 , DonGia = DonGia * 2 WHERE MALH = 1 Cp nht s tn ca cc mt hng bn trong ngy UPDATE MatHang SET SoTon = SoTon - SL FROM CTHD, HoaDon , MatHang WHERE CTHD.SoHD = HoaDon.SoHD And CTHD.MaMH = MatHang.MaMH AND HoaDon.NgayHD = (SELECT MAX(HoaDon.NgayHD) FROM HoaDon) Cp nht tin Ha n ca cc ha n bn trong ngy UPDATE HoaDon SET TienHD = (SELECT SUM(SL*DGBan) FROM CTHD WHERE HoaDon.MaHD = CTHD.MaHD) Where HoaDon.NgayHD IN (SELECT MAX(NgayHD) FROM HoaDon) Tng n gi ca 10 mt hng c n gi thp. UPDATE MatHang SET DonGia = DonGia * 1.1 FROM MatHang, (SELECT TOP 1 * FROM MatHang ORDER BY DonGia) AS t1 WHERE MatHang.MaMH = t1.MaMH Hay c th b tn table MatHang trong mnh FROM UPDATE MatHang SET DonGia = DonGia * 1.1 FROM (SELECT TOP 1 * FROM MatHang ORDER BY DonGia) AS t1 WHERE MatHang.MaMH = t1.MaMH
-3
XA MU TIN:
C php 1: DELETE FROM <Table Name> [WHERE <conditions>]; C php 2: DELETE <Table Name> FROM <Join Table> [WHERE <conditions>]; V d : Xa ha n c m ha n bng 1 Delete From CTHD WHERE MAHD = 1 And MaMH = 5 Xa cc CTHD ca cc ha n bn trong ngy Delete CTHD FROM CTHD, HoaDon WHERE CTHD.SoHD = HoaDon.SoHD AND HoaDon.NgayHD = (SELECT MAX(HoaDon.NgayHD) FROM HoaDon) Xa MatHang n gi thp. DELETE MatHang FROM MatHang, (SELECT TOP 1 * FROM MatHang ORDER BY DonGia) AS t1 WHERE MatHang.MaMH = t1.MaMH
- 15 -
Hay c th b tn table MatHang trong mnh FROM DELETE MatHang FROM (SELECT TOP 1 * FROM MatHang ORDER BY DonGia) AS t1 WHERE MatHang.MaMH = t1.MaMH
-4
To mi mt bng vi cc b gi tr ly t CSDL:
C php: SELECT <Column list> INTO <new table name> .
- 16 -
II- To CSDL:
to CSDL bn c th dng cu lnh Create Database trong Query Analyzer hoc s dng tin ch Enterprise Manager.
-1
Trong : <Thng tin File> = ( FILENAME = 'd:\Path\FileName' [, NAME = LogicalName ] [, SIZE = <Size MB or KB>] [, MAXSIZE = < MaxSize > ] [, FILEGROWTH = <No of KyloByte or Percentage>] ) Arguments Database_name : Tn Database phi c phn bit trn cng server (ti a 128 k t) ON : Khai bo cc file cha CSDL
- 17 -
PRIMARY: Dng ch nh file chnh ca CSDL. Nu khng ch nh Primary, file u tin c lit k trong pht biu Create Database tr thnh primary file. NAME = LogicalName : Tn lun l ca File lu tr CSDL. Tn ny c s dng trong cc pht biu ca T-SQL. Yu cu phn bit. FILENAME = 'FileName' : Tn lu trn a. Bao gm c a, th mc SIZE = <size MB or KB> : Kch thc File theo n v MB (mc nh) hoc KB. Thp nht 512 KB, mc nh 1 MB. MAXSIZE = max_size : Ch nh kch thc ti a m file c th tng. Nu khng ch nh, kch thc file s tng cho n khi a y. FILEGROWTH : Khai bo s gia khi tng kch thc File, khng c ln hn MaxSize. Mc nh l 10% v gi tr nh nht l 64 KB. LOG ON : Khai bo cc file dng lu tr nht k thao tc trn database. Nu khng ch nh LOG ON, SQL t to mt file nht k c size bng 25 percent ca tng kch thc ca tt c cc data files trn database. V d 1: To CSDL BanHang, bt u c kch thc 20MB trong , 15MB dnh cho file d liu v 5MB dnh cho file nht k. CREATE DATABASE BanHang ON ( NAME = Sales_dat, FILENAME = c:\mssql7\data\saledat.mdf, SIZE = 15MB, MAXSIZE = 50MB, FILEGROWTH = 20% ) LOG ON ( NAME = Sales_log, FILENAME = c:\mssql7\data\salelog.ldf, SIZE = 5MB, MAXSIZE = 20MB, FILEGROWTH = 1MB ) V d 2: To CSDL lu nhiu file. Theo Microsoft, File d liu u tin c phn m rng l MDF, cc file d liu cn li c phn m rng l .NDF. Cc file nht k c phn m rng l LDF.
CREATE DATABASE BanHang ON ( NAME = Sales_dat1, FILENAME = 'c:\data\sale.mdf', SIZE = 10, MAXSIZE = 50, FILEGROWTH = 5 ), ( NAME = Sales_dat2, FILENAME = 'c:\data\sale1.ndf', SIZE = 10, MAXSIZE = 50, FILEGROWTH = 5 ) LOG ON ( NAME = 'Sales_log1', FILENAME = 'c:\data\sale.ldf', SIZE = 5, MAXSIZE = 20, FILEGROWTH = 5 ), ( NAME = 'Sales_log2', FILENAME = 'c:\data\sale1.ldf', SIZE = 5, MAXSIZE = 20, FILEGROWTH = 5 ) Do khng dng t kha PRIMARY nn
- 18 -
CREATE DATABASE BanHang ON ( NAME = Sales_dat1, FILENAME = 'c:\data\sale.mdf', SIZE = 10, MAXSIZE = 50, FILEGROWTH = 5 ), PRIMARY ( NAME = Sales_dat2, FILENAME ='c:\data\sale1.ndf', SIZE = 10, MAXSIZE = 50, FILEGROWTH = 5 ) LOG ON ( NAME = 'Sales_log1', FILENAME = 'c:\data\sale.ldf', SIZE = 5, MAXSIZE = 20, FILEGROWTH = 5 ), ( NAME = 'Sales_log2', FILENAME = 'c:\data\sale1.ldf', SIZE = 5, MAXSIZE = 20, FILEGROWTH = 5 ) Do dng t kha PRIMARY nn file
Ch thch: CSDL mi c to l bn sao ca CSDL Model, nn mi th trong CSDL Model s c trong CSDL mi. Mc nh, cc thnh vin c vai tr sysadmin System Administrater v dbcreator Database Creators mi c quyn to Database mi.
-2
Click phi vo Folder Databases hoc khong trng trn khung bn tri, chn New Database, ca s to CSDL c hin th:
Tab General: Nhp tn Database trong Name, v d: TheThao. Tab Data Fiels : Database files: hin dng cha tn file d liu, v d: Thethao_Data, vi kch thc ban u l 1MB trong th mc mc nh \Data. File properties: Check Box Automatically grow file: c chn cho php tng kch c file. Kch c ti a, c ch nh khng hn ch (Unrestricted filegrowth) hoc hn ch (Restrict filegrowth (MB)). Tab Transaction Log: tn file nht k mc nh l TheThao_Log.LDF
-2
C.
D. E.
Xo file ca database
ALTER DATABASE Test REMOVE FILE Testdat2
-2 V-
i Tn CSDL:
EXEC SP_RENAMEDB OldName, NewName
- 20 -
Ch : Bn phi l c quyn Admin CSDL phi ch SingleUser Tn cc file v nhm file khng b nh hng bi s thay i.
VI- Xem Thng Tin CSDL: -1 Trong Query Analyzer Bng Th Tc Lu Tr H Thng:
Thng tin ca cc Database c lu tr trong table h thng SYSDATABASES ca CSDL Master. Bn c th lit k bng lnh: Select * From Master.dbo.SysDatabases Ngoi ra, bn c th dng cc system stored procedures hin th thng tin about databases and database options: System stored procedure SP_HELPDB Description Hin th thng tin ca tt c Databases trn Server gm: name, size, owner, ID, creation date, and status information.
SP_HELPDB database_name Hin th thng tin ca database c ch nh, gm : name, size, owner, ID, creation date, and status information. Ngoi ra cn cho bit chi tit cc file d liu v log file. SP_SPACEUSED [objname] Kch thc ca current database hoc table trong current database.
V d 1: Xem thng tin ca CSDL TheThao EXEC SP_HELPDB TheThao V d 2: Xem kch thc CSDL TheThao. USE TheThao Go EXEC SP_SPACEUSED V d 3: Xem kch thc table tblCLB USE TheThao Go EXEC SP_SPACEUSED tblCLB
- 21 -
VII- TO TABLE :
Khi to table, bn cn quan tm n cc yu t trn cc Field c to nh : Key : Field l kha hay khng ID : Field c thuc tnh Identity hay khng Column Name : Tn Field Data Type : Kiu d liu ca Field Size : Kch thc lu tr Allow Null : Cho php Null Default : Gi tr mc nh Identity : Field s c gi tr tng t ng, vi gi tr ban u l bao nhiu (Identity Seed) v s gia(Identity Increament) l bao nhiu. Tn Table bn nn t vi tip u ng l tbl.
-1
-2
C php :
Khai Bo Cu Trc :
C 2 loi khai bo RB: Khai bo RBTV trn mi ct: (Column Constraint) Sau li khai bo tn v kiu ca ct bn c th khai bo tip cc RB d liu trn ct .
- 22 -
Cc RB c th l :
NONCLUSTERED ] Clustered : Mt Table ch c 1 ch mc loi ny, xc nh th t vt l ca table. c dng cho cc thuc tnh thng phi tm kim gi tr trn Non-Clustered: Sp xp d liu theo cc Field ch nh. Mt Table c th c nhiu ch mc loi ny. D liu v Index c lu 2 ni khc nhau . REFERENCES ref_table [(ref_column)] [ ON DELETE { CASCADE | NO ACTION} ] [ ON UPDATE { CASCADE | NO ACTION } ] CHECK (logical_expression) DEFAULT <Exp> : Gi tr mc nh ca ct trn mu tin mi IDENTITY [(seed, increment )] : Thng c dng khai bo cho ct kiu s nguyn, l kho chnh ca table. Ch nh gi tr c ghi trn mu tin mi l mt s phn bit vi cc mu tin khc. Trong : Seed -gi tr khi u v Increment - s gia. V d: CREATE TABLE [dbo].[SanPham] ( MaSP SmallInt Identity (1,1) NOT NULL , TenSP varchar(30) NOT NULL, DonGia Money Default 0, SoTon Real Default 0 ) ON PRIMARY Ch : Mi table ch c 1 ct mang thuc tnh IDENTITY. Hm IDENT_SEED(tablename) : tr v gi tr Seed, nu table khng c ct khai bo Identity s cho gi tr NULL. Hm IDENT_INCR(tablename) : tr v gi tr Increment. Hm @@IDENTITY dng nhn gi tr identity ca mu tin c chn cui cng. SQL Server t ng t tn cho mi RB. Tuy nhin, Bn c th t tn RB bng c php : [CONSTRAINT <Tn RB>] /********************** table CongViec************************** */ CREATE TABLE CONGVIEC ( MACV smallint IDENTITY(1,1) CONSTRAINT PK_CV PRIMARY KEY CLUSTERED, MOTA varchar(50) CONSTRAINT NN_MOTA NOT NULL DEFAULT 'Cong Viec Moi', LCBmin tinyint CONSTRAINT NN_LCBmin NOT NULL CONSTRAINT CHK_LCBmin CHECK (LCBmin >= 10), LCBmax tinyint CONSTRAINT NN_LCBmax NOT NULL CONSTRAINT CHK_LCBmax CHECK (LCBmax <= 250) ) /* ***************** publishers table ******************** */
- 23 -
CREATE TABLE publishers ( pub_id char(4) NOT NULL CONSTRAINT UPKCL_pubind PRIMARY KEY CLUSTERED CHECK (pub_id IN ('1389', '0736', '0877', '1622', '1756') OR pub_id LIKE '99[0-9][0-9]'), pub_name varchar(40) NULL, city varchar(20) NULL, state char(2) NULL, country varchar(30) NULL DEFAULT('USA') ) Khai bo rng buc trn nhiu ct ca Table: (Table Constraint) c khai bo ring, nm sau cc khai bo ct. Bao gm cc rng buc: [ CONSTRAINT constraint_name ]
PRIMARY KEY | UNIQUE ( column [ ASC | DESC ] [ ,...n ] ) FOREIGN KEY ( column [,...] ) REFERENCES ref_table [( ref_column [,...] )]
c)
Ct biu thc, cn gi l ct o, c d liu ly t nhng ct khc bng nhng biu thc. Khng dng biu thc l truy vn con. Ct o khng tham gia vo kha ca bng. C php: ColumnName AS <Expression> V d : CREATE TABLE mytable ( low int, high int, myavg AS (low + high)/2 ) EXEC sp_help mytable /*Xem thng tin Table
d)
To Table Tm :
Table c to bng cc pht biu trn s c lu tr trong CSDL ang m. Nhng i khi bn cn to mt Table m bn s xa ngay. Khi bn c th to table tm lu tr bn trong CSDL TempDB bng c php trn nhng s dng k hiu # (Pound) k trc tn Table. CREATE TABLE #MyTable ( Field1 int PRIMARY KEY, Field2 char(10) NOT NULL, Field3 datetime ) Table tm c th cc b (local) hoc ton cc ph thuc vo phm vi hot ng:
- 24 -
Table cc b, c khai bo vi 1 du #, ch c truy xut bi kt ni va to ra n. Table ton cc, c khai bo vi 2 du #, c truy xut bi cc kt ni hin hnh
-1
ALTER TABLE table ALTER COLUMN ColName DataType [(p [, s])] [NULL | NOT NULL ] V d: Sa li kch thc ct tn nhn vin (Name) thnh 25 k t: ALTER TABLE NhanVien ALTER COLUMN HoTenNV CHAR (25) Ch : Khng th sa ct : C kiu text, image, ntext, or timestamp Ct tnh ton hoc dng trong ct tnh ton s dng trong cc rng buc ngoi tr ch thay i kch thc. Khng c php sa i kch thc ca ct cho nh li, v cng khng c php thay i kiu d liu ca ct, tr trng hp ct cha c d liu g. Khng th sa i ct hin cha gi tr NULL t thuc tnh NULL thnh NOT NULL.
-2
Thm ct
ALTER TABLE table_name ADD <nh ngha ct> [,...] V d: Thm vi ct c rng buc: CREATE TABLE ViDu ( CotA INT CONSTRAINT CotA_un UNIQUE) GO ALTER TABLE ViDu ADD /* Thm ct kha chnh */ CotB INT IDENTITY CONSTRAINT CotB_pk PRIMARY KEY, /* Thm ct tham chiu vi ct khc trn cng table*/ CotC INT NULL CONSTRAINT CotC_fk REFERENCES ViDu(CotA), /* Thm ct vi rng buc dng thc ca d liu */ CotD VARCHAR(16) NULL
- 25 -
CONSTRAINT CotD_chk CHECK (CotD IS NULL OR CotD LIKE "[0-9][0-9][0-9]-[0-9] [0-9][0-9][0-9]" OR CotD LIKE "([0-9][0-9][0-9]) [0-9][0-9] [0-9]-[0-9][0-9][0-9][0-9]"), /* Thm ct vi gi tr mc nh */ CotE DECIMAL(3,3) CONSTRAINT CotE_defa DEFAULT .081 GO EXEC SP_HELP ViDu Ch : Trong trng hp Table c d liu, nu bn cn: Thm ct NOT NULL: Phi thc hin qua 3 bc: (i) thm ct vi thuc tnh NULL, (ii) in y cc gi tr cho ct, (iii) i li thuc tnh ca ct thnh NOT NULL. Thm ct mi v in gi tr Default cho cc dng ang tn ti trong bng: Dng DEFAULT vi thuc tnh WITH VALUES cung cp gi tr cho mi dng ang tn ti trong bng. ALTER TABLE MyTable ADD AddDate smalldatetime NOT NULL CONSTRAINT AddDateDflt DEFAULT GetDate() WITH VALUES
-3
Xa ct :
ALTER TABLE <tablename> DROP COLUMN ColName [,...n] V d : CREATE TABLE ViDuXoaCot ( CotA INT, CotB VARCHAR(20) NULL) GO ALTER TABLE ViDuXoaCot DROP COLUMN CotB GO EXEC sp_help ViDuXoaCot GO Ch : Khng th xa nhng ct: ang dng trong mt Index. C rng buc CHECK, FOREIGN KEY, UNIQUE, or PRIMARY KEY. C ch nh gi tr DEFAULT. C ch nh rule.
-4
- 26 -
ADD CONSTRAINT SoTon_defa DEFAULT 0 FOR SoTon WITH NOCHECK: Khng kim tra rng buc i vi nhng d liu ang c trn ct ALTER TABLE ViDu WITH NOCHECK ADD CONSTRAINT CotA_chk CHECK (CotA > 1) GO ALTER TABLE CTDH WITH NOCHECK ADD CONSTRAINT SoLuong_chk CHECK (SoLuong >=0) Ch : sa i RBTV, trc ht cn loi b (DROP) chng ri sau b sung RBTV mi.
-5 -6
Kch hot hay tm ngng kim tra cc rng buc Foreign key v Check:
ALTER TABLE table {CHECK | NOCHECK} CONSTRAINT {ALL | ConstraintName[,...n]} V d :-- Disable the constraint and try again. ALTER TABLE ViDu NOCHECK CONSTRAINT CotA_chk -- Reenable the constraint and try another insert, will fail. ALTER TABLE ViDu CHECK CONSTRAINT CotA_chk
-7
i tn ct :
SP_RENAME 'TableName.OldColName', 'NewColName', 'COLUMN' V d: SP_RENAME 'customers.[contact title]', 'title', 'COLUMN'
IX- XA TABLE :
C php:: V d: A. Xa table trong database hin hnh: DROP TABLE titles1 B. Xa table trong database khc : DROP TABLE pubs.dbo.authors2 Ch : Khng th xa Table cha c tham chiu bi Table khc. DROP TABLE <tn bng> [, ]
X-
I TN BNG:
C php: EXEC SP_RENAME 'OldName', 'NewName' V d: i tn table customers thnh custs. EXEC sp_rename 'customers', 'custs'
- 27 -
-2
Cc hn ch khi to Views
Views khng thc hin trn cc bng tm. Lnh CREATE VIEW khng th kt hp vi cc pht biu T-SQL khc trong mt gi Views khng c hn 1024 columns. Khng cha mnh INTO.
-3
M ha View:
trnh trng sao chp nh ngha View, bn c th m ha View bng cch thm t kha WITH ENCRIPTION trc t kha AS. V d: CREATE VIEW vwTienHD (MaHD, NgayLap, TienHD) WITH ENCRIPTION
- 28 -
AS SELECT a.MaHD, NgayHD, SUM(SL*DG) FROM HoaDon a, CTHD b GROUP BY a.MaHD, NgayHD HAVING SUM(SL*DG) > 0 GO EXEC SP_HELPTEXT vwTienHD Kt qu l: The Object comments have been encription. Ch : View m ha vn c th sa hoc xa n.
-4
Bn c th s dng View trong cc pht biu Insert, Update, Delete thay i d liu trn Table ngun ca View. Cc hn ch : Khng th s dng lnh INSERT hay DELETE trn View c s dng pht biu INNER JOIN. (Tr khi c s dng INSTEAD OF Trigger) Khng th s dng lnh INSERT nu View c khai bo ct tnh ton hoc cha nhng ct c rng buc NOT NULL m khng khai bo gi tr mc nh V d : CREATE VIEW vwCTHD (MaHD, MaMH, SoLuong) AS SELECT MaHD, MaSP, SL FROM CTHD Where MaHD = 10248 Go Insert vwCTHD(MaHD,MaMH,SoLuong) Values(10248,1,20) Insert vwCTHD(MaHD,MaMH,SoLuong) Values(10249,1,20) Bn c th rng buc d liu c cp nht phi tha mn iu kin Where ca View bng cch khai bo thm T kha : WITH CHECK OPTION CREATE VIEW vwCTHD (MaHD, MaMH, SoLuong) AS SELECT MaHD, MaSP, SL FROM CTHD Where MaHD = 10248 WITH CHECK OPTION Go UPDATE vwCTHD SET soluong = soluong + 10 INSERT vwCTHD(MaHD,MaMH,SoLuong) VALUES(10248,1,20) /* lnh chn sau y s b li : The attempted insert or update failed because the target view either specifies WITH CHECK OPTION or spans a view that specifies WITH CHECK OPTION and one or more rows resulting from the operation did not qualify under the CHECK OPTION constraint. INSERT vwCTHD(MaHD,MaMH,SoLuong) VALUES(10249,1,20)
-5
- 29 -
S dng pht biu ALTER VIEW thay i nh ngha ca View nhng vn duy tr giy php cho View. Nu bn xa View, sau to li n, bn phi cp li cc giy php cho n. Syntax ALTER VIEW ViewName [(column , ...)] [WITH ENCRYPTION] AS select_statement [WITH CHECK OPTION]
-6
Xa View:
DROP VIEW <view_name> V d: USE SieuThi Go IF EXISTS (SELECT TABLE_NAME FROM INFORMATION_SCHEMA.VIEWS WHERE TABLE_NAME = 'vwCTHD') DROP VIEW vwCTHD GO CREATE VIEW vwCTHD (MaHD, MaMH, SoLuong) AS SELECT MaHD, MaSP, SL FROM CTHD Where MaHD = 10248
- 30 -
Click nt
Click nt thm ct Group By To v khai bo thuc tnh cho cc Field Click nt Click nt Click nt View thc hin truy vn lu v t tn View m ca s thuc tnh ca
b) WITH CUBE Tng hp theo tng nhm cc ct trong GROUP BY. ng thi tng hp trn tt c mu tin.
V d: SELECT MaNV, NgayHD, SUM(SL * DGBan) AS TienHD, COUNT(HoaDon.MaHD) AS SoHD FROM HoaDon INNER JOIN CTHD ON HoaDon.MaHD = CTHD.MaHD WHERE (NgayHD = CONVERT(DATETIME, '1995-09-25 00:00:00', 102)) GROUP BY MaNV, NgayHD WITH CUBE ORDER BY MaNV, NgayHD
c) WITH ROLLUP WITH ROLLUP tng t WITH CUBE, nhng ch tng hp tng nhm cc ct t tri sang phi khng tng hp cho cc ct. V d: SELECT MaNV, NgayHD, SUM(SL * DGBan) AS TienHD, COUNT(HoaDon.MaHD) AS SoHD FROM HoaDon INNER JOIN CTHD ON HoaDon.MaHD = CTHD.MaHD WHERE (NgayHD = CONVERT(DATETIME, '1995-09-25 00:00:00', 102)) GROUP BY MaNV, NgayHD WITH ROLLUP ORDER BY MaNV, NgayHD
- 31 -
-1
Bin cc b :
a) Khai bo bin cc b: Trong T-SQL, bin cha gi tr trung gian phi c khai bo trc khi s dng: DECLARE @VarName data_type [,...n] ca n. Tt c cc bin cc b phi bt u bng k hiu @ trc tn
Phm vi bin: Bin khai bo trong mt strored procedure hoc mt gi lnh ch kh dng bn trong vng khai bo n. Trong T-SQL khng c khi nim bin ton cc. V d: DECLARE @Counter int DECLARE @FirstName varchar(25) Hay khai bo trn cng dng: DECLARE @FirstName varchar(25), @Counter int Sau khi khai bo bin c gi tr NULL b) Gn gi tr cho bin cc b: Cch 1: SET @VarName = <Expression> V d: Declare @Ngay DateTime set @Ngay ='2005/5/15' print @Ngay Set @Ngay = @Ngay + 1 print @Ngay Cch 2: Dng cu lnh Select:
- 32 -
SELECT @VarName = <Expression> [FROM ] Nu query tr v nhiu record th gi tr trn record cui cng s c gn cho bin. DECLARE @intMaNV int SELECT @intMaNV = 5 + 6 SELECT @intMaNV = MAX(MaNV) FROM SieuThi..NhanVien Nu SELECT tr v nhiu dng, th bin c gn gi tri t dng cui cng tr v bi Select. T-SQL c tnh nng t ng chuyn kiu. Do , c kh nng b mt d liu. Bn c th dng hm chuyn i kiu: CAST ( expression AS data_type ) CONVERT ( data_type [ ( length ) ] , expression [ , style ] ) V d: To th tc thc hin truy vn MaHD, tin bn ca tng ha n.
-2
Ch : S dng 2 du nhy n bao cc bin chui hoc ngy V d: Declare @str Char(10) Set @str = Chao Ban Exec (Select + @str + )
-3
;number:
Dng nhm cc th tc c cng tn v phn bit nhau bi s th t number. Khi , tn ca th tc c thm s th t khai bo: orderproc;1, orderproc;2. xa nhm th tc ny bn ch cn dng 1 lnh xa vi tn ca nhm.
III- THI HNH STORED PROCEDURE: -1 Thi hnh stored procedure khng c tham s:
Sau khi to xong, bn c th gi th tc trong QA nh sau: MuoiMHCaoNhat hoc EXEC MuoiMHCaoNhat
-2
-3
Tr v gi tr vi tham s Output
CREATE PROC spTBCong @Avg smallint Output, @A smallint=3, @B smallint = 2, AS Select @Avg = (@A + @B) / 2 Go nhn gi tr Avg: u tin bn phi khai bo mt bin, sau chy th tc. V d: Declare @KQ smallint EXEC spTBCong @KQ OUTPUT, 10 Select The Average Score is : , @KQ Hay Declare @KQ smallint EXEC spTBCong @A = 10, @B = 9, @AVG = @KQ OUTPUT Select The Average Score is : , @KQ
IV- Cc Pht Biu iu Khin: -1 Pht biu RETURN [<integer value to result>]:
Dng kt thc th tc v tr v ni gi mt s nguyn no , mc nh l 0. V d: CREATE PROCEDURE MHCaoNhat AS
- 34 -
SELECT Top 1 With Ties MatHang.TenMH , MatHang.DonGia FROM MatHang ORDER BY MatHang.DonGia DESC Return @@RowCount nhn gi tr Return: u tin bn phi khai bo mt bin v sau chy th tc. Declare @SoMT smallint EXEC @SoMT = MHCaoNhat Select So Mat Hang : , @SoMT Go Ch : Khi thc hin 1 cu lnh SQL hay Stored Proc c tham s, tt c cc du nhy n () dng ng v m cho mt chui hoc ngy thng u bt buc phi c.
-2
-3
Hm CASE:
Tr v gi tr chn la t nhiu iu kin khc nhau CASE c 2 dng : Hm CASE n gin so snh 1 biu thc vi tp cc biu thc n gin xc nh kt qu. CASE input_expression WHEN when_expression THEN result_expression [ ...n ] [ELSE else_result_expression ] END V d: Simple Case Create Proc spr_ThuTrongTuan (@D As SmallDateTime, @Thu VarChar(10) OUTPUT) As Set @Thu = Case Datepart(w, @D) When 1 Then 'Chu Nhat' When 2 Then 'Thu Hai'
- 35 -
When 3 Then 'Thu Ba' When 4 Then Thu Tu When 5 Then Thu Nam When 6 Then Thu Sau Else 'Thu Bay' End
Go Hm CASE tm kim (searched CASE) kim tra cc biu thc iu kin xc nh kt qu. CASE WHEN Boolean_expression THEN result_expression [ ...n ] [ELSE else_result_expression ] END V d: Xy dng th tc tr v s ngy trong thng khi bit thng v nm Create Proc spr_Days (@Thang Int, @Nam Int) As Declare @SN Int Set @SN = Case When @Thang In (1,3,5,7,8,10,12) Then 31 When @Thang In (4,6,9,11) Then 30 When @Nam % 4 = 0 Then 29 Else 28 End Return @SN Go - C th lng Case: Create Proc spr_NgayTrongThang (@Thang Int, @Nam Int) As Declare @SN Int Set @SN = Case When @Thang In (1,3,5,7,8,10,12) Then 31 When @Thang In (4,6,9,11) Then 30 Else Case When @Nam % 4 = 0 Then 29 Else 28 End End Return @SN Go Thc hin th tc: Declare @SN int Exec @SN = spr_ngaytrongthang 2,2000 print 'So ngay trong thang 2/2002 la ' + Cast(@SN As Char)
- 36 -
-4
WHILE c dng nhiu trong kiu d liu CURSOR. Thng thng WHILE thng s dng duyt t mu tin u tin n mu tin cui cng hoc ngc li. WHILE <boolean expression> BEGIN <Cc pht biu T-SQL> [CONTINUE] [BREAK] END V d: To th tc tnh tng S = 1 + 3 + 5 + + (2N-1) Create Proc TongLe ( @N int ) AS DECLARE @I int, @S int SET @I = 1 SET @S = 0 WHILE @I <= 2*@N -1 BEGIN --WAITFOR DELAY '00:00:00.001' Set @S = @S + @I Set @I = @I + 1 END Return @S Gi thc hin: declare @s int Exec @s = tongle 3 print Tong la : + @s Pht biu WAITFOR : WAITFOR DELAY <time> | TIME <time> Khi s dng WHILE, c th dng thm lnh WAITFOR vi thi gian cho trc. Tham s DELAY dng ch th khon thi gian ch nht nh. Thi gian tnh bng h:m:s, ln nht l 24 gi. Tham s TIME: ch th h thng ch cho n thi gian c ch nh.
V-1
xem ni dung cu lnh Create Proc ca th tc c lu, bn c th dng EM hay chy th tc h thng sp_helftext vi tn th tc c lu. sp_helptext spAuthors
-2 -3
-4
Thay i th tc lu tr:
ALTER PROC[EDURE] procedure_name [;number] [Danh sch tham s]
- 37 -
2- Lnh RAISERROR
Pht biu RAISERROR dng xut thng bo li ly t table sysmessages hoc mt thng bo vi ni dung no RAISERROR ( { msg_id | msg_str } { , severity , state } [ , argument [ ,...n ] ] ) [ WITH option [ ,...n ] ] Arguments o msg_id: M s > 50000 ca dng thng bo do ngi dng to trn table sysmessages bng th tc sp_AddMessage o msg_str: Ni dung thng bo li cn xut. . o severity: M s ch nh mc nghin trng ca li. Mc t 0-19 c xem nh l thng tin phn hi. Mc t 0 n 16: li pht sinh do d liu. Mc 10 l lbo co trng thi. Mc t 11 - 16 l nhng li c th c hiu chnh bi user. Mc t 20 - 25 ch nh cc li tc hi t ng dng khng th phc hi. Nu thng bo mc ny, kt ni t Client n Server s b ngt.
- 38 -
State: l s nguyn t 1 n 127 biu din thng tin v trng thi thnh cu ca li., nhm ch r li thuc nhm no trong h thng li. Gi tr ph nhn ca state l 1. o Argument: L tham s dng thay th vo nhng bin c s dng trong chui msg_str hoc thng bo tng ng vi msg_id. Mi tham s thay th c th l 1 bin cc b hoc gi tr thuc kiu: int1, int2, int4, char, varchar, binary, or varbinary. RAISERROR ('The level for job_id:%d should be between %d and %d.', 16, 1, @@JOB_ID, @@MIN_LVL, @@MAX_LVL) o Option: c th cha cc gi tr sau:
o
Description
V d: RAISERROR('Invalid member number', 10, 1) WITH LOG Khi xut hin li, m li c t trong hm @@ERROR. Mc nh @@ERROR c t bng 0 cho cc li c severity t 1 n 10. 3- Thm Thng bo li vo bng sysmessages: -a Dng th tc sp_addmessage thm vo bng sysmessages. . sp_AddMessage @msgnum = msg_id , @severity = severity , @msgtext = 'msg' [ , @lang = 'language' ] [ , @with_log = 'True | False' ] [ , @replace = 'REPLACE' ] msg_id: phi c gi tr t 50.001 tr ln. REPLACE: dng ch nh lnh s thay th msg_id nu msg_id c trong bng. Example: USE master EXEC sp_addmessage @msgnum = 60000, @severity = 16, @msgtext = Kiu d liu khng hp l , @lang = 'us_english', @with_log = 'true' -b xa thng bo li : s dng sp_dropmessage sp_DropMessage @msgnum = msg_id Ch thch Comments C 2 cch ch thch: ch thch trn cng dng lnh hoc ch thch trn nhiu dng. Ch thch trn cng dng vi mt pht biu - In-Line Comments S dng 2 du tr (--) trc li ch thch. Ch thch trn nhiu dng Block Comments Bt u bi /* v kt thc bi du */
- 39 -
Transactions dng m bo rng cc lnh thay i d liu c x l trn vn. Nu c mt lnh no trong Transaction b li th phi bi b cc lnh trong Transaction v phc hi li ton b d liu b thay i bi cc lnh trong Transaction trc . C 2 cch khai bo mt Transaction : Khai bo r rng hoc khai bo ngm nh
-2
-a
-b -c
-d
Kt thc khng thnh cng mt chuyn tc: Khi gp lnh ny, tt c nhng lnh c thc hin trong Transaction bt u t lnh Begin Tran hoc t v tr nh du trong chuyn tc s b bi b Syntax: ROLLBACK TRAN[SACTION] [transaction_name] | [save_name] V d : To SP thm mt sinh vin mi trong table SinhVien v thm vo table SV_Detai MSDT m sinh vin thc hin. Nu MSDT khng tn ti ch b thao tc chn mu tin mi cho Table SV_DeTai. CREATE PROCEDURE ThemSVDT @MSDT Char(6), @MSSV char(6), @TenSV VarChar(30), @Lop char(6), @SoDT VarChar(10)= NULL, @DiaChi Char(10)=NULL AS BEGIN TRANSACTION VT1 INSERT SinhVien (MSSV,TenSV,SoDT, Lop, DiaChi) VALUES (@MSSV, @TenSV, @SoDT, @Lop, @DiaChi) IF @@ERROR <> 0 BEGIN ROLLBACK TRAN VT1 RETURN 0 END SAVE TRAN VT2 INSERT SV_DETAI(MSSV, MSDT) VALUES (@MSSV, @MSDT ) IF (@@ERROR <> 0) ROLLBACK TRAN VT2
- 40 -
-3
Bt k transaction no m bt u, kt thc hoc roll back bng lnh BEGIN TRANSACTION, COMMIT TRANSACTION, or ROLLBACK TRANSACTION u l Explicit Transaction. Bn c th thc hin mt Implicit Transaction bng cch khai bo : Syntax: SET IMPLICIT_TRANSACTIONS {ON | OFF} Khi t ch Implicit Transaction l ON, Cc pht biu sau y s t ng bt u mt Transaction: o SELECT, INSERT, UPDATE, DELETE o ALTER TABLE o TRUNCATE TABLE o OPEN, FETCH o GRANT, REVOKE Khi t ON, th cui cc Tracsaction cn phi c lnh Commit hoc Roll Back. Nu khng th cc lnh trong Transaction v tt c d liu thay i s b b qua khi ngi dng kt thc kt ni. Nu ci t l OFF (default). Mi pht biu t ng xc nhn nu khng b li.
-2
Trigger.. FOR DELETE, INSERT, UPDATE Dng ch nh nhng pht biu cp nht no no trn Table s kch hot Trigger. Khi thc hin Trigger, SQL s to cc bng tm: INSERTED v DELETED o Khi Insert mu tin mi vo Table th mu tin mi cng lu trong table INSERTED o Khi Delete mu tin trong table: Th cc mu tin b xo c di chuyn sang table Deleted. o Khi Update mu tin trong table: th table v table Inserted u cha mu tin c ni dung mi, cn Deleted cha mu tin c ni dung c. Bn khng th thay i d liu trn cc table DELETED V INSERTED. Nhng bn c th dng 2 table ny x l cc mu tin trn cc table lin quan. Ngoi ra, trong trigger Insert v Update, bn c th thay i ni dung ca cc mu tin mi bng lnh Update trn table c trigger. AS : T kha bt u cc hnh ng bn trong Trigger. Trigger c th cha hu ht cc lnh ca T-SQL ngoi tr mt s lnh sau: Cc lnh CREATE, ALTER, and DROP. TRUNCATE TABLE SELECT INTO (because it creates a table) Ch : Ch ca table v nhng thnh vin c Role db_owner, db_ddladmin, v sysadmin c th to v xo triggers. Cc permissions khng th sang nhng. Hn na, ngi to Trigger phi c quyn thc hin tt c pht biu trn cc tables. Triggers khng th to view v table tm (temporary tables), nhng chng c th tham chiu n cc views v temporary tables. Cc lnh INSERT, UPDATE, hoc DELETE c th tc ng trn nhiu dng. bit c s dng b tc ng, s dng hm @@ROWCOUNT bn trong Trigger -a S dng Trigger rng buc ton vn d liu: V d: Khi xa hay thay i MSGV trong GIAOVIEN_HD, nu gio vin l ch tch hi ng th bo li kt thc. Create Trigger trg_XoaHoiDongGV On HoiDong_GV For Delete, Update As If Exists(Select 1 From HoiDong a, Deleted b Where a.MSHD = b.MSHD And a.MSGVCTHD = b.MSGV) Begin Raiserror('Khong xoa hay thay doi giao vien CTHD',16,1) RollBack Tran End Kim tra Trigger: Delete From HoiDong_GV Where MsHD = 1 And MsGV = 1 Go Update HoiDong_GV Set MSGV = 5 From HoiDong_GV a, HoiDong b Where a.MSHD = b.MSHD And a.MSGV = b.MSGVCTHD And b.MSHD = 1
- 42 -
Go -b S dng trigger kim tra RB gi tr V d: Kim tra RB : Mt hi ng khng c qu 10 ti. Create Trigger trg_ThemHDDT On Hoidong_DT For Insert, Update As If (Select Count(a.mshd) From HoiDong_DT a, INSERTED b Where a.mshd = b.mshd) > 10 Begin RaisError (Khong the > 10, 16, 1) RollBack Tran End Go V d: 2 Hi ng trong cng 1 ngy khng th trng phng Create Trigger trg_HoiDong On HoiDong For Insert, Update As If Exists(Select 1 From HoiDong a, Inserted b Where a.MSHD = b.MSHD And a.NgayHD = b.NgayHD And a.Phong = b.Phong) Begin Raiserror('Hai hoi dong cung 1 ngay khong trung phong',16,1) RollBack Tran End Go Update HoiDong Set NgayHD = '2001/10/30', Phong =2 Where MSHD = 4 V d: Mt gio vin khng th va l gio vin phn bin va l gio vin hng dn ti. Ch : Bn c th nh ngha nhiu Trigger (khc tn nhau) cho cng mt hnh ng. Khi th t thc hin cc trigger c xc nh da trn th t to ra chng. Bn c th thay i th t thc hin mc nh ny bng SP: Sp_SetTriggerOrder sp_SetTriggerOrder trg_UpdateAction2, First, Update sp_SetTriggerOrder trg_UpdateAction1, Last, Update SP ny ch c th ch nh trigger no c thc hin u tin v Trigger no c thc hin cui cng. Cc Trigger cn li s thc hin theo th t to ra chng.
-3
CREATE TRIGGER <trigger_name> ON <View name> [WITH ENCRYPTION] INSTEAD OF DELETE | INSERT | UPDATE AS <Cc pht biu T-sql> Trong cc phin bn trc phin bn 2000, bn khng th dng cc lnh Insert, Update, Delete cp nht d liu trn View. Trong phin bn 2000, bn c th cp nht d liu trn mt bng ngun ca View bng tn ca View. Trng hp bn mun dng 1 lnh, cp nht trn nhiu bng ngun ca View th phi to Trigger INSTEAD OF cho cc View .
- 43 -
Khng ging nh AFTER triggers, Ch c th INSTEAD OF cho mi lnh hoc INSERT, hoc UPDATE, hoc DELETE. Cc Trigger INSTEAD OF s thc hin trc cc AFTER triggers ci t cho cc Table V d: To View lit k danh sch ti v sinh vin thc hin ti CREATE VIEW vwSVDeTai AS SELECT A.MSDT, A.TENDT, B.MSSV, NULLIF(C.TENSV, NULL) As TENSV FROM DETAI A INNER JOIN SV_DETAI B ON A.MSDT = B.MSDT INNER JOIN SINHVIEN C ON B.MSSV = C.MSSV thm ti mi trong table DeTai v sinh vin thc hin ti trong table SV_DeTai, thay v thc hin 2 lnh Insert trn tng Table, bn c th thc hin 1 lnh thng qua i tng View to. INSERT vwSVDeTai(msdt, Tendt, mssv) Values( 97014, 'Ma Hoa Du Lieu', '01th01') lm c iu ny, bn phi to Trigger Instead Of Insert cho View CREATE TRIGGER tgvwSVDeTai ON vwSVDeTai INSTEAD OF INSERT AS If (Select Count(*) From Inserted) > 0 Begin Insert detai(msdt, Tendt) Select A.msdt,A.tendt From Inserted A Insert SV_detai(mssv,msdt) Select A.mssv,A.msdt From Inserted A End Ch : Vic s dng hm NULLIF(C.TENSV, NULL) As TENSV trnh trng hp li TenSV khng c NULL v lc ny TenSV l mt Field tnh ton.
-4
-5 -6
Bn c th thay i cc lnh cn thc hin cng nh hnh ng cp nht m Trigger s c gi thc hin. ALTER TRIGGER trigger_name
-7
Xa Trigger:
DROP TRIGGER {trigger} [,n] Nu xa mt table th tt c Triggers ca n cng b xa. Quyn xa :sysadmin, db_owner and db_ddladmin roles.
- 44 -
- 45 -
Cursor l kiu d liu cho php truy xut n trn tng mu tin trong tp kt qu tr v bi cu lnh Select. Ngoi ra, bn c th s dng cc pht biu Update hoc Delete cp nht hay xa mu tin hin hnh trn cc bng c s ca Select bng mnh WHERE CURRENT OF <Tn Cursor> .
-2
Khai bo cursor : DECLARE <cursor_name> CURSOR FOR <lnh Select> M cursor : OPEN <cursor_name> Sau lnh m cursor, con tr mu tin hin hnh nm vng BOF. X l mu tin trn cursor: Di chuyn mu tin hin hnh: FETCH NEXT FROM cursor_name S dng pht biu Update hoc Delete cp nht hay xa mu tin hin hnh ng cursor: CLOSE <tn cursor> Hy b cursor: DEALLOCATE <TN CURSOR> V d : in s bo danh Create Proc Sc_DienSBD As Declare @I Int --Khai bo bin Con tr Declare Cursv Cursor For Select Sbd, Tensv From Sinhvien Order By Tensv Open Cursv --M con tr --X l mu tin trn con tr Set @I = 1 Fetch Next From Cursv While @@Fetch_Status = 0 Begin Update Sinhvien Set Sbd = @I Where Current Of Cursv Fetch Next From Cursv Set @I = @I + 1 End Close Cursv --ng con tr Deallocate Cursv --Gii phng con tr Go
-1
Mc nh, cursor c phm vi Global trn kt ni m n c to. Ngha l, bn c th s dng cursor trn cc gi thc hin trn kt ni , tr phi bn ng v gii phng Cursor. Nu bn m Cursor cha ng th s b li v c khi b treo cho n khi ng kt ni. Vi l do , khi khng s dng Cursor Global, bn nn ng v gii phng Cursor. Nu bn mun to cursor Local bn phi ch nh r rng trong khai bo cursor: Declare Cursv Cursor Local For Select Sbd, Tensv From Sinhvien Order By Tensv Cursor Local c phm vi hot ng bn trong gi to n. V t gii phng khi kt thc gi.
-2
-3
Cc Loi Cursor:
C 3 loi Cursor: STATIC : c thuc tnh READ ONLY, do khng th cp nht cc bng nn thng qua Cursor ny. Khi to Cursor Static, d liu t cc bng gc s c Copy sang mt bng tm trong CSDL tempdb. Do , Nu cc table ngun ca Cursor b thay i d liu th cc d liu khng xut hin trn Cursor. Server: Msg 16929, Level 16, State 1, Procedure SC_DIENSBD, Line 14 The cursor is READ ONLY. The statement has been terminated. DYNAMIC: Cho php cp nht d liu trn cc table ngun (dng mnh WHERE CURRENT OF <tnCursor> trong cc pht biu UPDATE or DELETE), v t ng hin th tt c nhng thay i t table ngun. Tuy nhin, d liu v th t ca cc mu tin trong tp mu tin c th b thay i. KEYSET : Ging nh cursor Dynamic. Nhng n ch c to khi bng ngun c khai bo kha, nu khng th SQL t ng chuyn sang loi STATIC. Khi to Cursor KEYSET, Tp cc kha ca bng ngun c lu trn mt table ca CSDL tempdb. Do , vic xa mu tin hoc thay i gi tr kha trn cc bng ngun khng thng qua Cursor s khng phn hi trn tp mu tin. Cursor kiu STATIC, KEYSET, v DYNAMIC mc nh dng phng thc SCROLL. TYPE_WARNING : Gi thng bo ch v client nu Cursor thc hin chuyn i ngm nh t kiu yu cu sang mt kiu khc.
-4
X l ng thi:
Trong mi trng nhiu ngi dng cng lm vic trn cng tp d liu, Lm th no cc Users chc chn rng nhng thay i ca h khng b thay i bi ngi dng khc? Ph thuc vo kiu Cursor m bn s dng, bn khng th nhn thy c nhng thay i cho n khi bn ng Cursor v m li n. Tr phi s dng cursor trong mt transaction, nu khng cc table ngun ca cursor khng t ng kha d liu. SQL Server 2000 c 4 chn la cho php ngn cn vic sa i mu tin cho ti khi thc hin xong hoc bng cch kha cc table ngun ca cursor bo v cc thay i ca bn. READ_ONLY : Dng khi ch truy xut d liu m khng sa i d liu.
- 47 -
User khc. OPTIMISTIC WITH VALUES: Ch kha cc gi tr m bn va thay i. Nu ngi dng khc thay i cc gi tr s nhn c thng bo li. OPTIMISTIC WITH ROW VERSIONING Khi mun c dng c cp nht, khng ch mt vi Fields trong n.
-5
While @@fetch_status = 0 Begin Print @ms + '-' + @ten Fetch Next from a into @ms, @ten End Close a Deallocate a GO
- 49 -
CHNG 6 : BO MT (SECURITY)
IKhi Nim:
Mi CSDL c 1 hay nhiu users c ch nh quyn truy xut d liu. Ngi qun tr c th cp quyn truy xut CSDL bng cch to mt ti khon ng nhp (login) SQL Server cho User, thm User vo CSDL v gn quyn cho User trn CSDL . Bao gm cc loi quyn: Quyn truy cp vo SQL Server Quyn truy xut CSDL Quyn thc hin trn cc i tng ca CSDL Quyn x l d liu
M mc Security, click phi mc Login v chn New Login Trn trang General, nhp tn ng nhp, ch xc nhn, CSDL mc
nh.
Ch : ng nhp vi SQL Server thng dng cho vic kt ni quay s v mng peer-topeer. (3) Trang Server Roles: Chn vai tr qun tr mc Server cho ti khon ng nhp System Administrators c quyn cao nht; cho php thc hin mi tc v trn SQL Security Administrators Qun l cc server logins. Server Administrators Cho php bn nh cu hnh nhng ci t server-wide. Setup Administrators Cho php thm v xa cc linked servers, v truy xut vi SP Database Creator To v hiu chnh databases. Disk Administrators Qun l cc files trn a. Process Administrators Qun l tin trnh ang chy trong mt th hin ca SQL Server. Bulk Administrators Thc hin pht biu BULK INSERT.
- 50 -
Ch :Bt k Users ca Windows NT thuc nhmBUILTIN\Administrators u c vai tr sysadmin. (4) Trang Database Access: Chn CSDL c php truy xut v vai tr ca n trong tng CSDL c chn. Fixed Database Role Description Public Vai tr chung cho tt c ngi dng. db_owner Quyn cao nht trong database. db_accessadmin iu khin truy xut, ci t hoc xa user accounts. db_datareader c tt c d liu trn database. db_datawriter Thm, sa, xa d liu trn cc tables ngi dng trong database. db_ddladmin Thm, sa, xa cc i tng objects (runs all DDLs). db_securityadmin Qun l cc roles, cc thnh vin ca role, giy php trong database. db_backupoperator Cho php back up database. db_denydatareader T chi quyn truy vy d liu trong database. db_denydatawriter T chi quyn thay i d liu trong database. Sau khi to login, n t ng nhp vo tp Users ca mi database c chn, vi tn User trng vi tn Login. Bn c th thay i thu hi vai tr ca n trn tng CSDL bng cch sa i thuc tnh ca Login, hoc chuyn n tp Users ca database v thay i thuc tnh hoc xo user no m bn khng mun cho truy xut data ca bn. Cc Login c lu trong table SysLogins ca CSDL Master: If Exists( Select 1 From Master..SysLogins Where Name = 'Login') Cc User trong mt CSDL c lu trong table SysUsers ca CSDL If Exists( Select 1 From SysUsers Where Name = 'User01')
-2 -3
Chn database, trong mc Users bm p vo tn User cn hiu chnh (Login-ID). Click nt Permission ch nh quyn truy cp d liu trn tng Table, View. Quyn kim tra RB tham chiu (DRI - Declarative Referential Integrity). Quyn thc hin cc th tc lu tr. Ch thch: Quyn kim tra RB tham chiu c s dng khi Table A c cp quyn Update hoc Insert. Table A c RB FOREIGN KEY vi table B, m table B khng c cp quyn SELECT.
-4
- 51 -
-5 -6
To User vi Login c:
Click phi vo mc Users v chn New Database User... Ch : Bn c th thay i tn User bng cch xa v to li vi login c.
-7
Xa Ti Khon ng Nhp:
Click phi vo tn Login v chn Delete Vi cch ny s xa b cc user trong cc CSDL chn cho ti khon ny.
V d: Thm ti khon cho user Windows NT [Server4\User01] kt ni n SQL Server. EXEC sp_grantlogin ' Server4\User01' Hay EXEC sp_grantlogin [Server4\User01] Ch : Ch c thc hin bi nhng thnh vin c vai tr sysadmin v securityadmin.
-2
Thay i mt khu:
Sp_Password [ @old = ] <'oldPW'>
- 52 -
-3
-4
-5
Bao gm cc quyn: Select, Insert, Update, Delete, Reference, Excecute. GRANT ALL | <quyn> [,] ON <TnTable|View>[(<tnct>,..)] | <tnSP> TO <tn Login hoc Role> [,] [WITH GRANT OPTION] [AS <tn Role> ] o All : Cp tt c cc quyn thc thi Select, Insert, Update, Delete hay Reference trn table hay view; quyn Excecute cho SP. o TO <tn Login hoc Role> : Khi cp quyn cho nhm hay user ca Windows NT, phi ch nh: <Domain>|<Computer name>\<tnnhm>. cp quyn cho nhm cc b Windows NT built-in, dng t kha BUILTIN thay th tn domain hoc computer name. Quyn thc thi cp cho role Public c p dng cho tt c users trong CSDL. Quyn thc thi cp cho user Guest c s dng cho tt c Users khng c phn quyn truy xut trn CSDL. V d: USE QLDeTai Grant All On DeTai To User01 GO GRANT SELECT ON DeTai TO public GO GRANT INSERT, UPDATE, DELETE ON DeTai TO Mary, [Corporate\BobJ] GO o WITH GRANT OPTION : Cho php Login cp quyn ch nh trn i tng cho Login khc. o AS {group | role} : c dng khi quyn thc thi trn mt i tng cp cho nhm hoc role, v mt User ca nhm hoc Role mun cp quyn thc thi cho User khc khng l thnh vin ca nhm hoc Role. V d: table NhatKy c to bi user Lac. Lac cp quyn SELECT table NhatKy cho Role BanBe vi mnh WITH GRANT OPTION cc user thnh vin ca Role BanBe c th nhng quyn ny cho cc user khc khng thuc Role BanBe. User Hong, l thnh vin ca BanBe, mun nhng quyn SELECT table NhatKy cho user Khoa, khng l thnh vin ca role BanBe. /* User Lac */ GRANT SELECT ON NhatKy TO BanBe WITH GRANT OPTION /* User Hong */
- 53 -
-6
DENY ALL | <quyn> [,] [ ( column [ ,...n ] ) ] ON { table | view } | ON table | view [ ( column [ ,...n ] ) ] | ON stored_procedure TO <tn Login hoc Role> [,] [Cascade] V d: USE QLDeTai GO GRANT SELECT ON DeTai TO public GO DENY SELECT, INSERT, UPDATE, DELETE ON DeTai TO Mary, John, Tom
-7
REVOKE [ GRANT OPTION FOR ] { ALL | permission [ ,...n ] } [ ( column [ ,...n ] ) ] ON { table | view } | ON { table | view } [ ( column [ ,...n ] ) ] | ON { stored_procedure | extended_procedure } | ON { user_defined_function } TO | FROM security_account [ ,...n ] [ CASCADE ] [ AS { group | role } ] V d : Xa b quyn Select t chi cho User Mary trn table DeTai. REVOKE SELECT ON DeTai TO Mary
-8
GRANT ALL | <lnh> [,] TO <tn Login hoc Role> [,] Bao gm cc lnh: CREATE DATABASE; CREATE DEFAULT; CREATE PROCEDURE; CREATE RULE; CREATE TABLE; CREATE VIEW; BACKUP DATABASE; BACKUP LOG V d: GRANT CREATE DATABASE, CREATE TABLE TO Mary, John, [Corporate\BobJ]
-9
V d:
-1
- 54 -
'owner'] V d: Trong CSDL QLDeTai thm role 'QuanLy' SP_ADDROLE 'QuanLy' Go GRANT SELECT ON DeTai TO QuanLy
-2
SP_ADDROLEMEMBER [@rolename =] 'role', [@membername =] 'UserName' V d: Cp quyn truy cp CSDL QLDeTai cho User v thm vai tr QuanLy cho User. USE QLDeTai GO EXEC SP_GRANTDBACCESS 'Server4\User01', 'Hong' GO EXEC SP_ADDROLEMEMBER 'QuanLy', 'Hong'
- 55 -