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 < < Tên_bảảngng> > u_1> < t_1> <

> < 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

a.Xoa.Xoáá mmộộtt ccộộtt :: ALTER TABLE < têntên bbảảngng> DROP < ALTER TABLE <

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

4. 4. XoXoáá mmộộtt bbảảngng khkhỏỏii CSDLCSDL

DROP TABLE < têntên bbảảngng>;>; DROP TABLE <

CSDL trong CSDL

VD VD : : XoXoáá bbảảngng SINH_VIEN

SINH_VIEN trong DROP TABLE SINH_VIEN; DROP TABLE SINH_VIEN;

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

DELETE FROM SINH_VIEN ; ; DELETE FROM SINH_VIEN

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

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

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 ::

SELECT [ DISTINCT | ALL] {* | <* | > AS AS [<[

mmớớii>],..}>],..}

> [ < bbíí danh

danh >],...>],...

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

Trong đđóó : : Trong

DISTINCT : : đđểể loloạạii bbỏỏ ssựự trtrùùngng llặặpp ( ( ccáácc bbộộ trtrùùngng

-- 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ê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

tương ứứngng

-- GROUP BY ởở ccáácc ccộộtt xuxuấấtt hihiệệnn trong

trong dsds têntên ccộộtt..

-- HAVING:

HAVING: ddùùngng đđểể llọọcc ccáácc nhnhóómm thothoảả điđiềềuu kikiệệnn

ORDER BY : : quyquy đđịịnhnh ththứứ ttựự trong

trong ccáácc ccộộtt trtrảả rara ggồồmm : : ASCASC

-- ORDER BY ( ( tăngtăng ddầầnn) ) vvàà DESC

DESC ( ( gigiảảmm ddầầnn). ). MMặặcc đđịịnhnh llàà ASCASC

VVíí ddụụ 1:1:

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

SELECT ma_nvma_nv, ho_ten,

, 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

SELECT * * FROMFROM

NHAN_VIEN ; NHAN_VIEN ;

b.b.

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 ::

c. c. SQL

<=<= ( ( 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 );

d. d. TTììmm kikiếếmm ccóó xxửử lýlý xâuxâu kkíí ttựự



SQL ddùùngng totoáánn ttửử LIKE SQL

LIKE đđểể so so ssáánhnh

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ìì

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:

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;

f. f. TruyTruy vvấấnn ccóó ssắắpp xxếếpp ththứứ ttựự

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

 ViViệệcc ssắắpp ththứứ ttựự ccóó ththểể đưđượợcc ththựựcc hihiệệnn trêntrên nhinhiềềuu thuthuộộcc ttíínhnh

thông tin

VVíí ddụụ 99: : HiHiểểnn ththịị ccáácc thông

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;

g. g. TTììmm kikiếếmm nhnhờờ ssửử ddụụngng IN

IN vvàà

BETWEEN BETWEEN

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;

2. 2. CCáácc hhààmm thưthư viviệệnn

SQL ccóó 5 5 hhààmm kkếếtt ttậậpp đưđượợcc ccààii ssẵẵnn : : SQL

trong mmộộtt ccộộtt

AVG : : ttíínhnh gigiáá trtrịị trung

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

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ốố

lương caocao nhnhấấtt, , lương

lương ththấấpp

VVíí ddụụ 1: 1: TTììmm lương nhnhấấtt, , vvàà trung

trung bbììnhnh ccộộngng lương

lương totoàànn cơcơ

luong) ) ASAS max, max, MIN MIN

luong) ) ASAS tbtb

quan quan SELECT MAXMAX ((luong SELECT luong) ) ASAS min, min, AVGAVG ((luong ((luong NHAN_VIEN; FROM NHAN_VIEN; FROM

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ựự

VVíí ddụụ 2: 2: ChoCho bibiếếtt ssốố nhân áánn ccóó mãmã llàà D8D8

SELECT COUNT (*)(*) SELECT COUNT CHAM_CONG FROM CHAM_CONG FROM = 'D8'; WHERE ma_dama_da = 'D8'; WHERE

ChChúú ý :ý :

-- 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 ..

ngay DISTINCT ngay

-- DDùùngng ttừừ khokhoáá DISTINCT

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

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

HAVING 4. 4. TTììmm kikiếếmm ccóó ssửử ddụụngng mmệệnhnh đđềề HAVING

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 (

5. 5. TTììmm kikiếếmm vvớớii câucâu hhỏỏii phphứứcc ttạạpp

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..

 ÁÁnhnh xxạạ llồồngng

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 ))

VVíí ddụụ 2: 2:

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#);

 TTììmm kikiếếmm ccóó ssửử ddụụngng lưlườờngng ttừừ ANY ANY vvàà ALLALL

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

VVíí ddụụ 4 : 4 :

TTììmm têntên sinhsinh viênviên ccóó điđiểểmm hhọọcc llựựcc

caocao hơnhơn ttấấtt ccảả ccáácc sinhsinh viênviên HT SELECT HT SELECT FROM SVSV FROM WHERE HL >= WHERE

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

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]

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ểể 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

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::

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 ::

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

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ốố) )

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

VVíí ddụụ : : CMHT trêntrên ccộộtt Ho_ten

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

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 ::

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

6. SQL nhnhúúngng 6. SQL CCóó ththểể truytruy ccậậpp vvààoo CSDL

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ương