You are on page 1of 15

TRUY VN N GIN

1. C php cu truy vn tng qut


Mt cch tng qut, cu truy vn gm c 3 mnh chnh:
SELECT: Xc nh cc ct cn a ra kt qu.
FROM: Xc nh cc bng cn ly thng tin ra
WHERE: Xc nh cc mu tin tha yu cu chn lc a ra kt qu.
Ngoi ra, m rng kh nng ca ngn ng, khi selectfromwhere
cn c b sung thm cc mnh group by, having, order by, cc hm h
tr tnh ton: max, min, count, sum, avg,
Sau y l c php tng qut ca cu truy vn d liu:
SELECT [tnh cht] <danh sch cc thuc tnh_1>
FROM <danh sch cc table hoc query/view [as alias] >
[WHERE <iu kin_1>]
[GROUP BY <danh sch cc thuc tnh_2>]
[HAVING <iu kin_2>]
[ORDER BY <danh sch cc thuc tnh_3 [ASC | DESC]>

Din gii :
1. Tnh cht : Mt trong cc t kha: ALL (chn ra tt c cc dng
trong bng), DISTINCT (loi b cc dng trng lp thng tin), TOP
<n> (chn n dng u tin tha mn iu kin).
2. Danh sch cc thuc tnh_1: tn cc thuc tnh cho bit thng tin
cn ly. Ch : Cc thuc tnh cch nhau bi du phy (,)
Nu ly tt c cc thuc tnh ca 1 bng tbl th dng: tbl.*
Nu sau FROM ch c 1 table v ly tt c cc field ca table
th dng select *
Nu tn ti 1 thuc tnh sau select xut hin 2 table sau
FROM th phi ch nh r thuc tnh thuc table no.
3. Danh sch cc table: cc table cha thng tin cn ly. Khi tm

kim thng tin trn nhiu hn 2 table th phi kt cc table li vi


nhau (iu kin kt t sau where)
4. Alias: b danh (tn tt) ca bng dng cho cc bng c tn qu di
hoc bt buc trong trng hp s dng bng hn 1 ln khi truy vn.
5. iu kin_1: l iu kin lc d liu.
6. Danh sch cc thuc tnh_2: d liu s c gom nhm theo cc
ct ny.
7. iu kin_2: iu kin lc li d liu sau khi thc hin gom
nhm trn d liu. iu kin ny c p dng trn d liu tha
mn iu kin_1.
8. Danh sch cc thuc tnh_3: sp xp d liu theo ct no, th t
l tng (ASC) hoc gim (DESC). Mc nh l d liu c sp theo
th t tng dn. Vic sp xp c thc hin theo th t u tin
t tri qua phi.

2. Cu truy vn n gin
SELECT <danh sch thuc tnh>
FROM tn_bng

Trong mnh SELECT * c dng vi ngha ly ton b cc ct ca


bng. S dng t kha AS t li tn cho ct.
Dng t kho distinct loi b cc dng trng nhau v all ly tt c
cc dng d liu. Mc nh khng g c chnh l c dng t kha all.
Sau select c th dng cc biu thc s hc nh: +, , *, /, v c th thc
hin cc ton t trn thuc tnh.
V d 1: Cho bit h tn v lng ca tt c cc gio vin.
SELECT HOTEN, LUONG
FROM GIAOVIEN

Minh ha:

V d 2: Cho bit danh sch cc gio vin trong trng


SELECT *
FROM GIAOVIEN

V d 3: Cho bit h tn v lng ca tt c cc gio vin.


t li tn ct s dng t kha AS
SELECT HOTEN AS HOTEN_GV, LUONG AS LUONGGV
FROM GIAOVIEN

3. Tm kim c sp xp
Thut ng tm kim cng c ngha tng t vi truy vn
SELECT
FROM
ORDER BY thuc_ tnh_1 [ASC | DESC], thuc_tnh_2 [ASC | DESC], ...

u tin sp xp: t tri sang phi. Ngha l sp xp theo thuc tnh bn


tri, nu gi tr sp xp bng nhau th s sp xp theo thuc tnh bn phi.
V d 4: Cho bit danh sch cc gio vin (h tn, phi, lng) sp xp
gim dn theo lng
SELECT HOTEN, PHAI, LUONG
FROM GIAOVIEN
ORDER BY LUONG DESC

V d 5: Cho bit h tn, m b mn v lng ca gio vin. Sp xp tng


dn theo m b mn v gim dn theo lng.
SELECT HOTEN, MABM, LUONG
FROM GIAOVIEN
ORDER BY MABM, LUONG DESC
HOTEN

MABM

LUONG

HOTEN

MABM

LUONG

Hong

HTTT

80000

An

KHMT

70000

Dng

KHMT

60000

Dng

KHMT

60000

An

KHMT

70000

Thy

HTTT

90000

Thy

HTTT

90000

Hong

HTTT

80000

4. Tm kim vi iu kin n gin


h tr tm kim c iu kin, s dng mnh WHERE trong cu lnh
SELECT vi c php:
SELECT
FROM
WHERE (iu kin 1) AND/OR (iu kin 2) .... (iu kin n)

4.1. Cc ton t so snh


SQL h tr cc ton t so snh sau: > (ln hn), < (nh hn), = (bng), !=
(khc), <> (khc), >= (ln hn hoc bng), <= (nh hn hoc bng)

V d 6: Cho bit cc gio vin c lng ln hn 50000


SELECT *
FROM GIAOVIEN
WHERE luong > 50000

V d 7: Cho bit cc gio vin c phi l Nam


SELECT *
FROM GIAOVIEN
WHERE PHAI = 'Nam'

4.2. AND, OR v NOT


SQL h tr cc ton t logic sau: AND (v), OR (hoc) v NOT (ph nh)
V d 8. Cho bit cc gio vin ca b mn HTTT m c lng ln hn 40000
SELECT *
FROM GIAOVIEN
WHERE MABM= 'HTTT' AND LUONG > 40000

V d 9. Cho bit cc gio vin nhn vin khng thuc b mn HTTT v


khng c lng ln hn 40000
SELECT *
FROM NHANVIEN
WHERE NOT (MABM = 'HTTT') AND NOT (LUONG > 40000)
hoc
SELECT *
FROM NHANVIEN
WHERE (NOT (MABM = 'HTTT')) AND (NOT (LUONG > 40000))
hoc
SELECT
FROM NHANVIEN
WHERE (MABM != 'HTTT') AND (LUONG <= 40000)

4.3. BETWEEN...AND , NOT BETWEEN AND


V d 10. Cho bit cc gio vin sinh trong khong nm 1955 n 1960
SELECT *
FROM GIAOVIEN
WHERE NGSINH BETWEEN '1/1/1955' AND '12/31/1960'
hoc
SELECT *
FROM GIAOVIEN
WHERE year(NGSINH) BETWEEN 1955 AND 1960
hoc
SELECT *
FROM GIAOVIEN
WHERE year(NGSINH) >= 1955 AND year(NGSINH) <=1960

4.4. IS NULL v IS NOT NULL


IS NULL v IS NOT NULL : kim tra mt gi tr c phi l NULL | NOT
NULL hay khng.

V d 11. Cho bit cc gio vin khng c ngi qun l trc tip
SELECT *
FROM GIAOVIEN
WHERE MANQL IS NULL

V d 12. Cho bit cc gio vin c ngi qun l trc tip Cho bit cc gio
vin khng c ngi qun l trc tip
SELECT *
FROM GIAOVIEN
WHERE MANQL IS N O T NULL

4.5. IN v NOT IN
IN v NOT IN: kim tra mt gi tr c (khng) nm trong mt tp hp cc
gi tr hay khng.
V d 13: Cho bit cc gio vin c lng l 20000, 30000 hoc 40000.

SELECT *
FROM GIAOVIEN
WHERE LUONG IN (20000, 30000, 40000)
hoc
SELECT *
FROM GIAOVIEN
WHERE LUONG = 20000 OR LUONG = 30000 OR LUONG = 40000

5 Tm kim vi iu kin lin quan n chui k t


x l vi cc d liu thuc dng xu k t, ngoi ton t so snh bng =
s dng so snh chui tuyt i th ngn ng SQL c h tr ton t so snh chui
LIKE so snh chui tng i.
V d 14: Cho bit cc gio vin c a ch TP HCM
SELECT *
FROM GIAOVIEN
WHERE DIACHI LIKE '%TP HCM'

Lu v cc k t i din khi s dng LIKE1:


%: i din cho mt chui k t bt k
_: i din cho mt k t bt k
[ ]: i din cho cc k t nm trong mt khong no .
Ch :
LIKE 'ab\%cd%' cho ra nhng chui bt u vi 'ab%cd'
LIKE 'ab\\cd%' cho ra nhng chui bt u vi 'ab\cd'

6. Tm kim vi iu kin lin quan n ngy gi


Mt s hm lin quan n ngy gi m SQL h tr:
- datediff: Hm tnh khong cch (hiu) 2 thi gian theo mt n v no
(n v ngy, thng, nm, gi, pht, giy)
- datepart: Hm ly mt phn trong gi tr thi gian (ngy, thng, nm, gi,

Sinh vin tham kho cc k t i din khc trong Book Onlines

pht, giy)
- year, month, day: Hm ly nm, thng, ngy ca mt gi tr thi gian
truyn vo.
- getdate: Hm ly ngy hin hnh ca h thng
V d 15: Cho bit nhng ti bt u sau ngy 30/4/2005
SELECT TENDT, CAPQL
FROM DETAI
WHERE datediff(d, TGBD, '4/30/2005') < 0

V d 16: Cho bit nhng ti kt thc trc 1 tun so vi ngy 31/12/2007


SELECT *
FROM DETAI
WHERE datediff(d, TGKT, '12/31/2007') > 7

V d 17: Cho bit cc ti c ngy bt u l 30/4/2005


Cch 1:
SELECT *
FROM DETAI
WHERE TGBD = '4/30/2005'
Cch 2: SELECT * FROM DETAI
WHERE datediff(d, TGBD, '4/30/2005') = 0
Lu : Khi so snh vi kiu d liu datetime, s dng cc hm s chnh xc hn. V d: Trong
cch 1, nu mt ti m c TGBD = '4/30/2005 17:00:00' th s khng xut ra trong kt
qu.

7. S dng cc hm khi tm kim


SQL cho php s dng hm trong cu truy vn nhiu hnh thc:
S dng hm trong mnh WHERE: biu thc iu kin
S dng hm trong mnh SELECT : Trong mnh select ngoi
vic c s dng cc ton t nh +, -, *, / ta cn c th s dng hm i
vi cc thuc tnh.

S dng hm trong mnh ORDER BY


Mt s hm m SQL c h tr 2:
o Cc hm v ngy thng :
datediff, datepart
year, month, day
getdate
dateadd
o Cc hm v chui
len
replace
charindex
reverse
o Cc hm chuyn i kiu d liu
convert
cast
o Cc hm ton hc
floor, ceil
o
V d 18: Cho bit h tn v tui ca cc gio vin
SELECT HOTEN, datediff(yyyy, NGSINH, getdate()) as TUOI
FROM GIAOVIEN
hoc
SELECT HOTEN, year(getdate()) - year(NGSINH) as TUOI
FROM GIAOVIEN

V d 19: Cho bit cc gio vin sinh nm 1975


SELECT *
FROM GIAOVIEN
WHERE year(NGSINH) = 1975
2

Sinh vin t tm hiu cch s dng cc hm ny trong Book Onlines

V d 20: Cho bit lng v lng ca gio vin sau khi tng 10%
SELECT LUONG AS LUONG_TRUOC, LUONG * 1.1 AS LUONG_SAU
FROM GIAOVIEN

V d 21: Cho bit danh sch tn ti v nm bt u thc hin, sp xp gim dn


theo nm bt u.
SELECT TENDT, year(TGBD) AS NAMBD
FROM DETAI
ORDER BY year(TGBD) DESC

8 Cc php ton tp hp
C php chung:
SELECT FROM WHERE
UNION | INTERSECT | EXCEPT
SELECT FROM WHERE

iu kin thc hin c php ton tp hp:


Cng s lng thuc tnh
Cng kiu d liu ca cc thuc tnh
V d 22: Cho bit thng tin cc trng b mn c tham gia ti
SELECT TRBOMON
FROM BOMON
INTERSECT
SELECT MAGV
FROM GIAOVIEN

9. Php kt
Truy vn d liu trn nhiu bng v s dng quan h gia cc bng mt cch
ph hp c c iu kin kt ng.
V d gia GIAOVIEN v BOMON c 2 mi quan h:
Mt gio vin lm vic cho mt b mn. bit gio vin lm vic cho
b mn no ta da vo mi quan h gia 2 thuc tnh MABM ca

GIAOVIEN v MABM mnca BOMON.


Mt b mn c mt gio vin lm trng b mn. bit gio vin no
lm trng ca b mn no ta da vo mi quan h gia 2 thuc tnh
TRBOMON ca BOMON v MAGV ca GIAOVIEN.
Hai v d sau th hin 2 mi quan h ca GIAOVIEN v BOMON trong 2 nhu
cu truy vn khc nhau:
V d 23: Cho bit tn gio vin v tn b mn m gio vin lm vic.
SELECT HOTEN, TENBM
FROM GIAOVIEN, BOMON
WHERE GIAOVIEN.MABM = BOMON.MABM

V d 24: Cho bit tn gio vin v tn b mn m gio vin lm trng b


mn ca b mn .
SELECT HOTEN, TENBM
FROM BOMON, GIAOVIEN
WHERE BOMON.TRUONGBM = GIAOVIEN.MAGV

10. S dng ALIAS3


Khi tm kim trn nhiu bng lm cu truy vn d hiu v ngn gn hoc
gia cc bng c thuc tnh trng tn, hoc s dng mt bng nhiu hn 1 ln trong
cu truy vn t tn li cc bng c th phn bit cc bng, cc thuc tnh.
V d 25: Cho bit tn khoa v tn trng khoa ca khoa (S dng ALIAS):
SELECT K.TENKHOA, GV.HOTEN
FROM KHOA AS K, GIAOVIEN AS GV
WHERE K.TRKHOA = GV.MAGV
hoc
SELECT K.TENKHOA, GV.HOTEN
FROM KHOA K, GIAOVIEN GV
WHERE K.TRKHOA = GV.MAGV

Khi truy vn trn cc bng c cc thuc tnh cng tn th vic s dng ALIAS s gip trnh
c vic nhp nhng khi s dng cc thuc tnh. Ngoi ra, vic s dng ALIAS trong nhng
cu truy vn trn nhiu bng s lm cho cu truy vn d c hn.
3

V d 26: Cho bit tn gio vin v tn nhng ngi thn ca gio vin:
SELECT GV.HOTEN AS TENGV, NT.TEN AS TENNT
FROM GIAOVIEN AS GV, NGUOITHAN AS NT
WHERE NT.MAGV = GV.MAGV

V d 27: Cho bit tn gio vin v tn ngi qun l ca gio vin


SELECT GV.HOTEN AS TENGV, NQL.HOTEN AS TENNQL
FROM GIAOVIEN AS GV, GIAOVIEN AS NQL
WHERE GV.MANQL = NQL.MAGV

V d 28: Cho bit tn gio vin v tn khoa m gio vin trc thuc.
SELECT GV.HOTEN, K.TENKHOA
FROM GIAOVIEN GV, BOMON BM, KHOA K
WHERE GV.MABM = BM.MABM AND BM.MAKHOA = K.MAKHOA

11. S dng JOIN


C php:
SELECT
FROM (TABLE1 JOIN TABLE 2 ON [iu kin kt ] ) JOIN TABLE3 ON [iu kin kt]
WHERE

V d 29: Cho bit tn gio vin v tn b mn m gio vin lm vic (Vit li


v d 23 s dng JOIN).
S dng iu kin kt WHERE
SELECT G.HOTEN, B.TENBM
FROM GIAOVIEN G JOIN BOMON B
WHERE G.MABM = B.MABM
S dng JOIN
SELECT G.HOTEN, B.TENBM
FROM GIAOVIEN G JOIN BOMON B ON G.MABM = B.MABM

Bi tp ti lp
Yu cu: Vit cc cu truy vn Q1, Q3, , Q25 trong bi tp Qun l
ti bng ngn ng SQL.
Bi tp QUN L TI
Q1. Cho bit h tn v mc lng ca cc gio vin n.
Q2. Cho bit h tn ca cc gio vin v lng ca h sau khi tng 10%.
Q3. Cho bit m ca cc gio vin c h tn bt u l Nguyn v lng trn
$2000 hoc, gio vin l trng b mn nhn chc sau nm 1995.
Q4. Cho bit tn nhng gio vin khoa Cng ngh thng tin.
Q5. Cho bit thng tin ca b mn cng thng tin ging vin lm trng b
mn .
Q6. Vi mi gio vin, hy cho bit thng tin ca b mn m h ang lm vic.
Q7. Cho bit tn ti v gio vin ch nhim ti.
Q8. Vi mi khoa cho bit thng tin trng khoa.
Q9. Cho bit cc gio vin ca b mn Vi sinh c tham gia ti 006.
Q10. Vi nhng ti thuc cp qun l Thnh ph, cho bit m ti,
ti thuc v ch no, h tn ngi ch nghim ti cng vi ngy sinh v a ch
ca ngi y.
Q11. Tm h tn ca tng gio vin v ngi ph trch chuyn mn trc tip
ca gio vin .
Q12. Tm h tn ca nhng gio vin c Nguyn Thanh Tng ph trch
trc tip.
Q13. Cho bit tn gio vin l trng b mn H thng thng tin.
Q14. Cho bit tn ngi ch nhim ti ca nhng ti thuc ch Qun
l gio dc.
Q15. Cho bit tn cc cng vic ca ti HTTT qun l cc trng H c
thi gian bt u trong thng 3/2008.
Q16. Cho bit tn gio vin v tn ngi qun l chuyn mn ca gio vin .
Q17. Cho cc cng vic bt u trong khong t 01/01/2007 n 01/08/2007.
Q18. Cho bit h tn cc gio vin cng b mn vi gio vin Trn Tr

Hng.
Q19. Tm nhng gio vin va l trng b mn va ch nhim ti.
Q20. Cho bit tn nhng gio vin va l trng khoa v va l trng b
mn.
Q21. Cho bit tn nhng trng b mn m va ch nhim ti.
Q22. Cho bit m s cc trng khoa c ch nhim ti.
Q23. Cho bit m s cc gio vin thuc b mn HTTT hoc c tham gia
ti m 001.
Q24. Cho bit gio vin lm vic cng b mn vi gio vin 002.
Q25. Tm nhng gio vin l trng b mn.
Q26. Cho bit h tn v mc lng ca cc gio vin.

Thi lng: 1 gi.


Bi tp v nh
Yu cu:
a) Vit cc cu truy vn Q2, Q4, , Q26 trong bi tp Qun l ti bng
ngn ng SQL.
b) Vit cc cu truy vn Q1 Q16 trong bi tp Qun l chuyn bay
bng ngn ng SQL.
Bi tp QUN L CHUYN BAY
Q1. Cho bit m s, tn phi cng, a ch, in thoi ca cc phi cng tng
li my bay loi B747.
Q2. Cho bit m s v ngy i ca cc chuyn bay xut pht t sn bay DCA
trong khong thi gian t 14 gi n 18 gi.
Q3. Cho bit tn nhng nhn vin c phn cng trn chuyn bay c m s
100 xut pht ti sn bay SLC. Cc dng d liu xut ra khng c php trng lp.
Q4. Cho bit m loi v s hiu my bay tng xut pht ti sn bay MIA.
Cc dng d liu xut ra khng c php trng lp.
Q5. Cho bit m chuyn bay, ngy i, cng vi tn, a ch, in thoi ca tt
c cc hnh khch i trn chuyn bay . Sp xp theo th t tng dn ca m
chuyn bay v theo ngy i gim dn.

Q6. Cho bit m chuyn bay, ngy i, cng vi tn, a ch, in thoi ca tt c
nhng nhn vin c phn cng trong chuyn bay . Sp xp theo th t tng dn
ca m chuyn bay v theo ngy i gim dn.
Q7. Cho bit m chuyn bay, ngy i, m s v tn ca nhng phi cng c
phn cng vo chuyn bay h cnh xung sn bay ORD.
Q8. Cho bit cc chuyn bay (m s chuyn bay, ngy i v tn ca phi cng)
trong phi cng c m 1001 c phn cng li.
Q9. Cho bit thng tin (m chuyn bay, sn bay i, gi i, gi n, ngy i)
ca nhng chuyn bay h cnh xung DEN. Cc chuyn bay c lit k theo ngy
i gim dn v sn bay xut pht (SBDI) tng dn .
Q10. Vi mi phi cng, cho bit hng sn xut v m loi my bay m phi
cng ny c kh nng bay c. Xut ra tn phi cng, hng sn xut v m loi my
bay.
Q11. Cho bit m phi cng, tn phi cng li my bay trong chuyn bay
m s 100 vo ngy 11/01/2000.
Q12. Cho bit m chuyn bay, m nhn vin, tn nhn vin c phn cng
vo chuyn bay xut pht ngy 10/31/2000 ti sn bay MIA vo lc 20:30
Q13. Cho bit thng tin v chuyn bay (m chuyn bay, s hiu, m loi, hng
sn xut) m phi cng "Quang" li.
Q14. Cho bit tn ca nhng phi cng cha c phn cng li chuyn bay
no.
Q15. Cho bit tn khch hng i chuyn bay trn my bay ca hng
"Boeing"
Q16. Cho bit m cc chuyn bay ch bay vi my bay s hiu 10 v m loi
B747.

Thi lng: 3 gi.


HT

You might also like