Giáo trình Thực hành SQL - Trần Nguyên Phong
Giao trçnh thæc hanh SQL
*,lv,ꢀ7+,j8
64/ꢀꢁ6WUXFWXUHGꢀ4XHU\ꢀ/DQJXDJHꢂꢀODꢀQJQꢀQJꢀFꢀVꢀGXQJꢀFKRꢀFDFꢀK£ꢀTXDQ
WUꢀFꢀVꢀGꢀOLXꢀTXDQꢀKꢃꢀ1JQꢀQJꢀ64/ꢀFKXQꢀFꢀDꢀUDꢀELꢀ$16,ꢀꢁ$PHULFDQ
1DWLRQDOꢀ 6WDQGDUGVꢀ ,QVWLWXGHꢂꢀ YDꢀ ꢀ ,62ꢀ ꢁ,QWHUQDWLRQDOꢀ 6WDQGDUGVꢀ 2UJDQL]DWLRQꢂꢀ YL
SKLQꢀ EDQꢀ PLꢀ QKWꢀ KLQꢀ QD\ꢀ ODꢀ SKLQꢀ EDQꢀ 64/ꢄꢅꢆꢀ ꢁSKLQꢀ ED
ꢇꢅꢅꢆꢂꢃꢀꢀ0FꢀGXꢀFRꢀQKLXꢀQJQꢀQJꢀNKDFꢀQKDXꢀFꢀDꢀUDꢀFKRꢀFD
TXDQꢀKꢈꢀ64/ꢀODꢀQJQꢀQJꢀFꢀVꢀGXQJꢀUQJꢀUDLꢀKLQꢀQD\ꢀWURQJꢀU
&6'/ꢀWKQJꢀPDLꢀQKꢀ2UDFOHꢈꢀ64/ꢀ6HUYHUꢈꢀ'%ꢆꢈꢀ0LFURVRIWꢀ$FFHVVꢃꢃꢃꢀ7KQJꢀTXDꢀ64/ꢈ
Qꢀ
FꢀKꢀTXD
WꢀQKL
¤
Fꢀ Dꢀ UDꢀ QP
QꢀWUꢀ&6'/
XꢀKꢀWKQJ
£
¤
£
¢
£
¢
QJ
NKDFꢈꢀ\ꢀOD
SKꢀEL
*LDRꢀWULQKꢀQD\ꢀQKPꢀFXQJꢀFSꢀFKRꢀEDQꢀWDLꢀOLXꢀWKDPꢀNKDRꢀWQJꢀ
LꢀV
£
QJꢀFR
¡
QJꢀQKꢀQJKDꢀ
¤
FꢀG
ꢀOL
£
ꢀQJQꢀQJ
¡
ꢀGX£QJꢀYDꢀFXQJꢀYꢀY£\ꢀPDꢀWUꢀQQ
¢
FDFꢀFXꢀOQKꢀJLDRꢀWDFꢀ64/ꢀVꢀGXQJꢀFKRꢀKꢀTXDQꢀWUꢀ&6'/ꢀ0LFURVRIWꢀ64/ꢀ6HUYHUꢃ
*LDRꢀWUQKꢀEDRꢀJPꢀEQꢀFKQJꢉ
ꢄꢀ&KQJꢀꢇꢀJLLꢀWKLXꢀPWꢀVꢀFXꢀOQKꢀVꢀGXQJꢀWURQJꢀYLFꢀQKꢀQJKDꢀFD
QJꢀGꢀOLXꢀQKꢀEDQJꢀGꢀOLXꢈꢀNKXQJꢀQKQꢀYDꢀFKꢀPXFꢃ
Fꢀ¢L
W
¤
£
£
£
ꢄꢀ &KQJꢀ ꢆꢀ WUQKꢀ ED\ꢀ EQꢀ FXꢀ OQKꢀ WKDRꢀ WDFꢀ Gꢀ OLXꢀ ODꢀ 6(/(&7ꢈꢀ ,16(57ꢈ
83'$7(ꢀYDꢀ'(/(7(ꢊꢀWURQJꢀRꢀWSꢀWUXQJꢀFKXꢀ\XꢀꢀFXꢀOQKꢀ6(/(&7ꢃ
£
¢
£
ꢄꢀ&KQJꢀꢋꢀꢀF£SꢀQꢀKDLꢀFXꢀO£QKꢀLXꢀNKLQꢀODꢀ*5$17ꢀYDꢀ5(92.(ꢀV
¢
ꢀGX£QJ
WURQJꢀYL£FꢀFSꢀSKDWꢀYDꢀKX\ꢀERꢀTX\QꢀFXDꢀQJLꢀVꢀGX£QJꢀ&6'/ꢃ
¢
ꢄꢀ&KQJꢀ ꢌꢀJLLꢀWKLXꢀYꢀWKXꢀWXFꢀOXꢀWUꢀYDꢀ WULJJHUꢃꢀ j\ꢀ ODꢀ QKQJꢀ Lꢀ WQJ
&6'/ꢀFꢀVꢀGXQJꢀQKPꢀWQJꢀKLXꢀQQJꢀNKLꢀVꢀGXQJꢀ&6'/ꢃ
ꢄꢀ7URQJꢀFKQJꢀSKXꢀOXFꢈꢀFKXQJꢀWLꢀJLLꢀWKLXꢀFXꢀWUXFꢀYD
ꢀOL£XꢀFX
DꢀFD
QJꢀV
ꢀQXꢃ
GX
£
£
£
£
¢
¢
LꢀFD
£
1JRDLꢀUDꢀWURQJꢀFKQJꢀQD\ꢀFRQꢀFRꢀFDFꢀKDPꢀWKQJꢀVꢀGXQJꢀWURQJꢀ64/ꢀ6HUYHUꢀꢀFDF
EDQꢀWKDPꢀNKDRꢀWURQJꢀWKFꢀKDQKꢃ
0FꢀGXꢀDꢀUWꢀFꢀJQJꢀQKQJꢀJLDRꢀWUQKꢀNKQJꢀWKꢀWUDQKꢀX¤FꢀFDFꢀVDLꢀVRWꢃꢀ5¢W
PRQJꢀQKQꢀFꢀVꢀJRSꢀ\ꢀFXDꢀFDFꢀEDQꢀꢀJLDRꢀWUQKꢀQJD\ꢀFDQJꢀKRDQꢀWKLQꢀKQꢃ
7UDQJꢀꢁ
Trán Nguyãn Phong
Chæång 1: NGÄN NGÆ ÂËNH NGHÉA DÆ LIÃU
1JQꢀQJ
ꢀQKꢀQJKDꢀG
ꢀOL£
XꢀEDRꢀJ
PꢀFD
£
QKꢀFKRꢀSKHSꢀQJLꢀVꢀGXQJꢀQK
QJKDꢀ&6'/ꢀYD
ꢀFDFꢀ
¢
LꢀW
¤
FꢀNKXQJꢀQKQꢂꢀFKꢀPXFꢂꢃꢃꢃ
ꢁꢂꢀ7DRꢀEDQJꢀGꢀOLꢃX
'ꢀOLXꢀEQꢀWURQJꢀP
QJꢂꢀGꢀOLXꢀFꢀWꢀFK
PWꢀEDQꢀJKLꢀGX\ꢀQKWꢀYDꢀP
ꢁꢂꢁꢀꢀ&DFꢀWKXFꢀWQKꢀOLꢃQꢀTXDQꢀꢃQꢀEDQJ
.KLꢀWDRꢀYDꢀODPꢀYLFꢀYLꢀFDFꢀEDQJꢀG
QJꢀQKꢄꢀNLXꢀGꢀOLXꢂꢀFDFꢀUDQJꢀEX
FꢀVꢀGXQJꢀQKPꢀWDRꢀUDꢀFDFꢀUDQJꢀEX
RꢀUDꢀFDFꢀWRDQꢀYHQꢀWKDPꢀFKLXꢀJL
£
¤
Wꢀ&6'/ꢀ
¤
FꢀWꢀFK
FꢀGRQJꢀYD
WꢀELXꢀGLQꢀFKRꢀP¤
ꢀWURQJꢀFD
FꢀED
F
ED
£
¤
LꢀGD
£
¤
Wꢃꢀ0
¡
LꢀP
¤
¡Q
¤
¢
¡
¤
¤
¡
£
£
£
XꢂꢀWDꢀF
FꢂꢀFDFꢀNKRD
FꢀWRDQꢀYHQꢀWUQꢀFD
DꢀFDFꢀEDQJꢀGꢀOLXꢀWURQJꢀ&6'/ꢃ
Lꢀꢀ\
FꢀTXLꢀW
FꢀFWꢀꢅWU
¢
FꢀWKX
¤FꢀWQK
NKD
WQKꢀQD
ED
Dꢂꢀ.LꢃXꢀGꢀOLꢃX
0LꢀPWꢀF
QKꢀDꢀFꢀQKꢀQJKDꢀW
FꢀFKRꢀSKH
FKXQꢂꢀQJRDLꢀUDꢀFR
GDꢀWUQꢀFD
'Lꢀ\ꢀODꢀPWꢀVꢀNLXꢀGꢀOLXꢀWKQJꢀFꢀVꢀGXQJꢀWURQJꢀJLDRꢀWD
£
¤
FꢀWKX¤F
\ꢀ
¤
£
£
¤
£
¤
QJꢀQKꢀWD
£
£
£
¡
¤
¤
WꢀꢅWU
DꢀP
¤
WꢀED
XꢀSKD
LꢀWKX
ꢀOLXꢀTXLꢀQKꢀFD
QJꢀFXQJꢀFSꢀFD
QJꢀQKꢀQJKDꢀFDFꢀNLXꢀG
¤
¤
ꢀOL£
¢W
¤
ꢀWU
Fꢃꢀ0
FꢀK
ꢀWKꢀFKRꢀSKHSꢀQJ
XꢀDꢀFR
¡
LꢀP
¤
£
£X
¤
Sꢀ
¢
LꢀF
¤
ꢃꢀ&D
£
ꢀTXD
¢
£X
£
F
£
FꢀNLXꢀG
£
ꢃ
Fꢀ64/ꢄ
Binary
Bit
Int
Smallint
Smallmoney
Text
Money
Char
Nchar
Datetime
Decimal
Float
Image
Ntext
Tinyint
Varbinary
Varchar
Nvarchar
Real
Smalldatetime
Eꢂꢀ&DFꢀUDQJꢀEXFꢀꢄ&21675$,176ꢅ
7UQꢀFDFꢀEDQJꢀGꢀOLXꢂꢀFDFꢀUDQJꢀEX
• 4XLꢀQKꢀFDFꢀJLDꢀWUꢀGꢀOLXꢀKD\ꢀNKXQꢀGD
FDFꢀFWꢀFXDꢀEDQJꢀꢅUDQJꢀEXFꢀ&+(&.ꢆ
• 4XLꢀQKꢀJLDꢀWUꢀPFꢀQKꢀFKRꢀFDFꢀFWꢀꢅUD
£
¤
Fꢀ
¤
FꢀV
£
QJꢀQK
PꢀFD
£
FꢀFKꢀVDXꢄ
SꢀQKQꢀWUQ
£
£
QJꢀG
£
¤
¢
£
¤
¤
£
¤
QJꢀEX¤Fꢀ'()$8/7ꢆꢃ
Giao trçnh thæc hanh SQL
QꢀYHQꢀWKDPꢀFKLXꢀJL
Fꢀ 35,0$5<ꢀ .(<ꢂꢀ 81,48(ꢀ YD
• 7D
FDFꢀ ED
)25(,*1ꢀ.(<ꢆꢃ
&KXQJꢀWDꢀVHꢀWPꢀKLXꢀFKLꢀWL
&5($7(ꢀ7$%/(ꢃ
ꢁꢂꢆꢀ7DRꢀEDQJꢀEQJꢀWUX\ꢀYQꢀ64/
£
QꢀYH
£
QꢀWK
£
¤
WꢀED
QJꢀG
£
XꢀYD
£
¢
D
£
Xꢀ WURQJꢀ &6'/ꢀ ꢅUD
¤
¢WꢀKQꢀYꢀFDFꢀUDQJꢀEX¤FꢀQD\ꢀꢀSKQꢀWUQKꢀED\ꢀYꢀFXꢀO£QK
7D
Fꢀ&6'/ꢃꢀ%QꢀWURQJꢀFD
WKQJꢀWKLꢀYꢀFDFꢀLꢀW
LꢀWQJꢀRꢃꢀjꢀFRꢀWKꢀWꢀFK
FꢀFDFꢀ\XꢀFXꢀVDXꢄ
• %DQJꢀFꢀV
• %DQJꢀVHꢀEDRꢀJ
• 1KQJꢀFWꢀQD
• &RꢀVꢀGXQJꢀFD
QKXꢀWKꢀQDR"
• 1KQJꢀFWꢀQD
GDQJꢀFKꢀPXFꢀQD
Dꢂꢀ7DRꢀEDQJꢀGꢀOLꢃXꢇ
jꢀWDRꢀPWꢀEDQJꢀWURQJꢀ&6'/ꢂꢀED
SꢀQKꢀVDXꢄ
£
FꢀED
ꢀP
¤
¤
QJꢀWURQJꢀTXD
QJꢀWKQJꢀFꢀV
FꢀYDꢈKRFꢀELXꢀGLQꢀP
QJꢀGꢀOLXꢂꢀEDQꢀWꢀQKWꢀF
ꢀWUQKꢀWKL
ꢀGXQJꢀQK
LꢀTXDQꢀK
QꢀSKDLꢀ[D
¢
WꢀN
PꢀELXꢀGL
ꢀJL
FꢀQK
¢ꢀYDꢀFDLꢀG£
FD
Fꢀ&6'/ꢂꢀP
¤
£
¡
Q
¤
QJꢀWURQJꢀWK
£
¡
¢
£
DꢀFDF
¢
¤
£
£
¢
¤
¤
ꢀQKꢀWK¢ꢀQD
£
FꢀF¤WꢀR
¤
ꢀQ
¢XꢀFR
ꢀWKꢀV
ꢀGX
£
QJꢀ
¤
QJꢀYDLꢀWUR
ꢀQJRD
LꢂꢀNKRD
ꢀGX\ꢀQK¢
W"ꢀ1K
QJ
£
£
¤
SKD
CREATE TABLE table_name
(
{colname_1 col_1_properties
[constraints_1 ]
[,{colname_2 col_2_properties [constraints_2 ]]
...
[,{colname_N col_N_properties [constraints_N ]]
[table_constraints]
)
7URQJꢀRꢇ
- table_name:
7Qꢀ ED
WURQJꢀP
QKꢀGDQK
7QꢀFXDꢀF
QJꢀ F
Rꢃꢀ 7Qꢀ FX
ꢀSKD
Dꢀ ED
QJꢀ SKD
Lꢀ GX\ꢀ QK
¢W
¡
Lꢀ&6'/ꢀYD
FꢀTXLꢀW
FꢀY
- colname_i:
¤WꢀWK
ꢀLꢀWURQJꢀED
QJꢃꢀ&D
FꢀF
¤WꢀWURQJꢀP
¡
L
7UDQJꢀꢇ
Trán Nguyãn Phong
LꢀWXQꢀWKHRꢀFD
Wꢀ EDQJꢀ SKDLꢀ FRꢀ W
ED
TXLꢀ W
QKWꢀP
LꢀFR
ꢀWQꢀNKD
FꢀQKDXꢀYD
ꢀSKD
F
¡
Lꢀ P
¤
- col_i_properties:
- constraints_i:
&D
FXDꢀF
JLD
&DFꢀ UD
UDQJꢀEX
NKXQꢀGDQJꢀGꢀOLXꢃ
¤
FꢀWQKꢀFX
DꢀF
¤
WꢀWK
ꢀLꢀTXLꢀQKꢀNLXꢀG
ꢀOL
£X
¤
¤
WꢀFR
ꢀFKRꢀSKH
SꢀFK¢
SꢀQK£Q
¤
¢
ꢆꢀ WUQꢀ F
¤
Wꢀ WK
ꢀ Lꢀ QKꢀ FDF
¤
FꢀP£FꢀQKꢂꢀFD
FꢀTXLꢀQKꢀY
- table_constraint:
&DFꢀUD
QJꢀEX
¤
FꢀWUQꢀEDQJꢀGꢀOL£Xꢃ
9ꢀGXꢀꢁꢂꢁꢇꢀ&XꢀO
£
QKꢀG
Lꢀ\ꢀWK
£
FꢀKL£
QKꢀYL£
FꢀWD£RꢀEDQJꢀ1+$19,(1ꢀEDRꢀJPꢀFDFꢀF¤W
0$19ꢂꢀ+27(1ꢂꢀ1*$<6,1+ꢂꢀ',$&+,ꢂꢀ',(17+2$,ꢄ
CREATE TABLE nhanvien
(
manv
char(10) not null,
char(30) not null,
datetime null,
hoten
ngaysinh
diachi
dienthoai
char(50) null,
char(6) null
)
Eꢂꢀ6ꢀGXQJꢀFDFꢀUDQJꢀEXFꢀWURQJꢀEDQJꢀGꢀOLꢃX
Dꢀ5DQJꢀEXFꢀ&+(&.
5D
ꢀ WKꢀ
&+(&.ꢃꢀjꢀNKDLꢀED
SKDSꢀQKꢀVDXꢄ
¤
Fꢀ&+(&.ꢀ
Sꢀ QKQꢀ Lꢀ Y
RꢀPWꢀUDQJꢀEX
¤
FꢀV
Lꢀ P
Fꢀ&+(&.ꢀ
ꢀGX
£
FꢀJLDꢀWUꢀKD\ꢀNKXQꢀGDQJꢀGꢀOLX
FR
¤
¢
£
¢
¤
¤
¤
¤Wꢀ FR
ꢀ WKꢀ FR
ꢀ QKL
Xꢀ UD
QJꢀ EX
¤
F
¤
¤
¢
LꢀP
¤
¤
ꢂꢀWDꢀV
ꢀGX
£
[CONSTRAINT constraint_name]
CHECK (expression)
7URQJꢀR
OLXꢀFꢀFKRꢀSKH
WUꢀXQJꢀPLꢀFꢀFK
9ꢀGXꢀꢁꢂꢆꢇꢀjꢀTXLꢀQKꢀLQꢀWKRDLꢀFXDꢀQKQꢀYLQꢀSKDLꢀFRꢀGDQJꢀꢉꢊꢊꢊꢊꢊꢊꢉꢀꢅFKQJꢀKDQ
ꢋꢌꢍꢎꢍꢎꢆꢂꢀFXꢀOQKꢀꢀYꢀGXꢀꢁꢃꢁꢀFꢀYLWꢀQKꢀVDXꢄ
ꢀH[SUHVVLRQꢀOD
Sꢃꢀ.KLꢀR
SꢀQK
ꢀP
¤
FꢀORJLFꢀTXLꢀQKꢀJLD
ꢀWUꢀKD\ꢀNKXQꢀGD
£
QJꢀFX
DꢀG
£
¤
ꢂꢀFKꢀQK
£
£
QꢀJLD
¤
¢
£Qꢃ
£
£
¤
¢
CREATE TABLE nhanvien
(
Giao trçnh thæc hanh SQL
manv
char(10) not null,
char(30) not null,
datetime null,
hoten
ngaysinh
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]')
)
Dꢀ5DQJꢀEXFꢀ'()$8/7
5DQJꢀEXFꢀ'()$8/7ꢀ
ꢀWUꢀQD\ꢀVHꢀWꢀQJꢀFꢀJDQꢀFKRꢀF
ꢀNKQJꢀFKꢀQKꢀJLDꢀWUꢀFKRꢀFWꢃꢀ7UQꢀP
EXFꢀ'()$8/7ꢀꢅWFꢀODꢀFKꢀFRꢀWKꢀFRꢀWLꢀDꢀP
jꢀ NKDLꢀ EDRꢀ PWꢀ JLDꢀ WUꢀ PFꢀ QKꢀ FKRꢀ P
'()$8/7ꢀFKRꢀFWꢀEQJꢀFDFKꢀVꢀGXQJꢀFXꢀSKD
¤
¤
FꢀV
£
QJꢀꢀTXLꢀQKꢀJLD
\ꢀNKLꢀQJLꢀVꢀGXQJꢀEꢀVXQJꢀPWꢀEDQꢀJKL
LꢀFWꢀFKꢀFRꢀWKꢀFRꢀQKLXꢀQKWꢀPWꢀUDQJ
ꢀWUꢀPFꢀQKꢆꢃ
Wꢂꢀ WDꢀ FKꢀ QKꢀ PWꢀ UDQJꢀ EXF
ꢀWUꢀP£FꢀQKꢀFKRꢀPWꢀFWꢃ
*LD
£
¤
¤
¤
PD
¤
¡
¤
¢
¤
¤
¢
¤
WꢀJLD
£
¤
£
¤
Wꢀ F¤
¤
£
SꢀVDXꢄ
[CONSTRAINT constraint_name]
DEFAULT {const_expression
nonarguments_function
NULL}
9ꢀ GXꢀ ꢁꢂꢈꢇꢀ &Xꢀ OQKꢀ GLꢀ \ꢀ FKꢀ QKꢀ JLDꢀ WUꢀ PFꢀ QKꢀ ODꢀ ꢉNKQJꢀ EL
',$&+,ꢀWURQJꢀEDQJꢀ1+$19,(1ꢀꢀYꢀGX
ꢀꢁꢃꢁꢀꢅꢐꢆ
¢Wꢉꢀ FKRꢀ F¤W
£
CREATE TABLE nhanvien
(
manv
char(10) not null,
char(30) not null,
datetime null,
hoten
ngaysinh
diachi
dienthoai
char(50) default 'khäng biãt',
char(6) null
)
Dꢀ5DQJꢀEXFꢀ35,0$5<ꢀ.(<
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
ꢅꢐꢆꢀm
FKRꢀUD
u
ꢀYꢀGX
£
ꢀQD
\ꢂꢀFKX
QJꢀWLꢀNKQJꢀ£
WꢀWQꢀFKRꢀUD
QJꢀEX¤
Fꢀ'()$8/7ꢃꢀ.KLꢀR
ꢂꢀK£
ꢀTXD
QꢀWUꢀ&6'/ꢀVH
ꢀW£ꢀ¤QJꢀ£WꢀWQ
QJꢀEX
¤
FꢀQD\ꢃꢀ7X\ꢀQKLQꢂꢀꢀG
¡
£
QꢀWUꢂꢀED£QꢀQQꢀ£WꢀWQꢀFKRꢀFD
FꢀUDQJꢀEX¤Fꢃ
7UDQJꢀꢏ
Trán Nguyãn Phong
QJꢀꢀQKꢀQJKDꢀNKRDꢀFKQKꢀFXDꢀEDQJꢃ
FꢀJLDꢀWUꢀWUXQJꢀOSꢀF
ꢀFKQKꢀVHꢀJLXSꢀFKRꢀWDꢀ[D
Xꢃꢀ0LꢀPWꢀEDQJꢀFKꢀFRꢀWK
ꢀFKQKꢀNKQJꢀFKSꢀQKQꢀJLDꢀWUꢀ18//ꢃ
FꢀDPꢀEDRꢀWQKꢀWRDQꢀYHQꢀWK
5D
WꢀUDQJꢀEX
DꢀYDRꢀWUQꢀFD
QKꢀFꢀGX\ꢀQK
FRꢀGX\ꢀQKWꢀPWꢀNKRD
5DQJꢀEXFꢀ35,0$5<ꢀ.(<ꢀOD
QKꢀWRDQꢀYHQꢀWKDPꢀFKLXꢃ
jꢀNKDLꢀEDRꢀPWꢀUDQJꢀEX
[CONSTRAINT constraint_name ]
PRIMARY KEY [CLUSTERED|NONCLUSTERED]
[( colname [,colname2 [...,colname16]])]
¤
Fꢀ35,0$5<ꢀ.(<ꢀ
PꢀED
FꢂꢀJLD
¤
FꢀV
ꢀGX
£
0
¤
¤
QJꢀNKQJꢀFRꢀFD
¤
ꢀWUꢀFX
DꢀNKRD
F
¤
¢
¤
QJꢀG
ꢀOL
£
¡
¤
¢
¤
¢
£
¤
£
£
£
£
¢
¤
¤Fꢀ35,0$5<ꢀ.(<ꢂꢀED£QꢀVꢀGX£QJꢀFXꢀSKDSꢀVDXꢄ
1
QKꢀGDQKꢀVD
ODꢀPWꢀWSꢀK
EXFꢀꢀPFꢀED
9ꢀGXꢀꢁꢂꢉꢇꢀWD
¢
ꢀFKQKꢀFX
DꢀPWꢀEDQJꢀFKꢀODꢀPWꢀFWꢂꢀNKLꢀRꢀEDQꢀNKQJꢀFQꢀWKLWꢀSKD
ꢀGXQJꢀUDQJꢀEXFꢀꢀPFꢀFWꢆꢃꢀ7URQJꢀWUQJꢀKSꢀNKRD
ꢀOQꢂꢀEDQꢀSKDLꢀFKꢀQKꢀGDQKꢀVDFKꢀFDFꢀFWꢀꢅVꢀGXQJꢀUD
¤
¤
¤
£
¢
LꢀFK
¤
£
¤
¤
¤
ꢀFKQK
QJ
¤
£
¤
¤
WꢀWU
£
¤
£
¤
£
RꢀEDQJꢀ1+$19,(1ꢀYLꢀNKRDꢀFKQKꢀODꢀ0$19
CREATE TABLE nhanvien
(
manv
char(10) primary key,
char(30) not null,
datetime null,
hoten
ngaysinh
diachi
dienthoai
char(50) null,
char(6) null
)
FXꢀO£QKꢀWUQꢀFRꢀWKꢀYL¢WꢀQKꢀVDXꢄ
CREATE TABLE nhanvien
(
manv
char(10) not null,
hoten
char(30) not null,
datetime null,
char(50) null,
char(6) null
ngaysinh
diachi
dienthoai
constraint pk_nv primary key(manv)
)
Giao trçnh thæc hanh SQL
D 5DQJꢀEXFꢀ81,48(
7KD\ꢀYꢀVꢀGXQJꢀNKRD
RꢀWQKꢀWRDQꢀYHQꢀWKFꢀWKꢃꢀ6
FꢀJLDꢀWUꢀGꢀOLXꢀWUQꢀP
WꢀUDQJꢀEXFꢀ81,48(ꢂꢀED
£
ꢀFKQKꢂꢀED
ꢀGXQJꢀUD
WꢀꢅKD\ꢀQKL
QꢀVꢀGX
£
QꢀFR
QJꢀEX
XꢆꢀF
QJꢀFX
ꢀWKꢀV
Fꢀ81,48(ꢀWUQꢀP
WꢀQD\ꢀNKQJꢀFꢀWUX
ꢀSKDSꢀOQKꢀVDXꢀ\ꢄ
£
QJꢀUD
¤
Fꢀ81,48(ꢀꢀD
P
ED
EX
NKDLꢀED
£
£
£
¤
¤
XꢆꢀF¤WꢀEW
¤
FꢀFD
£
¤
¤
¤
£
RꢀP
¤
¤
£
£
£
[CONSTRAINT constraint_name]
UNIQUE [CLUSTERED | NONCLUSTERED]
[colname1 [,colname2 [...,colname16]])]
D 5DQJꢀEXFꢀ)25(,*1ꢀ.(<
&DFꢀEDQJꢀEQꢀWURQJꢀPWꢀ&6'/ꢀWK
ꢀQD\ꢀFꢀ[DFꢀQKꢀGDꢀWUQꢀWQKꢀEQJꢀQKDXꢀJL
QD\ꢀYLꢀPWꢀKD\ꢀQKLXꢀWUQJꢀFXDꢀEDQJꢀNKDFꢃꢀ1XꢀP
EDQJꢀFRꢀJLDꢀWUꢀFꢀ[DFꢀQKꢀWꢀPWꢀꢅKD\ꢀQKLXꢆꢀWU
FWꢀR FꢀJRLꢀODꢀFRꢀUDQJꢀEXFꢀNKRDꢀQJRDLꢀꢅIRUHLJQꢀNH\ꢆꢃꢀ&D
ꢀGXQJꢀNWꢀKSꢀYLꢀFDFꢀUDQJꢀEXFꢀ35,0$5<ꢀ.(<ꢀYD
RꢀWQKꢀWRDQꢀYHQꢀWKDPꢀFKLXꢀJLDꢀFDFꢀEDQJꢀFꢀFKꢀQKꢃ
jꢀNKDLꢀEDRꢀNKRDꢀQJRDLꢂꢀEDQꢀVꢀGXQJꢀFXꢀSKDSꢀOQKꢀQKꢀVDXꢄ
[CONSTRAINT constraint_name ]
¤
QJꢀFR
¢
LꢀTXDQꢀK
DꢀPWꢀKD\ꢀQKL
WꢀꢅKD\ꢀQKLXꢆꢀF
QJꢀNKRDꢀFXDꢀED
FꢀUDQJꢀEX
ꢀ81,48(ꢀQKP
£
ꢀY
LꢀQKDXꢃꢀ&D
XꢀWUQJꢀFX
WꢀQDRꢀRꢀFX
QJꢀNKDFꢀWKꢀFD
Fꢀ)25(,*1
FꢀP
DꢀED
DꢀP¤W
¢
K
£
¤
£
¤
¤
¤
¤
¤
¤
F
¤
ꢀ
¤
¤
¤
£
¤
.(<ꢀ
DPꢀED
¤
FꢀV
£
¢
¤
¤
£
¢
¤
£
£
£
£
[FOREIGN KEY (colname [,colname2 [...,colname16]])]
REFERENCES reference_table [(ref_colname
[,ref_colname2
[...,ref_colname 16]])]
9ꢀ GXꢀ ꢁꢂꢊꢇꢀ 7D
£Rꢀ KDLꢀ EDQJꢀ 1+$19,(1ꢅ0$19ꢂꢀ +27(1ꢂꢀ 1*$<6,1+ꢂꢀ ',$&+,ꢂ
',(17+2$,ꢂꢀ0$'9ꢆꢀYD
ꢀ'219,ꢅ0$'9ꢂꢀ7(1'9ꢆꢀWKHRꢀꢀKQKꢀGLꢀ\ꢄ
1+$19,(1
ꢋ0$19
'219,
∞
ꢋ0$'9
+27(1
7(1'9
1*$<6,1+
',$&+,
',(17+2$,
0$'9
ꢁ
CREATE TABLE donvi
(
7UDQJꢀꢎ
Trán Nguyãn Phong
madv
char(2) primary key,
tendv char(20) not null
)
CREATE TABLE nhanvien
(
manv
char(10) primary key,
char(20) not null,
hoten
ngaysinh datetime null,
diachi char(50) default 'khong biet',
dienthoai char(6) check(dienthoai like '[0-9][0-9][0-9]
[0-9][0-9][0-9]'),
madv
char(2) foreign key(madv)
references donvi(madv)
)
ꢁꢂꢈꢀ6DꢀLꢀEDQJ
6DXꢀNKLꢀDꢀWD
QJꢀQKꢀEꢀVXQJꢀF
EDQJꢂꢀEDQꢀVꢀGXQJꢀFXꢀO
£
RꢀED
WꢂꢀEꢀVXQJꢀNKRD
QKꢀ$/7(5ꢀFR
£
QꢀFR
¢QꢀKD
QKꢀV
DꢀLꢀF¢
XꢀWUX
FꢀKD\ꢀWKX
¤
FꢀWQKꢀFX
D
ED
¤
QJꢀEX
¤
FꢂꢃꢃꢃꢀjꢀFR
ꢀWKꢀVX
DꢀL
£
£
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]...]
9ꢀGXꢀꢁꢂꢌꢇꢀ7D
£
RꢀP
¤
WꢀUDQJꢀEX
¤
FꢀFKRꢀEDQJꢀ'219,ꢀWUQꢀF¤Wꢀ0$'9ꢀTXLꢀQKꢀPDꢀQꢀY
SKDLꢀFRꢀGD£QJꢀKDLꢀFK
ꢀV
¢
£
ALTER TABLE donvi
ADD CONSTRAINT check_madv
CHECK (madv LIKE ‘[0-9][0-9]’)
Giao trçnh thæc hanh SQL
ꢆꢂꢀ&KꢀPXFꢀꢄLQGH[ꢅ
&DFꢀFKꢀPXFꢀ
QKDQKꢀFKRQJꢀGDꢀWUQꢀFD
ORDLꢄꢀ FKꢀ PXFꢀ WXꢀ QKRPꢀ ꢅFOXVWHUHGꢀ LQGH[ꢆꢀ YD
LQGH[ꢆꢃ
• 0WꢀFKꢀPX
WꢀQKꢀWKꢀW
WKꢀFRꢀWLꢀDꢀPWꢀFKꢀPXFꢀWXꢀQKRPꢃ
• 0WꢀFKꢀPXFꢀNKQJꢀWXꢀKRPꢀODꢀPWꢀFKꢀPX
NKQJꢀQKꢀWKꢀWꢀYWꢀO\ꢀFXDꢀFDFꢀGRQJꢀWURQJꢀED
WUX\ꢀFSꢀQꢀFDFꢀGRQJꢀGꢀOLXꢀQKDQKꢀKQꢀQKLXꢀVRꢀY
.KLꢀWDꢀNKDLꢀEDRꢀPWꢀNKRDꢀFKQKꢀKD\ꢀNKRDꢀ81,48(ꢀWUQꢀP
DꢀEDQJꢂꢀKꢀTXDQꢀWUꢀ&6'/ꢀVHꢀWꢀQJꢀWDRꢀFKꢀPXFꢀWUQꢀFDFꢀF
WKPꢀFDFꢀFKꢀPXFꢀNKDFꢀEQJꢀFDFKꢀVꢀGXQJꢀFXꢀOQKꢀFRꢀFXꢀSKDSꢀQKꢀVDXꢄ
£
¤
FꢀV
ꢀGX
£
PꢀK
WꢀKD\ꢀQKL
ꢀ FKꢀ PX
¡
ꢀWU
¤
£
£
Sꢀ
¢
QꢀFD
QJꢀG
FꢀFKLDꢀUDꢀOD
Pꢀ ꢅQRQFOXVWHUHG
ꢀOL
£
¤F
£
FꢀJLD
¤
¤
£
Fꢀ
£
£
£
£
Fꢀ NKQJꢀ WX
£
ꢀ QKR
¤
£
FꢀWX
£
PꢀOD
¤
WꢀFKꢀPX
£
FꢀPD
ꢀWK
£
FꢀNKRDꢀWQJ
£
£
ꢀY
£
ꢀFXDꢀFD
QJꢀWQJꢀ
£
¤
WꢀED
¤
£
£
¤
£
FꢀPD
ꢀWK
ꢀW
DꢀFD
FꢀNKRD
£
£
QJꢃꢀ&D
£
FꢀWX
PꢀK¡ꢀWU
¤
ꢀYL£F
£
¢
£
LꢀFDFꢀFKꢀPXFꢀNKQJꢀWXꢀQKRPꢃ
WꢀKD\ꢀQKLXꢀFWꢀQDRꢀR
WꢀRꢃꢀ%DQꢀFRꢀWKꢀWD
¤
¤
¤
FX
£
£
¤
£
£
¤
£
£R
£
£
£
CREATE [CLUSTEREDNONCLUSTERED] INDEX index_name
ON table_name(column_name [, column_name]...)
9ꢀGXꢀꢁꢂꢍꢇꢀ&XꢀO
£
QKꢀG
Lꢀ\ꢀVH
ꢀWD£
RꢀP
¤WꢀFKꢀPX
£
FꢀNKQJꢀWX
£
ꢀQKR
PꢀWUQꢀF
¤
Wꢀ0$'9ꢀFX
D
EDQJꢀ1+$19,(1
CREATE NONCLUSTERED INDEX idx_nhanvien_madv
ON nhanvien(madv)
ꢈꢂꢀ.KXQJꢀQKQꢀꢄ9LHZꢅ
0WꢀNKXQJꢀQKQꢀFRꢀWKꢀFRLꢀQKꢀODꢀPWꢀeEDQJꢀDRfꢀFRꢀQLꢀGXQJꢀ
¤
Fꢀ[D
P
[X
FDFKꢀV
0WꢀNKXQJꢀQKQꢀWURQJꢀJLQJꢀQKꢀPWꢀEDQJꢀYLꢀPWꢀWRꢀFDFꢀWQꢀF
GꢀOLXꢃꢀ7X\ꢀQKLQꢂꢀNKXQJꢀQKQꢀNKQJꢀWQꢀWDLꢀQKꢀODꢀPWꢀFXꢀWUXFꢀOXꢀWU
&6'/ꢃꢀ'ꢀOLXꢀEQꢀWURQJꢀNKXQJꢀQKQꢀWKFꢀFKWꢀODꢀGꢀOLXꢀFꢀ[DFꢀQKꢀW
QKLXꢀEDQJꢀFꢀVꢀYDꢀGRꢀRꢀSKXꢀWKFꢀYDRꢀFDFꢀEDQJꢀFꢀV
&DFꢀNKXQJꢀQKQꢀWKQJꢀFꢀVꢀGXQJꢀEQꢀWURQJꢀ&6'/ꢀQKPꢀFD
¤
¢
Qꢃꢀ0
¤
WꢀWUX\ꢀY
ꢀOLXꢀWꢀFD
QKꢀ6(/(&7ꢀꢅ
¢
QꢀꢅTXHU\ꢆꢀOD
FꢀEDQJꢀWURQJꢀ&6'/ꢃꢀ&D
FꢀꢀFSꢀQꢀWURQJꢀFKQJꢀꢌꢆꢃ
ꢀP
¤
£
SꢀFD
¡
QꢀꢅLQVWUXFWLRQꢆꢀQK
¢
£
¢
QꢀFꢀWKFꢀKL
¤
£
£
QꢀEQJ
£
£
¤
¢
¤
WꢀYD
QJ
¢
ꢀG
ꢀOL
£
£
£
¢
£
¤
ꢀP¤WꢀKD\
£
¤
ꢃ
£
FꢀFKꢀVDX
\ꢄ
• 6
ꢀGX£QJꢀNKXQJꢀQKQꢀꢀW£SꢀWUXQJꢀWUQꢀGꢀOL£Xꢀ¤Fꢀ[DFꢀQKꢃ
7UDQJꢀꢒ
Trán Nguyãn Phong
• 6
• 6ꢀGXQJꢀNKXQJꢀQKQꢀꢀWX\ꢀELQꢀGꢀOLX
• 6ꢀGXQJꢀNKXQJꢀQKQꢀꢀ[XWꢀNKXꢀꢅH[SRUWꢆꢀG
• 6ꢀGXQJꢀNKXQJꢀQKQꢀꢀEDRꢀPWꢀGꢀOLXꢃ
jꢀWDRꢀNKXQJꢀQKQꢂꢀEDQꢀVꢀGXQJꢀFXꢀOQKꢀFRꢀFXꢀSKDSꢀQKꢀVDXꢄ
ꢀGX£QJꢀNKXQJꢀQKQꢀꢀQꢀJLDQꢀKRDꢀWKDRꢀWDFꢀGꢀOL£Xꢃ
£
¢
ꢀOL£Xꢃ
£
£
£
£
CREATE VIEW view_name[(column_name [, column_name]...)]
AS select_statement
7URQJꢀR
WꢀKD\ꢀQKLXꢀED
.KLꢀWDRꢀNKXQJꢀQKQꢀF
• 7QꢀNKXQJꢀQKQꢀSKDLꢀWXQꢀWKHRꢀFD
PLꢀQJLꢀVꢀGXQJꢃ
• .KQJꢀWKꢀUDQJꢀEX
• .KQJꢀWKꢀ[\ꢀGQJꢀFKꢀPX
• 7URQJꢀFXꢀOQKꢀ&5($7(ꢀ9,(:ꢀNKQJꢀF
FDFꢀFWꢀFXQJꢀQKꢀNLXꢀGꢀOLXꢀFXDꢀFKXQJꢀVHꢀWQJꢀ
FKRQꢀFXDꢀFXꢀOQKꢀ6(/(&7ꢃ
• %DQꢀSKDLꢀ[DFꢀQKꢀWQꢀFWꢀWURQJꢀFXꢀO
VDXꢄ
− 0LꢀFWꢀFXDꢀNKXQJꢀQKQꢀFꢀSKDWꢀVLQKꢀWꢀPWꢀELXꢀWKFꢀV
VQꢀKD\ꢀPWꢀKQJꢃ
− +DLꢀKD\ꢀQKLXꢀFWꢀFX
− %DQꢀPXQꢀWKD\ꢀLꢀWQꢀFWꢀWURQJꢀNKXQJꢀQKQꢀNKDFꢀYLꢀWQꢀF
9ꢀGXꢀꢁꢂꢎꢇꢀ&XꢀO
QKꢀGLꢀ\ꢀVHꢀEꢀOLꢀGRꢀWQꢀFXDꢀFWꢀWKꢀꢇꢀNKQJꢀ[D
ꢀVHOHFWBVWDWHPHQWꢀOD
ꢀP
¤
£
QKꢀ6(/(&7ꢀGX
QJꢀꢀWUX\ꢀ[X
¢
WꢀG
XꢀW
P
¤
£
QꢀOXꢀ\
ꢀP
FꢀTXLꢀW
ꢀSKD
LꢀGX\ꢀQK
¢
Wꢀ
¢LꢀY
L
¤
FꢀFD
£FꢀQKꢂꢀFDFꢀTXLꢀWFꢀFKRꢀNKXQJꢀQKQꢃ
£
£
£
¢
WꢀSKD
LꢀFKꢀQKꢀWQꢀF
¤
Wꢃꢀ7QꢀFX
D
¤
£
QJꢀYLꢀFDFꢀF¤WꢀWURQJꢀGDQKꢀVDFK
¤
£
£
¤
¢
ꢀKR¤FꢂꢀP¤WꢀKDPꢀFDL
¤
¤
DꢀNKXQJꢀQKQꢀFRꢀWUXQJꢀWQꢃ
¤
WꢀꢀFX
QJꢀFꢀV
Fꢄ
ꢃ
£
¡
¤
FꢀQKꢀ¤
CREATE VIEW thongtin_nv
AS
SELECT manv,hoten,datediff(year,ngaysinh,getdate()),tendv
FROM nhanvien,donvi
WHERE nhanvien.madv=donvi.madv
jꢀFXꢀO
QKꢀVDXꢄ
CREATE VIEW thongtin_nv(manv,hoten,tuoi,donvi)
£QKꢀWUQꢀFRꢀWKꢀWK£FꢀKL£Qꢀ¤FꢂꢀED£QꢀSKDLꢀ£WꢀWQꢀFKRꢀFDFꢀF¤WꢀFXDꢀNKXQJꢀQKQ
Giao trçnh thæc hanh SQL
AS
SELECT manv,hoten,datediff(year,ngaysinh,getdate()),tendv
FROM nhanvien,donvi
WHERE nhanvien.madv=donvi.madv
Zꢀ ꢀY
7UDQJꢀꢁꢁ
Trán Nguyãn Phong
Chæång 2: NGÄN NGÆ THAO TAC DÆ LIÃU
1JQꢀQJ
WKDRꢀWDFꢀWUX\ꢀ[X
JPꢀFDFꢀFXꢀOQKꢄꢀ6(/(&7ꢂꢀꢀ,16(57ꢂꢀ83'$7(ꢀYD
ꢀWKDRꢀWD
FꢀG
ꢀOL
£
¢
SꢀFKRꢀQJ
ꢀ[RDꢀGꢀOLXꢃꢀ1JQꢀQJ
ꢀ'(/(7(
LꢀV
£
QJꢀNKD
ꢀQQJꢀWL¢
QꢀKD
F
¢
WꢂꢀEꢀVXQJꢂꢀF
£
£
£
ꢀWKDRꢀWD
FꢀG
£
£
ꢁꢂꢀ7UX\ꢀ[XWꢀGꢀOLꢃX
§Ó truy xuÊt d÷ liÖu tõ c¸c dßng vµ c¸c cét cña mét hay nhiÒu b¶ng, khung nh×n,
ta sö dông c©u lÖnh SELECT. C©u lÖnh nµy cã thÓ dïng ®Ó thùc hiÖn phÐp chän (tøc lµ
truy xuÊt mét tËp con c¸c dßng trong mét hay nhiÒu b¶ng), phÐp chiÕu (tøc lµ truy
xuÊt mét tËp con c¸c cét trong mét hay nhiÒu b¶ng) vµ phÐp nèi (tøc lµ liªn kÕt c¸c
dßng trong hai hay nhiÒu b¶ng ®Ó truy xuÊt d÷ liÖu).
Có ph¸p chung cña c©u lÖnh SELECT cã d¹ng nh- sau:
SELECT [ ALL | DISTINCT ] select_list
[ INTO [ newtable_name ]]
FROM { table_name | view_name }
................
[,{table_name | view_name }]
[WHERE
clause ]
[GROUP BY clause ]
[HAVING BY clause ]
[ORDER BY clause ]
[COMPUTE
clause ]
Chó ý: C¸c thµnh phÇn trong mét c©u lÖnh SELECT ph¶i ®-îc sö dông theo thø tù
®-îc nªu trªn.
1.1 X¸c ®Þnh b¶ng b»ng mÖnh ®Ò FROM
MÖnh ®Ò FROM trong c©u lÖnh SELECT ®-îc sö dông nh»m chØ ®Þnh c¸c b¶ng
vµ khung nh×n cÇn truy xuÊt d÷ liÖu. Sau mÖnh ®Ò FROM lµ danh s¸ch tªn c¸c b¶ng
vµ khung nh×n tham gia vµo truy vÊn (tªn cña c¸c b¶ng vµ khung nh×n ®-îc ph©n c¸ch
nhau bëi dÊu phÈy).
SELECT select_list
FROM {table_nameview_name list}
Giao trçnh thæc hanh SQL
§Ó ®¬n gi¶n ho¸ c©u hái, ta cã thÓ sö dông c¸c bÝ danh (alias) cho c¸c b¶ng hay
khung nh×n. BÝ danh ®-îc g¸n trong mÖnh ®Ò FROM b»ng c¸ch chØ ®Þnh bÝ danh sau
tªn b¶ng. VÝ dô c©u lÖnh sau g¸n bÝ danh n1 cho b¶ng nhanvien.
SELECT ten, diachi FROM nhanvien n1
1.2 MÖnh ®Ò WHERE
MÖnh ®Ò WHERE trong c©u lÖnh SELECT x¸c ®Þnh c¸c ®iÒu kiÖn ®èi víi viÖc truy
xuÊt d÷ liÖu. Sau mÖnh ®Ò WHERE lµ mét biÓu thøc logic vµ chØ nh÷ng dßng d÷ liÖu
nµo tho¶ m∙n biÓu thøc sau WHERE míi ®-îc hiÓn thÞ trong kÕt qu¶ truy vÊn. Trong
mÖnh ®Ò WHERE th-êng sö dông:
• C¸c to¸n tö so s¸nh
• Giíi h¹n ( BETWEEN vµ NOT BETWEEN).
• Danh s¸ch (IN, NOT IN)
• Khu«n d¹ng (LIKE vµ NOT LIKE).
• C¸c gi¸ trÞ ch-a biÕt (IS NULL vµ IS NOT NULL).
• KÕt hîp c¸c ®iÒu kiÖn (AND, OR).
C¸c to¸n tö so s¸nh:
To¸n tö
ý nghÜa
=
B»ng
>
Lín h¬n
<
Nhá h¬n
>=
<=
<>
!>
!<
Lín h¬n hoÆc b»ng
Nhá h¬n hoÆc b»ng
Kh¸c
Kh«ng lín h¬n
Kh«ng nhá h¬n
VÝ dô 2.1: Truy vÊn sau ®©y cho biÕt tªn, ®Þa chØ vµ ®iÖn tho¹i cña nh÷ng nh©n viªn
cã hÕ sè l-¬ng lín h¬n 1.92:
SELECT ten, diachi, dienthoai
FROM nhanvien
WHERE hsluong>1.92
Giíi h¹n (BETWEEN vµ NOT BETWEEN)
Tõ kho¸ BETWEEN vµ NOT BETWEEN ®-îc sö dông nh»m chØ ®Þnh kho¶ng
gi¸ trÞ t×m kiÕm ®èi víi c©u lÖnh SELECT. C©u lÖnh d-íi ®©y cho biÕt tªn vµ ®ia chØ
cña nh÷ng nh©n viªn cã hÖ sè l-¬ng n»m trong kho¶ng 1.92 ®Õn 3.11
SELECT ten, tuoi, diachi
FROM nhanvien
WHERE hsluong BETWEEN 1.92 AND 3.11
7UDQJꢀꢁꢇ
Trán Nguyãn Phong
Danh s¸ch (IN vµ NOT IN)
Tõ kho¸ IN ®-îc sö dông khi ta cÇn chØ ®Þnh ®iÒu kiÖn t×m kiÕm d÷ liÖu cho c©u
lÖnh SELECT lµ mét danh s¸ch c¸c gi¸ trÞ. Sau IN (hoÆc NOT IN) cã thÓ lµ mét danh
s¸ch c¸c gi¸ trÞ hoÆc lµ mét c©u lÖnh SELECT kh¸c.
VÝ dô 2.2: §Ó hiÓn thÞ th«ng tin vÒ c¸c nh©n viªn cã hÖ sè l-¬ng lµ 1.86, 1.92
hoÆc 2.11, thay v× sö dông c©u lÖnh:
SELECT * FROM nhanvien
WHERE hsluong=1.86 OR hsluong=1.92 OR hsluong=2.11
Ta cã thÓ sö dông c©u lÖnh sau:
SELECT * FROM nhanvien
WHERE hsluong IN (1.86, 1.92, 2.11)
C¸c ký tù ®¹i diÖn vµ mÖnh ®Ò LIKE
Tõ kho¸ LIKE (NOT LIKE) sö dông trong c©u lÖnh SELECT nh»m m« t¶ khu«n
d¹ng cña d÷ liÖu cÇn t×m kiÕm. Chóng th-êng ®-îc kÕt hîp víi c¸c ký tù ®¹i diÖn sau
®©y:
Ký tù ®¹i diÖn ý nghÜa
%
-
Chuçi ký tù bÊt kú gåm kh«ng hoÆc nhiÒu ký tù
Ký tù ®¬n bÊt kú
[]
Ký tù ®¬n bÊt kú trong giíi h¹n ®-îc chØ ®Þnh (vÝ dô [a-f])
hay mét tËp (vÝ dô [abcdef])
[^]
Ký tù ®¬n bÊt kú kh«ng n»m trong giíi h¹n ®-îc chØ ®Þnh (
vÝ dô [^a-f] hay mét tËp (vÝ dô [^abcdef]).
VÝ dô 2.3: C©u lÖnh d-íi ®©y hiÓn thÞ th«ng tin vÒ c¸c nh©n viªn cã tªn lµ Nam
SELECT * FROM nhanvien
WHERE hoten LIKE '% Nam'
IS NULL vµ NOT IS NULL
Gi¸ trÞ NULL cã thÓ ®-îc nhËp vµo mét cét cho phÐp chÊp nhËn gi¸ trÞ NULL
theo mét trong ba c¸ch sau:
• NÕu kh«ng cã d÷ liÖu ®-îc ®-a vµo vµ kh«ng cã mÆc ®Þnh cho cét hay kiÓu
d÷ liÖu trªn cét ®ã.
• Ng-êi sö dông trùc tiÕp ®-a gi¸ trÞ NULL vµo cho cét ®ã.
• Mét cét cã kiÓu d÷ liÖu lµ kiÓu sè sÏ chøa gi¸ trÞ NULL nÕu gi¸ trÞ ®-îc chØ
®Þnh g©y trµn sè.
Trong mÖnh ®Ò WHERE, ta sö dông IS NULL hoÆc IS NOT NULL nh- sau:
WHERE col_name IS [NOT] NULL
C¸c to¸n tö logic
C¸c to¸n tö logic sö dông trong mÖnh ®Ò WHERE bao gåm AND, OR, NOT.
AND vµ OR ®-îc sö dông ®Ó kÕt hîp nhiÒu ®iÒu kiÖn trong WHERE.
1.3 Danh s¸ch chän trong c©u lÖnh SELECT
Giao trçnh thæc hanh SQL
ꢏꢀ&Kän tÊt c¶ c¸c cét trong b¶ng
Khi muèn truy xuÊt tÊt c¶ c¸c cét trong b¶ng, ta sö dông c©u lÖnh SELECT cã có
ph¸p sau:
SELECT
*
FROM table_name
Khi sö dông c©u lÖnh nµy, c¸c cét trong kÕt qu¶ sÏ ®-îc hiÓn thÞ theo thø tù mµ
chóng ®∙ ®-îc t¹o ra trong c©u lÖnh CREATE TABLE.
* Chän c¸c cét ®-îc chØ ®Þnh
§Ó chän ra mét sè cét nµo ®ã trong b¶ng, ta sö dông c©u lÖnh SELECT cã có
ph¸p sau:
SELECT tªn_cét [,...,tªn_cét_n]
FROM tªn_b¶ng | khung_nh×n
C¸c tªn cét trong c©u lÖnh ph¶i ®-îc ph©n c¸ch nhau b»ng dÊu phÈy.
Chó ý: Trong c©u lÖnh SELECT, thø tù cña c¸c cét ®-îc nªu ra trong c©u lÖnh sÏ
x¸c ®Þnh thø tù cña c¸c cét ®-îc hiÓn thÞ ra trong kÕt qu¶.
* §æi tªn c¸c cét trong c¸c kÕt qu¶
Khi kÕt qu¶ ®-îc hiÓn thÞ, tiªu ®Ò cña c¸c cét mÆc ®Þnh sÏ lµ tªn cña c¸c cét khi
nã ®-îc t¹o ra trong c©u lÖnh CREATE TABLE. Tuy nhiªn, ®Ó c¸c tiªu ®Ò trë nªn
th©n thiÖn h¬n, ta cã thÓ ®æi tªn c¸c tiªu ®Ò cña c¸c cét. §Ó lµm ®-îc viÖc nµy, ta cã
thÓ sö dông mét trong hai c¸ch viÕt sau:
tiªu_®Ò_cét = tªn_cét
hoÆc tªn_cét tiªu_®Ò_cét
VÝ dô 2.4: Hai c©u lÖnh sau sÏ ®Æt tiªu ®Ò Hä vµ tªn cho lµ hoten vµ §Þa chØ
cho cét diachi khi kÕt qu¶ ®-îc hiÓn thÞ cho ng-êi sö dông:
SELECT 'Hä vµ tªn'=hoten,
'§Þa chØ '= diachi
FROM nhanvien
HoÆc:
SELECT hoten 'Hä vµ tªn',diachi '§ia chØ '
FROM nhanvien
* Sö dông cÊu tróc CASE ®Ó thay ®æi d÷ liÖu trong kÕt qu¶
Trong c©u lÖnh SELECT, ta cã thÓ sö dông cÊu tróc CASE ®Ó thay ®æi c¸ch hiÓn
thÞ kÕt qu¶ ra mµn h×nh.
VÝ dô 2.5: C©u lÖnh sau cho biÕt hä tªn, hÖ sè l-¬ng vµ xÕp lo¹i l-¬ng cña nh©n
viªn theo hÖ sè l-¬ng:
SELECT
'Hä vµ tªn' = ten, 'HÖ sè l-¬ng' = hsluong,
'XÕp lo¹i l-¬ng' =
CASE
WHEN lsluong=NULL THEN
'Kh«ng x¸c ®Þnh'
7UDQJꢀꢁꢏ
Trán Nguyãn Phong
WHEN hsluong<=1.92 THEN
WHEN hsluong<=3.1 THEN
WHEN hsluong<=5.2 THEN
ELSE 'L-¬ng rÊt cao'
'Lu¬ng thÊp'
'L-¬ng TB'
'L-¬ng cao'
END
Nhanvien
* C¸c chuçi ký tù trong kÕt qu¶
Ta cã thÓ thªm c¸c chuçi ký tù vµo bªn trong truy vÊn nh»m thay ®æi c¸ch thøc
tr×nh bµy d÷ liÖu.
FROM
VÝ dô 2.6: C©u lÖnh sau sÏ thªm chuçi ký tù “HÖ sè l-¬ng lµ “ vµo tr-íc kÕt qu¶
ë cét møc l-¬ng ë tõng dßng trong kÕt qu¶:
SELECT 'Hä vµ tªn' = hoten,
'HÖ sè l-¬ng lµ : ','HÖ sè l-¬ng'=hsluong
FROM nhanvien
Truy vÊn trªn cho cã kÕt qu¶ cã d¹ng nh- sau:
Hä vµ tªn
HÖ sè l-¬ng
-------------
1.92
----------------
TrÇn Nguyªn Phong
Lª Hoµi Nam
--------------
HÖ sè l-¬ng lµ :
HÖ sè l-¬ng lµ :
HÖ sè l-¬ng lµ :
HÖ sè l-¬ng lµ :
HÖ sè l-¬ng lµ :
HÖ sè l-¬ng lµ :
1.86
NguyÔn H÷u T×nh
NguyÔn Trung Kiªn
NguyÔn ThÞ Hoa
Hoµng Nam Phong
1.92
1.86
2.11
3.21
1.4 TÝnh to¸n c¸c gi¸ trÞ trong c©u lÖnh SELECT
Danh s¸ch chän trong c©u lÖnh SELECT cã thÓ cã c¸c biÓu thøc sè häc. Khi ®ã
kÕt qu¶ cña biÓu thøc sÏ lµ mét cét trong kÕt qu¶ truy vÊn:
VÝ dô 2.7: C©u lÖnh sau cho biÕt hä tªn vµ l-¬ng cña c¸c nh©n viªn
SELECT 'Hä vµ tªn'=ten, 'L-¬ng'=hsluong*210000
FROM nhanvien
1.5 Tõ kho¸ DISTINCT
Tõ kho¸ DISTINCT ®-îc sö dông trong c©u lÖnh SELECT nh»m lo¹i bá ra khái
kÕt qu¶ truy vÊn nh÷ng dßng d÷ liÖu cã gi¸ trÞ gièng nhau
VÝ dô 2.8: nÕu ta sö dông c©u lÖnh:
SELECT hsluong FROM nhanvien
Ta sÏ cã kÕt qu¶ nh- sau:
Giao trçnh thæc hanh SQL
hsluong
-----------------
1.92
1.86
1.92
1.86
2.11
3.21
Nh-ng nÕu ta sö dông c©u lÖnh:
SELECT DISTINCT hsluong FROM nhanvien
kÕt qu¶ cña truy vÊn sÏ lµ:
hsluong
----------
1.92
1.86
2.11
3.21
1.6 T¹o b¶ng míi b»ng c©u lÖnh SELECT ... INTO
C©u lÖnh SELECT ... INTO cã t¸c dông t¹o mét b¶ng míi cã cÊu tróc vµ d÷ liÖu
®-îc x¸c ®Þnh tõ kÕt qu¶ cña truy vÊn. B¶ng míi ®-îc t¹o ra sÏ cã sè cét b»ng sè cét
®-îc chØ ®Þnh trong danh s¸ch chän vµ sè dßng sÏ µ sè dßng kÕt qu¶ cña truy vÊn
VÝ dô 2.9: C©u lÖnh d-íi ®©y t¹o míi mét b¶ng cã tªn lµ NHANVIEN_LUU bao
gåm hä tªn vµ ®Þa chØ cña nh÷ng nh©n viªn cã hÖ sè l-¬ng lín h¬n 1.92:
SELECT hoten, diachi
INTO nhanvien_luu
FROM nhanvien
WHERE hsluong>1.92
1.7 S¾p xÕp kÕt qu¶ truy vÊn b»ng ORDER BY
MÖnh ®Ò ORDER BY ®-îc sö dông nh»m s¾p xÕp kÕt qu¶ truy vÊn theo mét hay
nhiÒu cét (tèi ®a lµ 16 cét). ViÖc s¾p xÕp cã thÓ theo thø tù t¨ng t¨ng (ASC) hoÆc gi¶m
(DESC). NÕu kh«ng chØ ®Þnh râ th× mÆc ®Þnh lµ t¨ng.
VÝ dô 2.10: C©u lÖnh sau sÏ s¾p xÕp c¸c nh©n viªn theo thø tù gi¶m dÇn cña hÖ
sè l-¬ng vµ nÕu hÖ sè l-¬ng b»ng nhau th× s¾p xÕp theo thø tù t¨ng dÇn cña ngµy sinh:
SELECT hoten,ngaysinh,hsluong
FROM nhanvien
ORDER BY hsluong DESC, ngaysinh
Ta cã thÓ sö dông c¸c sè thay v× sö dông tªn cét sau mÖnh ®Ò ORDER BY.
VÝ dô 2.11: c©u lÖnh d-íi ®©y s¾p xÕp c¸c nh©n viªn theo thø tù t¨ng dÇn cña
ngµy sinh:
7UDQJꢀꢁꢎ
Trán Nguyãn Phong
SELECT hoten,ngaysinh,hsluong
FROM nhanvien
ORDER BY 3
1.8 PhÐp hîp vµ to¸n tö UNION
To¸n tö UNION cho phÐp ta hîp c¸c kÕt qu¶ cña hai hay nhiÒu truy vÊn thµnh
mét tËp kÕt qu¶ duy nhÊt. Có ph¸p cña phÐp hîp nh- sau:
Query_1
[UNION [ALL] Query_2 ]
...
[UNION [ALL] Query_N ]
[ORDER BY clause]
[COMPUTE clause]
Trong ®ã:
Query_1 cã d¹ng:
SELECT select_list
[INTO clause]
[FROM clause]
[WHERE clause]
[GROUP BY clause]
[HAVING clause]
vµ Query_i (i=2,..,N) cã d¹ng:
SELECT select_list
[FROM clause]
[WHERE clause]
[GROUP BY clause]
[HAVING clause]
VÝ dô 2.12: Gi¶ sö ta cã hai b¶ng nh- sau:
R
B
S
A
C
5
7
5
0
E
F
15
1
abc
jks
3
edf
hht
abc
adf
5
bdg
Hht
10
12
3
2
Th× phÐp hîp:
SELECT A,B FROM R
UNION
Giao trçnh thæc hanh SQL
SELECT * FROM S
Cã kÕt qu¶ nh- sau:
A
B
---- -----------
abc
adf
bgd
edf
hht
hht
jks
3
2
10
15
1
12
5
Theo mÆc ®Þnh, phÐp to¸n UNION sÏ lo¹i bá nh÷ng dßng gièng nhau trong kÕt
qu¶. NÕu ta sö dông tïy chän ALL th× c¸c dßng gièng nhau sÏ kh«ng bÞ lo¹i bá. Ta cã
thÓ sö dông c¸c dÊu ngoÆc ®Ó x¸c ®Þnh thø tù tÝnh to¸n trong phÐp hîp.
1.8.1 C¸c nguyªn t¾c khi x©y dùng c©u lÖnh UNION
Khi x©y dùng c¸c c©u lÖnh UNION, ta cÇn chó ý c¸c nguyªn t¾c sau:
• TÊt c¶ c¸c danh s¸ch chän trong c©u lÖnh UNION ph¶i cã cïng sè biÓu thøc
(c¸c tªn cét, c¸c biÓu thøc sè häc, c¸c hµm gép,...)
• C¸c cét t-¬ng øng trong tÊt c¶ c¸c b¶ng, hoÆc tËp con bÊt kú c¸c cét ®-îc sö
dông trong b¶n th©n mçi truy vÊn ph¶i cïng kiÓu d÷ liÖu.
• C¸c cét t-¬ng øng trong b¶n th©n tõng truy vÊn cña mét c©u lÖnh UNION
ph¶i xuÊt hiÖn theo thø tù nh- nhau. Nguyªn nh©n lµ do phÐp hîp so s¸nh c¸c
cét tõng cét mét theo thø tù ®-îc cho trong mçi truy vÊn.
• Khi c¸c kiÓu d÷ liÖu kh¸c nhau ®-îc kÕt hîp víi nhau trong c©u lÖnh
UNION, chóng sÏ ®-îc chuyÓn sang kiÓu d÷ liÖu cao h¬n (nÕu cã thÓ ®-îc).
• Tiªu ®Ò cét trong kÕt qu¶ cña phÐp hîp sÏ lµ tiªu ®Ò cét ®-îc chØ ®Þnh trong
truy vÊn ®Çu tiªn.
1.8.2 Sö dông UNION víi c¸c giao t¸c SQL kh¸c
C¸c nguyªn t¾c sau ph¶i ®-îc tu©n theo khi sö dông phÐp hîp víi c¸c c©u lÖnh
giao t¸c SQL kh¸c:
• Truy vÊn ®Çu tiªn trong c©u lÖnh UNION cã thÓ cã INTO ®Ó t¹o mét b¶ng tõ
kÕt qu¶ cuèi cïng.
• MÖnh ®Ò ORDER BY vµ COMPUTE dïng ®Ó x¸c ®Þnh thø tù kÕt qu¶ cuèi
cïng hoÆc tÝnh to¸n c¸c gi¸ trÞ tãm t¾t chØ ®-îc cho phÐp sö dông ë cuèi cña
c©u lÖnh UNION. Chóng kh«ng ®-îc phÐp sö dông trong bÊt kú b¶n th©n
truy vÊn nµo trong phÐp hîp.
• MÖnh ®Ò GROUP BY vµ HAVING chØ cã thÓ ®-îc sö dông trong b¶n th©n
tõng truy vÊn. Chóng kh«ng thÓ ®-îc sö dông ®Ó t¸c ®éng lªn kÕt qu¶ cuèi
cïng.
7UDQJꢀꢁꢒ
Trán Nguyãn Phong
• PhÐp to¸n UNION còng cã thÓ ®-îc sö dông bªn trong mét c©u lÖnh
INSERT.
• PhÐp to¸n UNION kh«ng thÓ sö dông trong c©u lÖnh CREATE VIEW.
1.9 PhÐp nèi
PhÐp nèi ®-îc sö dông ®Ó truy xuÊt d÷ liÖu tõ hai hay nhiÒu b¶ng hoÆc khung
nh×n trong cïng CSDL hoÆc trong c¸c CSDL kh¸c nhau bëi cïng mét phÐp xö lý.
1.9.1 PhÐp to¸n nèi
Mét c©u lÖnh nèi (join statament) thùc hiÖn c¸c c«ng viÖc sau ®©y:
• X¸c ®Þnh mét cét tõ mçi b¶ng.
• So s¸nh c¸c gi¸ trÞ trong nh÷ng cét nµy theo tõng dßng.
• KÕt hîp c¸c dßng cã nh÷ng gi¸ trÞ tho¶ m∙n ®iÒu kiÖn thµnh nh÷ng dßng
míi.
VÝ dô 2.13: C©u lÖnh d-íi ®©y cho biÕt hä tªn, ®Þa chØ cña c¸c nh©n viªn vµ tªn
®¬n vÞ mµ mçi nh©n viªn thùc thuéc:
SELECT hoten, diachi, tendonvi
FROM nhanvien, donvi
WHERE nhanvien.madonvi = donvi.madonvi
Danh s¸ch chän trong phÐp nèi
Gièng nh- c¸c c©u lÖnh chän (selection statment), mét c©u lÖnh nèi b¾t ®Çu víi
tõ khãa SELECT. C¸c cét ®-îc chØ ®Þnh tªn sau tõ kho¸ SELECT lµ c¸c cét ®-îc d-a
ra trong kÕt qu¶ truy vÊn. Trong danh s¸ch chän cña phÐp nèi, ta cã thÓ chØ ®Þnh mét
sè cét b»ng c¸ch chØ ®Þnh tªn cña cét ®ã hoÆc tÊt c¶ c¸c cét cña nh÷ng b¶ng tham gia
vµo phÐp nèi b»ng c¸ch sö dông dÊu sao (*). Danh s¸ch chän kh«ng nhÊt thiÕt ph¶i
bao gåm c¸c cét cña nh÷ng b¶ng tham gia phÐp nèi.
MÖnh ®Ò FROM trong phÐp nèi
MÖnh ®Ò FROM cña c©u lÖnh nèi x¸c dÞnh c¸c b¶ng (hay khung nh×n) tham gia
vµo phÐp nèi. NÕu ta sö dông dÊu * trong danh s¸ch chän th× thø tù cña c¸c b¶ng liÖt
kª trong FROM sÏ ¶nh h-ëng ®Õn kÕt qu¶ ®-îc hiÓn thÞ.
MÖnh ®Ò WHERE trong phÐp nèi
MÖnh ®Ò WHERE x¸c ®Þnh ®iÒu kiÖn nèi gi÷a c¸c b¶ng vµ c¸c khung nh×n ®-îc
chØ ®Þnh. Nã x¸c ®Þnh tªn cña cét ®-îc sö dông ®Ó nèi vµ phÐp to¸n nèi ®-îc sö dông.
C¸c to¸n tö so s¸nh d-íi ®©y ®-îc sö dông ®Ó x¸c ®Þnh ®iÒu kiÖn nèi
PhÐp to¸n
ý nghÜa
=
B»ng
>
Lín h¬n
>=
<
Lín h¬n hoÆc b»ng
Nhá h¬n
<=
<>
Nhá h¬n hoÆc b»ng
Kh¸c
Tải về để xem bản đầy đủ
Bạn đang xem 20 trang mẫu của tài liệu "Giáo trình Thực hành SQL - Trần Nguyên Phong", để tải tài liệu gốc về máy hãy click vào nút Download ở trên
File đính kèm:
giao_trinh_thuc_hanh_sql_tran_nguyen_phong.pdf

