BBààii 5. 5. NgônNgôn ngngữữ CSDL
CSDL –– SQLSQL
ĐĐểể ngưngườờii ssửử ddụụngng ccóó ththểể giaogiao titiếếpp đưđượợcc
CSDL phphảảii ccóó mmộộtt hhệệ ththốốngng ngônngôn ngngữữ
MMỗỗii hhệệ ququảảnn trtrịị CSDL
vvớớii CSDL giaogiao titiếếpp baobao ggồồmm:: •• NgônNgôn ngngữữ đđịịnhnh nghnghĩĩaa ddữữ liliệệuu .. •• NgNgônôn ngngữữ thao thao ttáácc ddữữ liliệệuu •• NgônNgôn ngngữữ truytruy vvấấnn ddữữ liliệệuu •• NgônNgôn ngngữữ ququảảnn lýlý ddữữ liliệệuu
CSDL đđềềuu ccóó ccááchch nhau ngôn ngngữữ khkháácc nhau
ccààii đđặặtt ccáácc ngôn nhưng đđềềuu ddựựaa trêntrên chuchuẩẩnn ccủủaa ngônngôn nhưng SQL ( ngngữữ truytruy vvấấnn ccóó ccấấuu trtrúúcc SQL ( Query Language) Structured-- Query Language) Structured
I. I. NgônNgôn ngngữữ đđịịnhnh nghnghĩĩaa ddữữ liliệệuu SQLSQL
LLàà ngôn
NgoNgoààii rara , , nnóó còncòn cung
ngôn ngngữữ mômô ttảả ddữữ liliệệuu, , chocho phphéépp CSDL, ssửửaa ngưngườờii ddùùngng đđịịnhnh nghnghĩĩaa ccấấuu trtrúúcc CSDL, đđổổii ccấấuu trtrúúcc, , liênliên kkếếtt ccáácc ththàànhnh phphầầnn trong trong CSDL CSDL
cung ccấấpp ccáácc khkhảả năngnăng khung nhnhììnn, , kikiểểmm
khkháácc nhưnhư : : đđịịnhnh nghnghĩĩaa khung sosoáátt ttíínhnh totoàànn vvẹẹnn ddữữ liliệệuu, , ccấấpp phpháátt quyquyềềnn truytruy ccậậpp, , ……
QuyQuy ưướớcc ::
không chchứứaa ddấấuu
–– TTênên têntên bbảảngng, , thuthuộộcc ttíínhnh đđốốii tưtượợngng không ccááchch, , không không trtrùùngng têntên vvớớii nhaunhau..
–– CCáácc phphạạmm trtrùù ccúú phpháápp bbắắtt bubuộộcc phphảảii điđiềềnn đưđượợcc đđặặtt trong ccặặpp ddấấuu < >< > trong
–– CCáácc ththàànhnh phphầầnn tutuỳỳ chchọọnn đưđượợcc viviếếtt trong trong ccặặpp ddấấuu [ ][ ]
SQL ccóó ththểể đưđượợcc viviếếtt trêntrên nhinhiềềuu dòng dòng vvàà
–– MMỗỗii câucâu llệệnhnh SQL đưđượợcc kkếếtt ththúúcc bbằằngng ddấấuu ;;
trong CCáácc kikiểểuu ddữữ liliệệuu đơnđơn gigiảảnn trong SQLSQL
integer , float, KiKiểểuu ddữữ liliệệuu ssốố:: integer , float,
phân , ,
KiKiểểuu ddữữ liliệệuu chuchuỗỗii : :
decimal(n,p)-- ssốố ththựựcc vvớớii đđộộ ddààii ttốốii đađa llàà decimal(n,p) n n chchữữ ssốố vvớớii p p chchữữ ssốố ththậậpp phân number(n)-- kikiểểuu ssốố ccóó đđộộ ddààii ttốốii đađa llàà nn number(n)
(n) -- chuchuỗỗii ccóó đđộộ ddààii bibiếếnn đđổổii
Char (n): : xâuxâu kkíí ttựự ccóó đđộộ ddààii ccốố đđịịnhnh n ( n (
varchar (n) --varchar ttừừ 0 0 đđếếnn nn -- Char (n) n<=255) n<=255)
date, time KiKiểểuu ddữữ liliệệuu ngngààyy ththáángng:: date, time boolean KiKiểểuu luluậậnn llíí : : boolean
II. CCáácc câucâu llệệnhnh ttạạoo ccấấuu trtrúúcc II. bbảảngng
1. 1. LLệệnhnh ttạạoo bbảảngng ttổổngng ququáátt
CREATE TABLE <
> < kkííchch kkííchch thưthướớcc 1>,1>,
…………………..
…………………
<
thưthướớcc n>,n>, ););
VVíí ddụụ ::
TTạạoo bbảảngng SINH_VIEN SINH_VIEN ccóó ccáácc thuthuộộcc ttíínhnh::
trong đđóó ccóó
-- mãmã sinhsinh viênviên ( ( kikiểểuu ssốố ccóó đđộộ ddààii <5)<5) <25) -- hhọọ têntên ( ( kikiểểuu xâuxâu kkíí ttựự ccóó đđộộ ddààii <25) date) -- ngngààyy sinhsinh ((kikiểểuu date) -- gigiớớii ttíínhnh ( ( kikiểểuu xâuxâu ccóó đđộộ ddààii <3)<3) < 30 ) -- đđịịaa chchỉỉ ( ( kikiểểuu xâuxâu ccóó đđộộ ddààii < 30 ) -- điđiểểmm TBTB ( ( kikiểểuu ssốố ththựựcc ccóó đđộộ ddààii <4, <4, trong phân)) 2 2 chchữữ ssốố sausau phphầầnn ththậậpp phân
SINH_VIEN CREATE TABLE SINH_VIEN CREATE TABLE
(( NUMBER(5) , ma_svma_sv NUMBER(5) ,
VARCHAR(25), ho_ten VARCHAR(25), ho_ten
DATE, ng_sinh DATE, ng_sinh
VARCHAR (3), gioi_tinh VARCHAR (3), gioi_tinh
điađia_chi VARCHAR (30), _chi VARCHAR (30),
DECIMAL (4,2), diem_tb DECIMAL (4,2), diem_tb
););
Tên_bảảngng> >
t_1>
u_1> < kkííchch thưthướớcc 1>,1>,
2. 2. LLệệnhnh ttạạoo bbảảngng vvớớii mmộộtt ssốố điđiềềuu kikiệệnn rrààngng bubuộộcc
CREATE TABLE < <
…………………..
…………………
< <> <
> < kkííchch thưthướớcc n>,n>,
NULL| [ CONSTRAINT < < têntên rrààngng bubuộộcc totoàànn vvẹẹnn>]| >]| NULL| [ CONSTRAINT
NOT NULL|| NOT NULL
References Tên_b
Tên_bảảngng]]
ng_buộộcc>]>]
Primary Key ( ( KhoKhoáá chchíínhnh )) Primary Key [ [ Unique Unique ( ( khokhoáá )])] Foreign Key ((KhoKhoáá _ _ ngongoààii) ) References [[Foreign Key Check <<ĐiĐiềềuu_ _ kikiệện_rn_rààng_bu [ [ Check ););
không nhnhậậnn gigiáá trtrịị rrỗỗngng. .
Null. ThuThuộộcc ttíínhnh khokhoáá ngngầầmm đđịịnhnh llàà Not Not
COSNTRAINT
Primary Key
Unique Foreign Key
Check
ng_buộộcc : : KhaiKhai bbááoo ccáácc rrààngng
Trong đđóó :: Trong NOT NULL : chchỉỉ rrằằngng ccộộtt không NOT NULL : NgNgầầmm đđịịnhnh llàà Null. Null.Null. COSNTRAINT< < têntên ccáácc rrààngng bubuộộcc totoàànn vvẹẹnn>> :: CSDL. khai bbááoo ccáácc rrààngng bubuộộcc totoàànn vvẹẹnn ccủủaa CSDL. khai Primary Key ( ( KhoKhoáá chchíínhnh):): KhaiKhai bbááoo khokhoáá chchíínhnh ccủủaa mmảảngng Unique ( ( KhoKhoáá )) : : KhaiKhai bbááoo ccáácc khokhoáá khkháácc nnếếuu ccóó References TênTên_ _ Foreign Key KhoKhoáá_ _ ngongoààii References bbảảngng : : KhaiKhai bbááoo ccáácc khokhoáá ngongoààii ccủủaa bbảảngng Check ĐiĐiềều_ki u_kiệện_rn_rààng_bu bubuộộcc ddữữ liliệệuu ..
VVíí ddụụ ::
TTạạoo bbảảngng SINH_VIEN SINH_VIEN ccóó::
không <=25) không
<=3, mmặặcc đđịịnhnh llàà
-- khokhoáá chchíínhnh llàà thuthuộộcc ttíínhnh mãmã sinhsinh viênviên ( ( kikiểểuu ssốố)) -- hhọọ têntên ( ( kikiểểuu xâuxâu kkíí ttựự ccóó đđộộ ddààii <=25) đưđượợcc đđểể trtrốốngng,, date) -- ngngààyy sinhsinh ((kikiểểuu date) -- gigiớớii ttíínhnh ( ( kikiểểuu xâuxâu ccóó đđộộ ddààii <=3, 'Nam') 'Nam') -- mãmã llớớpp llàà mmộộtt khokhoáá ngongoààii, , mãmã llớớpp thuthuộộcc bbảảngng LOP. LOP. -- điđiểểmm TBTB ( ( kikiểểuu ssốố ththựựcc ccóó đđộộ ddààii <=4)<=4)
CâuCâu llệệnhnh ::
SINH_VIEN CREATE TABLE SINH_VIEN CREATE TABLE
((
NUMBER(5) PRIMARY KEY, ma_svma_sv NUMBER(5) PRIMARY KEY,
VARCHAR(25) NOT NULL, ho_ten VARCHAR(25) NOT NULL, ho_ten
DATE, ng_sinh DATE, ng_sinh
gioi_tinh VARCHAR (3) DEFAULT gioi_tinh
' Nam', VARCHAR (3) DEFAULT ' Nam',
CHAR (3) , ma_lop CHAR (3) , ma_lop
DECIMAL (4,2), diem_tb DECIMAL (4,2), diem_tb
FOREIGN KEY ma_lop FOREIGN KEY
ma_lop REFERENCES
REFERENCES LOPLOP
););
HoHoặặcc ::
SINH_VIEN CREATE TABLE SINH_VIEN CREATE TABLE
((
NUMBER(5) , ma_svma_sv NUMBER(5) ,
VARCHAR(25) NOT NULL, ho_ten VARCHAR(25) NOT NULL, ho_ten
DATE, ng_sinh DATE, ng_sinh
VARCHAR (3) DEFAULT ' Nam', gioi_tinh VARCHAR (3) DEFAULT ' Nam', gioi_tinh
CHAR (3) , ma_lop CHAR (3) , ma_lop
DECIMAL (4,2), diem_tb DECIMAL (4,2), diem_tb
PRIMARY KEY ( ma_svma_sv),), PRIMARY KEY (
FOREIGN KEY ma_lop FOREIGN KEY
ma_lop REFERENCES
REFERENCES LOPLOP
););
trong bbảảngng
sung --xoxoáá mmộộtt ccộộtt trong
sung mmộộtt ccộộtt ::
3. B3. Bổổ sung
a. Ba. Bổổ sung
ALTER TABLE < têntên bbảảngng>>
ALTER TABLE <
ADD < > < kikiểểuu ddữữ liliệệuu > <> <
ADD <
kkííchch thưthướớcc>;>;
VD VD : : ThêmThêm ccộộtt ssốố điđiệệnn thothoạạii vvààoo bbảảngng
SINH_VIEN ởở trêntrên.. SINH_VIEN SINH_VIEN ALTER TABLE SINH_VIEN ALTER TABLE
ADD dien_thoai ADD NUMBER(10); dien_thoai NUMBER(10);
> DROP ccộộtt> ;> ; VD VD : : XoXoáá ccộộtt điđiểểmm TB TB trong SINH_VIEN
trong bbảảngng SINH_VIEN ởở trêntrên.. ALTER TABLE SINH_VIEN
ALTER TABLE DROP
SINH_VIEN DROP diem_tb;;
diem_tb CSDL
trong CSDL KhiKhi đđóó totoàànn bbộộ thông SINH_VIEN(
tin vvềề bbảảngng SINH_VIEN( thông tin
ggồồmm ccảả lưlượợcc đđồồ vvàà ccáácc bbảảnn ghighi ) ) đđềềuu bbịị xoxoáá, , khkháácc
vvớớii llệệnhnh chchỉỉ xoxoáá ccáácc bbảảnn ghighi trong trong bbảảngng, , vvẫẫnn gigiữữ llạạii ccấấuu trtrúúcc ((lưlượợcc đđồồ ) ) ccủủaa bbảảngng CCấấuu trtrúúcc cơcơ ssởở ccủủaa mmộộtt bibiểểuu ththứứcc hhỏỏii ( ( còncòn ggọọii llàà bibiểểuu ththứứcc truytruy vvấấnn) SQL ) SQL ggồồmm :: mmớớii>],..}>],..} > [ < bbíí danh danh >],...>],... Trong đđóó : :
Trong -- TTừừ khokhoáá DISTINCT
llặặpp chchỉỉ gigiữữ llạạii mmộộtt bbộộ)) -- < < bibiểểuu ththứứcc ccộộtt>>: : llàà têntên ccủủaa mmộộtt ccộộtt hohoặặcc ccủủaa bibiểểuu ththứứcc trong CSDL hay CSDL hay mmộộtt khung
khung tương ứứngng trong dsds têntên ccộộtt.. trong ccáácc ccộộtt trtrảả rara ggồồmm : : ASCASC phòng
TTììmm têntên ccáácc ddựự áánn vvàà mãmã ccáácc phòng tương ứứngng
, ma_p
ten_da, ma_p ququảảnn lýlý ddựự áánn tương
SELECT ten_da
SELECT
DU_AN;
FROM DU_AN;
FROM
KKếếtt ququảả tratra rara :: Ten_da
Ten_da Ma_pMa_p P2P2
P3P3
P1P1 PhPhầầnn mmềềmm AA
MMạạngng BB
GiGiááoo trtrììnhnh điđiệệnn ttửử ChChúú ý :ý : trong bbảảngng, , tata ccóó a . a . MuMuốốnn hihiểểnn ththịị ttấấtt ccảả ccáácc ccộộtt trong
ththểể ddùùngng ddấấuu * * đđểể thay thay ththếế thông tin trong
nhân viênviên trong VVíí ddụụ 2. 2. ChoCho bibiếếtt thông tin vvềề nhân , ho_ten, ng_sinh ng_sinh, , gioi_tinh gioi_tinh, , C2: C2: SELECT công tyty ..
công
C1 :C1 : SELECT
luong
ma_p, luong
ma_p,
NHAN_VIEN;
FROM NHAN_VIEN;
FROM NHAN_VIEN ;
NHAN_VIEN ; Trong bbảảngng kkếếtt ququảả, , nnếếuu mumuốốnn tata
Trong ccóó ththểể đđặặtt têntên mmớớii chocho ccộộtt sausau ttừừ khokhoáá AsAs nhân
lương mmớớii ccủủaa mmỗỗii nhân
VVíí ddụụ3 : 3 : ChoCho bibiếếtt têntên vvàà lương
10% .
tăng 10% . viênviên bibiếếtt hhọọ đưđượợcc tăng CâuCâu llệệnhnh : : C1: C1: ho_ten, luong luong + + luong luong*0.1*0.1 SELECT ho_ten,
SELECT
NHAN_VIEN;
FROMFROM NHAN_VIEN; C2: C2: SELECT ho_ten,
SELECT ho_ten, luong+luong luong+luong*0.1 *0.1 ASAS luong_moi
luong_moi NHAN_VIEN;
FROM NHAN_VIEN;
FROM SQL ddùùngng ccáácc phphéépp so so ssáánhnh :: <=<= ( ( nhnhỏỏ hơnhơn hohoặặcc bbằằngng) , ) ,
>=>=( ( llớớnn hơnhơn hohoặặcc bbằằngng) ,) ,
< >< > ( ( khkháácc)) logic
-- CCóó ththểể kkếếtt hhợợpp nhinhiềềuu bibiểểuu ththứứcc logic
AND, OR, NOT.
bbằằngng ccáácc phphéépp AND, OR, NOT. phòng ccóó mãmã VVíí ddụụ 4:4:TTììm m ccáácc nhânnhân viênviên thuthuộộcc phòng
phòng llàà P2 P2 vvàà ccóó lương
phòng >=2tr.
lương >=2tr. luong
, ho_ten, ma_p, luong SELECT ma_nvma_nv, ho_ten, ma_p,
SELECT
NHAN_VIEN
FROMFROM NHAN_VIEN
WHERE ma_p= 'P2'
WHERE ma_p= 'P2' ANDAND >=2000000;
luong>=2000000;
luong VVíí ddụụ 5:5: viên,họọ
LLậậpp danhdanh ssááchch ( ( ggồồmm mãmã sinhsinh viên,h
têntên, , ngngààyy sinhsinh, , gigiớớii ttíínhnh) ) ccủủaa ccáácc sinhsinh viênviên
nnữữ ccóó hhọọcc llựựcc ttừừ khkháá trtrởở lênlên vvàà ccáácc sinhsinh
viênviên namnam hhọọcc llựựcc gigiỏỏii.. SV#, HT, NS, GT
SELECT SV#, HT, NS, GT
SELECT
FROMFROM SVSV
WHERE (GT= '
WHERE (GT= 'NNữữ' ' ANDAND HL>=6.5)
HL>=6.5)
( GT= 'Nam' ANDAND HL HL
OR OR ( GT= 'Nam' >=8.0 );
>=8.0 ); SQL ddùùngng totoáánn ttửử LIKE
SQL xâuxâu.. ' %' đđểể thay SQL ssửử ddụụngng kkíí ttựự ' %'
SQL
con, ddấấuu phân thay ththếế chocho
'_' đđểể thay
thay phân ccááchch '_' mmộộtt xâuxâu con,
ththếế chocho mmộộtt kkíí ttựự..
VD:VD: -- A%BA%B : : xâuxâu kkíí ttựự bbấấtt kkìì bbắắtt ddầầuu bbằằngng chchữữ A A vvàà kkếếtt ththúúcc bbằằngng chchữữ BB -- A_BA_B : : xâuxâu ggồồmm 3 3 kkíí ttựự, , ccóó kkíí ttựự ththứứ haihai bbấấtt kkìì dia_diem_da LIKELIKE ten_da
SELECT ma_dama_da, , ten_da
SELECT
DU_AN
FROM DU_AN
FROM
WHERE dia_diem_da
WHERE
'%UBND%';
'%UBND%'; thiếếuu vvắắngng thông e. SQL chocho phphéépp ssửử ddụụngng ccáácc gigiáá trtrịị NULLNULL đđểể
e. SQL
chchỉỉ ssựự thi
tin vvềề gigiáá trtrịị ccủủaa mmộộtt bbộộ
thông tin
, SQL
IS NULL, SQL
ttạạii mmộộtt thuthuộộcc ttíínhnh. . VVớớii ttừừ khokhoáá IS NULL
NULL
chocho phphéépp kikiểểmm tratra xemxem mmộộtt gigiáá trtrịị ccóó llàà NULL
hay hay không không ?? VVíí ddụụ 7: 7: ChoCho bibiếếtt têntên vvàà mãmã ssốố ddựự áánn mmàà NULL.
ccộộtt đđịịaa điđiểểmm ccóó gigiáá trtrịị llàà NULL.
ten_da
SELECT ma_dama_da, , ten_da
SELECT
DU_AN
FROMFROM DU_AN
WHERE dia_diem_da
WHERE IS NULL;
dia_diem_da IS NULL; KKếếtt ququảả ccủủaa câucâu truytruy vvấấnn SQL
theo ththứứ ttựự tăng SQL ccóó ththểể
tăng ddầầnn ((ASC ASC ) ) đưđượợcc ssắắpp theo
hohoặặcc gigiảảmm ddầầnn ((DESCDESC) ) bbởởii khokhoáá
ORDER BY. MMặặcc đđịịnhnh llàà tăng
ORDER BY. tăng ddầầnn.. VVíí ddụụ 8 :8 : theo ththứứ ttựự LiLiệệtt kêkê ccáácc nhân
nhân viênviên nnữữ theo
lương::
tăng ddầầnn ccủủaa lương
tăng SELECT **
SELECT
NHAN_VIEN
FROM NHAN_VIEN
FROM
GT = ' Nữữ''
WHERE GT = ' N
WHERE
luong;;
ORDER BY luong
ORDER BY thông tin tin chchấấmm theo ththứứ ttựự tăng công ccủủaa ccáácc ddựự áánn ccóó mãmã thuthuộộcc ttậậpp
công
tăng ddầầnn ccủủaa
D1, D2, D8 theo
D1, D2, D8
ssốố gigiờờ vvàà gigiảảmm ddầầnn ccủủaa mãmã ddựự áánn:: SELECT **
SELECT
CHAM_CONG
FROM CHAM_CONG
FROM
('D1', 'D2', 'D8')
WHERE ma_dama_da ININ ('D1', 'D2', 'D8')
WHERE
so_gio ASC,
ORDER BY so_gio
ORDER BY ASC, ma_dama_da DESC;
DESC; VVíí ddụụ 10: 10: nhân viênviên ccóó lương TTììmm nhnhữữngng nhân 3000000 , ssắắpp xxếếpp têntên theo 2000000
lương ttừừ 2000000
tăng
theo ththứứ ttựự tăng đđếếnn 3000000 ,
ddầầnn.. SELECT **
SELECT
NHAN_VIEN
FROM NHAN_VIEN
FROM
luong BETWEEN
WHERE luong
WHERE BETWEEN 2000000 2000000 ANDAND 3000000
3000000 ORDER BY ho_ten
ORDER BY ho_ten ASC;ASC; SQL ccóó 5 5 hhààmm kkếếtt ttậậpp đưđượợcc ccààii ssẵẵnn : :
SQL trong mmộộtt ccộộtt trong mmộộtt ccộộtt
trong mmộộtt ccộộtt
trung bbììnhnh ccủủaa mmộộtt ccộộtt
sum vvàà avgavg chchỉỉ áápp ddụụngng chocho lương caocao nhnhấấtt, , lương lương ththấấpp trung bbììnhnh ccộộngng lương lương totoàànn cơcơ luong) ) ASAS max, max, MIN MIN luong) ) ASAS tbtb KKếếtt ququảả câucâu truytruy vvấấnn nnààyy trtrảả rara nhưnhư sausau :: maxmax minmin tbtb 3000000
3000000 1200000
1200000 2350000
2350000 nhân viênviên ththựựcc hihiệệnn ddựự SELECT COUNT (*)(*)
SELECT COUNT
CHAM_CONG
FROM CHAM_CONG
FROM
= 'D8';
WHERE ma_dama_da = 'D8';
WHERE -- HHààmm Count (*) ccóó không ccầầnn quan quan tâmtâm đđếếnn Count khikhi ccóó đđốốii ssốố (*)
nghnghĩĩaa llàà đđếếmm ssốố bbảảnn ghighi thothoảả mãnmãn
yêuyêu ccầầuu mmàà không
bbấấtt kkìì ccộộtt nnààoo .. -- DDùùngng ttừừ khokhoáá DISTINCT theo hhọọcc
theo DISTINCT QueQue)) SELECT COUNT ((DISTINCT
SELECT COUNT
SINHVIEN;
FROM SINHVIEN;
FROM GROUP BY
3.T3.Tììm m kikiếếmm nhnhờờ mmệệnhnh đđềề GROUP BY theo
danh ssááchch sinhsinh viênviên theo VVíí ddụụ 1:1: In In rara danh ttừừngng quêquê ccủủaa sinhsinh viênviên? ? SV#, HT, NS
SELECT SV#, HT, NS
SELECT
FROM SVSV
FROM
GROUP BY QueQue;;
GROUP BY MMệệnhnh đđềề HAVING HAVING thưthườờngng ssửử ddụụngng ccùùngng mmệệnhnh GROUP BY. . SauSau HAVING HAVING llàà bibiểểuu ththứứcc điđiềềuu kikiệệnn. .
đđềề GROUP BY
BiBiểểuu ththứứcc nnààyy không
không ttáácc đđộộngng vvààoo totoàànn bbảảngng mmàà chchỉỉ ttáácc
đđộộngng vvààoo ttừừngng nhnhóómm ccáácc bbảảnn ghighi đãđã chchỉỉ rara ttạạii mmệệnhnh đđềề
GROUP BY
GROUP BY VVÍÍ DDỤỤ : : TTììmm mãmã ssốố nhnhữữngng sinhsinh viênviên ththựựcc hihiệệnn íítt nhnhấấtt 2 2
đđềề ttààii:: SELECT SV#SV#
SELECT
FROM SDSD
FROM
GROUP BY SV#SV#
GROUP BY
DT# ) >=2;
HAVING COUNT (DT# ) >=2;
HAVING COUNT ( TTììmm kikiếếmm vvớớii nhinhiềềuu bbảảngng qua qua viviệệcc ssửử ddụụngng áánhnh xxạạ llồồngng nhaunhau hohoặặcc qua qua phphéépp kkếếtt nnốốii.. PhPhéépp kkếếtt nnốốii :: ĐKĐK:: CCáácc mimiềềnn thamtham giagia kkếếtt nnốốii phphảảii ccóó mimiềềnn trtrịị llàà ssáánhnh đưđượợcc vvớớii nhaunhau. . TênTên ccủủaa ccáácc ccộộtt khkháácc nhaunhau ccóó ththểể
đưđượợcc viviếếtt tưtườờngng minhminh qua qua têntên bbảảngng theotheo ccúú phpháápp :: TênTên_ _ bbảảngng. . TênTên_ _ ccộộtt VVíí ddụụ :: VVớớii mmỗỗii đđềề ttààii ccóó sinhsinh viênviên thamtham giagia ththựựcc ttậậpp. .
HãyHãy chocho bibiếếtt têntên đđềề ttààii, , têntên chchủủ nhinhiệệmm đđềề ttààii vvàà kinhkinh phphíí
ththựựcc hihiệệnn đđềề ttààii đđóó.. CâuCâu llệệnhnh :: TDT, CN, KP
SELECT TDT, CN, KP
SELECT
DT, SD
FROM DT, SD
FROM
SD.DT# = DT.DT#;
WHERE SD.DT# = DT.DT#;
WHERE Trong câucâu truytruy vvấấnn ccóó hơnhơn mmộộtt không duyduy nhnhấấtt ththìì bbắắtt bubuộộcc ChChúú ý :ý : Trong
bbảảngng, , nnếếuu têntên ccộộtt llàà không
phphảảii viviếếtt têntên ccộộtt ddạạngng tưtườờngng minhminh.. VVíí ddụụ 1: 1: TTììmm têntên nhnhữữngng sinhsinh viênviên ththựựcc ttậậpp ttạạii HHàà NNộộii .. SELECT HTHT
SELECT FROM SVSV
FROM
WHERE SV#
WHERE SV# ININ ((SELECT SV#
SELECT SV#
FROM SDSD
FROM WHERE NTT=
WHERE NTT= ‘‘HHàà NNộộii ‘‘);); SQL còncòn ccóó ththểể ttììmm kikiếếmm trêntrên nhinhiềềuu bbảảngng
SQL nhnhờờ mênhmênh đđềề EXISTS EXISTS ( ( ttồồnn ttạạii )) TTììmm nhnhữữngng sinhsinh viênviên ththựựcc hihiệệnn íítt nhnhấấtt mmộộtt đđềề ttààii nnààoo
đđóó:: *
SELECT *
SELECT FROM SVSV
FROM
WHERE EXISTS (
WHERE EXISTS ( SELECT *
SELECT * FROM SDSD
FROM WHERE
WHERE SV.SV# = SD.SV#);
SV.SV# = SD.SV#); VVíí ddụụ 3 :3 : TTììmm têntên nhnhữữngng đđềề ttààii mmàà sinhsinh viênviên ccóó mãmã ssốố 5 5
đãđã ththựựcc hihiệệnn:: TDT
SELECT TDT
SELECT FROM DTDT
FROM
WHERE DT# = ANY (
WHERE DT# = ANY ( SELECT DT#
SELECT DT#
FROM SDSD
FROM
SV# = 5);
WHERE SV# = 5);
WHERE TTììmm têntên sinhsinh viênviên ccóó điđiểểmm hhọọcc llựựcc HL >= ALLALL HL
SELECT HL ( ( SELECT
FROM SV );SV );
FROM MMệệnhnh đđềề trêntrên tương đương vvớớii : : tương đương
HT
SELECT HT
SELECT
FROM SVSV
FROM
WHERE HL = (
WHERE (HL)
SELECT MAX (HL)
HL = ( SELECT MAX
SV );
FROM SV );
FROM sung vvààoo mmộộtt ttậậpp ccáácc bbảảnn ghighi llàà kkếếtt ququảả xxửử lýlý ccủủaa SVG ccáácc sinhsinh viênviên gigiỏỏii trong trong bbảảngng SV.SV. CCóó ththểể xoxoáá mmộộtt hay hay nhinhiềềuu bbảảnn ghighi thothoảả mãnmãn mmộộtt điđiềềuu kikiệệnn nnààoo đđóó.. DDạạngng ttổổngng ququáátt:: UPDATE [ [ tên_b
UPDATE tên_bảảngng]] tên_cộộtt = = bibiểểu_thu_thứứcc,...]
,...] SET [ [ tên_c
SET
FROM têntên _ _ bbảảngng
FROM
WHERE BiBiểểuu _ _ ththứứcc __điđiềềuu __kikiệệnn
WHERE
VVíí ddụụ : : SSửửaa điđiểểmm hhọọcc llựựcc ccủủaa bbạạnn PhanPhan NgNgọọcc HHàà ththàànhnh 8.58.5 UPDATE SVSV
UPDATE HL = 8.5
SET HL = 8.5
SET
WHERE HT=HT=‘‘ PhanPhan NgNgọọcc HHàà’’;;
WHERE bbảảnn ghighi ddựựaa trêntrên gigiáá trtrịị tăngtăng ddầầnn ccủủaa mmộộtt ( hay
ccộộtt nnààoo đđóó. . ViViệệcc nnààyy ccóó ttáácc ddụụngng llààmm tăngtăng ttốốcc đđộộ ttììmm
kikiếếmm thông CSDL.
trong CSDL. thông tin tin trong DDạạngng ttổổngng ququáátt :: CREATE INDEX tên_b
CREATE INDEX tên_bảảng_ch ng_chỉỉ_m_mụụcc ONON Tên_b Tên_bảảngng ( ( têntên __ccộộtt ASC | DESC]);]);
[[ASC | DESC BBỏỏ chchỉỉ mmụụcc ththìì ssửử ddụụngng mmệệnhnh đđềề :: DROP INDEX tên_ch
DROP INDEX tên_chỉỉ_m_mụụcc;; TTạạoo chchỉỉ mmụụcc CMHT Ho_ten ccủủaa bbảảngng sinhsinh viênviên:: CMHT
CREATE INDEX CMHT
CREATE INDEX ONON SV ( HT SV ( HT ASCASC);); VVíí ddụụ:: XoXoáá chchỉỉ mmụụcc CMHT CMHT rara khkhỏỏii bbảảngng SVSV CMHT;
DROP INDEX CMHT;
DROP INDEX CREATE VIEW Tên_View
CREATE VIEW Tên_View ((DanhDanh_ _ ssááchch_ _ têntên __ccộộtt)) AS AS mmệệnhnh__đđềề_Select _Select ;; View DSSVG ggồồmm nhnhữữngng sinhsinh viênviên gigiỏỏii baobao tin vvềề hhọọ têntên, , ngngààyy sinhsinh, , gigiớớii ttíínhnh ccủủaa ccáácc sinhsinh VVíí ddụụ :: TTạạoo View DSSVG
ggồồmm thông
thông tin
viênviên ttừừ bbảảngng SV.SV. CREATE VIEW DSSVG (
, NS, GT)
DSSVG ( HotenHoten, NS, GT)
CREATE VIEW
HT , NS, GT
AS SELECT HT , NS, GT
AS SELECT
SVSV
FROM
FROM
HL >= 8.0;
WHERE HL >= 8.0;
WHERE CSDL ttừừ mmộộtt ngôn
trong ngôn SQL "nhnhúúngng" " trong ngôn ngngữữ trong ngôn ngngữữ llậậpp
ngôn ngngữữ
trong đđóó ccáácc câucâu hhỏỏii đưđượợcc SQL
SQL SQL đưđượợcc phphéépp trong ngôn ngngữữ chchủủ, , còncòn ccáácc ccấấuu trtrúúcc
ngôn ngngữữ nnààyy llààmm ththàànhnh trong ngôn trtrììnhnh bbậậcc caocao nnếếuu ccóó SQL "
nnààyy. . MMộộtt ngôn
đưđượợcc nhnhúúngng vvààoo ggọọii llàà ngôn
ccủủaa SQL
SQL nhnhúúngng
SQL -- Sơ Sơ đđồồ xxửử lýlý ccáácc chương chương trtrììnhnh ccóó nhnhúúngng câucâu llệệnhnh SQL:
SQL: NgônNgôn ngngữữ chchủủ
++
SQL nhnhúúngng
SQL TiTiềềnn xxửử lýlý NgônNgôn ngngữữ chchủủ
++
CCáácc llờờii ggọọii hhààmm ThưThư viviệệnn SQLSQL BiênBiên ddịịchch
ngônngôn ngngữữ chchủủ Chương trtrììnhnh ngônngôn ngngữữ chchủủ
Chươnga.Xoa.Xoáá mmộộtt ccộộtt ::
ALTER TABLE < têntên bbảảngng> DROP <
ALTER TABLE <
4. 4. XoXoáá mmộộtt bbảảngng khkhỏỏii CSDLCSDL
DROP TABLE < têntên bbảảngng>;>;
DROP TABLE <
VD VD : : XoXoáá bbảảngng SINH_VIEN
SINH_VIEN trong
DROP TABLE SINH_VIEN;
DROP TABLE SINH_VIEN;
DELETE FROM SINH_VIEN ; ;
DELETE FROM SINH_VIEN
III. CCáácc câucâu llệệnhnh truytruy vvấấnn
III.
1. 1. TruyTruy vvấấnn theo
theo câucâu hhỏỏii đơnđơn gigiảảnn
SELECT [ DISTINCT | ALL] {* | <* |
HAVING <<điđiềềuu kikiệệnn>]>]
FROMFROM < < têntên bbảảngng> [ <
[WHERE < < điđiềềuu kikiệệnn chchọọnn>]>]
[WHERE
[GROUP BY < < dsds têntên ccộộtt>] [>] [HAVING
[GROUP BY
[ORDER BY < < dsds ccộộtt> ];> ];
[ORDER BY
DISTINCT : : đđểể loloạạii bbỏỏ ssựự trtrùùngng llặặpp ( ( ccáácc bbộộ trtrùùngng
-- < < têntên bbảảngng >>: : llàà têntên ccủủaa mmộộtt bbảảngng trong
nhnhììnn mmàà tata ccóó ththểể truytruy ccậậpp vvààoo
GROUP BY : : ddùùngng đđểể ggộộpp nhnhóómm ccáácc bbộộ ccùùngng gigiáá trtrịị tương
-- GROUP BY
ởở ccáácc ccộộtt xuxuấấtt hihiệệnn trong
-- HAVING:
HAVING: ddùùngng đđểể llọọcc ccáácc nhnhóómm thothoảả điđiềềuu kikiệệnn
ORDER BY : : quyquy đđịịnhnh ththứứ ttựự trong
-- ORDER BY
( ( tăngtăng ddầầnn) ) vvàà DESC
DESC ( ( gigiảảmm ddầầnn). ). MMặặcc đđịịnhnh llàà ASCASC
VVíí ddụụ 1:1:
SELECT ma_nvma_nv, ho_ten,
SELECT * *
FROMFROM
b.b.
c. c. SQL
d. d. TTììmm kikiếếmm ccóó xxửử lýlý xâuxâu kkíí ttựự
LIKE đđểể so so ssáánhnh
VVíí ddụụ 6: 6: ChoCho bibiếếtt mãmã vvàà têntên ccáácc ddựự áánn mmàà
UBND:
đđịịaa điđiểểmm ccóó chchứứaa ttừừ UBND:
f. f. TruyTruy vvấấnn ccóó ssắắpp xxếếpp ththứứ ttựự
ViViệệcc ssắắpp ththứứ ttựự ccóó ththểể đưđượợcc ththựựcc
hihiệệnn trêntrên nhinhiềềuu thuthuộộcc ttíínhnh
VVíí ddụụ 99: : HiHiểểnn ththịị ccáácc thông
g. g. TTììmm kikiếếmm nhnhờờ ssửử ddụụngng IN
IN vvàà
BETWEEN
BETWEEN
2. 2. CCáácc hhààmm thưthư viviệệnn
AVG : : ttíínhnh gigiáá trtrịị trung
COUNT ::đđếếmm ssốố gigiáá trtrịị
-- COUNT
SUM : : ttíínhnh ttổổngng ccáácc gigiáá trtrịị trong
-- SUM
-- MAXMAX : : ttíínhnh gigiáá trtrịị llớớnn nhnhấấtt trong
-- MIN MIN : : ttíínhnh gigiáá trtrịị nhnhỏỏ nhnhấấtt trong
-- AVG
ChChúú ýý : : CCáácc hhààmm sum
ccáácc ccộộtt ccóó kikiểểuu ssốố
VVíí ddụụ 1: 1: TTììmm lương
nhnhấấtt, , vvàà trung
quan
quan
SELECT MAXMAX ((luong
SELECT
luong) ) ASAS min, min, AVGAVG ((luong
((luong
NHAN_VIEN;
FROM NHAN_VIEN;
FROM
VVíí ddụụ 2: 2: ChoCho bibiếếtt ssốố nhân
áánn ccóó mãmã llàà D8D8
ChChúú ý :ý :
ngay
DISTINCT ngay
trưtrướớcc têntên ccộộtt đưđượợcc áápp ddụụngng hhààmm, ,
nhau..
khikhi ccầầnn loloạạii bbỏỏ ccáácc bbộộ trtrùùngng nhau
VVíí ddụụ 3:3: ĐĐếếmm ssốố ttỉỉnhnh ccóó sinhsinh viênviên
HAVING
4. 4. TTììmm kikiếếmm ccóó ssửử ddụụngng mmệệnhnh đđềề HAVING
5. 5. TTììmm kikiếếmm vvớớii câucâu hhỏỏii phphứứcc ttạạpp
ÁÁnhnh xxạạ llồồngng
VVíí ddụụ 2: 2:
TTììmm kikiếếmm ccóó ssửử ddụụngng lưlườờngng ttừừ ANY ANY vvàà
ALLALL
VVíí ddụụ 4 : 4 :
caocao hơnhơn ttấấtt ccảả ccáácc sinhsinh viênviên
HT
SELECT HT
SELECT
FROM SVSV
FROM
WHERE HL >=
WHERE
IV. CIV. CÁÁC MC MỆỆNH ĐNH ĐỀỀ CCẬẬP NHP NHẬẬT DT DỮỮ LILIỆỆUU
1. 1. ThêmThêm mmộộtt bbộộ ::
DDạạngng ttổổngng ququáátt ::
INSERT INTO TênTên _ _ bbảảngng ( ( ds_tên
INSERT INTO
ds_tên __ccộộtt))
VALUES ((ccáácc_ _ gigiáá_tr_trịị ))
VALUES
[ [ câucâu hhỏỏii con]
con]
CCóó ththểể bbổổ sung
mmộộtt câucâu hhỏỏii nnààoo đđóó. .
VD: VD: ChChèènn vvààoo bbảảngng SVG
INSERT INTO SVGSVG
INSERT INTO
SELECT * *
SELECT
FROM SVSV
FROM
HL >= 8.0;
WHERE HL >= 8.0;
WHERE
2. 2. XoXoáá bbảảnn ghighi
DELETE [[tên_b
DELETE
tên_bảảngng]]
[[FROMFROM { { Tên_b
Tên_bảảngng / / TênTên_ view}]
_ view}]
WHERE BiBiểểuu_ _ ththứứcc __điđiềềuu __kikiệệnn]]
[[WHERE
VVíí ddụụ :: XoXoáá nhnhữữngng sinhsinh viênviên ccóó điđiểểmm HL HL kkéémm (HL<=3.5):
(HL<=3.5):
DELETE
DELETE
FROM SVSV
FROM
HL<=3.5;
WHERE HL<=3.5;
WHERE
3. 3. SSửửaa đđổổii ddữữ liliệệuu
SSửửaa đđổổii ccáácc gigiáá trtrịị ccủủaa ccáácc bbảảnn ghighi theotheo mmộộtt điđiềềuu kikiệệnn nnààoo
đđóó: :
DDạạngng ttổổngng ququáátt ::
4. 4. TTạạoo chchỉỉ mmụụcc..
ViViệệcc ttạạoo chchỉỉ mmụụcc llàà ttạạoo rara mmộộtt bbảảngng lưulưu trtrữữ vvịị trtríí ccáácc
( hay mmộộtt ssốố) )
VVíí ddụụ : :
CMHT trêntrên ccộộtt Ho_ten
View ccủủaa ngưngườờii ssửử ddụụngng
khung nhnhììnn ccủủaa ngưngườờii ssửử ddụụngng ::
5. 5. TTạạoo View
TTạạoo rara mmộộtt khung
DDạạngng ttổổngng ququáátt ::
6. SQL nhnhúúngng
6. SQL
CCóó ththểể truytruy ccậậpp vvààoo CSDL