Giáo trình Thực hành SQL - Trần Nguyên Phong

Giao trçnh thæc hanh SQL  
*,lv,ꢀ7+,j€8  
64/ꢀꢁ6WUXFWXUHGꢀ4XHU\ꢀ/DQJXDJHꢂꢀODꢀQJŒQꢀQJŽꢀŠŽFꢀVŽꢀGXQJꢀFKRꢀFD—FꢀK‹£ꢀTXD•Q  
WU“ꢀFꢀVꢀGŽꢀOL‹XꢀTXDQꢀK‹ꢃꢀ1JŒQꢀQJŽꢀ64/ꢀFKX‰QꢀŠŽFꢀŠŽDꢀUDꢀELꢀ$16,ꢀꢁ$PHULFDQ  
1DWLRQDOꢀ 6WDQGDUGVꢀ ,QVWLWXGHꢂꢀ YDꢀ ꢀ ,62ꢀ ꢁ,QWHUQDWLRQDOꢀ 6WDQGDUGVꢀ 2UJDQL]DWLRQꢂꢀ YL  
SKL‹Qꢀ EDQꢀ PLꢀ QK‰Wꢀ KL‹Qꢀ QD\ꢀ ODꢀ SKL‹Qꢀ EDQꢀ 64/ꢄꢅꢆꢀ ꢁSKL‹Qꢀ ED  
ꢇꢅꢅꢆꢂꢃꢀꢀ0ˆFꢀGXꢀFRꢀQKL‹XꢀQJŒQꢀQJŽꢀNKDFꢀQKDXꢀŠŽFꢀŠŽDꢀUDꢀFKRꢀFD  
TXDQꢀK‹ꢈꢀ64/ꢀODꢀQJŒQꢀQJŽꢀŠŽFꢀVŽꢀGXQJꢀUŒQJꢀUDLꢀKL‹QꢀQD\ꢀWURQJꢀU‰  
&6'/ꢀWKŽQJꢀPDLꢀQKŽꢀ2UDFOHꢈꢀ64/ꢀ6HUYHUꢈꢀ'%ꢆꢈꢀ0LFURVRIWꢀ$FFHVVꢃꢃꢃꢀ7KŒQJꢀTXDꢀ64/ꢈ  
•
Qꢀ ŠŽ  
FꢀK‹ꢀTXD  
WꢀQKL‹  
¤
Fꢀ ŠŽDꢀ UDꢀ QˆP  
QꢀWU“ꢀ&6'/  
XꢀK‹ꢀWKŒQJ  
£
”
—
ž
–
—
¤
—
£
•
¢
ž
£
¢
QJŽ  
NKDFꢈꢀЉ\ꢀOD  
SKŒꢀEL‹  
*LDRꢀWULQKꢀQD\ꢀQKˆPꢀFXQJꢀF‰SꢀFKRꢀEDQꢀWDLꢀOL‹XꢀWKDPꢀNKDRꢀWŽQJꢀŠŒ  
”
LꢀVŽ  
•
£
QJꢀFR  
—
¡
”
QJꢀŠ“QKꢀQJK‘DꢀŠŽ  
¤
FꢀGŽ  
–
ꢀOL‹  
£
—
”
ꢀQJŒQꢀQJŽ  
—
—
¡
•
ꢀGX£QJꢀYD”ꢀFX–QJꢀYꢀY‰£\ꢀPD”ꢀWU•ꢀQ‹Q  
¢
FDFꢀF‰XꢀO‹QKꢀJLDRꢀWDFꢀ64/ꢀVŽꢀGXQJꢀFKRꢀK‹ꢀTXDQꢀWU“ꢀ&6'/ꢀ0LFURVRIWꢀ64/ꢀ6HUYHUꢃ  
*LDRꢀWUQKꢀEDRꢀJŒPꢀEŒQꢀFKŽQJꢉ  
ꢄꢀ&KŽQJꢀꢇꢀJLLꢀWKL‹XꢀPŒWꢀVŒꢀF‰XꢀO‹QKꢀVŽꢀGXQJꢀWURQJꢀYL‹FꢀŠ“QKꢀQJK‘DꢀFD  
QJꢀGŽꢀOL‹XꢀQKŽꢀEDQJꢀGŽꢀOL‹XꢈꢀNKXQJꢀQKQꢀYDꢀFKꢀPXFꢃ  
—FꢀŠŒ¢L  
WŽ  
¤
–
£
•
–
£
”
£
ꢄꢀ &KŽQJꢀ ꢆꢀ WUQKꢀ ED\ꢀ EŒQꢀ F‰Xꢀ O‹QKꢀ WKDRꢀ WDFꢀ GŽꢀ OL‹Xꢀ ODꢀ 6(/(&7ꢈꢀ ,16(57ꢈ  
83'$7(ꢀYDꢀ'(/(7(ꢊꢀWURQJꢀŠRꢀW‰SꢀWUXQJꢀFKXꢀ\‹XꢀꢀF‰XꢀO‹QKꢀ6(/(&7ꢃ  
”
—
£
•
¢
•
£
ꢄꢀ&KŽQJꢀꢋꢀŠ‹žꢀF‰£SꢀŠ‹QꢀKDLꢀF‰XꢀO‹£QKꢀŠL‹žXꢀNKL‹QꢀODꢀ*5$17ꢀYD”ꢀ5(92.(ꢀVŽ  
¢
”
•ꢀGX£QJ  
WURQJꢀYL‹£FꢀF‰SꢀSKDWꢀYDꢀKX\ꢀERꢀTX\‹žQꢀFX•DꢀQJŽLꢀVŽ•ꢀGX£QJꢀ&6'/ꢃ  
¢
—
”
•
•
”
ꢄꢀ&KŽQJꢀ ꢌꢀJLLꢀWKL‹XꢀY‹ꢀWKXꢀWXFꢀOŽXꢀWUŽꢀYDꢀ WULJJHUꢃꢀ j‰\ꢀ ODꢀ QKŽQJꢀ ŠŒLꢀ WŽQJ  
&6'/ꢀŠŽFꢀVŽꢀGXQJꢀQKˆPꢀWˆQJꢀKL‹XꢀQˆQJꢀNKLꢀVŽꢀGXQJꢀ&6'/ꢃ  
ꢄꢀ7URQJꢀFKŽQJꢀSKXꢀOXFꢈꢀFKXQJꢀWŒLꢀJLLꢀWKL‹XꢀF‰XꢀWUXFꢀYD  
”
–
ꢀOL‹£XꢀFX  
•
DꢀFD  
—
•
QJꢀVŽ  
ꢀQ‹Xꢃ  
•
GX  
£
—
£
•
£
£
—
”
¢
¢
—
LꢀFD  
—
£
–
1JRDLꢀUDꢀWURQJꢀFKŽQJꢀQD\ꢀFRQꢀFRꢀFDFꢀKDPꢀWKŽQJꢀVŽꢀGXQJꢀWURQJꢀ64/ꢀ6HUYHUꢀŠ‹ꢀFDF  
EDQꢀWKDPꢀNKDRꢀWURQJꢀWKŽFꢀKDQKꢃ  
0ˆFꢀGXꢀŠDꢀU‰WꢀFŒꢀJˆQJꢀQKŽQJꢀJLDRꢀWUQKꢀNKŒQJꢀWK‹ꢀWUDQKꢀŠX¤FꢀFD—FꢀVDLꢀVR—Wꢃꢀ5‰¢W  
PRQJꢀQK‰QꢀŠŽFꢀVŽꢀJRSꢀ\ꢀFXDꢀFDFꢀEDQꢀŠ‹ꢀJLDRꢀWUQKꢀQJD\ꢀFDQJꢀKRDQꢀWKL‹QꢀKQꢃ  
7UDQJꢀꢁ  
Trán Nguyãn Phong  
Chæång 1: NGÄN NGÆ ÂËNH NGHÉA DÆ LIÃU  
1JŒQꢀQJŽ  
–
ꢀŠ“QKꢀQJK‘DꢀGŽ  
–
ꢀOL‹£  
XꢀEDRꢀJŒ  
ž
PꢀFD—  
£
QKꢀFKRꢀSKH—SꢀQJŽLꢀVŽꢀGXQJꢀŠ“QK  
QJK‘Dꢀ&6'/ꢀYD”  
ꢀFD—FꢀŠŒ  
¢
LꢀWŽ  
¤
—
•
—
FꢀNKXQJꢀQKQꢂꢀFKꢀPXFꢂꢃꢃꢃ  
ꢁꢂꢀ7DRꢀEDQJꢀGˆꢀOLꢃX  
'ŽꢀOL‹XꢀE‹QꢀWURQJꢀPŒ  
QJꢂꢀGŽꢀOL‹XꢀŠŽFꢀWŒꢀFKŽ  
PŒWꢀEDQꢀJKLꢀGX\ꢀQK‰WꢀYDꢀPŒ  
ꢁꢂꢁꢀꢀ&DFꢀWKX†FꢀWŒQKꢀOLꢃQꢀTXDQꢀ„ꢃQꢀEDQJ  
.KLꢀWDRꢀYDꢀODPꢀYL‹FꢀYLꢀFDFꢀEDQJꢀGŽ  
QJꢀQKŽꢄꢀNL‹XꢀGŽꢀOL‹XꢂꢀFDFꢀUDQJꢀEXŒ  
FꢀVŽꢀGXQJꢀQKˆPꢀWDRꢀUDꢀFDFꢀUDQJꢀEXŒ  
RꢀUDꢀFDFꢀWRDQꢀYHQꢀWKDPꢀFKL‹XꢀJLŽ  
–
£
¤
Wꢀ&6'/ꢀŠŽ  
¤
FꢀWŒꢀFKŽ  
FꢀGRQJꢀYD  
WꢀEL‹XꢀGL‹QꢀFKRꢀPŒ¤  
—
–
ꢀWURQJꢀFD  
—
FꢀED•  
—F  
ED  
•
–
£
¤
—
—
LꢀGD  
£
—
”
”
—
¤
Wꢃꢀ0Œ  
¡
LꢀPŒ  
¤
”
¡Q  
¤
•
¢
”
¡
¤
¤
¡
£
”
”
£
—
—
•
–
£
XꢂꢀWDꢀF‰  
FꢂꢀFDFꢀNKRD  
FꢀWRDQꢀYHQꢀWU‹QꢀFD  
DꢀFDFꢀEDQJꢀGŽꢀOL‹XꢀWURQJꢀ&6'/ꢃ  
ž
•
LꢀŠ‹ꢀ\  
FꢀTXLꢀWˆ  
FꢀFŒWꢀꢅWUŽ  
—
¢
—
FꢀWKXŒ  
¤FꢀW’QK  
NKD  
W’QKꢀQD  
ED  
Dꢂꢀ.LꢃXꢀGˆꢀOLꢃX  
0ŒLꢀPŒWꢀFŒ  
Š“QKꢀŠDꢀŠŽFꢀŠ“QKꢀQJK‘DꢀWŽ  
ŠŽFꢀFKRꢀSKH  
FKX‰QꢂꢀQJRDLꢀUDꢀFR  
GŽDꢀWU‹QꢀFD  
'ŽLꢀЉ\ꢀODꢀPŒWꢀVŒꢀNL‹XꢀGŽꢀOL‹XꢀWKŽQJꢀŠŽFꢀVŽꢀGXQJꢀWURQJꢀJLDRꢀWD  
—
•
–
£
—
”
¤
—
—
—

—
FꢀWKXŒ¤F  
”
\ꢀŠŽ  
¤
•
£
š
£
—
”
¤
”
£
—
¤
”
•
–
QJꢀQKŽꢀWD  
£
—
”
£
–
—
•
–
£
¡
¤
¤
WꢀꢅWUŽ  
”
•
DꢀPŒ  
¤
WꢀED  
•
ž
XꢀSKD  
•
LꢀWKXŒ  
ꢀOL‹XꢀTXLꢀŠ“QKꢀFD  
QJꢀFXQJꢀF‰SꢀFD  
QJꢀŠ“QKꢀQJK‘DꢀFDFꢀNL‹Xꢀ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ꢀNL‹Xꢀ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ꢀEX†Fꢀꢄ&21675$,176ꢅ  
7U‹QꢀFDFꢀEDQJꢀGŽꢀOL‹XꢂꢀFDFꢀUDQJꢀEXŒ  
• 4XLꢀŠ“QKꢀFDFꢀJLDꢀWU“ꢀGŽꢀOL‹XꢀKD\ꢀNKXŒQꢀGD  
FDFꢀFŒWꢀFXDꢀEDQJꢀꢅUDQJꢀEXŒFꢀ&+(&.ꢆ  
• 4XLꢀŠ“QKꢀJLDꢀWU“ꢀPˆFꢀŠ“QKꢀFKRꢀFDFꢀFŒWꢀꢅUD  
—
•
–
£
—
”
¤
FꢀŠŽ  
¤
FꢀVŽ  
•
£
QJꢀQKˆ  
š
PꢀFD—  
£
FꢀŠ’FKꢀVDXꢄ  
SꢀQK‰QꢀWU‹Q  
—
—
–
£
£
QJꢀGŽ  
–
£
¤
—
¢
£
—
¤
•
•
”
¤
—
£
—
¤
”QJꢀEXŒ¤Fꢀ'()$8/7ꢆꢃ  
Giao trçnh thæc hanh SQL  
QꢀYHQꢀWKDPꢀFKL‹XꢀJLŽ  
Fꢀ 35,0$5<ꢀ .(<ꢂꢀ 81,48(ꢀ YD  
• 7D  
FDFꢀ ED  
)25(,*1ꢀ.(<ꢆꢃ  
&KXQJꢀWDꢀVHꢀWPꢀKL‹XꢀFKLꢀWL‹  
&5($7(ꢀ7$%/(ꢃ  
ꢁꢂꢆꢀ7DRꢀEDQJꢀE‚QJꢀWUX\ꢀYƒQꢀ64/  
£
”
QꢀYH  
£
QꢀWKŽ  
£
¤
WꢀED•  
QJꢀGŽ  
–
£
XꢀYD  
”
”
£
¢
–D  
—
•
–
£
Xꢀ WURQJꢀ &6'/ꢀ ꢅUD  
”
¤
”
—
–
¢WꢀKQꢀY‹žꢀFD—FꢀUD”QJꢀEXŒ¤FꢀQD”\ꢀ•ꢀSK‰žQꢀWUQKꢀED”\ꢀY‹žꢀF‰XꢀO‹£QK  
7D  
Fꢀ&6'/ꢃꢀ%‹QꢀWURQJꢀFD  
WKŒQJꢀWKLꢀY‹ꢀFDFꢀŠŒLꢀWŽ  
ŠŒLꢀWŽQJꢀŠRꢃꢀj‹ꢀFRꢀWK‹ꢀWŒꢀFKŽ  
ŠŽFꢀFDFꢀ\‹XꢀF‰XꢀVDXꢄ  
• %DQJꢀŠŽFꢀVŽ  
• %DQJꢀVHꢀEDRꢀJŒ  
• 1KŽQJꢀFŒWꢀQD  
• &RꢀVŽꢀGXQJꢀFD  
QKXꢀWK‹ꢀQDR"  
• 1KŽQJꢀFŒWꢀQD  
GDQJꢀFKꢀPXFꢀQD  
Dꢂꢀ7DRꢀEDQJꢀGˆꢀOLꢃXꢇ  
j‹ꢀWDRꢀPŒWꢀEDQJꢀWURQJꢀ&6'/ꢂꢀED  
SꢀQKŽꢀVDXꢄ  
£
—
FꢀED  
•
”
ꢀPŒ  
¤
¤
QJꢀWURQJꢀTXD  
QJꢀWKŽQJꢀŠŽFꢀVŽ  
FꢀYDꢈKRˆFꢀEL‹XꢀGL‹QꢀPŒ  
QJꢀGŽꢀOL‹XꢂꢀEDQꢀ’WꢀQK‰WꢀF‰  
—
ꢀWUQKꢀWKL‹  
ꢀGXQJꢀQKˆ  
LꢀTXDQꢀK‹  
QꢀSKDLꢀ[D  
¢
WꢀN‹  
PꢀEL‹XꢀGL‹  
ꢀJLŽ  
FꢀŠ“QK  
¢ꢀYD”ꢀFD”LꢀGˆ£  
FD  
—
—
Fꢀ&6'/ꢂꢀPŒ  
”
¤
•
£
š
¡
Q
—
¤
QJꢀWURQJꢀWK‹  
”
£
¡
¢
£
–DꢀFD—F  
¢
¤
—
–
£
£
¢
ž
•
—
¤
—
ž
•
¤
”
ꢀ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:  
7‹Qꢀ ED  
WURQJꢀPŒ  
Š“QKꢀGDQK  
7‹QꢀFXDꢀFŒ  
•
QJꢀ F‰  
ž
Rꢃꢀ 7‹Qꢀ 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ꢀWX‰QꢀWKHRꢀFD  
Wꢀ EDQJꢀ SKDLꢀ FRꢀ ’W  
ED  
TXLꢀ Wˆ  
QK‰WꢀPŒ  
•
•
LꢀFR  
—
ꢀW‹QꢀNKD—  
FꢀQKDXꢀYD”  
ꢀSKD  
•
—F  
ž
¡
Lꢀ PŒ  
¤
•
•
—
- col_i_properties:  
- constraints_i:  
&D  
FXDꢀFŒ  
JLD  
&DFꢀ UD  
UDQJꢀEXŒ  
NKXŒQꢀGDQJꢀGŽꢀOL‹Xꢃ  
—
¤
FꢀW’QKꢀFX  
•
DꢀFŒ  
¤
WꢀWKŽ  
—ꢀLꢀTXLꢀŠ“QKꢀNL‹XꢀGŽ  
–
ꢀOL‹  
£X  
•
¤
”
¤
WꢀFR  
—ꢀFKRꢀSKH—  
SꢀFK‰¢  
SꢀQK‰£Q  
—
—
”
¤
¢
—
ꢆꢀ WU‹Qꢀ FŒ  
¤
Wꢀ WKŽ  
—ꢀ Lꢀ QKŽꢀ FD—F  
”
¤
ž
—
—
FꢀPˆ£FꢀŠ“QKꢂꢀFD—  
FꢀTXLꢀŠ“QKꢀY‹ž  
- table_constraint:  
&D—FꢀUD”  
QJꢀEXŒ  
¤
FꢀWU‹QꢀED•QJꢀGŽ–ꢀOL‹£Xꢃ  
9ŒꢀGXꢀꢁꢂꢁꢇꢀ&‰XꢀO‹  
£
QKꢀGŽ  
—
LꢀЉ\ꢀWKŽ  
£
FꢀKL‹£  
QKꢀYL‹£  
FꢀWD£RꢀED•QJꢀ1+$19,(1ꢀEDRꢀJŒžPꢀFD—Fꢀ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ꢀEX†FꢀWURQJꢀEDQJꢀGˆꢀOLꢃX  
Dꢀ5DQJꢀEX†Fꢀ&+(&.  
5D  
ꢀ WK‹ꢀ ŠŽ  
&+(&.ꢃꢀj‹ꢀNKDLꢀED  
SKDSꢀQKŽꢀVDXꢄ  
”
¤
Fꢀ&+(&.ꢀŠŽ  
Sꢀ QK‰Qꢀ ŠŒLꢀ Y  
RꢀPŒWꢀUDQJꢀEXŒ  
¤
FꢀVŽ  
Lꢀ PŒ  
Fꢀ&+(&.ꢀŠŒ  
•
ꢀGX  
£
—FꢀJLD—ꢀWU“ꢀKD\ꢀNKXŒQꢀGDQJꢀGŽꢀOL‹X  
FR  
—
¤
¢
£
¢
—
¤
¤
¤
¤Wꢀ FR  
—
ꢀ WK‹ꢀ FR  
—
ꢀ QKL‹ž  
Xꢀ UD”  
QJꢀ EXŒ  
¤
F
—
—
¤
”
¤
¢
—
LꢀPŒ  
¤
¤
”
—
ꢂꢀWDꢀVŽ  
•
ꢀGX  
£
—
[CONSTRAINT constraint_name]  
CHECK (expression)  
7URQJꢀŠR  
OL‹XꢀŠŽFꢀFKRꢀSKH  
WU“ꢀŠXQJꢀPLꢀŠŽFꢀFK‰  
9ŒꢀGXꢀꢁꢂꢆꢇꢀj‹ꢀTXLꢀŠ“QKꢀŠL‹QꢀWKRDLꢀFXDꢀQK‰QꢀYL‹QꢀSKDLꢀFRꢀGDQJꢀꢉꢊꢊꢊꢊꢊꢊꢉꢀꢅFKˆQJꢀKDQ  
ꢋꢌꢍꢎꢍꢎꢆꢂꢀF‰XꢀO‹QKꢀꢀY’ꢀGXꢀꢁꢃꢁꢀŠŽFꢀYL‹WꢀQKŽꢀVDXꢄ  
—
ꢀH[SUHVVLRQꢀOD  
Sꢃꢀ.KLꢀŠR  
SꢀQK‰  
”
ꢀPŒ  
¤
—
FꢀORJLFꢀTXLꢀŠ“QKꢀJLD  
—
ꢀWU“ꢀKD\ꢀNKXŒQꢀ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ꢀEX†Fꢀ'()$8/7  
5DQJꢀEXŒFꢀ'()$8/7ꢀŠŽ  
ꢀWU“ꢀQD\ꢀVHꢀWŽꢀŠŒQJꢀŠŽFꢀJDQꢀFKRꢀFŒ  
ꢀNKŒQJꢀFKꢀŠ“QKꢀJLDꢀWU“ꢀFKRꢀFŒWꢃꢀ7U‹QꢀPŒ  
EXŒFꢀ'()$8/7ꢀꢅWŽFꢀODꢀFKꢀFRꢀWK‹ꢀFRꢀWŒLꢀŠDꢀPŒ  
j‹ꢀ NKDLꢀ EDRꢀ PŒWꢀ JLDꢀ WU“ꢀ PˆFꢀ Š“QKꢀ FKRꢀ PŒ  
'()$8/7ꢀFKRꢀFŒWꢀEˆQJꢀFDFKꢀVŽꢀGXQJꢀFXꢀSKD  
”
¤
¤
FꢀVŽ  
•
£
QJꢀŠ‹ꢀTXLꢀŠ“QKꢀJLD  
\ꢀNKLꢀQJŽLꢀVŽꢀGXQJꢀEŒꢀVXQJꢀPŒWꢀEDQꢀJKL  
LꢀFŒWꢀFKꢀFRꢀWK‹ꢀFRꢀQKL‹XꢀQK‰WꢀPŒWꢀUDQJ  
ꢀWU“ꢀPˆFꢀŠ“QKꢆꢃ  
Wꢂꢀ WDꢀ FKꢀ Š“QKꢀ PŒWꢀ UDQJꢀ EXŒF  
—ꢀWU“ꢀPˆ£FꢀŠ“QKꢀFKRꢀPŒWꢀFŒWꢃ  
*LD  
—
”
–
£
¤
¤
—
¤
”
”
PD  
”
—
¤
¡
¤
—
—
ž
¢
¤
”
¤
—
”
—
—
¢
¤
WꢀJLD  
—
£
—
¤
—
£
¤
Wꢀ FŒ¤  
¤
š
—
•
£
—
—
SꢀVDXꢄ  
[CONSTRAINT constraint_name]  
DEFAULT {const_expression  
nonarguments_function  
NULL}  
9Œꢀ GXꢀ ꢁꢂꢈꢇꢀ &‰Xꢀ O‹QKꢀ GŽLꢀ Љ\ꢀ FKꢀ Š“QKꢀ JLDꢀ WU“ꢀ PˆFꢀ Š“QKꢀ ODꢀ ꢉNKŒQJꢀ 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ꢀEX†Fꢀ35,0$5<ꢀ.(<  
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ  
ꢅꢐꢆꢀm  
FKRꢀUD  
u
ꢀY’ꢀGX  
£
ꢀQD  
”
\ꢂꢀFKX—  
QJꢀWŒLꢀNKŒQJꢀŠˆ£  
WꢀW‹QꢀFKRꢀUD”  
QJꢀEXŒ¤  
Fꢀ'()$8/7ꢃꢀ.KLꢀŠR—  
ꢂꢀK‹£  
ꢀTXD•  
QꢀWU“ꢀ&6'/ꢀVH  
–ꢀWŽ£ꢀŠŒ¤QJꢀŠˆ£WꢀW‹Q  
”
QJꢀEXŒ  
¤
FꢀQD”\ꢃꢀ7X\ꢀQKL‹QꢂꢀŠ‹ꢀG‹  
¡
”
£
•
QꢀWU“ꢂꢀED£QꢀQ‹QꢀŠˆ£WꢀW‹QꢀFKRꢀFD—  
FꢀUD”QJꢀEXŒ¤Fꢃ  
7UDQJꢀꢏ  
Trán Nguyãn Phong  
QJꢀŠ‹ꢀŠ“QKꢀQJK‘DꢀNKRDꢀFK’QKꢀFXDꢀEDQJꢃ  
FꢀJLDꢀWU“ꢀWUXQJꢀOˆSꢀŠŽF  
ꢀFK’QKꢀVHꢀJLXSꢀFKRꢀWDꢀ[D  
Xꢃꢀ0ŒLꢀPŒWꢀEDQJꢀFKꢀFRꢀWK‹  
ꢀFK’QKꢀNKŒQJꢀFK‰SꢀQK‰QꢀJLDꢀWU“ꢀ18//ꢃ  
FꢀŠDPꢀEDRꢀW’QKꢀWRDQꢀYHQꢀWKŽ  
5D  
WꢀUDQJꢀEXŒ  
ŠŽDꢀYDRꢀWU‹QꢀFD  
Š“QKꢀŠŽFꢀGX\ꢀQK‰  
FRꢀGX\ꢀQK‰WꢀPŒWꢀNKRD  
5DQJꢀEXŒFꢀ35,0$5<ꢀ.(<ꢀOD  
QKŽꢀWRDQꢀYHQꢀWKDPꢀFKL‹Xꢃ  
j‹ꢀNKDLꢀEDRꢀPŒWꢀ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ꢀNKŒQJꢀFR—ꢀFD—  
”
—
¤
—
—
—
—
ꢀWU“ꢀFX  
•
DꢀNKRD  
—
–
—
—F  
¤
¢
¤
”
•
•
QJꢀGŽ  
–
ꢀOL‹  
£
¡
¤
•
—
—
¢
¤
—
”
•
—
¢
£
—
”
¤
”
•
£
•
•
”
£
£
–
”
£
¢
—
¤
”
¤Fꢀ35,0$5<ꢀ.(<ꢂꢀED£QꢀVŽ•ꢀGX£QJꢀFX—ꢀSKD—SꢀVDXꢄ  
1‹  
Š“QKꢀGDQKꢀVD  
ODꢀPŒWꢀW‰SꢀK  
EXŒFꢀꢀPŽFꢀED  
9ŒꢀGXꢀꢁꢂꢉꢇꢀWD  
¢
—
ꢀFK’QKꢀFX  
•
DꢀPŒWꢀEDQJꢀFKꢀODꢀPŒWꢀFŒWꢂꢀNKLꢀŠRꢀEDQꢀNKŒQJꢀF‰QꢀWKL‹WꢀSKD  
ꢀGXQJꢀUDQJꢀEXŒFꢀꢀPŽFꢀFŒWꢆꢃꢀ7URQJꢀWUŽQJꢀKSꢀNKRD  
ꢀO‹QꢂꢀEDQꢀSKDLꢀFKꢀŠ“QKꢀGDQKꢀVDFKꢀFDFꢀFŒWꢀꢅVŽꢀGXQJꢀUD  
¤
•
”
¤
¤
—
£
ž
¢
•
LꢀFK  
—
—
¤
•
£
”
¤
•
—
¤
”
¤
—
ꢀFK’QK  
QJ  
”
¤
£
¤
”
¤
WꢀWU  
•
£
•
—
—
¤
•
£
”
¤
•
—
•
£
RꢀEDQJꢀ1+$19,(1ꢀY—LꢀNKRD—ꢀFK’QKꢀ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  
)
F‰XꢀO‹£QKꢀWU‹Qꢀ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ꢀEX†Fꢀ81,48(  
7KD\ꢀYꢀVŽꢀGXQJꢀNKRD  
RꢀW’QKꢀWRDQꢀYHQꢀWKŽFꢀWK‹ꢃꢀ6Ž  
FꢀJLDꢀWU“ꢀGŽꢀOL‹XꢀWU‹QꢀPŒ  
WꢀUDQJꢀEXŒFꢀ81,48(ꢂꢀED  
•
£
—
ꢀFK’QKꢂꢀED  
ꢀGXQJꢀUD  
WꢀꢅKD\ꢀQKL‹  
QꢀVŽꢀGX  
£
QꢀFR  
QJꢀEXŒ  
XꢆꢀFŒ  
QJꢀFX  
—
ꢀWK‹ꢀVŽ  
Fꢀ81,48(ꢀWU‹QꢀPŒ  
WꢀQD\ꢀNKŒQJꢀŠŽFꢀWUX  
ꢀSKDSꢀO‹QKꢀVDXꢀЉ\ꢄ  
•
£
QJꢀUD  
”
¤
Fꢀ81,48(ꢀŠ‹ꢀŠD  
•P  
ED  
EXŒ  
NKDLꢀED  
•
”
£
£
•
£
”
¤
¤
ž
XꢆꢀFŒ¤WꢀEˆW  
¤
FꢀFD  
—
—
–
£
¤
ž
¤
¤
”
£
—
RꢀPŒ  
¤
”
¤
£
•
£
—
—
£
[CONSTRAINT constraint_name]  
UNIQUE [CLUSTERED | NONCLUSTERED]  
[colname1 [,colname2 [...,colname16]])]  
D 5DQJꢀEX†Fꢀ)25(,*1ꢀ.(<  
&DFꢀEDQJꢀE‹QꢀWURQJꢀPŒWꢀ&6'/ꢀWKŽ  
ꢀQD\ꢀŠŽFꢀ[DFꢀŠ“QKꢀGŽDꢀWU‹QꢀW’QKꢀEˆQJꢀQKDXꢀJLŽ  
QD\ꢀYLꢀPŒWꢀKD\ꢀQKL‹XꢀWUŽQJꢀFXDꢀEDQJꢀNKDFꢃꢀ1‹XꢀPŒ  
EDQJꢀFRꢀJLDꢀWU“ꢀŠŽFꢀ[DFꢀŠ“QKꢀWŽꢀPŒWꢀꢅKD\ꢀQKL‹XꢆꢀWUŽ  
FŒWꢀŠR FꢀJRLꢀODꢀFRꢀUDQJꢀEXŒFꢀNKRDꢀQJRDLꢀꢅIRUHLJQꢀNH\ꢆꢃꢀ&D  
ꢀGXQJꢀN‹WꢀKSꢀYLꢀFDFꢀUDQJꢀEXŒFꢀ35,0$5<ꢀ.(<ꢀYD  
RꢀW’QKꢀWRDQꢀYHQꢀWKDPꢀFKL‹XꢀJLŽDꢀFDFꢀEDQJꢀŠŽFꢀFKꢀŠ“QKꢃ  
j‹ꢀNKDLꢀEDRꢀNKRDꢀQJRDLꢂꢀEDQꢀVŽꢀGXQJꢀFXꢀSKDSꢀO‹QKꢀQKŽꢀVDXꢄ  
[CONSTRAINT constraint_name ]  
—
•
¤
”
QJꢀFR  
—
¢
LꢀTXDQꢀK‹  
DꢀPŒWꢀKD\ꢀQKL‹  
WꢀꢅKD\ꢀQKL‹XꢆꢀFŒ  
QJꢀNKRDꢀFXDꢀED  
FꢀUDQJꢀEXŒ  
ꢀ81,48(ꢀQKˆšP  
£
ꢀY  
—
LꢀQKDXꢃꢀ&D  
XꢀWUŽQJꢀ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ꢀ ED•QJꢀ 1+$19,(1ꢅ0$19ꢂꢀ +27(1ꢂꢀ 1*$<6,1+ꢂꢀ ',$&+,ꢂ  
',(17+2$,ꢂꢀ0$'9ꢆꢀYD”  
ꢀ'219,ꢅ0$'9ꢂꢀ7(1'9ꢆꢀWKHRꢀŠŒžꢀKQKꢀGŽ—LꢀЉ\ꢄ  
1+$19,(1  
ꢋ0$19  
'219,  
∞
ꢋ0$'9  
+27(1  
7(1'9  
1*$<6,1+  
',$&+,  
',(17+2$,  
0$'9  
ꢁ
+QK ꢇꢃꢇ  
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)  
)
ꢁꢂꢈꢀ6ˆDꢀ„†LꢀEDQJ  
6DXꢀNKLꢀŠDꢀWD  
QJꢀQKŽꢀEŒꢀVXQJꢀFŒ  
EDQJꢂꢀEDQꢀVŽꢀGXQJꢀF‰Xꢀ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ꢀW’QKꢀ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ꢀUD”QJꢀEXŒ  
¤
FꢀFKRꢀED•QJꢀ'219,ꢀWU‹QꢀFŒ¤Wꢀ0$'9ꢀTXLꢀŠ“QKꢀPD–ꢀŠQꢀY“  
SKD•Lꢀ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ꢀGŽDꢀWU‹QꢀFD  
ORDLꢄꢀ FKꢀ PXFꢀ WXꢀ QKRPꢀ ꢅFOXVWHUHGꢀ LQGH[ꢆꢀ YD  
LQGH[ꢆꢃ  
• 0ŒWꢀFKꢀPX  
WŽꢀQKŽꢀWKŽꢀWŽ  
WK‹ꢀFRꢀWŒLꢀŠDꢀPŒWꢀFKꢀPXFꢀWXꢀQKRPꢃ  
• 0ŒWꢀFKꢀPXFꢀNKŒQJꢀWXꢀKRPꢀODꢀPŒWꢀFKꢀPX  
NKŒQJꢀQKŽꢀWKŽꢀWŽꢀY‰WꢀO\ꢀFXDꢀFDFꢀGRQJꢀWURQJꢀED  
WUX\ꢀF‰SꢀŠ‹QꢀFDFꢀGRQJꢀGŽꢀOL‹XꢀQKDQKꢀKQꢀQKL‹XꢀVRꢀY  
.KLꢀWDꢀNKDLꢀEDRꢀPŒWꢀNKRDꢀFK’QKꢀKD\ꢀNKRDꢀ81,48(ꢀWU‹QꢀPŒ  
DꢀEDQJꢂꢀK‹ꢀTXDQꢀWU“ꢀ&6'/ꢀVHꢀWŽꢀŠŒQJꢀWDRꢀFKꢀPXFꢀWU‹QꢀFDFꢀFŒ  
WK‹PꢀFDFꢀFKꢀPXFꢀNKDFꢀEˆQJꢀFDFKꢀVŽꢀGXQJꢀF‰XꢀO‹QKꢀ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ꢀ NKŒQJꢀ WX  
£
ꢀ QKR  
¤
£
FꢀWX  
£
—
PꢀOD  
”
¤
WꢀFKꢀPX  
£
FꢀPD  
”
—
ꢀWKŽ  
—
£
—
FꢀNKRD—ꢀWŽQJ  
£
—
£
ꢀY‰  
£
—
ꢀFXDꢀFD  
•
—
”
QJꢀWŽQJꢀŽ  
—
ž
£
•
¤
WꢀED•  
¤
£
£
—
”
¤
£
FꢀPD  
”
—
ꢀWKŽ  
—
ꢀWŽ  
•
DꢀFD—  
FꢀNKRD—  
—
£
£
—
•
—
”
•
QJꢃꢀ&D  
—
£
FꢀWX  
—
PꢀKŒ¡ꢀWU  
¤
ꢀYL‹£F  
£
¢
—
”
–
£
ž
—
LꢀFDFꢀFKꢀPXFꢀNKŒQJꢀWXꢀQKRPꢃ  
WꢀKD\ꢀQKL‹XꢀFŒWꢀ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ꢀNKŒQJꢀWX  
£
ꢀQKR  
—PꢀWU‹QꢀFŒ  
¤
Wꢀ0$'9ꢀFX  
•
D
ED•QJꢀ1+$19,(1  
CREATE NONCLUSTERED INDEX idx_nhanvien_madv  
ON nhanvien(madv)  
ꢈꢂꢀ.KXQJꢀQK‰Qꢀꢄ9LHZꢅ  
0ŒWꢀNKXQJꢀQKQꢀFRꢀWK‹ꢀFRLꢀQKŽꢀODꢀPŒWꢀeEDQJꢀDRfꢀFRꢀQŒLꢀGXQJꢀŠŽ  
¤
Fꢀ[D—  
”
PŒ  
[X‰  
FDFKꢀVŽ  
0ŒWꢀNKXQJꢀQKQꢀWURQJꢀJLŒQJꢀQKŽꢀPŒWꢀEDQJꢀYLꢀPŒWꢀW‰RꢀFDFꢀW‹QꢀFŒ  
GŽꢀOL‹Xꢃꢀ7X\ꢀQKL‹QꢂꢀNKXQJꢀQKQꢀNKŒQJꢀWŒQꢀWDLꢀQKŽꢀODꢀPŒWꢀF‰XꢀWUXFꢀOŽXꢀWUŽ  
&6'/ꢃꢀ'ŽꢀOL‹XꢀE‹QꢀWURQJꢀNKXQJꢀQKQꢀWKŽFꢀFK‰WꢀODꢀGŽꢀOL‹XꢀŠŽFꢀ[DFꢀŠ“QKꢀWŽ  
QKL‹XꢀEDQJꢀFꢀVꢀYDꢀGRꢀŠRꢀSKXꢀWKŒFꢀYDRꢀFDFꢀEDQJꢀFꢀV  
&DFꢀNKXQJꢀQKQꢀWKŽQJꢀŠŽFꢀVŽꢀGXQJꢀE‹QꢀWURQJꢀ&6'/ꢀQKˆPꢀFD  
¤
¢
Qꢃꢀ0Œ  
¤
WꢀWUX\ꢀY‰  
ꢀOL‹XꢀWŽꢀFD  
QKꢀ6(/(&7ꢀꢅŠŽ  
¢
QꢀꢅTXHU\ꢆꢀOD  
FꢀEDQJꢀWURQJꢀ&6'/ꢃꢀ&D  
FꢀŠ‹ꢀF‰SꢀŠ‹QꢀWURQJꢀFKŽQJꢀꢌꢆꢃ  
”
ꢀPŒ  
¤
£
SꢀFD  
—
¡
QꢀꢅLQVWUXFWLRQꢆꢀQKˆ  
š
¢
”
–
£
”
—
•
—
¢
QꢀŠŽFꢀWKŽFꢀKL‹  
¤
£
£
QꢀEˆšQJ  
—
•
£
£
¤
ž
¢
¤
WꢀYD  
”
—
”
QJ  
¢
—
–
ꢀGŽ  
–
ꢀOL‹  
£
–
£
£
¢
”
–
£
¤
—
”
ꢀPŒ¤WꢀKD\  
ž
•
•
”
—
£
¤
”
—
•
•ꢃ  
—
£
FꢀŠ’FKꢀVDX  
Љ\ꢄ  
• 6Ž  
•ꢀGX£QJꢀNKXQJꢀQKQꢀŠ‹ꢀW‰£SꢀWUXQJꢀWU‹QꢀGŽ–ꢀOL‹£XꢀŠŽ¤Fꢀ[D—FꢀŠ“QKꢃ  
7UDQJꢀꢒ  
Trán Nguyãn Phong  
• 6Ž  
• 6ŽꢀGXQJꢀNKXQJꢀQKQꢀŠ‹ꢀWX\ꢀEL‹QꢀGŽꢀOL‹X  
• 6ŽꢀGXQJꢀNKXQJꢀQKQꢀŠ‹ꢀ[X‰WꢀNK‰XꢀꢅH[SRUWꢆꢀGŽ  
• 6ŽꢀGXQJꢀNKXQJꢀQKQꢀŠ‹ꢀEDRꢀP‰WꢀGŽꢀOL‹Xꢃ  
j‹ꢀWDRꢀNKXQJꢀQKQꢂꢀEDQꢀVŽꢀGXQJꢀF‰XꢀO‹QKꢀFR—ꢀFX—ꢀSKD—SꢀQKŽꢀVDXꢄ  
•ꢀGX£QJꢀNKXQJꢀQKQꢀŠ‹ꢀŠQꢀJLD•QꢀKRD—ꢀWKDRꢀWD—FꢀGŽ–ꢀOL‹£Xꢃ  
•
£
¢
–ꢀOL‹£Xꢃ  
£
£
•
£
£
CREATE VIEW view_name[(column_name [, column_name]...)]  
AS select_statement  
7URQJꢀŠR  
WꢀKD\ꢀQKL‹XꢀED  
.KLꢀWDRꢀNKXQJꢀQKQꢀF‰  
• 7‹QꢀNKXQJꢀQKQꢀSKDLꢀWX‰QꢀWKHRꢀFD  
PŒLꢀQJŽLꢀVŽꢀGXQJꢃ  
• .KŒQJꢀWK‹ꢀUDQJꢀEXŒ  
• .KŒQJꢀWK‹ꢀ[‰\ꢀGŽQJꢀFKꢀPX  
• 7URQJꢀF‰XꢀO‹QKꢀ&5($7(ꢀ9,(:ꢀNKŒQJꢀF‰  
FDFꢀFŒWꢀFXQJꢀQKŽꢀNL‹XꢀGŽꢀOL‹XꢀFXDꢀFKXQJꢀVHꢀWŽQJꢀŽ  
FKRQꢀFXDꢀF‰XꢀO‹QKꢀ6(/(&7ꢃ  
• %DQꢀSKDLꢀ[DFꢀŠ“QKꢀW‹QꢀFŒWꢀWURQJꢀF‰XꢀO‹  
VDXꢄ  
− 0ŒLꢀFŒWꢀFXDꢀNKXQJꢀQKQꢀŠŽFꢀSKDWꢀVLQKꢀWŽꢀPŒWꢀEL‹XꢀWKŽFꢀVŒ  
VˆQꢀKD\ꢀPŒWꢀKˆQJꢃ  
− +DLꢀKD\ꢀQKL‹XꢀFŒWꢀFX  
− %DQꢀPXŒQꢀWKD\ꢀŠŒLꢀW‹QꢀFŒWꢀWURQJꢀNKXQJꢀQKQꢀNKDFꢀYLꢀW‹QꢀFŒ  
9ŒꢀGXꢀꢁꢂꢎꢇꢀ&‰XꢀO‹  
QKꢀGŽLꢀЉ\ꢀVHꢀE“ꢀOŒLꢀGRꢀW‹QꢀFXDꢀFŒWꢀWKŽꢀꢇꢀNKŒQJꢀ[D  
—
ꢀVHOHFWBVWDWHPHQWꢀOD  
”
ꢀPŒ  
¤
£
QKꢀ6(/(&7ꢀGX  
”
QJꢀŠ‹ꢀWUX\ꢀ[X‰  
¢
WꢀGŽ  
–
XꢀWŽ  
”
PŒ  
¤
ž
•
£
ž
QꢀOŽXꢀ\  
—
ꢀPŒ  
•
—
FꢀTXLꢀWˆ  

ž
”
ꢀSKD  
•
LꢀGX\ꢀQK‰  
¢
WꢀŠŒ  
¢LꢀY  
—
L
”
¤
FꢀFD  
—
£FꢀŠ“QKꢂꢀFD—FꢀTXLꢀWˆFꢀFKRꢀNKXQJꢀQKQꢃ  
£
£
£
ž
¢
WꢀSKD  
•
LꢀFKꢀŠ“QKꢀW‹QꢀFŒ  
¤
Wꢃꢀ7‹QꢀFX  
•D  
—
¤
–
–
£
•
–
—QJꢀY—LꢀFD—FꢀFŒ¤WꢀWURQJꢀGDQKꢀVD—FK  
¤
•
£
£
•
—
¤
¢
ꢀKR¤FꢂꢀPŒ¤WꢀKD”PꢀFD”L  
œ
¤
š
ž
¤
•DꢀNKXQJꢀQKQꢀFR—ꢀWUX”QJꢀW‹Qꢃ  
¤
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‹ꢀF‰XꢀO‹  
QKŽꢀVDXꢄ  
CREATE VIEW thongtin_nv(manv,hoten,tuoi,donvi)  
£QKꢀWU‹QꢀFR—ꢀWK‹ꢀWKŽ£FꢀKL‹£QꢀŠŽ¤FꢂꢀED£QꢀSKD•LꢀŠˆ£WꢀW‹QꢀFKRꢀFD—FꢀFŒ¤WꢀFX•DꢀNKXQJꢀQKQ  
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  
1JŒQꢀQJŽ  
WKDRꢀWDFꢀWUX\ꢀ[X‰  
JŒPꢀFDFꢀF‰XꢀO‹QKꢄꢀ6(/(&7ꢂꢀꢀ,16(57ꢂꢀ83'$7(ꢀYD  
–
ꢀWKDRꢀWD  
—
FꢀGŽ  
–
ꢀOL‹  
£
¢
SꢀFKRꢀQJŽ  
ꢀ[RDꢀGŽꢀOL‹Xꢃꢀ1JŒQꢀQJŽ  
ꢀ'(/(7(  
”
LꢀVŽ  
•
£
QJꢀNKD  
•
ꢀQˆQJꢀWL‹¢  
QꢀKD”  
—F  
—
¢
WꢂꢀEŒꢀVXQJꢂꢀF‰  
£
£
”
—
–
£
–
ꢀWKDRꢀWD—  
FꢀGŽ  
–
£
ž
—
£
”
ꢁꢂꢀ7UX\ꢀ[XƒWꢀ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 đủ
pdf 46 trang baolam 15100 Free
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:

  • pdfgiao_trinh_thuc_hanh_sql_tran_nguyen_phong.pdf