Professional Documents
Culture Documents
MC LC
BI 1:
GII THIU MICROSOFT SQL SERVER 2000...............................................................5
1.1Tng quan v SQL Server 2000..................................................................................5
1.2Cc thnh phn ca SQL Server 2000........................................................................8
1.3Kin trc ca CSDL quan h (relational Database Architecture)...............................8
1.4Gii thiu v Transact-Sql........................................................................................12
BI 2:
CI T SQL SERVER 2000..........................................................................................13
2.1Lp k hoch ci t SQL SERVER 2000................................................................13
2.2Quyt nh nhng chn la cu hnh ci t SQL SERVER 2000...........................13
2.2.1Xc nh ti khon ngi dng (User account) thch hp cho SQL Server
Sevice v SQL Server Agent Service........................................................................13
2.2.2Chn mt ch xc thc (Authentication Mode)...........................................14
2.2.3Xc nh Collation.............................................................................................14
2.2.4Chn Network Libraries....................................................................................14
2.2.5Xc nh client Licensing Mode........................................................................14
2.3Cc bc ci t SQL Server 2000...........................................................................14
2.4To tp tin ci t khng tham d (unattended) v ci t t xa (Remote) SQL
Server 2000....................................................................................................................21
2.5Kt qu ca vic ci t SQL SERVER 2000...........................................................22
BI 3:
CC CNG C CA SQL SERVER...............................................................................23
3.1SQL ENTERPRISE MANAGER.............................................................................23
3.2SQL SERVER SERVICES MANAGER..................................................................23
3.2.1Cc dch v ca SQL Server..............................................................................24
3.2.2Khi ng, tm ngng, dng cc dch v ca SQL Server...............................25
3.3OSQL........................................................................................................................25
3.4SQL QUERY ANALYZER.......................................................................................26
3.4.1Gii thiu...........................................................................................................26
3.4.2Khi ng Query Analyzer................................................................................27
3.4.3Thnh phn chnh ca Query Analyzer.............................................................27
3.4.4Mt vi phm nng dng trong Query Analyzer................................................29
BI 4:
LM VIC VI C S D LIU SQL SERVER..........................................................30
4.1Thit k mt c s d liu. ......................................................................................30
4.2C s d liu ca SQL SERVER 2000.....................................................................32
4.3To, hiu chnh c s d liu SQL SERVER...........................................................35
4.3.1Gii thiu...........................................................................................................35
4.3.2To c s d liu ..............................................................................................35
4.3.3Thao tc trn c s d liu ca SQL Server......................................................38
BI 5:
KIU D LIU LM VIC VI BNG......................................................................43
5.1Kiu d liu (data type)............................................................................................43
5.1.1System-Supplied Datatype.................................................................................43
5.1.2User-defined datatype........................................................................................44
5.2Lm vic vi bng ca SQL Server..........................................................................45
5.2.1To mt bng mi .............................................................................................45
BI 1:
GII THIU MICROSOFT SQL SERVER 2000
1.1
Truy xut d liu XML bng cch dng cu lnh SELECT v mnh
FOR
1.2
Cc thnh phn ca SQL Server 2000
Cc thnh phn ca Server
1.3
CSDL Msdb: SQL Server Agent dng CSDL msdb cho cc tc v khc nhau, nh
lp biu, cnh bo v ghi nhn cc thao tc. D liu c lu trong cc bng h
thng trong CSDL msdb. Cc bng h thng c dng bi SQL Server Agent l
sysalerts, syscategories, sysdownloadlist, sysjobhistory, sysjobs, sysjobschedules,
sysjobservers,
sysjobsteps,
sysnotifications,
sysoperators,
systargetservergroupmembers, systargetservergroups, systargetservers v
systaskids. Ngoi ra, CSDL msdb c 7 bng dng cho thao tc d phng v phc
hi d liu: backupfile, backupmediafamily, backupmediaset, backupset,
restorefile, restorefilegroup, v restorehistory. SQL Server c th t ng tng
hoc gim kch c ca CSDL khi cc dng c thm vo hoc xa i.
M t
Bng - Table
Mc nh
Default
Ct - Column
Dng Row
Ch mc Index
Quy tt - Rule
Th tc - Stored
Procedures
Cu trc vt l ca mt CSDL
Mi CSDL bao gm t nht mt tp tin d liu (data file) v mt tp tin log (transaction
log file). Cc tp tin ny khng c chia x vi cc CSDL khc. ti u hiu nng v
h tr kh nng chu li (fault tolerance), tp tin d liu v log c tri di trn nhiu
a v thng thng dng mt Raid (Redundant array of independent disks)
Authentication
kt ni n mt th hin ca SQL Server 2000 th ngi dng phi ch nh
mt nh danh ng nhp hp l (ID). Mt ID ng nhp l mt ti khon nh
danh iu khin s truy xut n mt th hin ca SQL Server 2000. SQL Server
kim tra ID ng nhp c c php kt ni n th hin ca SQL Server hay
khng. S kim tra ca mt ID ng nhp c gi l chng thc
(authentication). SQL Server 2000 dng hai loi chng thc: Windows
authentication v SQL Server authentication. Hai ch chng thc
(Authentication Mode): Windows Authentication mode, mixed mode.
Authorization
Sau khi mt ID - ti khon ng nhp c chng thc, SQL Server 2000 xc
nh ID c c y nhim thi hnh cc thao tc trong CSDL hay khng. Mt
ID ng nhp t n khng a ra cc quyn (permission) truy xut n cc i
tng trong mt CSDL. Mt ID phi c mt s y nhim hoc c quyn hp l.
iu ny ngn chn mt ng nhp t ng truy xut n cc CSDL trong mt th
hin ca SQL Server 2000.
Chng ta s tm hiu bo mt trong SQL Server k hn trong bi bo mt.
1.4
BI 2:
CI T SQL SERVER 2000
2.1
Lp k hoch ci t SQL SERVER 2000
Cc yu cu v phn cng
Phn cng
Yu cu ti thiu
Intel hoc tng thch.
My tnh
Pentium 166 MHz hoc cao hn.
Enterprise Edition: 64 MB; 128 MB hoc hn
Standard Edition: 64 MB.
B nh (RAM)
Khng gian a
cng
Mn hnh
800 x 600 hoc phn gii cao hn SQL Server.
Thit b chut
CD
2.2
domain user account cho php nhng dch v ca SQL Server truyn thng vi nhng
ci t SQL Server khc, ti nguyn mng (nh l chia s tp tin) trn nhng my tnh
khc trong mi trng domain.
Domain user account m bn chn phi c y cc quyn truy xut trn my tnh
cc b, nhng khng cn phi l thnh vin ca nhm Administrator cc b hoc
dommain administrator. Nhng quyn c ch nh ny phi bao gm quyn log on nh
l mt dch v, quyn truy xut v thay i th mc SQL Server, quyn truy xut v thay
i tp tin CSDL, c v ghi cc kha bt k no trong Registry ca Windows. Bn
khng cn lo lng vic gn cc quyn ny, chng trnh ci t SQL Server 2000 s gn
nhng quyn ny mt cch t ng cho domain user account m bn ch nh.
2.2.2 Chn mt ch xc thc (Authentication Mode)
SQL server 2000 h tr 2 ch xc thc: Windows authentication Mode v Mixed
mode. Mc nh l Authentication Mode.
Ch Windows Authentication Mode ch cho php cc user ca h iu hnh mi
c th kt ni vi SQL Server. Ch Mixed mode cho php tt c cc user ca h iu
hnh hoc SQL server u c th kt ni n SQL Server.
Nu bn ang trong giai on tm hiu v th nghim SQL Server th bn nn chn
Mixed Mode. Nu bn trin khai ng dng th bn nn s dng Windows authentication
mode, vi ch ny tnh bo mt c tng cao nh tch hp thm cc kh nng bo
mt ca h iu hnh.
2.2.3 Xc nh Collation
Collation l tp hp nhng qui tt qun l, n s nh hng n cch lu tr d liu,
th t sp xp V d khi bn ci t h iu hnh, bn chn la ngn ng, bn phm
c s dng. Mi ngn ng s c b k t khc nhau do c nhng code page khc
nhau v da trn c s ny h iu hnh s ci t cc numbers, currencies, Times, Dates
khc nhau. Khi bn ci t SQL Server, chng trnh ci t s xc nh mt collation
mc nh cho SQL Server da trn cc ci t ca h iu hnh.
2.2.4 Chn Network Libraries
SQL Server s dng Network libraries gi cc packet gia SQL Server khch v
ch. Server v Client phi c t nht mt Network Libraries chung.
Cc Network Libraries: NEBEUI, TCP/IP, IPX/SPX, Apple Talk ADSP, Banyan
Vines, VIA giginet San.
2.2.5 Xc nh client Licensing Mode
SQL Server cung cp 2 kiu client licensing: Per processor v Per seat.
2.3
: Ci trn my Local
: Ci t t xa
: Ci trn Server o
Chn Create a new instance of SQL Server, or install client tools, chn Next
: Ch ci t cc tools ca client
: Ci t cc tools ca Server v Client
: Ci t cc thnh phn truy xut d liu v
cc th vin network
Cch 2: tp tin .ISS c cung cp trong a SQL Server 2000, trong th mc gc. Bn c
th dng trc tip t cc tp tin ny hoc hiu chnh bng cc trnh son tho vn bn.
Tp tin l SQLINS.ISS, SQLCLI.ISS; SQLCST.ISS
Cch th 3: Tp tin .ISS c t ng to ra ngay sau khi mi ln bn ci t SQL Server,
n nm trong \WinNt. Tuy nhin, nu dng tp tin ny th bn phi chnh sa n nng mt
trnh son tho vn bn thm phn [SdFinish-0]
2.5
Kt qu ca vic ci t SQL SERVER 2000
Trnh ci t SQl server to ra mt lot cc th mc lu cc tp tin thi hnh v cu
hnh khc nhau. Theo ngm nh, SQL Server c ci t trn a C: trong th mc
MSSQL. Di th mc MSSQL l vi th mc khc:
Backup
BIN
BINN
CHARSETS
DATA
INSTALL
LOG
REPLDATA
SNMP
SQLOLE
SYSBOLS
BI 3:
CC CNG C CA SQL SERVER
3.1
SQL ENTERPRISE MANAGER
Enterprise Manager cn gi tt l EM, l mt cng c chnh dnh cho nh qun tr
server v CSDL. Enterprise Manager cho php bn dng v khi ng mt Server, cng
nh cho php bn thc hin cc tc v sau:
ng k mt server.
Cu hnh cc server cc b hoc t xa.
Cu hnh v qun l mt ci t vi nhiu server (multiple-server).
Ci t cc bo mt ng nhp (login security), thm cc ngi dng (user), cc nh
qun tr h thng (system administrator), v cc iu hnh vin.
Gn mt password nh qun tr h thng.
To v lp biu cho cc cng vic (job).
To cc cnh bo v cu hnh giao tip n nh qun tr h thng thng qua e-mail.
Ci t v qun tr cc CSDL, cc bng (table), cc ch mc (index), cc truy vn
(view), cc th tc (stored procedure), cc qui tt (rule), cc by li (trigger), cc
mc nh (default), cc thit b d phng (backup device), v cc vt li (error log).
Qun l cc service khc.
MICROSOFT SEARCH.
Dch v Microsoft Search cho php to mt ch mc full-text v c ch tm kim.
Chun SQL-92 nh ngha cc kh nng tm kim vi php so snh k t bng,
nh hn, ln hn mt hng s k t, gi tr k t c cha mu chui.
Dng dch v Microsoft Search cho php Microsoft SQL Server 2000 v SQL
Server 7.0 c h tr nhiu tm kim tinh vi trn ct chui k t.
OSQL
OSQL l mt du nhc tin ch dng truy vn mt instance ca SQL Server
2000 mt cch tng tc bng T-SQL, th tc h thng, tp tin lnh. N cng
c dng xem xt cc cng vic hoc b lnh, k c cc lnh ca h iu hnh
i vi SQL Server 2000. Bn c th dng osql bng cch kt ni vo server v
thc thi cc lnh trong ch tng tc hoc bng cch kt ni vo v thc thi cc
lnh nh mt phn ca c php lnh osql.
C php lnh ca osql nh sau:
Osql S servername U login_id P password
(1)
Osql S servername E
(2)
- U login_id
Ch nh tn ca ti khon ng nhp
- P password
-E
V d:
Tm li (Debug) cc th tc.
Cng c Database trn thanh cng c, cho bit v cho php bn thay i
CSDL c kt ni hin hnh.
ngha
Chui k t
Th tc
Xanh l
Bng h thng
Xanh l m
Ch gii
ti
Hm h thng
Xanh
T kha
Xm
Ton t
Hnh ng
Phm nng
Thc thi
CTRL+E or F5
Tm kim
CTRL+F
CTRL+SHIFT+U
CTRL+SHIFT+L
Cc kt qu dng vn bn
CTRL+T
Nhng kt qu trong li
CTRL+D
F1
SHIFT+F1
BI 4:
LM VIC VI C S D LIU SQL SERVER
4.1
Thit k mt c s d liu.
Thit k CSDL l mt bc v cng quan trng trong tin trnh pht trin ng dng.
Trong qu trnh thit k, bn phi quyt nh nhng table no cn lu tr cc d liu
ca bn. Qu trnh thit k mt CSDL logic c thc hin c lp vi cc h qun tr
CSDL. Mt s lu khi thit k mt CSDL logic:
Many-to-Many. Nhiu dng trong mt bng lin quan n nhiu dng trong bng
khc.
V d: mt tc gi c th vit nhiu quyn sch v mt quyn sch c th c vit
bi nhiu hn mt tc gi. Mi quan h many-to-many gia 2 bng l thc hin bng
cch to mt bng th ba v to mt mi quan h one-to-many n bng chc nng ny
t mi bng ban u.
Mt CSDL sau khi thit k c nh gi thng qua cc dng chun. CSDL t chun cao
th CSDL lu tr y thng tin, khng b trng lp, c tnh nht qun cao.
OrderID
CustomID
OrderDate
Items
OrderTotal
1111
101
1/1/02
4 apples
1000
1111
103
1/2/02
5 bananas
900
CustomId Items
Quarter1
Items
Quarter2
Items
Quarter3
ProductName
SupplerName
CompanyName
SupplerPhoneNumber
CompanyName
Address
City
Region
Postcode
4.2
Primary data files: mt CSDL c mt primary data file dng ghi nhn li tt
c nhng tp tin khc trong CSDL, v lu tr d liu. Theo ngm nh, tn ca
primary data file c phn m rng l .MDF.
Log files: mt CSDL c t nht mt log file dng cha nhng thng tin cn thit
cho vic phc hi tt c nhng giao tc (transaction) trong CSDL. Theo ngm
nh, log file c phn m rng l .LDF.
Mi tp tin CSDL c nm thuc tnh: tn tp tin logic, mt tn tp tin vt l, mt kch
thuc (size) ban u, mt kch thc ti a (maximum size), v gia s tng kch thc
(growth increment). Cc thuc tnh ca mi tp tin, theo cng vi nhng thng tin khc
c ghi ch trong bng h thng sysfiles, mt dng ng vi mi tp tin uc dng trong
mt CSDL.
Nhm tp tin (Filegroups)
Cc Filegroup cho php bn kt nhm cc tp tin nhm mc ch qun tr v sp xp d
liu. Cc Filegroup c th ci thin hiu nng CSDL bng cch cho php mt CSDL c
to ngang qua nhiu a hoc h thng RAID. Bn c th to cc bng v cc ch mc
trn a c ch r bng cch dng filegroup. C 3 dng filegroup.
Primary filegroup bao gm primary data file v tt c nhng tp tin khc khng
t trong nhng filegroup khc. Cc bng h thng (System table) Dng nh
ngha cc ngi dng (user), cc i tng (object), v cc quyn (permission) i
vi mt CSDL l c t trong primary filegroup ca CSDL . SQL Server t
ng to cc bng h thng ca tng CSDL khi chng ta to CSDL.
Bit GAM
Bit SGAM
Trong sut qu trnh hot ng, tin trnh checkpoint u n thng xuyn kim tra cc
transaction hon tt m s hiu chnh d liu cha c ghi vo tp tin d liu. Tin
trnh checkpoint ghi nhng hiu chnh ny vo tp tin d liu v checkpoint cc
transaction cho bit rng n c vit vo tp tin d liu cha.
Nu h thng b hng hc, tin trnh phc hi (recovery process) t ng chy khi SQL
Server c khi ng li. Tin trnh ny s dng transaction log quay ngc li n
cc transaction hon tt m cha tng c "checkpointed" v xo b n (roll back) cc
transaction cha hon tt.
C ch t ng ghi nhn vt trong SQL Server l khng l mt la chn (option) (c
ngha l bn khng th tt n i), tt c cc hiu chnh d liu u phi i qua transaction
log (C 2 phng php ti mt lng d liu ln m c th c thc hin m khng
dng transaction log, l chng trnh bulk copy v lnh SELECT INTO). D liu
vrt quan trng nn transaction log khng bao gi y (full) bi iu ny s ngn chn
hiu chnh d liu trong CSDL.
4.3
To c s d liu
To bng Database Wizard ( ti ca s Enterprise Manager)
1. M rng server group, sau ni rng server ni m s to CSDL.
2. Chn thc n Tools Wizards.
3. M rng Database.
Trang General
+ Name: <Tn logic ca CSDL>
Trang Data Files
+ Location : <Tn ca tp tin Datafile, v tr lu tp tin trn a>
+ Initial size: <Kch c khi to CSDL>
+ File Group : <Tn ca File Group>
+ File properties: Khai bo mt s thuc tnh khc nh t l gia tng (File
Growth), kch c ti a (maximun size)
Trang Transaction log: Tng t nh trang Data files nhng khai bo cho tp tin
log.
Thc hin:
(1) G lnh trong ca s Query Analyzer
(2) Gi thc thi cu lnh
V d: To CSDL c tn l SalesDB, tp tin d liu tn l SalesDB_dat.mdf t trong
C:\Data, kch c khi to l 10MB, kch thc ti a l 50MB, t l gia tng l 5MB, v
tp tin vt tn l SalesDB_log.ldf t trong C:\Data, kch thc khi to l 5MB, kch
thc ti a l 25MB, t l gia tng l 10%.
CREATE DATABASE SalesDb
ON
(NAME = SalesDb_dat,
FILENAME = 'c:\data\salesDB_dat.mdf',
SIZE = 10,
MAXSIZE = 50,
FILEGROWTH = 5)
LOG ON
(NAME = 'SalesDb_log',
FILENAME = 'c:\data\salesDB_log.ldf',
SIZE = 5MB,
MAXSIZE = 25MB,
FILEGROWTH = 10%)
GO
Lu :
-
V d:
3.3.a.4 i tn c s d liu.
Dng hm sp_renamedb theo c php sau
sp_renamedb [ @dbname = ] 'old_name', [ @newname = ] 'new_name'
3.3.a.5 To mt script cho CSDL v cc i tng ca CSDL.
Generate the CREATE <object> command for each object: To script theo
cch s dng nh ngha ang c ca n. La chn ny c chn theo mc
nh.
Generate the DROP <object> command for each object: B sung vo script
cho mi i tng cu lnh drop khi to script. La chn ny c chn theo
mc nh.
Hnh 24: Trang General ca hp thoi pht sinh script cc i tng ca CSDL
Hnh 25: Trang Formating ca hp thoi pht sinh script cc i tng ca CSDL
Hnh 26: Trang Option ca hp thoi pht sinh script cc i tng ca CSDL
BI 5:
KIU D LIU LM VIC VI BNG
5.1
Kiu d liu (data type)
Kiu d liu l mt c tnh ca mt ct (Column). N nh r loi d liu v dng d
liu c nhp vo ct.
C 2 nhm:
Kiu d liu c s
Binary
Character
Date
Time
Decimal
Foating
point
and
Kch c
Vng gi tr
M t
Binary
8 KB
Varbinary
8 KB
Image
2^31 -1 bytes
2^31 1 bytes
D liu hnh nh
Char
255 bytes
1..8000 k t
K t hoc chui
Varchar
255 bytes
1..8000 k t
K t hoc chui
Text
2147483647 bytes
2^31-1 k t (2147483647)
K t hoc chui
Datetime
8 bytes
01/01/1753->31/12/9999
Smalldatetime
4 bytes
Decimal
17 bytes
S thc
Numeric
17 bytes
S thc
Float
8 bytes
S thc
Real
4 bytes
-3.40E+38 ->3.40E+38
S thc
Integer
Monetary
Special
Bigint
8 bytes
S nguyn
Int
4 bytes
S nguyn
Smallint
2 bytes
S nguyn
Tinyint
1 bytes
0..255
S nguyn
Money
8 bytes
D liu tin t
Smalmoney
4 bytes
D liu tin t
Bit
1 bytes
0 hoc 1
D liu c mt
trong hai trng thi
0 hoc 1
Cursor
Timestamp
8 bytes
Chui c dng:
0x000000100000a90
Uniqueidentifier
16 bytes
S thp lc phn
SQL_variant
Theo di mu tin
no b thay i
d liu
Table
Unicode
Nchar
4000 k t
K t hoc chui
Nvarchar
4000 k t
K t hoc chui
Ntext
2^30-1 k t
K t hoc chui
User-defined data type khng cho php bn nh ngha cc kiu d liu phc hoc
c cu trc.
V d:
EXEC sp_droptype isbn
Xem cc user-defined data types trong CSDL hin hnh: dng th tc sp_help
hoc truy vn trong information_schema.domains
V d:
Use SalesDB
Sp_help
hoc
SELECT domain_name, data_type,
character_maximum_length
FROM information_schema.domains
ORDER BY domain_name
5.2
Lm vic vi bng ca SQL Server
Bng l mt i tng ca CSDL v l ni cha ng cc d liu v mt thc th no
v d Khch hng, n t hng, tn kho, Mt bng l mt tp hp cc ct (Column).
Mi mt ct i din cho mt thuc tnh ca d liu trong bng.
Khi bn to mt table, bn phi ch nh r tn ca bng, tn ct, kiu d liu ca ct. Tn
ct phi duy nht trong mt bng, c th dng tn trng nhau cc bng khc nhau trong
cng mt CSDL. Phi ch r mt kiu d liu cho mi ct v nhng la chn khc nu
cn. Bn c th to:
CREATE TABLE
[ database_name.[ owner ] . | owner. ] table_name
({ < column_definition >
| column_name AS computed_column_expression
| < table_constraint > ::= [ CONSTRAINT constraint_name ] }
| [ { PRIMARY KEY | UNIQUE } [,...n ]
)
[ ON { filegroup | DEFAULT } ]
[ TEXTIMAGE_ON { filegroup | DEFAULT } ]
< column_definition > ::= { column_name data_type }
[ COLLATE < collation_name > ]
[ [ DEFAULT constant_expression ]
| [ IDENTITY [ (seed, increment) [ NOT FOR REPLICATION ] ] ]
]
[ ROWGUIDCOL]
[ < column_constraint > ] [ ...n ]
< column_constraint > ::= [ CONSTRAINT constraint_name ]
{ [ NULL | NOT NULL ]
| [ { PRIMARY KEY | UNIQUE }
[ CLUSTERED | NONCLUSTERED ]
[ WITH FILLFACTOR = fillfactor ]
[ON {filegroup | DEFAULT} ] ]
]
| [ [ FOREIGN KEY ]
REFERENCES ref_table [ (ref_column) ]
[ ON DELETE { CASCADE | NO ACTION } ]
[ ON UPDATE { CASCADE | NO ACTION } ]
[ NOT FOR REPLICATION ]
]
| CHECK [ NOT FOR REPLICATION ]
(logical_expression)
}
< table_constraint > ::= [ CONSTRAINT constraint_name ]
{ [ { PRIMARY KEY | UNIQUE }
[ CLUSTERED | NONCLUSTERED ]
{ (column [ ASC | DESC ] [,...n ]) }
[ WITH FILLFACTOR = fillfactor ]
[ ON { filegroup | DEFAULT } ]
]
| FOREIGN KEY
[ (column [,...n ]) ]
REFERENCES ref_table [ (ref_column [,...n ]) ]
[ ON DELETE { CASCADE | NO ACTION } ]
[ ON UPDATE { CASCADE | NO ACTION } ]
[ NOT FOR REPLICATION ]
| CHECK [ NOT FOR REPLICATION ]
(search_conditions)
}
V d 1:
USE SalesDb
GO
CREATE TABLE Employees
(
EmployeeID SMALLINT IDENTITY(1,1) NOT NULL,
FirstName NVARCHAR(30) NOT NULL,
LastName NVARCHAR(30) NOT NULL,
Address1 NVARCHAR(60) NOT NULL,
City NVARCHAR(15) NOT NULL,
State CHAR(2) NOT NULL,
Phone VARCHAR(24) NOT NULL,
DOB DATETIME NOT NULL,
HireDate DATETIME NOT NULL,
PositionID TINYINT NOT NULL
)
5.2.2 Hiu chnh bng
Thao tc c bn hiu chnh bng gm thm ct, xa ct, thay i thuc tnh ca ct.
thc hin ta s dng cu lnh ALTER TABLE1.
Thm cc ct
ALTER TABLE <TableName>
ADD <Column Definition>[,n]
V d:
ALTER TABLE Employees
DROP COLUMN Address2
Lu : Lnh trn s khng thc hin c v khi to ct Address2 ta khai bo
gi tr mc nh nn SQL Server to ra mt tng Defaul Constraint. Do
, mun xa ct th phi xa tt c cc i tng lin quan n ct cn xa ri
mi xa ct .
V d:
ALTER TABLE Employees
DROP CONSTRAINT DF_Employees_Addre_1372D2FE
ALTER TABLE Employees
1
V d:
ALTER TABLE Employees
ALTER Address NVARCHAR(20)
Xo ton b d liu trong Table
TRUNCATE TABLE <Name Table>
V d:
TRUNCATE TABLE Employees
Lu : Nu bng mun xa l mt bng con (child table) th bn c th xa d
liu ca n bt k lc no bn thch, nhng nu n l mt bng cha (Parent Table)
th bn phi xa d liu bng con trc, k tip xa kho ngoi (Foreign key
constraint) gia 2 bng, cui cng mi xa d liu bng cha.
5.2.3 Xa bng khi c s d liu.
Xa mt bng l g b nh ngha bng v tt c d liu, cng nh cc quyn
(permission) nh cho bng .
Trc khi xa mt bng, bn phi g b tt c cc ph thuc gia bng v nhng
i tng khc.
DROP TABLE <Name Table>
V d:
DROP TABLE Employees
5.3
BI 6:
TON VN D LIU
6.1
Gii thiu ton vn d liu (data Integrity)
Ton vn d liu l cp n trng thi ca tt c cc gi tr d liu lu tr trong CSDL
l ng. Nu d liu khng ng m c lu tr trong CSDL th c gi l vi phm
ton vn d liu.
Cc bng trong CSDL ca SQL Server c mt s loi ton vn d liu khc nhau. V d
nh ngha NOT NULL, nh ngha DEFAULT, thuc tnh IDENTITY, CONSTRAINTS,
RULES, TRIGGERS, INDEXES.
Xc nh ng kiu d liu ca ct hoc bin cng l mt cch thc p tnh ton vn d
liu. V d bn khng th chp nht gi tr ca ct CustomName l mt gi tr dng ngy
gi cng nh ngc li. to hoc thm cc p tha ton vn d liu, chng ta c th
thc hin trong cc cu lnh.
nh ngha rng buc:
Create Table : nh ngha trong lc thit k cu trc bng.
Alter Table : nh ngha trong khi hiu chnh bng.
kim tra hoc xem cc ton vn d liu
Sp_HelpConstraint <Tn Table>
Hoc
Bt ca s Object Browser ca Query Analyzer, m nhnh Constraint
ca tng bng.
Xa cc ton vn d liu
ALTER TABLE <Tn Table>
DROP CONSTRAINT <Tn Constraint>
6.2
V d:
USE SalesDb
GO
DROP TABLE Product_Info
GO
CREATE TABLE Product_Info
(
Product_ID
smallint NOT NULL,
Product_Name
char(20) NOT NULL,
Description
char(30) NULL,
Price
smallmoney NOT NULL
)
GO
6.2.2 Gi tr mc nh (Default Values)
Trong s cc c tnh ca ct, chng ta xt thy gi tr c th null v gi tr mc nh.
C hai c tnh ny nh ra gi tr chn vo mt ct khi n khng c ch nh trong
cu lnh INSERT. Cc trng hp ny c th xy ra khi gi tr ct khng c a
vo trong cu lnh INSERT:
- Khi ct c nh ngha nh l chp nhn gi tr NULL v khng c gi tr
mc nh, gi tr ca ct l NULL.
- Khi ct c nh ngha khng chp nhn gi tr NULL v khng c gi tr
mc nh, mt li s xy ra.
- Khi ct c mt gi tr mc nh
Nh vy, mi mt ct trong mt mu tin ca bng u phi cha mt gi tr, ngay c
khi gi tr l NULL. C nhng trng hp bn cn phi ti mt hng d liu vo
mt bng nhng bn khng bit gi tr dnh cho ct hay gi tr ny khng tn ti. Nu
ct chp nhn cc gi tr Null, bn c th ti hng c gi tr Null. Thng thng, cc
ct chp nhn gi tr Null c th khng phi l cc ct cn thit nn gii php tt hn
ht l n nh mt gi tr mc nhin (khng nhp gi tr vo th ct s chp nhn gi tr
mc nh). Vic chnh l nh ngha DEFAULT cho ct nhng ni thch hp.
Chng hn, ngi ta thng ch nh 0 l gi tr mc nh cho cc ct s, hoc N/A l
gi tr mc nh cho cc ct chui khi khng c gi tr no c ch nh).
Khi bn nhp vo mt mu tin ca bng c mt nh ngha Default dnh cho mt ct
bn ang gin tip hng dn SQL Server nhp mt gi tr mc nh trong ct khi bn
khng ch nh mt gi tr cho ct .
SQL Server 2000 c hai cch trin khai cc gi tr mc nh cho cc ct: Default
Constraint v Default Object.
2.2.a.1 Default Constraint
Default constraint c th c to ti thi im to bng, thm sau khi bng c
to.
Xo default constraint
ALTER TABLE Events
DROP CONSTRAINT DF__Events__EventTyp__7E6CC920
ALTER TABLE Events
DROP CONSTRAINT EVentDate_DF
2.2.a.2 Default Object
Default object l mt cch khc nh ngha mt gi tr mc nh cho mt ct. Cc
Default Object c gi l default c u tin trong phin bn 2000 ca SQL Server.
Cc Default khng l mt phn ca ton vn khai bo bi v chng khng l mt ca cu
trc bng; chng thc s l mt phn ca lc CSDL.
Qu trnh khai bo mt Default nh sau:
- nh ngha Default.
- Kt Default vo ct ca bng hoc kiu d liu.
- Nu mun dng Default th s g b khi ct hoc kiu d liu.
- Khng cn Default na th xo khi CSDL
nh ngha default
CREATE DEFAULT default AS constant_expression
Kt nh default vi ct:
sp_binddefault defaultname, tablename.columnname
Xa mt Default
DROP DEFAULT defaultname
Gi tr ca ct Identity s t ng tng.
Mt ct Identity c to khi bng c to bng lnh Create Table, hoc khi hiu
chnh ct trong bng bng lnh Alter table.
V d:
CREATE TABLE Table1
( ID INT IDENTITY,
FirstName VARCHAR(30) NOT NULL,
LastName VARCHAR(30)
NOT NULL
)
GO
---Chn d liu vo Table1, khng cn a gi tr
cho ct ID
INSERT Table1 (FirstName, LastName)
VALUES (Minh, Thu)
nh ngha mc bng
CREATE TABLE tablename (columname datatype [,...], [ CONSTRAINT
constraintname ] CHECK [NOT FOR REPLICATION] (logical_expression)
[ CONSTRAINT constraintname ]
CHECK [NOT FOR REPLICATION] (logical_expression)
V d:
ALTER TABLE Chucvu
ADD CONSTRAINT NV_HSPC_Chk CHECK
(HSPC>=0.1 AND HSPC<0.5)
2.4.a.2 RULE
Rule l mt tnh nng tng thch ngc nh ngha cc qui tc hp l m c
th kt buc vo cc ct ca bng hoc cc kiu d liu do ngi dng nh ngha.
Ging nh i tng Default, Rule c to trn chnh n trc khi c kt
buc vo i tng khc. to mt Rule, ta s dng lnh CREATE RULE.
Mt ct ch c th c mt Rule c kt buc, bn c th kt buc mt Rule vi
ct c nh ngha Check Constraint. C hai u c gi tr nhng s u tin
Check Constraint.
nh ngha Rule
CREATE RULE rulename AS condition_expression
Kt buc Rule vo mt ct
sp_bindrule rulename, tablename.columnname
nh ngha mc bng
CREATE TABLE tablename
(columname datatype [,...], [CONSTRAINT constraintname ]
PRIMARY KEY [ CLUSTERED | NONCLUSTERED ]
{ ( column [ ASC | DESC ] [ ,...n ] ) }
[ WITH FILLFACTOR = fillfactor ]
[ ON { filegroup | DEFAULT } ]
col2 VARCHAR(30)
)
-- Kim tra constraint
EXEC Sp_helpconstraint Table1
Cch 2: nh ngha mc bng
CREATE TABLE Table2
(col1 INT NOT NULL,
col2 VARCHAR(30)
CONSTRAINT Table2_PK PRIMARY KEY(col1)
)
EXEC Sp_helpconstraint Table1
nh ngha mc bng
ALTER TABLE tablename ADD[CONSTRAINT constraintname]
PRIMARY KEY { ( column [ ASC | DESC ] [ ,...n ] ) }
[ ON { filegroup | DEFAULT } ]
nh ngha mc bng
CREATE TABLE tablename
(columname datatype [,...], [ CONSTRAINT constraintname ]
UNIQUE [ CLUSTERED | NONCLUSTERED ]
{ ( column [ ASC | DESC ] [ ,...n ] ) }
[ ON { filegroup | DEFAULT } ] )
nh ngha mc bng
ALTER TABLE tablename
ADD [ CONSTRAINT constraintname ]
UNIQUE [ CLUSTERED | NONCLUSTERED ]
{ ( column [ ASC | DESC ] [ ,...n ] ) }
[ ON { filegroup | DEFAULT } ]
V d
:
ALTER TABLE Nhanvien
ADD Scmnd CHAR(15) CONSTRAINT NV_CMND_UNIQUE
UNIQUE
6.2.7 Foreign Key Constraint
Mt kha ngoi (Foreign key) l mt ct hay s kt hp ca nhiu ct c thit lp
v tun theo mt lin kt gia cc d liu trong hai bng. Mt lin kt c to ra
gia hai bng bng cch b sung mt hay nhiu ct c cha gi tr kha primay key
ca mt bng vo mt bng khc. Cc ct ny tr thnh kha ngoi ca bng th hai.
Ta c th quy nh kha ngoi bng cc n nh mt constraint Foreign key khi bn
to hay thay i mt bng.
Mt constraint Foreign key khng bt buc phi lin kt vi ch mt constraint
Foreign key trong mt bng khc, n cng c th c n nh tham chiu cc ct
ca mt constraint Foreign Unique trong mt bng khc.
Mc d mc ch chnh ca mt constraint Foreign key l iu khin d liu c th
c cha trong bng kha ngoi, nhng n cng iu khin cc thay i i vi
bng kha chnh. Chng hn, nu mt mu tin phng ban b xa ra khi bng
Phongban, v m phng ban c s dng cho cc nhn vin trong bng NhanVien,
tnh ton vn trong mi quan h gia hai bng ny s b ph v. Cc dng nhn vin
c m phng ban b xa s nm m ci trong bng NhanVien m khng c lin kt
vi d liu trong bng PhongBan.
Mt constraint Foreign key s ngn chn tnh trng m ci d liu. Constraint Foreign
key s bo m khng cho php bn xa d liu trong bn chnh nu cc d liu ny
c s lin kt vi d liu trong bng kha ngoi.
nh ngha mc bng
CREATE TABLE tablename
(columname datatype [,...],
[ CONSTRAINT constraintname ]
FOREIGN KEY [ ( column [ ,...n ] ) ]
V d:
CREATE TABLE PhongBan
( MaPb INT,
TenPb VARCHAR(30)
CONSTRAINT Pb_Pk (MaPb) PRIMARY KEY(MaPb)
)
GO
CREATE TABLE NhanVien
( MaNv INT,
TenNV VARCHAR(30),
MaPB int,
MaCv int
CONSTRAINT Nv_Pk PRIMARY KEY(MaNv)
CONSTRAINT Nv_Fk FOREIGN KEY (MaPb) REFERENCES
PhongBan(MaPb)
)
GO
-- Xem cc constraint
SP_HELPCONSTRAINT NHANVIEN
GO
Trong :
WITH CHECK: trc kho to rng buc, SQL Server s kim tra d liu hin c
c vi phm rng buc hay khng, nu c s khng to constraint.
WITH NOCHECK: To Constraint m khng cn kim tra d liu
hin c c vi phm rng buc hay khng
V d:
CREATE TABLE ChucVu
( MaCv INT PRIMARY KEY,
TenCv VARCHAR(30),
HSPC Real
)
GO
ALTER TABLE Nhanvien
ADD CONSTRAINT Nv_Cv_Pk FOREIGN KEY (Macv) REFERENCES
ChucVu(MaCv)
Lu :
ON DELETE CASCADE| NO ACTION
ON UPDATE CASCADE| NO ACTION
BI 7:
TRUY XUT C S D LIU CA SQL SERVER
Mc ch chnh ca CSDL trong SQL Server l lu tr d liu sao cho d liu d dng
c khai thc bi ngi s dng. Bn cng c th truy cp d liu thng qua mt ng
dng hoc cc trnh tin ch gi yu cu nhp d liu hoc hiu chnh d liu n SQL
Server. Nhm mc ch tm hiu ta dng SQL Query Analyzer nh l mt cng c chnh
truy xut v hiu chnh d liu trong mt CSDL ca SQL Server.
7.1
Cu lnh SELECT
Cu lnh Select c s dng mt cch thng xuyn v l cch c bn truy vn d
liu.
SELECT [ALL | DISTINCT] [TOP n [WITH TIES]]select_list
[ INTO new_table ]
FROM table_source
[ WHERE search_condition ]
[ GROUP BY group_by_expression ]
[ HAVING search_condition ]
[ ORDER BY order_expression [ ASC | DESC ] ]
*/
use northwind
SELECT
productID,orderid,
Total_quantity
FROM [Order details]
WHERE orderid<10250
GROUP BY OrderId,productId
ORDER BY OrderId, productID
SUM(quantity)
AS
Kt qu
Khng c With Rollup
ProductID
Orderid
Total_quantity
11
10248 12
42
10248 10
72
10248 5
14
10249 9
51
10249 40
C With Rollup
ProductID
Orderid
Total_quantity
NULL NULL 76
NULL 10248 27
11
10248 12
42
10248 10
72
10248 5
NULL 10249 49
14
10249
9
51
10249
40
GROUP BY OrderId,productId
WITH CUBE
ORDER BY OrderId, productID
ProductID
NULL 1
11
0
14
0
42
0
51
0
72
0
NULL 1
11
0
42
0
72
0
NULL 1
14
0
51
0
a
NULL
NULL
NULL
NULL
NULL
NULL
10248
10248
10248
10248
10249
10249
10249
Orderid
1
76
1
12
1
9
1
10
1
40
1
5
0
27
0
12
0
10
0
5
0
49
0
9
0
40
Total_quantity
Dng ton t COMPUTE v COMPUTE BY: Thng thng dng kim tra s
liu, dng km vi cc hm thng k SUM, AVG, MAX, MIN. COMPUTE BY
:c kt nhm
SELECT productID,orderid, quantity
FROM [Order Details]
ORDER BY productID,OrderId
COMPUTE SUM(quantity)
SELECT productID,orderid, quantity
FROM [Order Details]
ORDER BY productID,OrderId
COMPUTE SUM(quantity) BY productid
COMPUTE SUM(quantity)
7.2
S dng JOINS truy xut d liu
Bng JOIN, chng ta c th ly d liu t hai hoc nhiu bng da trn mi quan h gia
cc bng. Tuy nhin nu ta khng thch dng Join ly d liu th bn cng c th vit
cc cu truy vn bng dng truy vn con (Subqueries). Dng Joins th tc thc hin
ca cu truy nhanh hn SubQueries nhng li kh hiu hn. Trong mt truy vn tham
chiu n nhiu table, th tt c cc ct phi c ch r mt cc tng minh l ct ly
t table no.
Thng thng th iu kin kt ni l dng php so snh bng, nhng trong SQL Server
ta c th nh ngha mi quan h gia trn cc ton t khc nh <>, >, >=, <, <=
Cc ct c dng kt ni khng nht thit phi cng tn hay cng kiu d liu. Nu
kiu d liu khc nhau th c th dng cc hm chuyn i kiu d liu.
Gm hai loi Joins chnh: INNER JOINS v OUTER JOINS. Tuynhin ta cn c th to
mt dng Join khc nh CROSS-JOINS v SELF-JOINS.
Inner Joins: Lin kt Inner Joins ch tr v nhng mu tin u hin hu c hai bng
quan h v phi tha mn iu kin kt.
V d:
SELECT
Em.EmployeeID,LastName+
'
'+FirstName
AS
EmployeeName,
COUNT(OrderID) AS TotalOrders
FROM Employees AS Em INNER JOIN Orders AS O ON
Em.EmployeeID=O.EmployeeID
WHERE MONTH(OrderDate)=8 AND YEAR(Orderdate)=1996
GROUP BY Em.EmployeeID,LastName+ ' '+FirstName
ORDER BY Em.EmployeeID
iu kin kt nm mnh Where
SELECT P.ProductID, S.SupplierID, S.CompanyName
FROM Suppliers AS S, Products AS P
WHERE S.SupplierID = P.SupplierID
AND P.UnitPrice > $10
AND S.CompanyName LIKE N'F%'
iu kin kt nm mnh From
SELECT P.ProductID, S.SupplierID, S.CompanyName
FROM Suppliers AS S JOIN Products AS P
ON (S.SupplierID = P.SupplierID)
WHERE P.UnitPrice > $10
AND S.CompanyName LIKE N'F%'
Outer Joins: tr v tt c nhng mu tin nm t nht mt bng no trong cc bng
tham gia kt ni v cng phi tho iu kin kt. Outer Joins cung cp 3 kiu outer Join:
Left, Right, v Full. Tr v tt c cc dng t bng bn tri m c tham chiu t Left
Outer Joins. Tr v tt c cc dng t bng bn phi m c tham chiu t Right Outer
Joins. Tr v tt c cc dng t c 2 bng m c tham chiu t Full Outer Joins.
V d : Dng cu truy vn sau v ln lt thay i kiu Join (Inner, Left, Right, Full), cho
thi hnh v cho nhn xt kt qu ca cu truy vn. T rt ra kt lun
SELECT O.OrderID, O.CustomerID, c.ContactName, C.City
FROM Orders
WHERE EmployeeID
IN (
SELECT EmployeeId
FROM Employees
WHERE City='Seattle'
)
ORDER BY OrderID
Dng cc ton t so snh trong Subquery: Cc ton t bao gm =, >, >=, <, <=, <>,
>=ALL, > ANY, .
Lc ra nhng OrderId, ProductId, UnitPrice m c Unitprice ln hn nh
Unitprice c bn bi EmployeeID=5
SELECT OrderId, [Order Details].ProductId, [Order
Details].UnitPrice
FROM [Order Details]
WHERE Unitprice > ALL ( SELECT [Order
Details].UnitPrice
FROM [Order Details] JOIN Orders
ON [Order Details].OrderId=
Orders.OrderId
where Orders.EmployeeID=5
)
ORDER BY [Order Details].UnitPrice,OrderID)
ORDER BY UnitPrice.OrderID
Dng t kha EXISTS, NO EXISTS trong subquery:
Lc ra nhng OrderId ng vi cc CustomerId m nhng Customer ny London
City.
SELECT OrderId, CustomerId
FROM Orders
WHERE EXISTS ( SELECT * FROM Customers
WHERE
Customers.CustomerId=Orders.CustomerId
AND City='LonDon'
)
ORDER BY OrderID
7.4
Cu lnh Insert c dng thm mt hoc nhiu dng d liu vo bng hoc mt
View. Mt s lu :
C gng chn d liu ng kiu d liu ca ct, trnh a gi tr Null vo ct
khng chp nhn gi tr Null.
Tun th ng cc ton vn d liu, by li.
Ch nh mt danh sch cc gi tr (values) ng vi danh sch cc ct, nu khng
ch nh th insert s theo th t cu trc ca table.
Ct c thuc tnh Identity th khng cn ch nh gi tr. Nu ct c nh ngha
Default v chng ta chp nhn gi tr default th ta c th b qua vic ch nh gi
tr ca ct ny.
Khi chn d liu th ti mt thi im cng nh mt cu lnh ch c th chn vo
mt bng duy nht.
4.1.a.1 Chn mu tin t danh sch cc gi tr c ch nh (Insert Values)
INSERT <TableName> [(field1, field2, )] VALUES (Value1, Value2,)
V d:
USE Northwind
UPDATE dbo.Products
SET UnitPrice=UnitPrice*1.1
GO
UPDATE [Order Details]
SET Discount=Discount+0.05
WHERE Discount<>0 AND ProductId=2
GO
UPDATE [Order Details]
SET UnitPrice=
(SELECT UnitPrice+ UnitPrice*0.2
FROM Products
WHERE = ProductId=2
)
WHERE ProductId=2
7.4.3 Xa d liu trong c s d liu.
4.3.a.1 Dng cu lnh DELETE.
Xa mt hoc nhiu dng trong mt bng hay mt truy vn.
DELETE table_or_view FROM table_sources WHERE search_condition
DELETE Orders
FROM Orders
WHERE EmployeeID IN ( SELECT EmployeeId
FROM Employees
WHERE City='Seattle'
)
4.3.a.2 Dng APIs v cursors xo d liu (trnh by sau).
4.3.a.3 Dng cu lnh TRUNCATE TABLE.
Khng bt cc by li (trigger)
C php:
TRUNCATE TABLE Tn Table
V d:
TRUNCATE TABLE NewProducts
BI 8:
KHUNG NHN - VIEW
8.1
Gii thiu v View.
View l mt bng o m ni dung c nh ngha bi mt truy vn (cu Select). Ging
nh mt bng thc, mt view bao gm mt tp cc ct v cc dng d liu. Tuy nhin,
mt view khng l ni lu tr d liu. Cc dng v ct ca d liu c tham chiu t
cc bng trong mt truy vn m nh ngha View v l kt qu ng khi View c tham
chiu.
Dng view :
- Ch cho User xem nhng g cn cho xem.
- n gin ha vic truy cp d liu.
- Dng la chn nhng d liu cn thit ng vi mi user.
- Dng View Import, Export.
- Kt hp cc d liu khc nhau.
Hn ch khi nh ngha View:
- Khng bao gm cc mnh COMPUTER hoc COMPUTER BY.
- Khng bao gm t kha INTO.
- Ch c dng ORDER BY ch khi t kha TOP c dng.
- Khng th tham chiu qu 1024 ct.
- Khng th kt hp vi cu lnh T-SQL khc trong mt cng mt b lnh.
- Khng th nh ngha ch mc full text trn View.
Partitioned Views: Mt partition View kt ni theo chiu dc cc d liu phn tn t mt
tp cc bng mt hay nhiu server, cc d liu s hin ln nh th l chng c ly t
mt bng. C hai loi: Local partition view l view c tham chiu cc table v cc view
khc nm trong cng mt serever. Distributed partition view c t nht mt bng nm
server khc.
8.2
Gii thch
view_name: l tn ca View. Tn View phi tun th cc qui tc nh danh.
Column: Tn c dng cho ct trong view. Tn ct ch dng trong trng hp
ct c pht sinh t mt biu thc, hm, mt hng, cc ct trong cc table trng
tn. Tuy nhin tn ct cng c th c n nh trong cu lnh Select. Khng ch
nh tn ct chnh l tn cc ct trong cu lnh select
select_statement: L cu lnh select nh ngha View. N c th tham chiu
mt hoc nhiu bng hoc cc View khc vi mt cu Select phc tp.
To Partition view
- Cc bng tham gia trong Partition view phi c cu trc ging nhau.
- C mt ct c check contraint, vi phm vi ca Check constraint mi bng l
khc nhau.
- To view bng cch kt cc d liu bng t kha UNION ALL
V d: Ta c 3 table tng ng dng lu tr cc khch hng 3 min Bc, Trung,
Nam c cu trc to nh sau:
Create Table KH_BAC
BI 9:
CHUYN I D LIU
9.1
Khi nim chuyn i v bin i d liu.
Sau khi bn to CSDL ca bn, bn cn nhp cc mu d liu. Thng thng, bn thng
a d liu vo (importing data) hoc hoc chuyn d liu (transfering) c sn t mt
hoc nhiu ngun d liu khc n hoc i t SQL Server 2000. Trong bi ny chng ta
nghin cu import d liu t ngun d liu khc, ng thi cng gii thiu cc cng c
(Tool) chnh s dng importing data v bin i d liu (transforming data). Cc cng
c l DTS, Bcp, v lnh BULK INSERT.
9.1.1 Import/Export d liu.
Import d liu l qu trnh a d liu c sn t ngun d liu khc hoc chnh SQL
Server vo trong SQL Server. Export l qu trnh ngc li vi import, a d liu ca
SQL Server ra ngoi ngun d liu bn ngoi. Ngun d liu c th l mt CSDL hng
th ba, bng tnh, tp tin vn bn (Text). Tuy nhin trc khi bn import/export d liu
ny vo, bn phi thc hin cc tc v chun b c lng d liu bn ngoi v quyt
nh cc bc s phi thc hin trong tin trnh import/export. Cc bc chun b ny
cng s gip bn chn cng c thch hp dng
- Quyt nh tnh nht qun (consistency) ca d liu hin c trong ngun d
liu bn ngoi/bn trong.
- Quyt nh nhng ct c a vo/a ra.
- Quyt nh dng d liu (Format) ca d liu c sn nn hiu chnh n nht
qun trong CSDL ch n (V d: Cn i dng ngy hoc chuyn gi tr s sang
gi tr chui nh 1, 2, 3 chuyn thnh ngho, trung bnh, kh).
- Quyt nh ct d liu c sn nn hiu chnh.
- Quyt nh import/export d liu s l mt tc v thc hin mt ln hay mt tc
v thc hin nh k.
- Quyt nh cc truy xut d liu c sn l truy xut trc tip hay gin tip.
- .
9.1.2 Bin i d liu (Data Transformations)
Sau khi bn c lng d liu trong ngun d liu bn ngoi/bn trong, bn cn quyt
nh cch tin hnh. i khi, nhng thay i d liu c th thc hin ngay trong
ngun d liu bn ngoi nhng thng thng nhng thay i ny khng c th thc
hin trong ngun d liu bn ngoi m khng hoc dng ng dng hin c (v d:
thm ct hoc thay i nh dng ct) hoc tiu tn qu nhiu thi gian (v d: C
gng thc p nht qun d liu ti ni s nht qun cha c. Nhng thay i ny c
th hoc l sau khi d liu c import vo SQL Server, s dng cc bng tm v s
dng cu lnh Transact-SQL lc v tinh ch d liu, hoc c th c thc hin
trong tin trnh import vo chnh bng. Nhng thay i n d liu to trong tin trnh
import v export c ni n nh cc bin i d liu. Mt bin i xy ra khi mt
hoc nhiu thao tc hoc chc nng c p dng tng phn ti d liu trc khi d
liu c chuyn n n ch n. D liu ti ngun th khng thay i. Bin i d
liu thc hin mt cch d dng thc thi tinh ch d liu, chuyn i v xc nhn
tnh hp l d liu phc tp trong sut tin trnh import v export.
9.1.3 Cc cng c chuyn i d liu (Data transfer tools)
SQL Server 2000 cung cp s cng c dnh cho vic import v export d liu. Cc
cng c ny c nhng kh nng khc nhau trch lc tp cc d liu t ngun d
liu c sn v chuyn i d liu. Bng di y m t ngn gn cc cng c chnh
v kh nng ca n.
Cc cng c chuyn i d liu v chc nng ca chng
Cng c
M t
DTS
Bcp
Tc v
Cc tc v m
sao chp v qun Bulk
l d liu v bin Task
i d liu
M t
Dynamic
Properties
task
Loi
Tc v
mt hng s.
Dng chy DTS package khc nh l mt phn ca
Execute
workflow. Khng dng tc v ny mt cch quy bi
Package task v n c th sinh ra trn stack, m u ny c th dn
n MMC b shut down.
Dng chy mt chng trnh hoc tp tin b lnh c
kh nng thc thi. Tc v ny c th c dng m
Execute
bt k application chun no , nh l Microsoft
Process task Excel, nhng n c s dng chnh l chy cc tp
tin b lnh hoc cc ng dng thng mi m n lm
vic vi mt data source.
Dng Download d liu t mt t mt server t xa
bi Protocol task hoc mt Internet location s dng
File Transfer
FTP. FTP task v Ftp.exe dng cng mt phng php
kt ni.
Send
task
9.3
M mi mt package.
Khai bo cc connection.
Hnh 28: Kt ni n SQL Server bng Microsoft OLE DB Provider for SQL Server
Bc 2: Chn la v cu hnh mt data destination.
Tng t nh cu hnh mt Data Source
danh sch, thc thi cc cp nht song song trn h thng nhiu CSDL, xc nhn tnh hp
l nhp vo trc khi ti d liu, gi cc th tc trong s tr li n iu kin nhp d
liu v s dng cc gi tr bin ton cc nh l cc tham s ca truy vn.
Trang Options: bn nh ngha mt s thuc tnh thm vo cho transform. Bn c th
nh ngha mt hoc nhiu tp tin ngoi l (exception file) dng ghi nhn li cc
exception record trong sut qu trnh thc thi package. Tp tin ny c th trn a cc
b hoc mng. Bn c th tch cc li ca source v destination trong cc tp tin ring l.
Bn cng c th nh s li ti a cho php trc khi vic thc thi package b dng. Cui
cng, bn cng c th xc nh cc thuc tnh thc thi c bit khi destination connection
l Microsoft OLE DB Provider for SQL Server. Cc thuc tnh ny bao gm vic ch nh
thc thi bulk-copy vi tc cao, kim tra rng buc trong sut qu trnh thc thi
package, kiu kha, kch c ca khi, v nhn dng cc thuc tnh chn.
bcp
Switch
ngha
Native
-n
DataFiletype=native
Character
-c
DataFiletype=char
Unicode
character
-w
DataFiletype=widechar
Unicode Native
-N
BI 10:
C BN V LP TRNH BNG TRANSACT- SQL
10.1 Khi nim c bn.
10.1.1 nh danh -IDENTIFIERS.
Tn ca tt c cc i tng u c gi l nh danh. Mi th trong SQL Server u c
mt nh danh, trong bao gm Servers, Databases, v cc i tng (Object) ca
CSDL nh bng, Views, ct, ch mc, rng buc,. C nhng i tng bt buc phi
qui nh mt nh danh, ngc li c mt s i tng khng cn nh danh (SQL Server
s t ng nh danh)
V d:
CREATE TABLE Table1
(Keycol INT PRIMARY KEY, Description NVARCHAR(30))
Qui tc nh danh:
- Ti a 128 k t.
- Bt u l mt k t thng thng A -> Z
- Bt u l mt k hiu (@, #) s c mt ngha khc.
- Nhng nh danh no c khong trng gia th phi kp trong du [ ] hoc
Gn gi tr cho bin:
Nu bin va khai bo xong th bin mc nhin c gn gi tr l NULL.
gn bin ta dng lnh SET hoc dng cu lnh SELECT
SET @var_name = expression
SELECT { @var_name = expression } [,...n ]
V d 1:
USE Northwind
DECLARE @EmpIDVar INT
SET @EmpIDVar=3
SELECT * FROM [Orders]
WHERE
V d 2:
DECLARE MyVariable INT
SET @MyVariable = 1
GO im kt thc mt l batch.
-- @MyVariable vt qu phm vi v n ht
tn ti
-- Cu lnh SELECT sau s nhn li sai c php bi
v n khng tham chiu c bin @MyVariable.
SELECT * FROM [Orders]
WHERE
V d 3:
USE Northwind
GO
-- Khai bo 2 bin.
DECLARE @FirstNameVariable NVARCHAR(20),
@RegionVariable NVARCHAR(30)
-- Gn gi tr cho 2 bin.
SET @FirstNameVariable = N'Anne'
SET @RegionVariable = N'WA'
-- Dng chng trong mnh WHERE ca lnh SELECT.
SELECT LastName, FirstName, Title
FROM Employees
WHERE FirstName = @FirstNameVariable
OR Region = @RegionVariable
GO
V d 4:
USE Northwind
GO
-- Khai bo 1 bin
DECLARE @EmpIDVariable INT
-- Gn gi tr bin bng cu lnh Select
SELECT @EmpIDVariable = MAX(EmployeeID)
FROM Employees
GO
-- Nu cu Select tr v l mt tp gi tr th bin s nhn gi tr sau cng.
V d 5:
DECLARE @ProdIDVariable int
SELECT @ProdIDVariable = ProductID
FROM Northwind..Products
V d 6:
USE Northwind
GO
DECLARE @EmpIDVariable INT
SELECT @EmpIDVariable = EmployeeID
FROM Employees
ORDER BY EmployeeID DESC
SELECT @EmpIDVariable
GO
Global variable trong SQL Server 2000 gi l System Function: T SQL Server 7.0
bin Global c nh ngha nh l hm h thng. Mi kt ni s to ra mt session, SQL
@@TRANCOUNT
@@ROWCOUNT
@@IDENTITY
@@FETCH_STATUS
Tr v trng thi ca lnh Fetch ca bin con tr c thnh cng hay khng
(0: Thnh cng, -1: b li hoc vt qu phm vi; -2: Tht bi)
Mt s hm thng dng:
GetDate()
Month(Date); Year(Date)
LOWER (character_expression)
UPPER (character_expression)
REPLACE ('string_expression1',
'string_expression2', 'string_expression3')
DIFFERENCE (character_expression,
character_expression)
V d:
USE pubs
SELECT 'The price is ' + CAST(price AS
varchar(12))
FROM titles
WHERE price > 10.00
GO
-- Use CONVERT.
USE pubs
SELECT SUBSTRING(title, 1, 30) AS Title, ytd_sales
FROM titles
WHERE CONVERT(char(20), ytd_sales) LIKE '3%'
GO
10.3
Cu trc iu khin.
T-SQL cung cp mt s cu trc iu kin c bn bn c th thc thi mt khi
lnh da trn kt qu ca mt php so snh. N cng tng t nh mt s ngn
ng lp trnh khc.
V d:
PRINT Hello!
PRINT NCho bn
PRINT @@VERSION
10.3.3 Cu trc iu khin IF ELSE
L mt cu trc iu kin, cho php thc thi mt hoc nhiu pht biu ty thuc vo
mt iu kin no . cu lnh thc thi mt khi cc cu lnh theo mt iu kin
no .
C php:
IF condition
{statements}
[ ELSE [Condition 1]
{statements}]
ELSE
BEGIN
PRINT ' Khng c khch hng n t Germany
trong c s d liu.'
END
V d 2:
USE pubs
GO
DECLARE @msg varchar(255)
IF ( SELECT COUNT(price) FROM titles
WHERE title_id LIKE 'TC%' AND price BETWEEN 10 AND
20) > 0
BEGIN
SET NOCOUNT ON
SET @msg = 'C vi quyn sch c gi t $10 n
$20. Cc sch l:'
PRINT @msg
SELECT title FROM titles
WHERE title_id LIKE 'TC%' AND price BETWEEN 10
AND 20
END
ELSE
BEGIN
SET NOCOUNT ON
SET @msg = 'Khng c quyn sch no c gi t
$10 n $20. Bn nn tham kho cc quyn sch c
gi nh hn $10 sau y.'
PRINT @msg
SELECT title FROM titles
WHERE title_id LIKE 'TC%' AND price < 10
END
V d 3:
USE pubs
IF (SELECT AVG(price) FROM titles WHERE type =
'mod_cook') < $15
BEGIN
PRINT 'The following titles are excellent
mod_cook books:'
PRINT ' '
SELECT SUBSTRING(title, 1, 35) AS Title
FROM titles WHERE type = 'mod_cook'
END
ELSE
IF (SELECT AVG(price)
FROM titles WHERE type = 'mod_cook')>
$15
BEGIN
PRINT 'The following titles are expensive
mod_cook books:'
PRINT ' '
SELECT SUBSTRING(title, 1, 35) AS Title
FROM titles WHERE type = 'mod_cook'
END
10.3.4 Biu thc CASE.
Biu thc CASE l mt biu thc iu kin c p dng bn trong mt pht biu
khc. Case tr v cc gi tr khc nhau tu thuc vo iu kin hoc mt iu khin
no .
Dng 1:
CASE input_expression
WHEN when_expression THEN result_expression
[ ...n ]
[
ELSE else_result_expression
]
END
Dng 2:
CASE
WHEN Boolean_expression THEN result_expression
[ ...n ]
[
ELSE else_result_expression
]
END
PRINT @ketqua
V d 2: Da vo price ca cc title cho bit price nh th no?
Use Pub
SELECT title, price,
'classification'=CASE
WHEN price < 10.00 THEN 'Low Priced'
WHEN price BETWEEN 10.00 AND 20.00 THEN 'Moderately
Priced'
WHEN price > 20.00 THEN 'Expensive'
ELSE 'Unknown'
END
FROM titles
V d 3: Cho bit ngha ca on lnh sau:
USE NorthWind
SELECT ProductID, Quantity, UnitPrice, [discount%]=
CASE
WHEN Quantity <=5 THEN 0.05
WHEN Quantity BETWEEN 6 and 10 THEN 0.07
WHEN Quantity BETWEEN 11 and 20 THEN 0.09
ELSE
0.1
END
FROM [Order Details]
ORDER BY Quantity, ProductId
V d 4: ngha ca on lnh sau?
SELECT title, pub_id,
CASE WHEN price IS NULL THEN (SELECT MIN(price)
FROM titles)
ELSE price
END
FROM titles
10.3.5 Cu trc vng lp WHILE
L pht biu iu khin vng lp. Vng lp s thc hin cho n khi biu thc iu
kin (Boolean_expression) trong While mang gi tr False. Biu thc iu kin c th
l mt cu SELECT.
WHILE Boolean_expression
{ sql_statement | statement_block }
[ BREAK ]
{ sql_statement | statement_block }
[ CONTINUE ]
Pht sinh li ca ngi dng. Ngi dng c th pht sinh cc li t bng sysmessage
hoc xy dng li ng ty thng tin ca ngi dng. Sau khi mt li c nh
ngha th n c gi n ngi dng nh l mt li h thng.
RAISERROR ({ msg_id | msg_str } {, severity, state }
[, argument [,...n ] ])
[ WITH option [,...n ] ]
M t
d hoc I
Octal khng du
Con tr
Chui
So nguyn khng du
x or X
Hexadecimal khng du
Xa mt li ca ngi dng
sp_dropmessage Msg-ID
Gii thch
msg_id: l m s ca li mi, l mt s int, khng c trng cc m c sn,
bt u l 50001.
severity: l mc li ca li, l mt s smallint. Mc hp l l t 1 n 25. Ch c
ngi qun tr CSDL mi c th pht sinh thm mt thng bo li mi t 19 n
25.
'msg': l mt chui thng bo li, ti a 255 k t.
'language': l ngn ng ca thng bo li, khng ch nh t mc nh l ngn
ng ca phin kt ni.
'with_log': thng bo li c c gi nhn vo nht k ca ng dng khi n xy ra
hay khng, mc nh l FALSE. Nu l true, th li lun lun c ghi vo nht
k ng dng. Ch c nhng thnh vin thuc sysadmin server role mi c th s
dng tham s ny.
'replace': nu c ch nh chui REPLACE, th thng bo li tn ti c
ghi bi chui thng bo mi v mc li mi. Tham s ny phi ch nh nu
msg_id c.
Lu : nu tr v 0 tc l thm vo thnh cng, 1 tht bi.
BI 11:
PROCEDURES, FUNCTIONS
11.1 STORED PROCEDURES.
11.1.1 Gii thiu Stored proccedures.
Stored procedure (th tc) l mt tp cc lnh T-SQL v mt s cu trc iu kin, c
lu vi mt tn v c thc thi nh l mt n v cng vic n (single unit of work).
Trong cc ngn ng khc nh C, pascal, Basic, mt th tc thng thng l mt tp cc
cu lnh vi mc ch hon tt mt mc ch no v c th c gi t mt chng
trnh nh l mt lnh n.
n gin hn
EXECUTE ProductName [ ; number ][<parameter>[, n][ OUTPUT ]]
V d:
EXECUTE
dbo.overdueOrders
Thc thi sp ngay khi SQL Server khi ng: Store procedure phi nm CSDL
Master.
Cch 1: Dng th tc Sp_procoption gn thuc tnh t ng thc thi
USE Master
EXECute Sp_procoption [ @ProcName = ] 'procedure'
, [ @OptionName = ] Startup
, [ @OptionValue = ] True
V d:
EXECute Sp_procoption dbo.overdueOrders Startup, True
Cch 2: Dng Enterprice Manager
R-Click ti tn th tc Properties Execute whenever SQL Server Start
Hiu chnh mt stored procedures
USE Northwind
GO
ALTER PROC dbo.overdueOrders
AS
SELECT CONVERT(CHAR(8), RequiredDate,1)
RequiredDate, CONVERT(CHAR(8), orderDate,1)
orderDate, orderId, Customerid, EmployeeID
FROM dbo.orders
WHERE RequiredDate<GETDATE()and shippeddate is
null
ORDER BY RequiredDate
Xa mt stored procedures
DROP ProcedureName
AS
SELECT * FROM authors
SET @authorcount=@@rowcount
SELECT * FROM Titles
SET @titlecount=@@rowcount
---- Thc thi th tc Count_tables
DECLARE @a_count INT, @t_count INT
EXECUTE count_tables @a_count OUTPUT, @t_count OUTPUT
SELECT authorcount=@a_count, titlecount=@t_count
V d 5: Vit mt th tc tnh giai tha ca mt s nm trong khong 0 n 12
Dng T-SQL tnh giai tha bng quy, ca cc s t 0 n 12. Cc tham s c
gi tr ln hn 12 s khng cho php bi v kt qu tr v s vt qu phm vi ca
d liu kiu int
CREATE PROC Giaithua @so1 int
AS
DECLARE @So1Giam1 int, @Ketqua int
IF (@so1 < 0 OR @so1 > 12)
BEGIN
-- Gi tr tham s khng hp l.
RETURN -1
END
IF (@so1=0 or @so1=1)
SELECT @Ketqua=1
ELSE
BEGIN
SET @ So1Giam1=@So1 - 1
EXEC @Ketqua=Giaithua @
li chnh n
IF (@Ketqua= -1)
BEGIN
RETURN -1
END
So1Giam1
qui
gi
END
RETURN(@Ketqua)
Thc thi: Tnh giai tha cho 3
DECLARE @kq INT
EXEC @kq = giaithua 3
PRINT @kq
Khi th tc Giathua tn ti th chng ta c th dng b lnh sau hin th giai
tha ca tt c cc s t 0 n 12:
DECLARE @Ketqua int, @n int
SET @Ketqua =0
SET @n =0
WHILE (@n <= 12) BEGIN
EXEC @Ketqua = Giaithua @n
IF (@Ketqua = -1) BEGIN
RAISERROR('Error executing factorial procedure.
', 16, -1)
RETURN
END
PRINT CONVERT(varchar, @n) + '! = ' + CONVERT(varchar(5
0), @Ketqua)
SET @n=@n + 1
END
11.2 FUNCTIONS.
Hm thc s tng t nh Stored procedure ca SQl Server, ni dung bao gm cc pht
biu T-SQL kt hp to thnh hm, c th gi thc thi cc hm nh l mt n v c lp.
Hm c dng trong:
V d:
CREATE FUNCTION TotalAmount
(@UnitPrice money, @Quantity smallint, @Discount
real)
RETURNS money
AS
BEGIN
RETURN (@UnitPrice*@Quantity)*(1-@discount)
END
S dng:
SELECT ProductID, Total=dbo.TotalAmount(UnitPrice,
Quantity, Discount)
FROM [Order details]
WHERE OrderID=10250
11.2.2 Table-valued Functons
c chia thnh hai loi nh: inline table-value v multistatement table-valued.
V d 1:
CREATE FUNCTION SalesByCategory(@Categoryid Int)
RETURNS TABLE
AS
RETURN
(SELECT c.CategoryName, P. ProductName,
SUM(Quantity) AS TotalQty
FROM Categories c
INNER JOIN Products p ON c.CategoryID= p.
CategoryID
INNER JOIN [Order Details] od ON p.ProductID =
od.ProductID
WHERE c.CategoryID= @Categoryid
GROUP BY c. CategoryName,p.ProductName)
Hm Multistatement Table-valuesd l dng phc tp nht. Loi hm ny xy
dng tp kt qu t mt hay nhiu cu lnh SELECT.
CREATE FUNCTION [owner_name.]function_name
([{@parameter_name [AS] data_type [=default]} [ ,n ]])
RETURNS @return_variable
TABLE ({column_definition | table_constraint} [ ,n ])
[WITH { ENCRYPTION | SCHEMABINDING } [ [,] ...n] ]
[AS]
BEGIN
function_body
RETURN
END
V d:
CREATE FUNCTION Contacts(@suppliers bit=0)
BI 12:
TRANSACTIONS LOCK
SQL Server dng cc transaction v cc lock m bo tnh vng chc v ton vn d
liu, khng chp nhn cc li xy ra trong h thng.
12.1 TRANSACTIONS
Transaction: Mt transactin c th c nh ngha nh l mt chui cc thao tc thc
thi cng vi nhau nh l mt khi thng nht n ca cng vic. Mt khi thng nht ca
cng vic phi c bn c im c gi l ACID (Atomicity, Consistency, Isolation, v
Durability).
Hon Tt Transaction
COMMIT [ TRAN [ SACTION ] [ transaction_name | @tran_name_variable ] ]
Lu v tr Transaction
SAVE TRAN [ SACTION ] { savepoint_name | @savepoint_variable }
Hy mt Transaction
ROLLBACK [ TRAN [ SACTION ]
[ transaction_name | @tran_name_variable
| savepoint_name | @savepoint_variable ] ]
Transaction log l mt tranction dng lock ngn chn ngi dng hiu chnh d liu
nh hng t cc transaction cha hon tt.
Cng dng transaction log
p nh nh k.
Transaction RecoveryAction Required
None
Transaction 1
Roll Forward
Transaction 2
Transaction 3
Transaction 4
Check Point
Transaction
System
failure 5
Roll back
Roll Forward
Roll back
12.2 LOCK
Lock: l c cu ngn chn cc xung t do cc user khng th c hoc hiu chnh cc
d liu m cc d liu ny hin ang trong mt tin trnh x l khc. Tuy nhin, bn vn
c th thao tc trn nhng i tng cn ph thuc vo chuyn tc m user khc ang
thc hin. Khi h thng s kim sot tin trnh ca bn c tng thch vi qu trnh
trc hay khng.
Cc vn ng thi (Concurrency problem)
Lost Updates (cp nht mt d liu): Lost updates xy ra khi 2 hoc nhiu
transaction chn cng mt d liu v sau cp nht dng da trn gi tr c. Mi
transaction khng bit nhng transaction khc. Thao tc cp nht cui cng ghi ln
nhng thao tc cp nht khc m kt qu dn n mt d liu.
Share locks: c dng cho nhng thao tc m khng lm thay i hay cp nht
d liu (thao tc ch c), nh l mt cu select
Intent locks: Dng thit lp mt lock k tha. Kiu intent lock l : Intent
shared (IS), Intent exclusive (IX), v share with intent exclusive (SIX)
Schema locks: c dng khi thao tc thy thuc vo gin ca table l ang
thc thi. Kiu schema locks l schema modification (Sch-M), schema stability
(Sch-S)
Bulk Update (BU) locks: Cho php chia s cho Bulk-copy thi hnh.
Deadlock
Deadlock xy ra khi c mt s ph thuc chu trnh gia hai hay nhiu lung cho mt
tp hp ti nguyn nguyn no . SQL Server s t gii quyt trng hp deadlock
BI 13:
S DNG CURSORS TRUY XUT D LIU
13.1 Khi nim
Cursor l mt i tng ca CSDL m n h tr cho php truy xut v thao tc d liu
trong mt tp kt qu (result set). Sau khi cursor c nh v trn mt dng, cc hot
ng c th thc hin trn dng hoc khi cc dng bt u t v tr .
Dng Cursor :
M cursor.
Client Cursors: SQL server ODBC driver, DB-Library DLL, v ADO API DLL
gip thi hnh cursor client mt cch ni ti. cursor client c thi hnh bng cch
nm gi tp kt qu d liu ca clients. Mi ln Application ca client gi hm
cursor API, th SQL server OLE DB provider, ODBC driver, hoc DB-Library
DLL thc thi tnh ton ngay trn tp kt qu d liu c gi trn client. Ta ch
dng client cursor lm gim bt s gii hn m server consor khng c cung
cp cc cu lnh T-SQL. Nu con tr static hoc Scroll th ta c th dng client
cursor.
Loi cursor
Static
Thao tc Insert, Update, Delete u khng c tc dng khi dng static cursor
Keyset-driven:
Cho php hiu chnh (update, delete) d liu trn ct khng l keyset (bi ch
cursor hoc t user khc) khi user duyt thng qua con tr.
S Update hu hiu ngay tc thi nu chng c update thng qua qua con tr
ng vi ti mu tin hin thi, cn nu update bn ngoi con tr th n khng hu
hiu cho n khi n hon tt.
Fast Forward only: Tng t nh Dynamic cursor nhng n ch c th duyt con tr
tho mt chiiu t First n Last
Cusrsor type
Membership Order
Values
Forward-only
Dynamic
Dynamic
Dynamic
Static
Fixed
Fixed
Fixed
Dynamic
Dynamic
Dynamic
Dynamic
Keyset-driven
Fixed
Fixed
Dynamic
UPDATE [OF column_name [,...n]]: Quy nh ct cho php c update khi dng
cursor. Nu OF column_name [,...n] c ch nh r rng th ch c cc ct c
ch nh mi c cho php hiu chnh, nu khng c column list, all columns c
th update.
M cursor
M cursor trc khi dng (Cursor phi c khai bo ri)
OPEN {cursor_name }
Cp nht d liu thng qua cursor: thc cht l d liu c hiu chnh
trc tip vo trong bng
Cp nht gi tr cho ct
ng Cursor
Kt thc hnh ng ca cursor cho ln m (open), n vn hin hu cho n khi
gp mt lnh Open khc hoc gp lnh Close cursor.
CLOSE cursor_name
13.3 V d.
Gi s ngi qun l cn mt bng bo co lch s khch hng theo dng sau:
Customer:ALFKI - Alfreds Futterkiste
Order:10643 (Aug 25 1997)
Order:10692 (Oct 3 1999)
Order:10702 (Oct 13 1999)
Customer:ANATR - Ana Trujillo Emparedados y helados
Order:10625 (Aug 8 1997)
Order:10759 (Nov 28 1999)
Customer:ANTON - Antonio Moreno Taquera
Order:10507 (Apr 15 1997)
Order:10535 (May 13 1999)
Order:10573 (Jun 19 1999)
Order:10677 (Sep 22 1999)
Order:10682 (Sep 25 1999)
on Batch thc hin bo co nh sau:
--- Khai bo contr
DECLARE rpt CURSOR FOR
SELECT c.CustomerID, c.CompanyName, o.OrderID,
o.OrderDate
FROM Customers c, Orders o
WHERE c.CustomerID = o.CustomerID AND c.CustomerID LIKE
'A%' AND DatePart( year, o.OrderDate) = 1997
DECLARE @cid char( 8), @cname char( 40),
@ordid char( 8), @orddt datetime, @old char( 8)
--- M contr
OPEN rpt
BI 14:
BY LI - TRIGGER
14.1 Gii thiu v trigger
Cht lng ca mt CSDL c nh gi mt phn bi tnh nht qun v chnh xc
ca d liu trong CSDL. m bo tnh ton vn d liu ta c nhiu phng php,
trigger l mt phng php hu hiu.
Trigger cng c th ni rng cc tnh ton vn kim sot logic ca SQL Server.
Trigger t ng thc thi, khng th gi mt trigger thi hnh mt cch trc tip.
Dng trigger khi:
Kim sot d liu hin ti khi c thay i n gi tr trong mu tin trong bng.
Khi insert hoc update d liu ca bng bt trigger, trigger s lu tr dng d liu
mi hoc dng d liu hiu chnh vo mt bng c tn l Inserted trong b
nh cash, khi xa d liu ca bng bt trigger ln, trigger s lu tr dng d liu
b xa vo bng c tn l Deleted trong b nh cash. Cc bng tn ti trong b
nh v c truy vn bi cc lnh T-SQL trong cc trigger. Bn c th s dng
thng tin trong bng inserted v Deleted so snh, lu tr, rollback, nu cn,
khi bn khng cn to ra cc bin lu tr thng tin v tc truy xut
nhanh.
Hai loi trigger trong SQL Server 2000: INSTEAD OF v AFTER (nu ch ni trigger
c ngha l ni n AFTER Trigger)
Gii thch:
- trigger_name : Tn ca trigger. Nu trong 1 bng c nhiu trigger th tn ca
cc trigger phi l duy nht.
- ON { table | view }: Ch nh table/View c p dng trigger, ch c instead
of c p dng cho c view v table.
- [ WITH ENCRYPTION ]: Trigger c m ha. Thng tin m ha nm trong
bng syscomment
14.3 Vi v d v trigger.
V d 1: Vit mt trigger cho thao tc Insert, im kim tra ngy lp ho n th lun lun
ln hn ngy giao.
CREATE TRIGGER Trg_NgayLap_NgayGiaoHD
ON Hoadon AFTER INSERT
AS
DECLARE @NgayLapHD DateTime, @NgayGiao DateTime
SELECT @NgayLapHD=hd.NGayLapHD,NgayGiao=hd.NgayGiaoNhan
FROM HoaDon hd INNER JOIN Inserted i ON hd.MaHD=i.Mahd
If @NgayGiao<@NgayLapHD
2
BEGIN
RAISERROR(500103,10,1)
ROLLBACK TRANSACTION
END
-------------------------------INSERT HoaDon VALUES (1003,'1/1/2004','N','TP.
HCM',111,12/24/2003)
V d 2: To mt trigger c tn l Msg_InstUpd_Kh, trigger ny thc hin chi 2 thao tc
Insert, Update ca bng KhachHang. Trigger s thng bo C n dong da duoc hieu
chinh.
Use SalesDB
GO
CREATE TRIGGER Msg_InstUpd_Kh
On KhachHang
FOR INSERT, UPDATE
AS
RAISEORROR(C %d dng c hiu chnh,
0,1,@@Rowcount)
RETURN
Kim chng: bng cch chn hoc cp nht 1 hoc nhiu mu tin vo bng
KhachHang.
INSERT INTO KhachHang ..
V d 3: Hai bng HoaDon v CT_HoaDon c quan h 1-n, tc l khi thm mt chi tit
ha n trong bng chi tit ho n th ha n ny phi c pht sinh trong bng
ha n. V th ta phi vit mt trigger Insert cho bng CT_HoaDon. Nu ta c trigger
ny th khi ta vi phm SQL Server cng s bo li v vi phm rng buc ton vn kha
ngoi. Tuy nhin ta hy vit mt trigger thc hin thng bao khi c li ny xut hin.
Use SalesDB
GO
CREATE TRIGGER Trigger_Ins_CT_HD
ON HoaDon
FOR INSERT
/* Insert trigger cho bng ha n*/
AS
IF NOT EXISTS
(Select * From Inserted I inner join HoaDon hd ON
i.Mahd = hd.Mahd)
BI 15:
BO MT TRONG SQL SERVER
15.1 Khi nim v bo mt.
15.1.1 M hnh truy cp bo mt ca SQL Server.
SQL Server 2000 thc thi chng thc chnh n bng cch kim tra xem ti khon
ang nhp c tn ti hay khng v mt khu ch nh c khp vi mt ghi nhn
trc y trong SQL Server 2000 khng.
Ch chng thc:
Windows Authentication mode: Ngi s dng ch c th kt ni vi SQL Server
200 bng Windows Authentication (Kt ni tin tng)
Mixed mode: Ngi dng c th kt ni vi SQL Server 200 bng cch dng c
Windows Authentication v SQL Server Authentication
Chuyn i ch chng thc:
Sau khi ci t, bn c th s dng Enterprise Manager chuyn i qua li gia
cc ch . Ti ca s Enterprise Manager, nhp nt phi chut ti instance v
chn Properties
Hnh 39: Hp thoi hi kin ngi dng c mun Stop v Restart Server
15.1.3 Tm hiu cc Server-Wide Permission.
SQL Server 2000 h tr mt s server role c nh ngha trc c kt hp vi
cc quyn qun tr. Cc server role ny cp cc quyn server-wide thc hin cc
tc v khc nhau v bao gm cac quyn m bn c th cp cho nhng ngi dng
thng qua vic s dng cc server role ny. Bn khng th xo cc server role v
khng th thay i cc quyn ca chng. cp cc quyn cho mt ngi dng, th
bn thm ng nhp ca chng server role. Vi Transact-SQL, bn c th thm cc
ngi dng hay nhm cc ngi dng vo mt server role
Lu : Cc Server role v c bn ging nh cc group trong Windows 2000. Trong SQL
Server 2000 c 8 server role
Server Role
sysadmin
serveradmin
setupadmin
Thc hin tt c cc thao tc lin quan n security trong SQL Server 2000,
k c qun l cc quyn cu lnh CREATE DATABASE, iu khin server
securityadmin logins, v c error log. Gip cc nhn vin vn phng. Thnh vin
ca nhm iu hnh vin built-in ca windows l rt tt nhn server role
ny.
processadmin
dbcreator
Diskadmin
bulkadmin
Server Role
M t
Database
owner
DBO role
User
Guest user
Public role
Statement
permissions
Object
permissions
Quyn
Application
role
M t
Quyn thc thi cc hnh ng trong mt CSDL c th c cp cho mt
application, thm ch cp cho user. Mt application kt ni n mt CSDL
v kch hot application role. Cc User truy xut n mt CSDL thng qua
s kt ni ny dnh ly cc quyn kt hp vi application role trong
sut qu trnh kt ni. Cc quyn pht hnh n mt user c th th khng
lin quan khi user ang truy xut CSDL thng qua application role.
db_owner
db_accessadmin
db_securityadmin
db_ddladmin
db_backupoperator
db_datareader
Db_datawriter
M t
Sp_grantlogin 'login'
Sp_revokelogin 'login'
Sp_denylogin 'login'
Sp_defaultdb 'login',
'database'
Th tc h thng
Sp_defaultlanguage 'login',
'language'
V d:
Sp_grantlogin 'CDCN4\Bill'
SQL Server Logins
Cc th tc h thng sau cho php cp, hy, t chi, hiu chnh mt login kt vi mt ti
khon ngi dng SQL Server. Ch c cc thnh vin ca sysadmin hoc securityadmin
server roles mi c th thc thi cc th tc h thng ny
Th tc h thng
M T
Sp_password 'old_password',
'new_password', 'login'
Thay i CSDL mc nh
Sp_defaultlanguage 'login',
'language'
V d:
Sp_addlogin 'Joe', 'Joe123', 'Northwind'
To mt SQL Server login mi c tn l Joe, vi password l Joe123 v CSDL mc nh
Northwind.
Server Roles
Cc th tc h thng sau c dng thm hay xa mt login vo mt server role. Ch
c thnh vin ca sysadmin server role mi c th thm cc login vo bt k server role.
Cc thnh vin ca server role cng c th thm cc login vo server role .
Th tc h thng
M t
Sp_ addsrvrolemember 'login', 'role' Thm login nh l thnh vin ca server role.
Sp_dropsrvrolemember 'login', 'role' Xo login khng l thnh vin ca mt server role.
V d:
Sp_addsrvrolemember 'Joe', 'securityadmin'
Thm login c tn l Joe vo server role Security Administrator.
Database Access
Cc th tc sau y c dng thm hay xa mt login (Windows hoc SQL Server)
hin hu c quyn truy xut trong CSDL hin hnh. Khng ging nh SQL Server
Enterprise Manager, bn c th cp mt nhm ca Windows 2000 (hoc Windows NT
4.0) group truy xut n CSDL m khng cn to login trc mt cch tng minh trong
bng sysxlogins. Ch c cc thnh vin ca sysadmin server role, v db_accessadmin v
db_owner fixed database role mi c th thc thi cc th tc h thng ny.
Th tc h thng
M t
Sp_grantdbaccess 'login',
'name_in_db'
V d:
USE Northwind
EXEC Sp_grantdbaccess 'Joe'
Cho php login tn l Joe truy xut n CSDL hin hnh, dng user name l Joe trong
CSDL Northwind.
Database Roles
Cc th tc h thng sau y c dng thay i database owner, thm hoc xa mt
ti khon bo mt vo mt database role c sn, hoc to hoc xa mt user-defined
database role.
Use Northwind
EXEC Sp_addrolemember 'db_securityadmin', ' CDCN4\KeToan'
Thm ti khon CDCN4\KeToanvo db_securityadmin database role trogn CSDL
Northwind.
Th tc h thng
M t
Thay i owner ca mt CSDL ngi dng. Ch c nhng thnh
Sp_changedbowner
vin ca sysadmin server role hoc owner database hin hnh mi
'login', remap_alias_flag
Th tc h thng
Sp_helplogins [ 'login' ]
Sp_helpsrvrolemember [
'role' ]
Sp_helpuser
[ 'security_account' ]
Sp_helprolemember [
'role' ]
Sp_helpntgroup [ 'name' ]
Gn cc quyn Database
Cc view v cc stored procedure c th c to trn cc table. Khi mt user c gng ly
thng tin thng qua view hoc procedure, th SQL Server 2000 phi kim tra user c c
php ly d liu hay khng. Nu view hoc procedure c lm ch bi mt user v ca
cc bng c s li l ca mt user khc th SQL Server 2000 phi kim tra cc quyn trn
mi object trong dy chuyn . Khi mt chui cc ownership ko di th iu ny s nh
hng n vic thc hin. Nhng c l quan trng hn l n c th b gt gi cho nh
qun tr vch ra v g li cc t vic a ra bo mt
Cc quyn v lnh
Cu lnh TransactSQL
CREATE
DATABASE
BACKUP
DATABASE
BACKUP LOG
Cu lnh TransactSQL
DEFAULT
CREATE
CREATE
FUNCTION
CREATE
TRIGGER
V d:
CREATE TABLE Northwind.dbo.CustomerTable
(CustID nchar (5), CustomerName nvarchar (40))
Cho php to mt bng, cp ownership cho dbo role. Ch c nhng thnh vin sysadmin
server role v db_owner hoc db_ddladmin fixed database roles c th thc hin mt cch
thnh cng cu lnh ny.
Thay i Ownership ca Object
Mt thnh vin ca db_owner, db_ddladmin, hoc db_securityadmin fixed database role,
hoc a member of the sysadmin server role c th thay i ownership ca bt k object
trong bng cch chy th tc sp_changeobjectowner.
sp_changeobjectowner 'CDCN4\KeToan.Customer', 'dbo'
i ownership ca table Customer t CDCN4\KeToanBill cho dbo role.
Lu
Thay i owner ca mt object th s x tt c cc quyn hin c trn i tng. Nu bn
cn gi li cc quyn th nn to Scrip trc khi i owner.
Dng Enterprise Manager Grant, Deny, or Revoke quyn lnh
Nhp nt phi chut ti CSDL cn thc hin cp/xo/t chi/xem cc quyn