Professional Documents
Culture Documents
*,lv,7+,j8
7UDQJ
Int
Smallint
Bit
Money
Smallmoney
Char
Nchar
Text
Datetime
Ntext
Tinyint
Decimal
Nvarchar
Varbinary
Float
Real
Varchar
Image
Smalldatetime
E&DFUDQJEXF&21675$,176
7UQFDFEDQJGOLXFDFUDQJEXFFVGXQJQKPFDFPXFFKVDX
4XLQKFDFJLDWUGOLXKD\NKXQGDQJGOLXFFKRSKHSFKSQKQWUQ
FDFFWFXDEDQJUDQJEXF&+(&.
4XLQKJLDWUPFQKFKRFDFFWUDQJEXF'()$8/7
7DRQQWQKWRDQYHQWKFWKWURQJPWEDQJGOLXYDWRDQYHQWKDPFKLXJLD
FDF EDQJ G OLX WURQJ &6'/ UDQJ EXF 35,0$5< .(< 81,48( YD
)25(,*1.(<
&KXQJWDVH WPKLXFKLWLWKQY FDFUDQJEXFQD\ SKQWUQKED\Y FXOQK
&5($7(7$%/(
7DREDQJEQJWUX\YQ64/
7DRFDFEDQJOD PWNKXTXDQ WURQJ WURQJ WURQJ TXD WUQK WKLW N YD FDL GW
FDF&6'/%QWURQJFDF&6'/PLPWEDQJWKQJFVGXQJQKPELXGLQ
WKQJWKLYFDFLWQJWURQJWKJLLWKFYDKRFELXGLQPLTXDQKJLDFDF
LWQJRj FR WK W FKFWWPWEDQJG OLXEDQWQKWFQSKDL[DFQK
FFDF\XFXVDX
%DQJFVGXQJQKPPXFFKJYDFRYDLWURQKWKQDREQWURQJ&6'/"
%DQJVHEDRJPQKQJFWQDRYDNLXGOLXFKRFDFFWRODJ"
1KQJFWQDRFKRSKHSFKSQKQJLDWU18//
&RVGXQJFDFUDQJEXFFDFPFQKKD\NKQJYDQXFRWKVGXQJXYD
QKXWKQDR"
1KQJFWQDRVH RQJYDLWUR OD NKRD FKQKNKRD QJRDLNKRD GX\QKW"1KQJ
GDQJFKPXFQDRODFQWKLWYDFQX
D7DREDQJGOLX
j WDR PW EDQJ WURQJ &6'/ EDQ V GXQJ FX OQK &5($7( 7$%/( FR FX
SKDSQKVDX
CREATE TABLE
table_name
(
{colname_1
col_1_properties
[,{colname_2 col_2_properties
[constraints_1 ]
[constraints_2 ]]
...
[,{colname_N col_N_properties
[constraints_N ]]
[table_constraints]
)
7URQJR
- table_name:
7Q EDQJ FQ WDR 7Q FXD EDQJ SKDL GX\ QKW
WURQJPL&6'/YDSKDLWXQWKHRFDFTXLWFY
QKGDQK
- colname_i:
7QFXDFWWK LWURQJEDQJ&DFFWWURQJ PL
7UDQJ
EDQJSKDLFRWQNKDFQKDXYDSKDLWXQWKHRFDF
TXL WF Y QK GDQK 0L PW EDQJ SKDL FR W
QKWPWFW
- col_i_properties:
- constraints_i:
- table_constraint:
&DFUDQJEXFWUQEDQJGOLX
9GX&XOQKGL\WKFKLQKYLFWDREDQJ1+$19,(1EDRJPFDFFW
0$19+27(11*$<6,1+',$&+,',(17+2$,
CREATE TABLE nhanvien
(
manv
hoten
ngaysinh
datetime null,
diachi
char(50) null,
dienthoai
char(6)
null
E6GXQJFDFUDQJEXFWURQJEDQJGOLX
D5DQJEXF&+(&.
5DQJEXF&+(&.FVGXQJFKQKFDFJLDWUKD\NKXQGDQJGOLX
FR WK F FKS QKQ L YL PW FW 7UQ PW FW FR WK FR QKLX UDQJ EXF
&+(&.j NKDLEDRPWUDQJEXF&+(&.LYLPWFWQDRRWDV GXQJFX
SKDSQKVDX
[CONSTRAINT constraint_name]
CHECK (expression)
7URQJR H[SUHVVLRQOD PWELXWKF ORJLF TXL QK JLD WU KD\ NKXQ GDQJ FXD G
OLXFFKRSKHS.KLRFKQKQJJLDWUGOLXQDRODPFKRH[SUHVVLRQQKQJLD
WUXQJPLFFKSQKQ
9 GX j TXL QK LQ WKRDL FXD QKQ YLQ SKDL FR GDQJ
FKQJ KDQ
FXOQKYGXFYLWQKVDX
CREATE TABLE nhanvien
(
hoten
ngaysinh
datetime null,
diachi
char(50) null,
dienthoai
char(6)
null
constraint check_dienthoai
check (dienthoai like '[0-9][0-9][0-9]
[0-9][0-9] [0-9]')
)
D5DQJEXF'()$8/7
5DQJEXF'()$8/7FV GXQJ TXLQKJLD WUPFQKFKRPWFW
*LD WUQD\VH W QJFJDQFKRFWQD\NKLQJLV GXQJE VXQJPWEDQJKL
PD NKQJ FK QK JLD WU FKR FW 7UQ PL FW FK FR WK FR QKLX QKW PW UDQJ
EXF'()$8/7WFODFKFRWKFRWLDPWJLDWUPFQK
j NKDL EDR PW JLD WU PF QK FKR PW FW WD FK QK PW UDQJ EXF
'()$8/7FKRFWEQJFDFKVGXQJFXSKDSVDX
[CONSTRAINT constraint_name]
DEFAULT {const_expression
nonarguments_function
NULL}
9 GX &X OQK GL \ FK QK JLD WU PF QK OD
NKQJ ELW
FKR FW
',$&+,WURQJEDQJ1+$19,(1YGX
CREATE TABLE nhanvien
(
manv
hoten
ngaysinh
datetime null,
diachi
dienthoai
char(6)
null
D5DQJEXF35,0$5<.(<
muYGXQD\FKXQJWLNKQJWWQFKRUDQJEXF'()$8/7.KLRKTXDQWU&6'/VHWQJWWQ
FKRUDQJEXFQD\7X\QKLQGGDQJFKRYLFTXDQWUEDQQQWWQFKRFDFUDQJEXF
7UDQJ
1XNKRDFKQKFXDPWEDQJFKODPWFWNKLREDQNKQJFQWKLWSKDLFK
QKGDQKVDFKFDFFWV GXQJUDQJEXF PFFW7URQJWUQJKSNKRD FKQK
OD PWWSKSW KDLFWWU OQEDQSKDLFKQKGDQKVDFKFDFFWV GXQJUDQJ
EXFPFEDQJ
9GXWDREDQJ1+$19,(1YLNKRDFKQKOD0$19
CREATE TABLE nhanvien
(
manv
hoten
ngaysinh
datetime null,
diachi
char(50) null,
dienthoai
char(6)
null
FXOQKWUQFRWKYLWQKVDX
CREATE TABLE nhanvien
(
manv
hoten
ngaysinh
datetime null,
diachi
char(50) null,
dienthoai
char(6)
null
D 5DQJEXF81,48(
7KD\ Y V GXQJ NKRD FKQK EDQ FR WK V GXQJ UDQJ EXF 81,48( DP
EDRWQKWRDQYHQWKFWK6 GXQJUDQJEXF81,48(WUQPWKD\QKLXFWEW
EXFFDFJLD WUG OLXWUQPWKD\QKLXFWQD\NKQJFWUXQJOSQKDXj
NKDLEDRPWUDQJEXF81,48(EDQVGXQJFXSKDSOQKVDX\
[CONSTRAINT constraint_name]
UNIQUE [CLUSTERED | NONCLUSTERED]
[colname1 [,colname2 [...,colname16]])]
D 5DQJEXF)25(,*1.(<
&DFEDQJEQWURQJPW&6'/WKQJFR PLTXDQK YLQKDX&DFPLTXDQ
K QD\ F [DF QK GD WUQ WQK EQJ QKDX JLD PW KD\ QKLX WUQJ FXD EDQJ
QD\YLPWKD\QKLXWUQJFXDEDQJNKDF1XPWKD\QKLXFWQDRRFXDPW
EDQJFR JLD WUF[DFQKW PWKD\QKLXWUQJNKRD FXDEDQJNKDFWKFDF
FWR FJRLOD FR UDQJEXFNKRD QJRDLIRUHLJQNH\&DFUDQJEXF)25(,*1
.(<FV GXQJ NW KS YL FDF UDQJ EXF 35,0$5< .(< YD 81,48( QKP
DPEDRWQKWRDQYHQWKDPFKLXJLDFDFEDQJFFKQK
jNKDLEDRNKRDQJRDLEDQVGXQJFXSKDSOQKQKVDX
[CONSTRAINT constraint_name ]
[FOREIGN KEY (colname [,colname2 [...,colname16]])]
REFERENCES
reference_table [(ref_colname
[,ref_colname2
[...,ref_colname 16]])]
9 GX 7DR KDL EDQJ 1+$19,(10$19 +27(1 1*$<6,1+ ',$&+,
',(17+2$,0$'9YD'219,0$'97(1'9WKHRKQKGL\
1+$19,(1
0$19
+27(1
1*$<6,1+
',$&+,
',(17+2$,
0$'9
+QK
'219,
0$'9
7(1'9
char(2)
primary key,
tendv
hoten
ngaysinh
datetime null,
diachi
dienthoai char(6)
madv
char(2)
foreign key(madv)
references donvi(madv)
6DLEDQJ
6DXNKLD WDREDQJEDQ FR WK WLQ KDQK VD L FX WUXF KD\ WKXF WQK FXD
EDQJ QK E VXQJ FW E VXQJ NKRD WKD\ L FDF UDQJ EXF j FR WK VXD L
EDQJEDQVGXQJFXOQK$/7(5FRFXSKDSQKVDX
ALTER TABLE table_name
[ADD
{col_name
column_properties
[column_constraints]
[[,]table_constraint ] }
[,{next_col_name|next_table_constraint}]...]
[DROP
[CONSTRAINT] constraint_name1
[, constraint_name2]...]
donvi
CONSTRAINT check_madv
CHECK (madv LIKE [0-9][0-9])
&KPXFLQGH[
&DFFKPXFFVGXQJQKPKWUYLFWUX\FSQFDFGRQJGOLXF
QKDQKFKRQJGDWUQFDFJLDWUFXDPWKD\QKLXFW&KPXFFFKLDUDODPKDL
ORDL FK PXF WX QKRP FOXVWHUHG LQGH[ YD FK PXF NKQJ WX QKRP QRQFOXVWHUHG
LQGH[
0WFKPXFWXQKRPODPWFKPXFPDWURQJRWKWORJLFFXDFDFNKRDWQJ
W QKWK W YWO\ FXDFDFGRQJWQJQJWQWDLWURQJEDQJ0WEDQJFKFR
WKFRWLDPWFKPXFWXQKRP
0WFKPXFNKQJWX KRPOD PWFKPXFPD WURQJR WK W ORJLFFXDFDFNKRD
NKQJQKWKWYWO\FXDFDFGRQJWURQJEDQJ&DFFKPXFWXQKRPKWUYLF
WUX\FSQFDFGRQJGOLXQKDQKKQQKLXVRYLFDFFKPXFNKQJWXQKRP
.KLWDNKDLEDRPWNKRDFKQKKD\NKRD81,48(WUQPWKD\QKLXFWQDRR
FXDEDQJK TXDQWU&6'/VH W QJWDRFKPXFWUQFDFFWR%DQFR WK WDR
WKPFDFFKPXFNKDFEQJFDFKVGXQJFXOQKFRFXSKDSQKVDX
CREATE [CLUSTEREDNONCLUSTERED] INDEX index_name
ON
table_name(column_name [, column_name]...)
9GX&XOQKGL\VHWDRPWFKPXFNKQJWXQKRPWUQFW0$'9FXD
EDQJ1+$19,(1
CREATE NONCLUSTERED INDEX idx_nhanvien_madv
ON nhanvien(madv)
.KXQJQKQ9LHZ
0WNKXQJQKQFR WK FRLQKOD PWeEDQJDRfFR QLGXQJF[DFQKW
PW WUX\ YQ 0W WUX\ YQ TXHU\ OD PW WS FDF FK GQ LQVWUXFWLRQ QKP WUX\
[XWYD KLQWKG OLXW FDFEDQJWURQJ&6'/&DFWUX\YQFWKFKLQEQJ
FDFKVGXQJFXOQK6(/(&7FFSQWURQJFKQJ
0WNKXQJQKQWURQJJLQJQKPWEDQJYLPWWRFDFWQFWYD FDFGRQJ
GOLX7X\QKLQNKXQJQKQNKQJWQWDLQKODPWFXWUXFOXWUGOLXWURQJ
&6'/' OLXEQWURQJNKXQJQKQWKFFKWOD G OLXF[DFQKW PWKD\
QKLXEDQJFVYDGRRSKXWKFYDRFDFEDQJFV
&DFNKXQJQKQWKQJFV GXQJEQWURQJ&6'/QKPFDFPXFFKVDX
\
6GXQJNKXQJQKQWSWUXQJWUQGOLXF[DFQK
7UDQJ
6GXQJNKXQJQKQQJLDQKRDWKDRWDFGOLX
6GXQJNKXQJQKQWX\ELQGOLX
6GXQJNKXQJQKQ[XWNKXH[SRUWGOLX
6GXQJNKXQJQKQEDRPWGOLX
jWDRNKXQJQKQEDQVGXQJFXOQKFRFXSKDSQKVDX
CREATE VIEW view_name[(column_name [, column_name]...)]
AS select_statement
7URQJRVHOHFWBVWDWHPHQWODPWFXOQK6(/(&7GXQJWUX\[XWGOLXW
PWKD\QKLXEDQJ
.KLWDRNKXQJQKQFQOX\PWVLPVDX
7QNKXQJQKQSKDLWXQWKHRFDFTXLWFY QKGDQKYD SKDLGX\QKWLYL
PLQJLVGXQJ
.KQJWKUDQJEXFFDFPFQKFDFTXLWFFKRNKXQJQKQ
.KQJWK[\GQJFKPXFFKRNKXQJQKQ
7URQJ FX OQK &5($7( 9,(: NKQJ FQ WKLW SKDL FK QK WQ FW 7Q FXD
FDFFWFXQJQKNLXGOLXFXDFKXQJVHWQJQJYLFDFFWWURQJGDQKVDFK
FKRQFXDFXOQK6(/(&7
%DQSKDL[DFQKWQFWWURQJFX OQK &5($7( 9,(: WURQJ FDF WUQJ KS
VDX
0LFWFXDNKXQJQKQFSKDWVLQKW PWELXWKFV KRFPWKDPFDL
VQKD\PWKQJ
+DLKD\QKLXFWFXDNKXQJQKQFRWUXQJWQ
%DQPXQWKD\LWQFWWURQJNKXQJQKQNKDFYLWQFWFXDEDQJFV
9GX&XOQKGL\VHEOLGRWQFXDFWWKNKQJ[DFQKF
CREATE VIEW thongtin_nv
AS
SELECT manv,hoten,datediff(year,ngaysinh,getdate()),tendv
FROM nhanvien,donvi
WHERE nhanvien.madv=donvi.madv
Z Y
7UDQJ
7UX\[XWGOLX
truy xut d liu t cc dng v cc ct ca mt hay nhiu bng, khung nhn,
ta s dng cu lnh SELECT. Cu lnh ny c th dng thc hin php chn (tc l
truy xut mt tp con cc dng trong mt hay nhiu bng), php chiu (tc l truy
xut mt tp con cc ct trong mt hay nhiu bng) v php ni (tc l lin kt cc
dng trong hai hay nhiu bng truy xut d liu).
C php chung ca cu lnh SELECT c dng nh sau:
SELECT
[ ALL | DISTINCT ]
[ INTO
FROM
select_list
[ newtable_name ]]
{ table_name | view_name }
................
[,{table_name | view_name }]
[WHERE
clause ]
[GROUP BY
clause ]
[HAVING BY clause ]
[ORDER BY
clause ]
[COMPUTE
clause ]
select_list
{table_nameview_name list}
nhanvien
n1
ngha
Bng
>
Ln hn
<
Nh hn
>=
Ln hn hoc bng
<=
Nh hn hoc bng
<>
Khc
!>
Khng ln hn
!<
Khng nh hn
V d 2.1: Truy vn sau y cho bit tn, a ch v in thoi ca nhng nhn vin
c h s lng ln hn 1.92:
SELECT ten, diachi, dienthoai
FROM nhanvien
WHERE hsluong>1.92
FROM nhanvien
WHERE
hsluong BETWEEN
7UDQJ
ngha
K t n bt k
[]
[^]
FROM nhanvien
FROM
table_name
tn_ct [,...,tn_ct_n]
tn_bng | khung_nhn
tn_ct tiu__ct
nhanvien
Hoc:
SELECT hoten 'H v tn',diachi 'ia ch '
FROM
nhanvien
lsluong=NULL THEN
7UDQJ
'Khng xc nh'
hsluong<=1.92 THEN
'Lung thp'
WHEN
hsluong<=3.1 THEN
'Lng TB'
WHEN
hsluong<=5.2 THEN
'Lng cao'
ELSE
'Lng rt cao'
END
FROM
Nhanvien
* Cc chui k t trong kt qu
Ta c th thm cc chui k t vo bn trong truy vn nhm thay i cch thc
trnh by d liu.
V d 2.6: Cu lnh sau s thm chui k t H s lng l vo trc kt qu
ct mc lng tng dng trong kt qu:
SELECT
FROM nhanvien
H s lng
----------------
--------------
-------------
H s lng l :
1.92
L Hoi Nam
H s lng l :
1.86
Nguyn Hu Tnh
H s lng l :
1.92
H s lng l :
1.86
Nguyn Th Hoa
H s lng l :
2.11
H s lng l :
3.21
nhanvien
Ta s c kt qu nh sau:
kt qu ca truy vn s l:
hsluong
---------1.92
1.86
2.11
3.21
nhanvien_luu
FROM
nhanvien
WHERE hsluong>1.92
1.7 Sp xp kt qu truy vn bng ORDER BY
Mnh ORDER BY c s dng nhm sp xp kt qu truy vn theo mt hay
nhiu ct (ti a l 16 ct). Vic sp xp c th theo th t tng tng (ASC) hoc gim
(DESC). Nu khng ch nh r th mc nh l tng.
V d 2.10: Cu lnh sau s sp xp cc nhn vin theo th t gim dn ca h
s lng v nu h s lng bng nhau th sp xp theo th t tng dn ca ngy sinh:
SELECT hoten,ngaysinh,hsluong
FROM nhanvien
ORDER BY hsluong DESC, ngaysinh
clause]
clause]
Trong :
Query_1 c dng:
SELECT
select_list
[INTO clause]
[FROM clause]
[WHERE clause]
[GROUP BY clause]
[HAVING clause]
select_list
[FROM clause]
[WHERE clause]
[GROUP BY clause]
[HAVING clause]
abc
edf
15
jks
hht
bdg
10
abc
Hht
12
adf
Th php hp:
SELECT A,B FROM R
UNION
C kt qu nh sau:
A
----
-----------
abc
adf
bgd
10
edf
15
hht
hht
12
jks
Theo mc nh, php ton UNION s loi b nhng dng ging nhau trong kt
qu. Nu ta s dng ty chn ALL th cc dng ging nhau s khng b loi b. Ta c
th s dng cc du ngoc xc nh th t tnh ton trong php hp.
1.8.1 Cc nguyn tc khi xy dng cu lnh UNION
Khi xy dng cc cu lnh UNION, ta cn ch cc nguyn tc sau:
Tt c cc danh sch chn trong cu lnh UNION phi c cng s biu thc
(cc tn ct, cc biu thc s hc, cc hm gp,...)
Cc ct tng ng trong tt c cc bng, hoc tp con bt k cc ct c s
dng trong bn thn mi truy vn phi cng kiu d liu.
Cc ct tng ng trong bn thn tng truy vn ca mt cu lnh UNION
phi xut hin theo th t nh nhau. Nguyn nhn l do php hp so snh cc
ct tng ct mt theo th t c cho trong mi truy vn.
Khi cc kiu d liu khc nhau c kt hp vi nhau trong cu lnh
UNION, chng s c chuyn sang kiu d liu cao hn (nu c th c).
Tiu ct trong kt qu ca php hp s l tiu ct c ch nh trong
truy vn u tin.
1.8.2 S dng UNION vi cc giao tc SQL khc
Cc nguyn tc sau phi c tun theo khi s dng php hp vi cc cu lnh
giao tc SQL khc:
Truy vn u tin trong cu lnh UNION c th c INTO to mt bng t
kt qu cui cng.
Mnh ORDER BY v COMPUTE dng xc nh th t kt qu cui
cng hoc tnh ton cc gi tr tm tt ch c cho php s dng cui ca
cu lnh UNION. Chng khng c php s dng trong bt k bn thn
truy vn no trong php hp.
Mnh GROUP BY v HAVING ch c th c s dng trong bn thn
tng truy vn. Chng khng th c s dng tc ng ln kt qu cui
cng.
7UDQJ
ngha
Bng
>
Ln hn
>=
Ln hn hoc bng
<
Nh hn
<=
Nh hn hoc bng
<>
Khc
!>
Khng ln hn
!<
Khng nh hn.
* Php t ni v cc b danh
Php t ni l php ni m trong ta so snh cc gi tr bn trong mt ct ca
cng mt bng.
V d 2.16: Tm nhng nhn vin c cng a ch vi nhn vin 'Trn Nguyn
Phong'
SELECT n1.hoten
FROM nhanvien n1, nhanvien n2
WHERE n2.hoten='Trn Nguyn Phong' AND
n1.diachi = n2.diachi
* Php ni khng da trn tiu chun bng
Trong php ni ny, cc ct c s dng kt ni c so snh vi nhau
khng da trn iu kin bng.
* Php ni ngoi (outer join)
Trong cc php ni cp trn, ch nhng dng hp l (tc l nhng dng
c gi tr trong cc ct c ch nh tho m iu kin kt ni) mi c a ra trong
kt qu. Theo mt ngha no , nhng php ni ny loi b thng tin cha trong
nhng dng khng hp l. Tuy nhin, i khi ta cng cn gi li nhng thng tin
khng hp l bng cch cho php nhng dng khng hp l c mt trong kt qu ca
7UDQJ
aaaa
fff
f2
ggg
g4
xxx
12
gdf
ggg
12
khf
sss
45
k3h
Bng R
E
(null)
xxx
23
26
abc
(null)12
(null)
sss
20
Bng S
Khi cu lnh:
SELECT * FROM R,S
WHERE R.A = S.E
Cho kt qu l:
A
----
----- -----
----- -----
------ --------
aaa
aaaa
aaa
xxx
12
gdf
xxx
23
26
k3h
sss
20
sss 45
Cn cu lnh:
(null)
Cho kt qu l:
A
---
---- ----
-----
----- ------
------
aaa
aaaa
aaa
(null)
fff
f2
(null) (null)
(null)
ggg
g4
(null) (null)
(null)
xxx
12
gdf
ggg
12
khf
k3h
sss 45
xxx
23
26
(null) (null)
sss
(null)
20
V cu lnh
SELECT * FROM R,S
WHERE R.A =* S.E
Cho kt qu l:
A
----
-----
-----
----- -----
------ ---------
aaa
aaaa
aaa
(null)
xxx
12
gdf
xxx
23
26
(null)(null) (null)
(null) abc
(null)(null) (null)
(null) (null)12
sss
45
k3h
sss
(null)
20
Khng hp l
T1 =* T2 *= T3
T1 *= T2 *= T3
T1 = T2 *= T3
T1 *= T2 = T3
T1 *= T2 =* T3
T3
T3
7UDQJ
||
||
T2 =* T1 *= T4
T2 =* T1 =* T4
||
||
T5
T5
T3
T3
||
||
T2 *= T1 =* T4
T2 *= T1 *= T4
||
||
T5
T5
* Php ni v cc gi tr NULL
Nu trong cc ct ca cc bng tham gia php ni c cc gi tr NULL th cc
gi tr NULL c xem nh l khng bng nhau. Chng hn ta c hai bng:
A
------
---------
--------
--------
b1
Null
d1
Null
b2
d2
b3
Bng R
Bng S
Th cu lnh:
SELECT * FROM
R, S
WHERE A *= C
S cho kt qu l:
A
------
------
------
------
b1
Null
Null
Null
b2
Null
Null
b3
D2
theo tng nhm. Nhng gi tr thng k ny xut hin nh l nhng dng b sung
trong kt qu truy vn. Mt mnh COMPUTE BY cho php ta quan st c cc chi
tit v d liu ln cc gi tr thng k. Ta c th tnh cc gi tr thng k cho cc
nhm con (subgroups) v ta cng c th tnh ton nhiu hm gp trn cng mt
nhm.
Mnh COMPUTE BY c c php nh sau:
COMPUTE
row-aggregate(col_name)
[,...,row_aggregate(col_name)]
BY col_name [,...,col_name]
Kt qu ca truy vn ny s nh sau:
Hoten
tendonvi
hsluong
---------------
--------------
--------------
Nguyn Th Hoa
Phng k ton
2.11
avg
===========
2.11
L Hoi Nam
Phng T chc
1.86
Phng T chc
3.21
avg
===========
2.535
Phng iu hnh
1.92
Nguyn Hu Tnh
Phng iu hnh
1.92
avg
===========
1.92
Phng ti v
7UDQJ
1.86
Cc ct s dng trong mnh COMPUTE phi xut hin trong danh sch
chn.
Chc nng
COUNT(*)
S cc dng c chn.
MAX(expression)
Tnh gi tr ln nht
MIN(expression)
Tnh gi tr nh nht
7UX\YQFRQVXETXHU\
7UDQJ
0W WUX\ YQ FRQ OD PW FX OQK 6(/(&7 F OQJ YDR EQ WURQJ PW FX
OQK 6(/(&7 ,16(57 83'$7( KD\ '(/(7( KRF EQ WURQJ PW WUX\ YQ FRQ
NKDF&XOQKWUX\YQFRQFRWKWKDPFKLXQFXQJPWEDQJYLWUX\YQQJRDL
KRFPWEDQJNKDF7URQJJLDRWDF64/PWWUX\YQFRQWUD Y PWFKJLD WUFR
WKFVGXQJWDLQKQJYWUPDWDLRPWELXWKFFFKRSKHSVGXQJ
&XSKDSWUX\YQFRQ
0WWUX\YQFRQFOQJ YDR EQ WURQJ PW FX OQK 6(/(&7 FR FX SKDS
QKVDX
(SELECT [ALL|DISTINCT] subquery_select_list
[FROM
{table_name|view_name} [optimizer_hints]
[[,table_name2|view_bame2} [optimizer_hints]
[...,table_name16|view_name16}[optimizer_hints]]]
[WHERE clause]
[GROUP BY clause]
[HAVING clause])
&XOQK6(/(&7FXDWUX\YQFRQOXQQPWURQJFSGXQJRF1R NKQJ
F FKD PQK 25'(5 %< &20387( KRF )25 %52:6( 0W WUX\ YQ
FRQ FR WK F OQJ YDR EQ WURQJ PQK :+(5( KD\ +$9,1* FXD PW FX
OQK6(/(&7,16(57 KD\ '(/(7( KRF EQ WURQJ WUX\ YQ FRQ NKDF 1X PW
WUX\YQFRQWUD Y FKPWJLD WUQR FR WK FV GXQJWDLQKQJYWUPD R
PWELXWKFFFKRSKHSV GXQJ0W WUX\ YQ FRQ NKQJ F SKHS V GXQJ
EQWURQJPWGDQKVDFKFXDPQK25'(5%<
&DFFXOQKFKDWUX\YQFRQWKQJFRPWWURQJVFDFGDQJVDX
(1)
(2)
(3)
9GX&XOQKVDX\KLQWKLWKQJWLQYFDFQKQYLQODPYLFQKQJ
QYFRVLQWKRDLNKQJEWXELV
SELECT *
FROM nhanvien
WHERE madonvi NOT IN ( SELECT madonvi
FROM donvi
WHERE dienthoai like '82%')
%VXQJFSQKWYD[RDGOLX
%VXQJGOLX
j E VXQJ G OLX YDR WURQJ PW EDQ G OLX WD V GXQJ FX OQK ,16(57
'DQJQJLDQQKWFXDFXOQKQD\FRFXSKDSQKVDX
INSERT [INTO]
table_name
7URQJGRWDEOHBQDPHODWQFXDEDQJFQWKDRWDF6OQJFDFJLDWUFFK
QKSKDLJLQJV OQJFDFFWNKLQKQJKDEDQJYD NLXG OLXFXDFDFJLD WU
QD\SKDLSKXKSYLNLXGOLXFXDFDFFWWQJQJ
9GX&XOQKGL\EVXQJWKPPWQKQYLQYDREDQJQKDQYLHQ
INSERT INTO nhanvien
VALUES('NV02003','L Th Mai','23/5/72',
NULL,'523312',1.92,'02')
7URQJWUQJKSFKQKSGOLXFKRPWVFWWURQJEDQJWDSKDLFKQK
GDQKVDFKFDFFWFQQKSGOLXQJD\VDXWQEDQJ.KLRFXOQK,16(57FRFX
SKDSQKVDX
INSERT [INTO]
table_name(col1,col2,..., colN)
7URQJWUQJKSQD\FDFFWNKQJFQKSGOLXVHQKQJLDWUPFQK
QXFRKRFQKQJLD WU18//1XWDNKQJQKSG OLXFKRPWFWNKQJFR
UDQJEXF'()$8/7YD FXQJNKQJFKRSKHSFKSQKQJLD WU18//FXOQKVH
EOL
9GX
INSERT INTO nhanvien(manv,hoten,diachi)
VALUES('NV03002','Nguyn Th Hanh Dung','56 Trn Phu')
&SQKWGOLX
&XOQK83'$7(FKRSKHSQJLVGXQJWKD\LGOLXDWQWDLEQWURQJ
EDQJGOLX&XOQKQD\FRFXSKDSQKVDX
7UDQJ
updated_table_name
colname = expression
[, ..., colname = expression ]
[FROM
[WHERE
conditions ]
9GX&XOQKGL\WQJOQJOQFKRQKQJQKQYLQODPYLF
WDLQYFRPDQYOD
UPDATE nhanvien
SET hsluong = hsluong+0.2
WHERE madonvi ='04'
0QK )520 WURQJ FX OQK 83'$7( F V GXQJ NKL FQ FK QK FDF
LXNLQFSQKWOQTXDQQFDFEDQJNKDF
9GX*LDVWDFRKDLEDQJ0$7+$1*YD1+$7.<%$1+$1*QKVDX
0$7+$1*
0$+$1*
1+$7.<%$1+$1*
1*$<%$1
0$+$1*
7(1+$1*
'21*,$
62/821*
7+$1+7,(1
&X OQK GL \ VH FS QKW JLD WU FKR WUQJ 7+$1+7,(1 WURQJ EDQJ
1+$7.<%$1+$1*WKHRFQJWKF7+$1+7,(1 62/821*'21*,$
UPDATE nhatkybanhang
SET
thanhtien = soluong*mathang.dongia
FROM mathang
WHERE nhatkybanhang.mahang = mathang.mahang
;RDGOLX
j [RD FDFEDQJKLG OLXUDNKRLEDQJG OLXWDV GXQJFXOQK'(/(7(
FRFXSKDSQKVDX
DELETE
[FROM]
delete_table_name
9 GX &X OQK GL \ [RD NKRL EDQJ QKDQYLHQ QKQJ QKQ YLQ ODP
YLFWDLQYFRVLQWKRDLOD
7UDQJ
&XOQK*5$17
&XOQK*5$17FV GXQJQKPFSSKDWTX\QFKRQJLVX GXQJWUQ
FDFLWQJ&6'/KRFTX\QWKFWKLFDFFXOQK64/&XSKDSFXDFXOQKQD\
FRKDLGDQJQKVDX
'DQJ&SSKDWTX\QLYLFDFFXOQK
GRANT ALL | statement [,...,statementN ]
TO account [,...,accountN]
'DQJ&SSKDWTX\QLYLFDFLWQJ&6'/
GRANT ALL | permission [,...,permissionN]
ON table_name |view_name [(column1 [,...,columnN])]
|ON stored_procedure
TO account [,...,accountN]
7URQJR
$//ODWNKRDFVGXQJNKLPXQFSSKDWWWFDFDFTX\QFRWKFKR
QJLVGXQJ
6WDWHPHQWODFXOQKFFSSKDWTX\QFKRQJLVGXQJ&DFFXOQK
FRWKFSSKDWFKRQJLVGXQJEDRJP
&5($7('$7$%$6(
&5($7('()$8/7
&5($7(352&('85(
&5($7(58/(
&5($7(7$%/(
&5($7(9,(:
%$&.83'$7$%$6(
%$&.83/2*
DFFRXQWODWQWDLNKRDQFXDQJLVGXQJNKLQJQKSYDRKWKQJ
9GX
&SSKDWTX\QWKFWKLFXOQK&5($7(7$%/(YD&5($7(9,(:FKRWDL
NKRDQFRWQODGEBXVHU
GRANT CREATE TABLE, CREATE VIEW
TO db_user
SELECT, UPDATE
ON nhanvien(hoten,diachi,dienthoai,hsluong)
TO db_user1, db_user2
&XOQK5(92.(
&XOQK5(92.(FVGXQJKX\ERTX\QDFFSSKDWFKRQJL
V GXQJWUQFDFLWQJ&6'/ KRFFXOQK64/&XOQK5(92.(FXQJ FR
KDLGDQJQKVDX
'DQJ+X\ERTX\QLYLFXOQK
REVOKE ALL | statement [,...,statementN]
FROM account [,...,accountN]
'DQJ+X\ERTX\QLYLLWQJ&6'/
REVOKE ALL | permission [,...,permissionN]}
ON table_name | view_name [(column [,...,columnN])]
| stored_procedure
FROM
account [,...,accountN ]
9 GX +X\ ER TX\Q [HP YD FS QKW G OLX WUQ FW KVOXRQJ FXD EDQJ
QKDQYLHQLYLWDLNKRDQFRWQODGEBXVHU
7UDQJ
+X\ERWWFDFDFTX\QDFSSKDWFKRWDLNKRDQFRWQODGEBXVHU
REVOKE ALL
FROM db_user
Z Y
V d 4.1:
CREATE PROC sp_list
@bten char(20)
AS
SELECT hoten, ngaysinh, diachi
FROM nhanvien
WHERE hoten= @bten
@tham_s = gi_tr
Th th t cc tham s khng cn phi tun theo th t nh khi to th tc bng cu
lnh CREATE PROCEDURE. Tuy nhin, nu nh c mt tham s c truyn gi
tr theo cch trn th tt c cc tham s cn li cng phi c truyn gi tr theo cch
.
Ta c th gn mt gi tr mc nh cho tham s trong cu lnh CREATE
PROCEDURE. Gi tr ny, c th l hng bt k, s c ly lm tham s ca th tc
khi ngi s dng khng cung cp gi tr cho tham s khi gi th tc.
V d 4.2:
CREATE PROC sp_list;2 @bten char(20)=Nguyen Van A
AS
SELECT * FROM nhanvien
WHERE hoten = @bten
Ta th gi th tc trn nh sau:
msp_list;3 @btuoi=23
m khng b li.
Mc nh c th bao gm cc k t i din (%, _, [], [^] ) nu th tc s dng
tham s vi t kha LIKE.
V d 4.4:
CREATE PROC sp_list;4 @bten char(20) =Trn%
AS
SELECT * FROM nhanvien
WHERE hoten LIKE @bten
,Thng tin tr v t cc th tc lu tr
Cc gi tr trng thi tr v:
Cc th tc c th tr v mt gi tr nguyn c gi l mt trng thi tr v. Gi
tr ny ch ra cho bit th tc c thc hin thnh cng hay gp li v nguyn nhn
ca li (SQL Server nh ngha sn mt tp cc gi tr tr v, cc gi tr ny nm
trong khong [-99;0]; trong gi tr tr v bng 0 tc l vic thc hin th tc thnh
cng, cc gi tr cn li cho bit nguyn do khi b li).
Gi tr tr v do ngi s dng nh ngha
Ngi s dng c th nh ngha cc gi tr tr v ca mnh trong cc th tc
lu tr bng cch b sung mt tham s vo cu lnh RETURN. Tt c cc s nguyn
ngoi tr cc gi tr dnh ring cho h thng u c th c s dng.
V d 4.5:
CREATE PROC sp_exam @bten char(20)
AS
IF EXISTS (SELECT * FROM nhanvien WHERE hoten = @bten)
RETURN 1
ELSE
RETURN 2
Cc tham s tr v
Khi c hai cu lnh CREATE PROCEDURE v EXECUTE cha mc chn
OUTPUT cho tn mt tham s, th tc c th s dng mt bin tr v tr ca tham
s n ngi gi. Bng vic s dng t kho OUTPUT, bt c s thay i no n
cng vn cn gi li sau khi th tc c thc hin, v cc bin c th c s dng
trong cc cu lnh SQL b sung sau trong tp lnh hay th tc c gi. Nu t
kho OUTPUT khng c s dng, vic thay i n tham s s khng c gi li
sau khi kt thc thc hin th tc. Ngoi ra, ta cn c th dng RETURN tr v gi
tr.
Mt th tc lu tr c th s dng bt k hoc tt c kh nng sau tr v:
Mt hoc nhiu tp cc gi tr.
Mt gi tr tr v r rng (s dng cu lnh RETURN).
Mt tham s OUTPUT.
Nu chng ta ch nh OUTPUT khi thc hin mt th tc nhng tham s tng
ng khng c nh ngha vi OUTPUT khi to th tc th s b li. Tuy nhin nu
ta nh ngha OUTPUT cho mt tham s trong th tc nhng khng ch nh
OUTPUT khi thc hin th vn khng b li (gi tr tham s khi s khng c tr
v).
V d 4.6:
CREATE PROC Chia @sobichia real,@sochia real,
@kqua real OUTPUT
AS
IF (@sochia =0)
Print Division by zero
ELSE
SELECT @kqua = @sobichia / @sochia
S cho kt qu l:
---------------------50.0
Cn nu thc hin
DECLARE @ketqua
real
EXEC Chia 100, 2, @ketqua
SELECT @ketqua
7UDQJ
OUT
S cho kt qu l:
---------------------(null)
CREATE TRIGGER
CREATE DEFAULT
CREATE PROCEDURE
CREATE RULE
Cc i tng CSDL khc c th c to bn trong mt th tc lu tr. Ta
c th tham chiu mt i tng c to trong cng th tc min l n
c to trc khi tham chiu.
Bn trong mt th tc, ta khng th to mt i tng, xo n v sau to
mt i tng mi vi cng tn.
Ta c th tham chiu cc bng tm thi bn trong mt th tc.
Nu ta thc thi mt th tc m gi n th tc khc, th tc c gi c th
truy cp n mi i tng ngoi tr cc bng tm thi c to bi th tc
u tin.
Nu ta to mt bng tm thi ring (private temporary table) bn trong mt
th tc, bng tm thi ch tn ti cho nhng mc ch ca th tc ; n s
mt i khi thot ra khi th tc.
S tham s ti a ca mt th tc l 255.
S bin cc b v ton cc trong mt th tc ch b gii hn bi kh nng b
nh.
Cc th tc tm thi cc b (private) v ton cc (public), tng t nh cc
bng tm thi, c th c to vi du # v ## ng trc tn th tc. # biu
din th tc tm thi cc b cn ## biu din th tc tm thi ton cc.
I.4 Xc nh tn bn trong cc th tc
Bn trong mt th tc, tn cc i tng c s dng vi cu lnh ALTER
TABLE, CREATE TABLE, DROP TABLE, TRUNCATE TABLE, CREATE INDEX,
DROP INDEX, UPDATE STATISTICS v DBCC phi c xc nh vi tn ca
ngi s hu i tng (object owners name) nu nh nhng ngi dng (user) khc
s dng th tc. V d, ngi dng Mary, l s hu ch ca bng marytab, phi ch
nh tn ca bng ca mnh khi n c s dng vi mt trong nhng cu lnh ny
nu c ta mun nhng user khc c th thc hin th tc m trong bng c s
dng.
Qui tc ny l cn thit v tn i tng c phn tch khi cc th tc c
chy. Nu marytab khng c ch nh v user John tm cch thc hin th tc, SQL
I.5 i tn cc th tc:
S dng th tc:
sp_rename old_name, new_name
proc_name
7UDQJ
II.1 To cc trigger
Mt trigger l mt i tng CSDL. Ta to mt trigger bng vic ch nh bng
hin hnh v cu lnh sa i d liu kch hot trigger. Sau ta xc nh cc cng
vic m trigger lm.
Mt bng c th c ti a 3 loi trigger: mt trigger cp nht (update trigger),
mt trigger chn (insert trigger) v mt trigger xa (delete trigger). Tuy nhin, mi
trigger c th thc hin nhiu hm v gi n 16 th tc. Mi trigger ch c th p
dng cho mt bng. Tuy nhin, mt trigger n c th p dng cho c 3 cng vic
(UPDATE, INSERT v DELETE).
Ta khng th to mt trigger trn mt khung nhn hay mt bng tm thi mc d
cc trigger c th tham chiu cc khung nhn hay cc bng tm thi.
Cu lnh TRUNCATE TABLE mc d ging cu lnh DELETE khi khng c
mnh WHERE nhng n khng th kch hot mt trigger.
to mi mt trigger, ta s dng cu lnh c c php nh sau:
CREATE TRIGGER trigger_name
ON table_name
FOR {INSERT, UPDATE, DELETE}
AS
sql_statements
V d 4.7: Nu chng ta mun sau khi ta cp nht d liu cho bng nhanvien,
SQL Server s hin th ni dung ca bng xem th ta to mt trigger nh sau:
CREATE TRIGGER tgr_check
ON nhanvien
FOR INSERT, UPDATE
AS
print '*** Ket qua sau khi cap nhat
SELECT * FROM nhanvien
***'
Cu lnh SQL trong trigger c th sau kim tra xem col1 l NULL hay
khng.
II.3 Vic i tn v cc trigger
Nu mt bng c tham chiu bi mt trigger b i tn, ta phi xo trigger
i v to li n ph hp vic tham chiu ca n n bng.
Th tc sp_depends c chc nng lit k tt c cc trigger tham chiu n i
tng (chng hn bng hay khung nhn) hoc tt c cc bng hay khung nhn m
trigger tc ng. V d sau y lit k cc i tng c tham chiu bi trigger
tgr_check:
sp_depends
tgr_check
trigger_name
II.5 Xo trigger
Ta c th xo mt trigger bng cch xo n hoc xo bng trigger. Khi mt
bng c xa, nhng trigger no c lin quan vi n cng ng thi b xa. DROP
TRIGGER mc nh cho php i vi ngi s dng bng trigger v khng th
chuyn cho ngi khc.
Ta c th xa mt trigger bng cch s dng cu lnh DROP TRIGGER
'219,
0$'219,
7(1'219,
',(17+2$,
%DQJ1+$19,(1
0$19
+27(1
1*$<6,1+
',$&+,
',(17+2$,
+6/821*
0$'219,
19
1JX\Q7K+RD
/'XQ
19
/+RDL1DP
7UQ3KX
19
+RDQJ1DP3KRQJ
+RDQJ'LX
19
7UQ1JX\Q3KRQJ
+D1L
19
1JX\Q+X7QK
+D1L
19
1JX\Q7UXQJ.LQ
1JX\Q+X
%DQJ'219,
0$'219,
7(1'219,
',(17+2$,
3KRQJ.WRDQ
3KRQJ7FKF
3KRQJLXKDQK
3KRQJLQJRDL
3KRQJ7DLYX
0WVKDPWKQJVGXQJWURQJ64/6HUYHU
&DFKDPWUQGOLXNLXQJD\YDJL
D+DP'$7($''
7UDQJ
&XSKDS'$7($''GDWHSDUWQXPEHUGDWH
&KF QQJ +DP WUD Y PW JLD WU NLX 'DWH7LPH EQJ FDFK FQJ WKP PW
NKRDQJJLDWUODQXPEHUYDRQJD\GDWHFFKQK
'DWHSDUW WKDP V FK QK WKDQK SKQ VH F FQJ L YL JLD WU GDWH EDR
JP
'DWHSDUW
\HDU
TXDUWHU
PRQWK
GD\RI\HDU
GD\
ZHHN
KRXU
PLQXWH
VHFRQG
PLOOLVHFRQG
9LWWW
\\\\\\
TTT
PPP
G\\
GGG
ZNZZ
KK
PLQ
VVV
PV
E+DP'$7(',))
&XSKDS'$7(',))GDWHSDUWVWDUWGDWHHQGGDWH
&KFQQJ+DPWUDYNKRDQJWKLJLDQJLDKDLJLDWUNLXQD\FFKQK
WX\WKXFYDRWKDPVGDWHSDUW
9GXKDP'DWHGLII\HDU
FKRNWTXDOD
F+DP'$7(3$57
&XSKDS'$7(3$57GDWHSDUWGDWH
&KFQQJ+DPWUD Y PW V QJX\Q F WUFK UD W WKDQK SKQ F FK
QKELWKDPVSDUWGDWHWURQJJLDWUNLXQJD\FFKQK
9GX+DP'DWH3DUW\HDU
FKRNWTXDOD
G+DP*(7'$7(
&XSKDS*(7'$7(
&KFQQJ+DPWUDYQJD\KLQWDL
H+DP'$<0217+<($5
&XSKDS'$<GDWH0217+GDWH<($5GDWH
&KF QQJ +DP WUD Y JLD WU QJD\ WQJ QJ WKDQJ QP FXD JLD WU NLX
QJD\FFKQK
&DFKDPYFKXL
D+DP/()7
&XSKDS/()7VWULQJQ
&KFQQJ+DPWUFKUDWFKXLVWULQJQN\WWQKWEQWUDL
E+DP5,*+7
&XSKDS/()7VWULQJQ
&KFQQJ+DPWUFKUDWFKXLVWULQJQN\WWQKWEQSKDL
F+DP68%675,1*
&XSKDS68%675,1*VWULQJPQ
&KFQQJ+DPWUFKUDWFKXLVWULQJQN\WWQKWN\WWKP
G+DP/75,0575,0
&XSKDS/75,0VWULQJ575,0VWULQJ
&KFQQJ+DPFWERFDFNKRDQJWUQJWKDEQWUDLEQSKDLFKXLVWULQJ
H+DP/(1
&XSKDS/(1VWULQJ
&KFQQJ+DPWUDYGDLFXDFKXLVWULQJ
7UDQJ
MUC LUC
&+ml1*1*k11*muir1+1*+p$'mu/,j8
7$2%$u1*'nv/,k8
&DFWKXFWQKOLQTXDQQEDQJ
7DREDQJEQJWUX\YQ64/
6DLEDQJ
&+p08&,1'(;
.+81*1+o19,(:
&+ml1*1*k11*mu7+$27$v&'mu/,j8
758<;8i7'nv/,k8
1.1 Xc nh bng bng mnh FROM ...................................................................................................12
1.2 Mnh WHERE.................................................................................................................................13
1.3 Danh sch chn trong cu lnh SELECT ............................................................................................14
1.4 Tnh ton cc gi tr trong cu lnh SELECT .....................................................................................16
1.5 T kho DISTINCT .............................................................................................................................16
1.6 To bng mi bng cu lnh SELECT ... INTO ..................................................................................17
1.7 Sp xp kt qu truy vn bng ORDER BY..........................................................................................17
1.8 Php hp v ton t UNION...............................................................................................................18
1.9 Php ni...............................................................................................................................................20
1.10 To cc dng thng k d liu vi COMPUTE ... BY........................................................................24
1.11 Thng k d liu vi GROUP BY v HAVING...................................................................................26
1.12 Truy vn con (subquery)..................................................................................................................27
%l681*&i31+i79$t;2$w'nv/,k8
%VXQJGOLX
&SQKWGOLX
;RDGOLX
&+ml1*1*k11*mui,j|8.+,j}1
&i8/k1+*5$17
&i8/k1+5(92.(
&+ml1*7+8t78&/m875mu9$s75,**(5
,6nu'81*7+8u78&/n875nv6725('352&('85(
I.1. To cc th tc lu tr ........................................................................................................................35
I.2. Thng tin tr v t cc th tc lu tr.................................................................................................36
I.3. Cc qui tc s dng cho sp .................................................................................................................38
I.4 Xc nh tn bn trong cc th tc .......................................................................................................38
I.5 i tn cc th tc:..............................................................................................................................39
I.6. Xo th tc: .........................................................................................................................................39
II. S DNG CC TRIGGER
II.1 To cc trigger....................................................................................................................................40
II.2 Cc gi tr null ngm nh v hin (implicit and explicit null values)................................................40
II.3 Vic i tn v cc trigger ..................................................................................................................41
II.4 Hin th thng tin v cc trigger .........................................................................................................41
II.5 Xo trigger .........................................................................................................................................42
&+ml1*3+8/8&
&i8758w&9$t'nv/,k8&8u$%$u1*1+$19,(19$t'219,
0l76l+$t07+nmt1*6nu'81*7521*64/6(59(5
&DFKDPWUQGOLXNLXQJD\YDJL
2.2 Cac ham v chui..........................................................................................................................44