tailieu t sql
TRANSCRIPT
-
7/31/2019 Tailieu t SQL
1/30
Bi 2
NGN NG T-SQL
Mc tiu bi hc:
- Bit cc c im chnh ca ngn ng T-SQL- M t bin, kiu d liu, v cc ch thch trong T-SQL.- Tm hiu hm v biu thc trong T-SQL- M t ngn ng DML, DDL, DCL
I. Gii thiu ngn ng T-SQL
- Ngn ng SQL l ngn ng ph bin nht c s dng trong th gii CSDL.
- T-SQL l vic thc thi ngn ng truy vn cu trc chun ca Microsoft.
- Ngn ng T-SQL c th dng nh ngha bng, chn, xo, cp nht v truy cp d
liu trong bng.
- T-SQL l ngn ng kh mnh c cp n kiu d liu, i tng tm thi, cc th
tc h thng v cc th tc mrng.
- T-SQL cn c kh nng x l trn mu tin, x l c iu kin, iu khin giao tc, x lli v bit l.
1. Bin trong T-SQL
- Bin l mt i tng c th lu gi mt gi tr d liu. D liu c thc chuyn n
cu lnh T-SQL bng vic s dng bin cc b. Bin c thc phn thnh 2 loi: bin
cc b v ton cc.
a. Bin cc b:
Trong T-SQL bin cc bc to v c s dng cho vic lu tr tm thi trong khi
cu lnh SQL c thc hin. Tn ca bin cc b phi bt u vi du @
C php:
-
7/31/2019 Tailieu t SQL
2/30
DECLARE
{
@local_variable [AS] data_type
}
Trong :
@local_variable: xc nh tn ca bin, tn ca bin phi bt u vi 1 du @.
Data_type: l kiu d liuc nh ngha bi ngi s dng hoc h thng.
Cu lnh SET hoc SELECTc s dng gn gi trn cho bin cc b.
C php:
SET @local_variable=value
OR
SELECT @local_variable=value
V d:
DECLARE @empID int
SET @empID = 1
SELECT FirstName, LastName
FROM Employee
WHERE EmployeeID=@empID
b. Bin ton cc
Bin ton cc l bin c nh ngha v x l bi h thng. Bin ton cc trong SQL
Server c bt u vi 2 du @. Gi tr ca cc bin ny c thc truy lc bng cu
truy vn SELECT n gin.
V d:
-
7/31/2019 Tailieu t SQL
3/30
SELECT @@VERSION AS sqlServerVersionDetails
2. Kiu d liu trong T-SQL
Kiu d liu l mt thuc tnh nh ngha d liu m mt i tng c th cha. T-SQL
bao gm mt s kiu d liu cbn nh varchar, text, v int. Tt c cc d liuc lu
tr trong SQL Server phi tng thch vi mt trong cc kiu d liu cbn .
Cc i tng sau y c kiu d liu:
- Ct trong table v trong view- Tham s trong Stored Procedure- Bin- Hm T-SQL tr v mt hoc nhiu gi tr d liu ca mt kiu d liu xc nh.- Th tc c cu lnh return lun c kiu d liu integer.Kiu d liu Kch thc Min gi tr d liu lu gi
Cc kiu d liu dng s nguyn
Int 4 Bytes T -2.147.483.648 n +2.147.483.647
Smallint 2 bytes T -32.768 n +32.767
Tinyint 1 byte T 0 n 255
Bit 1 byte 0,1 hoc NULL
Cc kiu d liu dng s thp phn
Decimal,
Numeric
17 bytes T -10^38 n +10^38
Cc kiu d liu dng s thc
Float 8 bytes T -1.79E +308 n +1.79E +308
Real 4 bytes T -1.79E +308 n +1.79E +308
Cc kiu d liu dng chui c di c nh (fixed)
-
7/31/2019 Tailieu t SQL
4/30
Char N bytes T 1 n 8000 k t, mi k t l 1 bytes
Cc kiu d liu dng chui c di bin i (variable)
Varchar N bytes T 1 n 8000 k t, mi k t l 1 bytes
Text N bytes T 1 n 2.147.483.647 k t, mi k t l 1
bytes
Cc kiu d liu dng chui dng font ch Unicode (national)
Nchar 2*n bytes T 1 n 4000 k t, mi k t l 2 bytes
Nvarchar 2*n bytes T 1 n 4000 k t,mi k t l 2 bytes
Ntext 2*n bytes T 1 n 1.073.741.823 k t, mi k t l 2
bytes
Cc kiu d liu dng tin t
Money 8 bytes T -922.337.203.685.477.5808 n
+922.337.203.685.477.5807
Smallmoney 4 bytes T -214.748.3648 n +214.748.3647
Cc kiu d liu dng ngy v gi
Datetime 8 bytes T 1/1/1753 n 31/12/9999
Smalldatetime 4 bytes T 1/1/1900 n 6/6/2079
Cc kiu d liu dng chui nh phn (binary string)
Binary N bytes T 1 n 8000 bytes
Varbinary N bytes T 1 n 8000 bytes
Image N bytes T 1 n 2.147.483.647 bytes
3. Ghi ch trong T-SQL
Microsoft SQL Server h tr2 kiu ghi ch:
-- (double hyphens). V d:
-
7/31/2019 Tailieu t SQL
5/30
USE pubs
--bang Employee chua chi tiet cua nhan vien
--Cau lenh nay truy luc tat ca cc hng cua bang Employee
SELECT * FROM Employee
/*.*/ (forward slash-asterisk character pairs) V du:
/* bang Employee chua chi tiet cua nhan vien. Cau lenh nay truy luc
tat ca cac hang cua bang Employee */
SELECT * FROM Employee
II. Hm v biu thc trong T-SQLHm l mt tp ca cc cu lnh T-SQL c s dng thc hin mt vi tc v
Biu thc l s kt hp canh danh, gi tr v ton t.
1. Hm trong T-SQL
T-SQL bao gm mt s lng ln cc hm. Cc hm c th hu ch khi d liuc
tnh ton v c x l.
a. Cc hm tp hpCc hm tp hp nh SUM, AVG, COUNT, MAX, MIN to ra cc gi tr tng hp
trong kt qu truy vn.
SQL Server h tr cc hm tp hp sau:
- SUMHm SUM tr v tng s ca tt c cc gi tr ca trng d liu trong biu thc. Ta
c th dng DISTINCT vi SUM tnh tng cho cc gi tr duy nht ca trng dliu trong biu thc. Cc gi tr NULL c b qua. SUM ch c th c dng vi
cc trng d liu kiu s (numeric).
C php: SUM(biu thc)
-
7/31/2019 Tailieu t SQL
6/30
V d: tm tng s hc vin ng k cho kho hc c CourseCode l 1 ta dng
hm SUM trong cu lnh SELECT nh sau:
SELECT SUM(NoOfStudentsEnrolled) AS Enrolled Students FROM Batch
WHERE CourseCode=1
Cc hm tp hp cn c ngha khc khi dng vi mnh GROUP BY. Chng ta
s bn v mnh GROUP BY trong phn sau.
- AVG
Hm AVG tr v gi tr trung bnh ca tt c cc gi tr ca trng d liu c ch ra
trong biu thc. AVG ch c th c dng vi cc trng s (numeric) v c th t
loi b cc gi tr NULL.
C php:
AVG ([ALL | DISTINCT] ) biu thc)
ALL: l gi tr mc nh, c tc dng vi tt c cc gi tr.
DISTINCT: Ch ra rng AVG ch lm vic vi mt gi tr duy nht ca trng cch ra, bt k cc gi tr ny xut hin bao nhiu ln.
Biu thc: c th l bt k biu thc SQL Server no, thng l tn trng d liu.
V d: tm trung bnh gi tr cc ho n trong bng Invoice ta dng cu truy vn
sau:
SELECT AVG(Amount) AS Average Amount FROM Invoice;
- COUNT
Hm COUNT m c cc gi tr khc NULL trong biu thc. Nu dng vi t
kho DISTINCT, COUNT m c cc gi tr duy nht. Hm COUNT c th c
-
7/31/2019 Tailieu t SQL
7/30
dng vi cc trng s v k t. Cc trng kho chnh v kho ngoi dng tt nht
vi hm COUNT v cc trng ny khng cha gi tr NULL.
Ta cng c th dng k t * thay cho biu thc trong hm COUNT. Vi cch dng
ny ta s m tt c cc mu tin m khng quan tm n bt k trng d liu no.
C php: COUNT (biu thc) hay COUNT(*)
V d: m s kho hc trong bng Course ta dng:
SELECT COUNT(CourseCode) AS Total Course FROM Course;
- MAX
Hm MAX tr v gi tr ln nht trong biu thc. Hm MAX c th c dng vi
cc kiu d liu s, chui, v ngy thng. MAX tr v gi tr ln nht trong ton b
gi tr sau khi i chiu. MAX b qua cc gi tr NULL.
C php: MAX(biu thc)
V d: tm gi tr ho n ln nht trong bng Invoice ta dng:
SELECT MAX(Amount) AS Maximum Invoice Amount FROM Invoice;
- MIN
Hm MIN tr v gi tr nh nht trong biu thc. Hm ny c th c dng vi cc
trng s, chui v ngy thng. Khi MIN c dng vi cc trng kiu chui, MIN
tr v gi tr nh nht trong danh sch so snh. MIN b qua gi tr NULL.
C php: MIN(biu thc)
V d: tm gi tr ho n nh nht trong bng Invoice ta dng truy vn sau:
-
7/31/2019 Tailieu t SQL
8/30
SELECT MIN(Amount) AS Minimum Invoice Amount FROM Invoice
b. Cc hm x l chui- Hm ASCII: hm tr v gi tr m ASCII ca k t bn tri ca chui.
V d:
Print ASCII(TOI)
Kt qu tr v nh sau:
84
- Hm char: hm ny chuyn i kiu m ASCII t s nguyn sang dng chui.V d:Print char(35)
Kt qu tr v nh sau:
#
- Hm UPPER: hm ny chuyn i chui sang kiu ch hoa.V d:
Print UPPER(Quyen)
Kt qu tr v nh sau:
QUYEN
- Hm LOWER: hm ny chuyn i chui sang kiu ch thng.V d:
Print LOWER(QUYEN)
Kt qu tr v nh sau:
-
7/31/2019 Tailieu t SQL
9/30
quyen
- Hm len: hmny tr v chiu di ca chui.V d:
Print len(Ly Tu Trong)
Kt qu tr v nh sau:
11
- Hm LTRIM: loi b khang trng bn tri ca chui.V d:
Print LTRIM( Trong)
Kt qu tr v nh sau:
Trong
- Hm RTRIM: loi b khong trng bn phi ca chui.V d:
Print RTRIM(LyTuTrong )
Kt qu tr v nh sau:
LyTuTrong
- Hm Left: tr v chui bn tri tnh t u cho n v tr th n.
-
7/31/2019 Tailieu t SQL
10/30
V d:
Print left(Quyen,3)
Kt qu tr v nh sau:
Quy
- Hm Right: tr v chui bn phi tnh t cui cho n v tr th n.V d:
Print Right(QUyen,4)
Kt qu tr v nh sau:
Uyen
- Hm CHARINDEX: tr v v tr chui bt u ca chui con trong chui xt.V d:
Print CHARINDEX(Trong,Ly Tu Trong)
Kt qu tr v nh sau:
7
c. Cc hm v x l thi gian- Hm getDate(): tr v ngy thng nm ca h thng
V d:
Select Today is =getDate()
Kt qu tr v nh sau:
Today is
2007-10-17 14:55:20
- Hm DATEPART: tr v mt phn gi tr ca mt chui dng ngy thng y .
-
7/31/2019 Tailieu t SQL
11/30
V d 1:
Select Hom nay ngay: =datepart(d,getDate())
Kt qu tr v nh sau:
Hom nay ngy:
17
V d 2:
Select Hom nay tuan: =datepart(w,getDate())
Kt qu tr v nh sau:
Hom nay tuan:
- - - - - - - - - - - - - - -
4
Hm ny bao gm cc h s nh trong bng sau:
Hm DATEPART Tham s
Year yy, yyyy
Quarter qq, q
Month mm, m
Dayofyear dy, y
Day dd, d
Week wk, ww
Weekday dw
Hour hh
Minute mi, n
-
7/31/2019 Tailieu t SQL
12/30
Second ss, s
Milecond ms
- Hm DATEDIFF: tr v s ngy trong khang thi gian gia ngy.V d:
Select So ngay giua ngay thu tien den hom nay: =datediff(d, ReceiptDate,
getDate())
From tblReceipt
Kt qu tr v nh sau:
So ngay giua ngay thu tien den hom nay:
- - - - - - - - - - - - - - - - - - -- - - -- - - - - - -
74
72
- Hm day: tr v ngy th my trong thng.V d:
Select Hom nay ngay: =day(getDate())
Kt qu tr v nh sau:
21
- Hm month: tr v thng th my trong nm.V d:
Select Hom nay thang:=month(getDate())
Kt qu tr v nh sau:
10
-
7/31/2019 Tailieu t SQL
13/30
- Hm year: tr v nmV d:
Select Nam nay la:=year(getDate())
Kt qu tr v nh sau:
2007
d. Cc hm v ton hc- Hm square: tr v bnh phng ca mt biu thc
V d:
Print square(4)
Kt qu tr v nh sau:
16
- Hm sqrt: tr v cn bc hai ca mt biu thc V d:
Print sqrt(4)
Kt qu tr v nh sau:
2
- Hm round: tr v s lm trn ca mt biu thc.V d:
Print round(748.58, -1)
Kt qu tr v nh sau:
-
7/31/2019 Tailieu t SQL
14/30
750.00
e. Cc hm v chuyn i- Hm cast: tr v gi tr c kiu d liu theo nh ngha
V d:
Print cast(getDate() as varchar(11))
Kt qu tr v nh sau:
Oct 17 2007
Kt qu bao gm 11 k t.
- Hm convert: chuyn i gi tr c kiu d liu ny sang kiu d liu khc nucho php.
V d:
Print convert(int, 12)
Kt qu tr v la s nguyn c gia tr nh sau:
12
Hoc chng ta c th dng hm ny ly thi gian t bin hay ct, gi tr c dng
ngy thng nh sau:
Print convert(char(10), getDate(), 108)
Kt qu tr v nh sau:
12 : 07 : 46
2. Biu thc trong T-SQL
-
7/31/2019 Tailieu t SQL
15/30
a. Biu thc iu kin
Nh chng ta bit T-SQL l mt tp hp ca vic lp trnh m rng t Microsoft. C
c th lp trnh cc chc nng trong CSDL quan h c cung cp bi SQL Server 2000.
Mnh WHERE c s dng nh mt phn ca mt cu lnh T-SQL lc dliu.Trong mnh WHERE thng s dng cc ton t so snh v cc biu thc iu
kin. Biu thc l s kt hp ca cc ton t v ton hng. Cc biu thc n gin c th
l mt bin n, hng n, ct n, Ton t c th c s dng kt hp 2 hay
nhiu biu thc n thnh mt biu thc phc tp.
Mt biu thc c th bao gm mt hay nhiu loi nh sau:
- Hng: th hin mt gi tr d liu n v gi tr d liu phi c th.- Ct: Tn ca ct trong mt bng. Ch tn ca ct c cho php trong mt biu
thc.
- Ton t mt ngi: Ton t ny ch c mt ton hng tham gia vo.- Ton t hai ngi: ton t ny nh ngha cch thc m 2 biu thc kt hp to ra
mt kt qu n. Ton t 2 ngi c th l mt ton t s hc, ton t gn (=), ton
t bitwise, ton t so snh, ton t logic,
Bng di y lit k cc ton t so snh c s dng trong cu lnh T -SQL trongmnh WHERE
Ton t M t
= Ton t bng
> Ln hn
< Nh hn
>= Ln hn v bng
Khng bng
! Ph nh
-
7/31/2019 Tailieu t SQL
16/30
V d:
PRICE >100
NAME LIKE DAVID
GRADE < > FAIL
Cc k t i din trong cu lnh T-SQL
K t i din M t V d
- Mt k t n SELECT udesc FROM
usertypes WHERE udesc
LIKE C_
% chiu di bt k mt chui SELECT * FROM users
WHERE username LIKE
AL%
[ ] Mt k t n trong phm vi mt
cp du ngoc vung
SELECT * FROM
coursematerial WHERE
yearsem LIKE SEM[1-2]
[ ^ ] Nhiu k t n m khng nm
trong phm vi cp du ngoc n.
SELECT * FROM
coursematerial WHERE
yearsem LIKE sem[^ 1-2]
b. Ton t lun l
Cc ton t lun l c h tr trong T-SQL l AND, OR, NOT
Cc ton t AND v OR c s dng gip tm kim cc iu kin trong mnh
WHERE. NOT l ton t ph nh. AND kt ni hai iu kin v tr v TRUE ch khi c
2 iu kin l TRUE. OR kt ni 2 iu kin nhng n ch tr v TRUE khi mt trong 2
iu kin l TRUE.
u tin ca ton t lun l l: NOT, AND, OR
-
7/31/2019 Tailieu t SQL
17/30
III. Ngn ng DDL
1. Cu lnh CREATE TABLE
Mt bng c th c to bng vic s dng mt trong 2 cch sau y:
- Enterprise Manager- Cc cu lnh T-SQL trong Query AnalyzerC php to bng bng T-SQL l:
CREATE TABLE
( )
V d:
CREATE TABLE SinhVien
( MSSV Char(4), HOTENSV varchar(15))
Chng ta c th to mt bng mi vi Enterprise Manager bng vic chn CSDL v
sau chn tu chn Action, New v Table.
-
7/31/2019 Tailieu t SQL
18/30
-
7/31/2019 Tailieu t SQL
19/30
char(4) foreign key (MALOP) references LOP(MALOP)
)
- To rng buc Default trong khi to bngCREATE TABLE SINHVIEN
(
MSSV char(4), HOTEN varchar(20), NGAYSINH datetime, PHAI bit
DEFAULT 0
)
- To rng buc duy nht trong khi to bngCREATE TABLE SINHVIEN
(
MSSV char(4), HOTEN varchar(20), DIENTHOAI varchar(15) NOT
NULL UNIQUE
)
2. Cu lnh ALTER TABLE
- Lnh Alter table c s dng sa i vic nh ngha mt bng bng vic thay
i, thm, hoc xo cc ct v cc rng buc.
C php:
ALTER TABLE
ALTER COLUMN [ ] | ADD[ ] | DROP COLUMN []
V d 1:Thm ct DIACHI vo bng SINHVIEN
ALTER TABLE SINHVIEN
-
7/31/2019 Tailieu t SQL
20/30
ADD DIACHI varchar(20) NULL
V d 2:Thay i kiu d liu mi cho ct HOTEN ca bng SINHVIEN
ALTER TABLE SINHVIEN
ALTER COLUMN HOTEN nvarchar(30) NULL
V d 3:Xa ct DIACHI trong bng SINHVIEN
ALTER TABLE SINHVIEN
DROP COLUMN DIACHI
- To primary key cho ct trong bng tn tiALTER TABLE SINHVIEN
ADD CONSTRAINT PK_MSSV
PRIMARY KEY (MSSV)
- To rng buc kha ngoi trong bng tn tiALTER table SINHVIEN
Add constraint FK_MALOP
foreign key (MALOP) references LOP(MALOP)
- To rng buc check trong bng c d liuALTER table SINHVIEN
ADD CONTRAINT CK_NGAYSINH
CHECK (NGAYSINH
-
7/31/2019 Tailieu t SQL
21/30
DEFAULT 0 for PHAI
- To rng buc duy nht trong bng tn tiALTER TABLE SINHVIEN
( ADD CONSTRAINT UK_DIENTHOAI
UNIQUE(DIENTHOAI)
)
3. Cu lnh DROP TABLE
Cu lnh DROP TABLE xo vic nh ngha mt bng v tt c cc d liu, ch mc,
trigger, rng buc, v vic xc nh cc quyn cho bng .
C php:
DROP TABLE
V d:
DROP TABLE Employee
Ch :Cu lnh DROP TABLE khng th c dng xo mt bng m bng nyang c mi quan h vi bng khc. Trc khi xo phi quan tm n rng buc tham
chiu kho ngoi.
IV. Ngn ng DML v DCL
1. Cu lnh SELECT, INSERT, DELETE, UPDATE
a. Dng T-SQL InsertChng ta c th thm d liu mi vo mt bng hoc chng ta cng c th thm d liu
t mt bng ang tn ti vo mt bng mi c to ra.
C php cu lnh Insert thm d liu vo mt bng:
INSERT [INTO] VALUES
Trong :
-
7/31/2019 Tailieu t SQL
22/30
[INTO] l mt t kho
tn ca bng ni m record c chn vo.
xc nh cc gi tr cho ct ca bng.
V d:
Bng jobs bao gm 3
fields: job_desc, min_lvl, max_lvl.
C php thm d liu t mt bng vo mt bng khc
INSERT SELECT FROM
Trong : table name l tn ca bng ni m chng ta c th thm d liu vo , column
list l danh sch cc ct c chn vo t mt bng ang tn ti v tablename2 l tn ca
bng ang tn ti.
V d:
CREATE TABLE author_details (au_id varchar(11), au_lname varchar(40))
GO
INSERT author_details SELECT authors.au_id, authors.au_lname FROM authors
b. Dng T-SQL update
Chng ta c th thay i, cp nht d liu trong mt bng bng cu lnh UPDATE. Vic
cp nht th cn thit khi d liu cn c thay i.
C php cho vic cp nht mt hng n trong mt bng:
UPDATE
SET
[WHERE ]
Tham s c gii thch nh sau:
l tn ca bng ni m mu tin c cp nht.
INSERT INTO jobs VALUES (Graphics Artist, 25, 100)
-
7/31/2019 Tailieu t SQL
23/30
xc nh cc gi tr mi cho cc ct c thay i.
UPDATE titles SET price=price+(25/100*price) WHERE title_id=TC7777
Cp nht nhiu hng ca mt bng
UPDATE publishers
SET city=Atlanta, state=GA
c. Dng T-SQL delete:
C php xo mt hng t mt bng
DELETE FROM [WHERE ]
Trong :
l tn ca bng cha mu tin mun xo.
mnh WHERE c s dng xc nh iu kin
V d :
DELETE FROM pub_info WHERE pub_id=9999
d. Dng T-SQL SELECT:
C 5 phn c bn trnh by mt cu lnh SELECT n gin:
C php:
SELECT FROM ;
Trong :
- SELECT l t u tin trong cu query.- phi l thnh phn k tip trong cu query. Nu mun truy lc
t 2 hay nhiu ct trong cu SELECT th cc columnname phi c cch nhau
bi du chm v cc ct phi tn ti trong bng m chng ta ang truy lc.
- FROM phi l t k tip trong cu query ca chng ta.- l tn bng m chng ta ang truy lc.
-
7/31/2019 Tailieu t SQL
24/30
- Du ; l thnh phn cui cng trong cu query. Du ; ni cho SQL bit rngcu query hon thnh v by gi nn thc thi.
Cu lnh SELECT c thng dch nh sau:
SELECT (ci g?) Mt hay nhiu tn ct . Tn ct phi c tch rabi du phy. Ch rng tn ct cui cng khng
c du phy i km.
FROM (u?) Tn bng.
SELECT * FROM
SELECT c nhiu chc nng. Chng ta ch va nhn thy mt dng c bn m thi.
C mt scc chc nng khc nh sau:
- WHERE:y l mt phn ty chn ca query. Phn ny xc nh mt iu kin.Nu mt query khng c mnh WHERE th tt c cc hng trong bng s c
hin th. Cu lnh so snh cng c th c xc nh trong mnh ny. V d:
hin th tn ca sinh vin khi bit m s sinh vin ta lm nh sau:
SELECT hosv
tensv FROM sinhvien WHERE masv=ltt200603;
- GROUP BY:y l mt chc nng khc ca cu query. N ch c s dngkhi kt qu ca query phi c nhm da trn iu kin. V d: nu chng ta
mun hin th thng tin ca sinh vin t nhng m s sinh vin khc nhau c
nhm li bng mnh GROUP BY nh sau:
-
7/31/2019 Tailieu t SQL
25/30
SELECT masv, hosv, tensv
FROM sinhvien
GROUP BY masv;
- ORDER BY: Chc nng ny ca cu query cho php sp xp cc hng theo tht. V d: nu chng ta mun hin th thng tin ca sinh vin c m s
ltt200603 trong bng sinhvien c sp xp theo h ca sinh vin, ta lm nh
sau:
SELECT * FROM sinhvien WHERE masv=ltt200603 ORDER BY hosv;
Cu lnh SELECT n gin
Cu lnh n gin nht th hin tt c cc ct trong mt bng c ghi nh sau:
SELECT * FROM sinhvien;
Cu lnh trn s hin th tt c cc hng v ct trong bng sinhvien. ct s hin th theo
th t nh ban u khi chng ta thit k bng.
Cc bng trong CSDL th thng ln v cha nhiu hng d liu. Tht vy, i lc chng
ta khng cn thit phi hin th tt c cc hng trong mt bng nh l kt qu ca cu
query trn. Chng ta c th s dng mnh WHERE lc cc d liu theo mt iu
kin cho trc.
iu kin c xc nh trong mnh WHERE c gi l mt thuc tnh. V d: Xt
cu query sau:
SELECT * FROM sinhvien WHERE phai=Nu;
Mnh WHEREc s dng gii hn kt qu ca query, ch hin th nhng bn
ghi c ct phi =Nu. Khi cu lnh c thc thi, mi mu tin trong bng s c so
snh vi gi tr trong iu kin. Ch nhng mu tin c gi tr tho mn iu kin mi
-
7/31/2019 Tailieu t SQL
26/30
-
7/31/2019 Tailieu t SQL
27/30
SELECT masv, hosv, tensv, noisinh
FROM sinhvien
WHERE noisinh=TPHCM
ORDER BY masv;
Th t sp xp c th l tng dn hay gim dn. D ng cc tham s DESC hay ASC ta c
th sp xp cc mu tin theo th t yu cu. Nu khng c tham s no trong cu lnh
truy vn, th t sp xp l tng dn.
Ta c th kt hp cc trng d liu vi cc hng s kiu chui c kt qu d c v
nh dng hp l. Thng thng cc hng s ny khng tn ti nh mt trng d liutrong kt qu truy vn m c kt hp vi cc trng khc xy dng kt qu hin th
cho truy vn.
V d: thm vo cc k t : v -> trong kt qu truy vn d liu t bng titles ta
to truy vn nh sau:
SELECT title_id +: + title + -> +type
FROM titles;
Ch : khi dng ton t + trong danh sch truy vn, ta cn ch n kiu d liu ca cc
trng. Cc trng l ton hng ca ton t ny phi c cng kiu d liu, nu khng
SQL Server s bo li.
Mnh AS c th c dng thay i tiu ca trng d liu hay gn tiu cho
trng pht sinh trong kt qu ca cu truy vn. Cc trng hin th trong kt qu ca cu
truy vn thng c tiu l tn trng trong bng. c tiu d hiu hn ta dngmnh AS tu bin.
V d: hin th tiu ROLL NUMBER thay cho trng RollNo trong bng
Students ta dng cu lnh SELECT sau:
-
7/31/2019 Tailieu t SQL
28/30
SELECT RollNo AS ROLL NUMBER FROM Students
Cc cu lnh SELECT c th c dng vi cc rng buc.
V d: rng buc IDENTITY c th c s dng trong truy vn nh sau:
SELECT IDENTITY (datatype, seed, increment) AS ID_Number
INTO table2 FROM table1
Trong cu truy vn trn table1 l bng c sn v table2 l bng m ta mun to ra v a
cc gi tr t tng vo.
Datatype l kiu d liu ca trng t tng. Trng ny ch nhn cc kiu d liu integer
hay kiu d liu decimal.
Seed l gi tr gn cho mu tin u tin ca bng. Cc mu tin tip theo c gn cc gi
tr tng dn, cc gi tr ny c tnh bng tng cc gi tr IDENTITY cui cng cng
vi gi tr tng.
Increment l gi tr tng c cng thm cho cac mu tin tip theo ca bng d liu.
T kho DISTINCT loi b cc mu tin trng lp t truy vn. Nu khng c t kho
DISTINCT, truy vn s tr v tt c cc mu tin bao gm c cc mu tin trng lp.
V d: nu chng ta truy xut trng MaterialType trong bng Material khng dng
t kho DISTINCT ta s nhn c mt danh sch di cc gi tr MaterialType trng
lp. Nu dng DISTINCT trong truy vn SQL Server s ch tr v cc gi tr
MaterialType duy nht. Cu truy vn ny nh sau:
SELECT DISTINCT MaterialType FROM Material
Mnh TOPc dng hn ch s mu tin tr v trong kt qu truy vn.
Cu lnh SELECT ny c c php nh sau:
SELECT TOP n FROM
V d: hin th 3 mu tin u tin trong bng Students ta dng:
-
7/31/2019 Tailieu t SQL
29/30
SELECT TOP 3 * FROM Students
K t * trong cu truy vn truy xut tt c cc trng.
Tng t nh vy ta c th truy xut s mu tin theo t l phn trm t bng d liu.
V d:
SELECT TOP 40 PERCENT * FROM Students
s truy vn 40% mu tin u tin ca bng Students.
2. Cu lnh GRANT, REVOKE, DENY
a. Cu lnh GRANT
Cu lnh GRANT c s dng khi csd liuc chia s vi nhng ngi s
dng khc. Cu lnh GRANT c dng cp quyn truy cp d liu cho ngi s
dng.
C php:
GRANT
{ALL | statement [, .]}
ON table_name
TO Security_Account[, ]
Trong :
ALL chuyn tt c cc quyn cho i tng khi ALL c s dng cp quyn cho
ngi s dng trn mt i tng.
Statement cpn cu lnh m quyn c cho bi ngi s dng.
TO Security_Account xc nh quyn cho mt ngi s dng c bit no .
Ngi s dng c th l Microsoft SQL Server, mt SQL Server role, mt
Windows OS.
Table_name cp n tn ca bng m c cp quyn.
-
7/31/2019 Tailieu t SQL
30/30
V d:
GRANT SELECT ON Employee TO QUYEN
b. Cu lnh REVOKE
Cu lnh revoke c dng hu quyn ngi s dng c cp bi cu lnh grant
C php:
REVOKE
{ALL | statement[,]}
ON table_name
FROM Security_Account[,.]
V d:
REVOKE SELECT ON Employee FROM QUYEN
c. Cu lnh DENY
C php:
DENY
{ALL | statement[,]}
ON table_name
TO Security_Account[,.]
V d:
DENY SELECT ON Employee TO QUYEN