Professional Documents
Culture Documents
Cau Lenh Truy Van SQL PDF
Cau Lenh Truy Van SQL PDF
SQL l g?
Dng Thin T
SQL Tutorial
SQL rt d hc
SQL l mt chun
SQL l mt chun ANSI (American National Standards Institute - Vin Tiu chun Quc gia M) cho cc h thng truy xut c
s d liu. Cc pht biu SQL dng truy tm v cp nht d liu trong mt c s d liu.
SQL lm vic vi cc trnh qun l c s d liu nh Access, DB2, Informix, Microsoft SQL Server, Oracle, Sybase, v nhiu
trnh khc (ng tic l a s trong chng c cc phn m rng ngn ng SQL ring).
Cc bng c s d liu
C s d liu cha cc i tng gi l cc Bng (Tables).
Cc Mu tin (Records) lu trong cc bng ny. Cc bng c gi theo tn bng (nh "Persons", "Orders", "Suppliers").
Cc bng cha cc Ct (Columns) v cc Dng (Rows) d liu. Dng cha cc mu tin (nh mu tin v mt ngi). Ct cha
d liu (nh First Name, Last Name, Address, v City).
Mt v d l bng "Persons" sau:
LastName
FirstName
Address
City
Hansen
Ola
Timoteivn 10
Sandnes
Svendson
Tove
Borgvn 23
Sandnes
Pettersen
Kari
Storgt 20
Stavanger
Cc truy vn SQL
Vi SQL, chng ta c th truy vn mt c s d liu v nhn c mt kt qu tr v vi dng bng.
Mt truy vn ging nh sau:
SELECT LastName FROM Persons
S tr v mt kt qu ging nh sau:
LastName
Hansen
Svendson
Pettersen
Ch : Vi h c s d liu cn mt du ; cui pht biu SQL. Chng ta khng dng du ; trong bi vit ny.
Dng Thin T
SQL Tutorial
DROP INDEX xo mt ch mc
SQL v ASP
SQL l mt phn quan trng ca ASP (Active Server Pages), v ADO (Active Data Object) c dng trong ASP truy xut c
s d liu, ADO da trn SQL truy xut d liu.
V d: Chn cc ct t mt bng
chn cc ct c tn "LastName" v "FirstName", dng mt pht biu SELECT nh sau:
SELECT LastName,FirstName FROM Persons
Bng "Persons":
LastName
FirstName
Address
City
Hansen
Ola
Timoteivn 10
Sandnes
Svendson
Tove
Borgvn 23
Sandnes
Pettersen
Kari
Storgt 20
Stavanger
Kt qu:
LastName
FirstName
Hansen
Ola
Svendson
Tove
Pettersen
Kari
V d: Chn tt c cc ct
chn tt c cc ct t bng "Person", dng mt k hiu * thay th cho tn cc ct nh sau:
SELECT * FROM Persons
Kt qu:
LastName
FirstName
Address
City
Hansen
Ola
Timoteivn 10
Sandnes
Svendson
Tove
Borgvn 23
Sandnes
Pettersen
Kari
Storgt 20
Stavanger
Bng kt qu
Kt qu t mt truy vn SQL c lu tr trong mt tp kt qu. Tp kt qu c th xem nh mt bng kt qu. a s cc
Dng Thin T
SQL Tutorial
trnh qun l c s d liu cho php duyt tp kt qu vi cc hm lp trnh nh: Move-To-First-Record, Get-Record-Content,
Move-To-Next-Record......
Mnh WHERE
chn c iu kin d liu t mt bng, mt mnh WHERE c th thm vo pht biu SELECT vi c php sau:
SELECT column FROM table WHERE column condition value
Vi mnh WHERE, cc iu kin sau c th c dng:
Operator
Condition
Bng
<>
Khng bng
>
Ln hn
<
Nh hn
>=
Ln hn hoc bng
<=
Nh hn hoc bng
LIKE
S gii thch bn di
FirstName
Address
City
Year
Hansen
Ola
Timoteivn 10
Sandnes
1951
Svendson
Tove
Borgvn 23
Sandnes
1978
Svendson
Stle
Kaivn 18
Sandnes
1980
Pettersen
Kari
Storgt 20
Stavanger
1960
Kt qu:
LastName
FirstName
Address
City
Year
Hansen
Ola
Timoteivn 10
Sandnes
1951
Svendson
Tove
Borgvn 23
Sandnes
1978
Svendson
Stle
Kaivn 18
Sandnes
1980
Dng du nhy
Ch rng chng ta dng du nhy n bao quanh cc tr iu kin trong cc v d. SQL dng du nhy n bao quanh cc tr
vn bn. Phn ln cc h qun l c s d liu cng chp nhn du nhy kp. Cc tr s khng c ng trong du nhy.
Vi cc tr vn bn:
Vit ng:
SELECT * FROM Persons WHERE FirstName='Tove'
Vit sai:
SELECT * FROM Persons WHERE FirstName=Tove
Vi cc tr s:
Vit ng:
SELECT * FROM Persons WHERE Year>1965
Vit sai:
SELECT * FROM Persons WHERE Year>'1965'
Dng Thin T
SQL Tutorial
iu kin LIKE
iu kin LIKE dng ch nh vic tm mt mu trong mt ct.
C php:
SELECT column FROM table WHERE column LIKE pattern
Mt du "%" c th dng nh k t i din (wildcards) c trc ln sau mu.
FirstName
Address
City
Year
Hansen
Ola
Timoteivn 10
Sandnes
1951
FirstName
Address
City
Hansen
Ola
Timoteivn 10
Sandnes
Svendson
Tove
Borgvn 23
Sandnes
Svendson
Stephen
Kaivn 18
Sandnes
V d
Dng AND hin th ngi c firstname l "Tove", v lastname l "Svendson":
SELECT * FROM Persons
WHERE FirstName='Tove'
AND LastName='Svendson'
Kt qu:
LastName
FirstName
Address
City
Svendson
Tove
Borgvn 23
Sandnes
V d
Dng OR hin th ngi c firstname l "Tove", hoc c lastname l "Svendson":
SELECT * FROM Persons
WHERE firstname='Tove'
OR lastname='Svendson'
Kt qu:
Dng Thin T
SQL Tutorial
LastName
FirstName
Address
City
Svendson
Tove
Borgvn 23
Sandnes
Svendson
Stephen
Kaivn 18
Sandnes
V d
Bn cng c th dng phi hp AND v OR (dng du ngoc n bao cc biu thc phc tp):
SELECT * FROM Persons WHERE
(FirstName='Tove' OR FirstName='Stephen')
AND LastName='Svendson'
Kt qu:
LastName
FirstName
Address
City
Svendson
Tove
Borgvn 23
Sandnes
Svendson
Stephen
Kaivn 18
Sandnes
SQL Between...And
BETWEEN ... AND
Ton t BETWEEN ... AND chn tt c cc tr trong khong gii hn gia hai tr. Cc tr ny c th l cc s, vn bn, hay ngy
thng.
SELECT column_name FROM table_name
WHERE column_name
BETWEEN value1 AND value2
FirstName
Address
City
Hansen
Ola
Timoteivn 10
Sandnes
Svendson
Tove
Borgvn 23
Sandnes
Nordmann
Anna
Neset 18
Sandnes
Pettersen
Kari
Storgt 20
Stavanger
V d 1
hin th cc tn theo th t alphabet gia hai tn (k c hai tn ny) "Hansen" v "Pettersen", dng SQL sau:
SELECT * FROM Persons WHERE LastName
BETWEEN 'Hansen' AND 'Pettersen'
Kt qu:
LastName
FirstName
Address
City
Hansen
Ola
Timoteivn 10
Sandnes
Nordmann
Anna
Neset 18
Sandnes
Pettersen
Kari
Storgt 20
Stavanger
V d 2
hin th cc tn ngoi cc tn trong v d trn, dng ton t NOT:
SELECT * FROM Persons WHERE LastName
NOT BETWEEN 'Hansen' AND 'Pettersen'
Kt qu:
Dng Thin T
SQL Tutorial
LastName
FirstName
Address
City
Svendson
Tove
Borgvn 23
Sandnes
T kha DISTINCT
Pht biu SQL SELECT tr v thng tin t cc ct ca bng. Nhng lm th no nu chng ta ch mun chn cc kt qu
khng trng nhau?
Vi SQL, chng ta ch cn thm vo mt t kha DISTINCT cho pht biu SELECT vI c php sau:
SELECT DISTINCT column-name(s) FROM table-name
OrderNumber
Sega
3412
W3Schools
2312
Trio
4678
W3Schools
6798
SQL Order By
T kha ORDER BY dng sp xp kt qu th t kt qu.
Dng Thin T
SQL Tutorial
Sp xp cc Dng
Mnh ORDER BY dng sp xp cc dng.
Mt s cch sp xp:
Company
OrderNumber
Sega
3412
ABC Shop
5678
W3Schools
2312
W3Schools
6798
V d
hin th tn cng ty (Company) theo th t alphabet:
SELECT Company, OrderNumber FROM Orders
ORDER BY Company
Kt qu:
Company
OrderNumber
ABC Shop
5678
Sega
3412
W3Schools
6798
W3Schools
2312
V d
hin th tn cng ty (Company) theo th t alphabet, nu tn cng ty ging nhau th sp xp theo s th t (OrderNumber):
SELECT Company, OrderNumber FROM Orders
ORDER BY Company, OrderNumber
Kt qu:
Company
OrderNumber
ABC Shop
5678
Sega
3412
W3Schools
2312
W3Schools
6798
V d
hin th tn cng ty (Company) theo th t alphabet o ngc (t Z n A):
SELECT Company, OrderNumber FROM Orders
ORDER BY Company DESC
Kt qu:
Company
OrderNumber
W3Schools
6798
W3Schools
2312
Sega
3412
ABC Shop
5678
Dng Thin T
SQL Tutorial
Chn mt dng mi
Bng "Persons":
LastName
FirstName
Address
City
Pettersen
Kari
Storgt 20
Stavanger
FirstName
Address
City
Pettersen
Kari
Storgt 20
Stavanger
Hetland
Camilla
Hagabakka 24
Sandnes
FirstName
Address
City
Pettersen
Kari
Storgt 20
Stavanger
Hetland
Camilla
Hagabakka 24
Sandnes
FirstName
Address
City
Pettersen
Kari
Storgt 20
Stavanger
Hetland
Camilla
Hagabakka 24
Sandnes
Rasmussen
Storgt 67
SQL Update
Update Rows
Pht biu UPDATE cp nht hoc thay i cc dng:
UPDATE table_name SET column_name = new_value
WHERE column_name = some_value
Bng Person:
LastName
FirstName
Address
City
Nilsen
Fred
Kirkegt 56
Stavanger
Rasmussen
Storgt 67
Dng Thin T
SQL Tutorial
FirstName
Address
City
Nilsen
Fred
Kirkegt 56
Stavanger
Rasmussen
Nina
Stien 12
Stavanger
SQL Delete
Xa cc ct
Pht biu DELETE dng xa mt hay nhiu dng trong mt bng.
DELETE FROM table_name WHERE column_name = some_value
Bng Person:
LastName
FirstName
Address
City
Nilsen
Fred
Kirkegt 56
Stavanger
Rasmussen
Nina
Stien 12
Stavanger
Xa mt dng
"Nina Rasmussen" s b xa:
DELETE FROM Person WHERE LastName = 'Rasmussen'
Kt qu
LastName
FirstName
Address
City
Nilsen
Fred
Kirkegt 56
Stavanger
Cc hm SQL Count
SQL c cc hm to sn m cc mu tin c s d liu.
C php hm Count
C php ca cc hm COUNT to sn nh sau:
SELECT COUNT(column) FROM table
Hm COUNT(*)
Hm COUNT(*) tr v s hng chn c trong mt php chn.
Vi bng "Persons" sau:
Dng Thin T
10
SQL Tutorial
Name
Age
Hansen, Ola
34
Svendson, Tove
45
Pettersen, Kari
19
Hm COUNT(column)
Hm COUNT(column) tr v s hng (ngoi tr hng c gi tr NULL) trong ct ch nh.
Vi bng "Persons":
Name
Age
Hansen, Ola
34
Svendson, Tove
45
Pettersen, Kari
V d ny tm s ngi c ghi tui ti field Age trong bng "Persons":
SELECT COUNT(Age) FROM Persons
Kt qu:
2
Hm COUNT(column) cng dng tnh s hng khng cha tr. Ch kt qu s nh hn s hng trong bng.
COUNT DISTINCT
T kha DISTINCT vi COUNT c th dng m s kt qu khc nhau (khng trng nhau).
C php nh sau:
SELECT DISTINCT COUNT(column(s)) FROM table
Vi bng "Orders":
Company
OrderNumber
Sega
3412
W3Schools
2312
Trio
4678
W3Schools
6798
Cc hm SQL
Dng Thin T
11
SQL Tutorial
C php dng hm
C php cho cc hm SQL to sn nh sau::
SELECT function(column) FROM table
Age
Hansen, Ola
34
Svendson, Tove
45
Pettersen, Kari
19
Hm AVG(column)
Hm AVG tr trung bnh ca d liu trong mt ct c u7c nh php chn. Cc tr NULL s khng c tnh ton.
V d
V d ny tr v tui trung bnh ca nhng ngi trong bng "Persons":
SELECT AVG(Age) FROM Persons
Kt qu
32.67
V d
V d ny tr v tui trung bnh ca nhng ngi c tui ln hn 20 tui:
SELECT AVG(Age) FROM Persons where Age>20
Kt qu
39.5
Hm MAX(column)
Hm MAX tr v tr ln nht trong mt ct. Cc tr NULL s khng c tnh ton.
V d
SELECT MAX(Age) FROM Persons
Kt qu:
45
Hm MIN(column)
Hm MIN tr v tr ln nht trong mt ct. Cc tr NULL s khng c tnh ton.
V d
SELECT MIN(Age) FROM Persons
Kt qu:
19
Ch : Cc hm MIN v MAX cng c th dng trn cc ct vn bn, tm tr ln nht v nh nht theo th t alphabet.
Hm SUM(column)
Hm SUM tng ca mt ct c c nh php chn. Cc tr NULL s khng c tnh ton.
V d
V d ny tr v tng s tui ca nhng ngi trong bng "Persons":
SELECT SUM(Age) FROM Persons
Kt qu:
Dng Thin T
12
SQL Tutorial
98
V d
V d ny tr v tng s tui ca nhng ngi ln hn 20 tui.
SELECT SUM(Age) FROM Persons where Age>20
Kt qu:
79
T kha GROUP BY
T kha GROUP BY c thm vo SQL v cc hm tng (nh SUM) tr v tng ca tt c cc tr trong ct mi khi chng ta
gi n.
Thiu chc nng GROUP BY, khng th tm tng ca mi nhm tr ring trong ct.
C php ca GROUP BY nh sau:
SELECT column,SUM(column) FROM table GROUP BY column
V d GROUP BY
Bng "Sales":
Company
Amount
W3Schools
5500
IBM
4500
W3Schools
7100
Vi SQL:
SELECT Company, SUM(Amount) FROM Sales
Tr v kt qu nh sau:
Company
SUM(Amount)
W3Schools
17100
IBM
17100
W3Schools
17100
SQL trn khng tr v tng ring bit ca tng cng ty. Dng mnh GROUP BY nh sau:
SELECT Company,SUM(Amount) FROM Sales
GROUP BY Company
S tr v kt qu ng:
Company
SUM(Amount)
W3Schools
12600
IBM
4500
Dng Thin T
13
SQL Tutorial
Bng "Sales":
Company
Amount
W3Schools
5500
IBM
4500
W3Schools
7100
Vi SQL:
SELECT Company,SUM(Amount) FROM Sales
GROUP BY Company HAVING SUM(Amount)>10000
Tr v kt qu
Company
SUM(Amount)
W3Schools
12600
B danh tn Ct
C php nh sau:
SELECT column AS column_alias FROM table
B danh tn Bng
C php nh sau:
SELECT column FROM table AS table_alias
V d: Dng b danh tn Ct
Bng Persons:
LastName
FirstName
Address
City
Hansen
Ola
Timoteivn 10
Sandnes
Svendson
Tove
Borgvn 23
Sandnes
Pettersen
Kari
Storgt 20
Stavanger
Vi SQL sau:
SELECT LastName AS Family, FirstName AS Name
FROM Persons
S tr v kt qu sau:
Family
Name
Hansen
Ola
Svendson
Tove
Pettersen
Kari
FirstName
Address
City
Hansen
Ola
Timoteivn 10
Sandnes
Svendson
Tove
Borgvn 23
Sandnes
Dng Thin T
14
SQL Tutorial
Pettersen
Kari
Storgt 20
Stavanger
Vi SQL sau:
SELECT LastName, FirstName
FROM Persons AS Employees
S tr v kt qu sau:
Bng Employees:
LastName
FirstName
Hansen
Ola
Svendson
Tove
Pettersen
Kari
SQL Join
Joins and cc Kha (Key)
i khi chng ta chn d liu t hai bng to kt qu, Chng ta thc hin mt kt ni (join).
Cc bng trong c s d liu c th lin h vi cc bng khc thng qua cc kha. Mt kha chnh (primary key) l mt ct vi
cc tr duy nht cho mi hng. Mc tiu l rng buc d liu, tham chiu cho cc bng, khng cn lp li tt c d liu trong
tng bng.
Trong bng "Employees" pha di, ct "ID" l kha chnh, ngha l ct ny khng c hai hng cng ID. ID dng phn bit hai
ngi nu c hai c cng tn.
Khi bn xem bng v d pha di, ch rng:
Ct "ID" trong bng "Orders" dng tham chiu cc tn trong bng "Employees" khng cn a cc tn ny vo
bng Orders
Employees:
ID
Name
01
Hansen, Ola
02
Svendson, Tove
03
Svendson, Stephen
04
Pettersen, Kari
Orders:
ID
Product
01
Printer
03
Table
03
Chair
V d
Ai ng k mt sn phm v ng k sn phm no?
SELECT Employees.Name, Orders.Product
FROM Employees, Orders
WHERE Employees.ID = Orders.ID
Kt qu
Name
Product
Hansen, Ola
Printer
Svendson, Stephen
Table
Dng Thin T
15
SQL Tutorial
Svendson, Stephen
Chair
V d
Ai ng k mt my in?
SELECT Employees.Name
FROM Employees, Orders
WHERE Employees.ID = Orders.ID
AND Orders.Product = 'Printer'
Kt qu
Name
Hansen, Ola
Dng cc Kt ni (Join)
HOC, chng ta c th chn d liu t hai bng vi t kha JOIN, ging nh sau:
V d INNER JOIN
C php
SELECT field1, field2, field3
FROM first_table
INNER JOIN second_table
ON first_table.keyfield = second_table.foreign_keyfield
Ai ng k mt sn phm v ng k sn phm no?
SELECT Employees.Name, Orders.Product
FROM Employees
INNER JOIN Orders
ON Employees.ID = Orders.ID
INNER JOIN tr v tt c cc hng t hai bng khi iu kin c so trng. Nu cc hng trong bng Employees khng so
trng trong bng Orders, hng s khng c lit k ra.
Kt qu
Name
Product
Hansen, Ola
Printer
Svendson, Stephen
Table
Svendson, Stephen
Chair
V d LEFT JOIN
C php
SELECT field1, field2, field3
FROM first_table
LEFT JOIN second_table
ON first_table.keyfield = second_table.foreign_keyfield
Lit k tt c nhn vin, v cc ng k mua ca h nu c.
SELECT Employees.Name, Orders.Product
FROM Employees
LEFT JOIN Orders
ON Employees.ID = Orders.ID
LEFT JOIN tr v tt c cc hng t bng th nht (Employees), cho d n khng c so trng trong bng th hai (Orders).
Nu cc hng trong bng Employees khng so trng trong bng Orders, nhng hng ny cng c lit k.
Kt qu
Name
Product
Hansen, Ola
Printer
Svendson, Tove
Svendson, Stephen
Table
Svendson, Stephen
Chair
Pettersen, Kari
V d RIGHT JOIN
Dng Thin T
16
SQL Tutorial
C php
SELECT field1, field2, field3
FROM first_table
RIGHT JOIN second_table
ON first_table.keyfield = second_table.foreign_keyfield
Lit k tt c nhn vin, v cc ng k mua ca h nu c.
SELECT Employees.Name, Orders.Product
FROM Employees
RIGHT JOIN Orders
ON Employees.ID = Orders.ID
RIGHT JOIN tr v tt c cc hng t bng th hai (Orders), cho d n khng c so trng trong bng th nht (Employees).
Nu c bt k hng no trong bng Orders khng c so trng trong bng Employees, cc hng ny cng c lit k.
Kt qu
Name
Product
Hansen, Ola
Printer
Svendson, Stephen
Table
Svendson, Stephen
Chair
V d
Ai ng k mt my in?
SELECT Employees.Name
FROM Employees
INNER JOIN Orders
ON Employees.ID = Orders.ID
WHERE Orders.Product = 'Printer'
Kt qu
Name
Hansen, Ola
To mt bng
to mt bng trong mt c s d liu:
CREATE TABLE table_name
(
column_name1 data_type,
column_name2 data_type,
.......
)
V d
V d ny minh ha cc bn to mt bng tn "Person", vi bn ct tn:"LastName", "FirstName", "Address", v "Age":
CREATE TABLE Person
(
LastName varchar,
FirstName varchar,
Address varchar,
Age int
)
V d ny minh ha cch bn ch nh kch thc ti a ca vi ct:
Dng Thin T
17
SQL Tutorial
M t
integer(size)
int(size)
smallint(size)
tinyint(size)
decimal(size, d)
numeric(size,d)
char(size)
varchar(size)
date(yyyymmdd)
Cha mt ngy
To Ch mc (Index)
Ch mc c to ra trn mt bng c sn nh v thm nhanh v hiu qu cc hng. C th to mt ch mc trn mt hoc
nhiu ct ca mt bng, vi mt ch mc cho mt tn. Ngi dng khng nhn thy cc ch mc, chng ch dng tng tc
truy vn.
Ch : Cp nht mt bng cha ch mc cn nhiu thi gian hn cp nht mt bng khng cha ch mc, v ch mc cng cn
cp nht. Tuy nhin, tng tt l to ch mc ch trn cc ct thng tm kim nht.
Mt Ch mc duy nht
To mt ch mc duy nht trn mt bng. mt ch mc duy nht ngha l khng th c hai hng c cng mt tr ch mc.
CREATE UNIQUE INDEX index_name
ON table_name (column_name)
"column_name" ch nh ct bn mun ch mc.
Mt Ch mc n gin
To mt ch mc n gin trn mt bng. Khi t kha UNIQUE khng c, cc tr trng s c cho php.
CREATE INDEX index_name
ON table_name (column_name)
"column_name" ch nh ct bn mun ch mc.
V d
V d ny to mt ch mc n gin, c tn "PersonIndex", trn field LastName ca bng Person:
CREATE INDEX PersonIndex
ON Person (LastName)
Nu bn mun ch mc cc tr trong mt ct theo th t gim (descending), bn c th thm t DESC sau tn ct:
CREATE INDEX PersonIndex
ON Person (LastName DESC)
Nu bn mun ch mc nhiu hn mt ct bn c th lit k cc tn ct trong du ngoc n, tch chng bng du phy:
CREATE INDEX PersonIndex
ON Person (LastName, FirstName)
Xa ch mc
Bn c th xa mt ch mc c trong mt bng vi pht biu DROP.
DROP INDEX table_name.index_name
Dng Thin T
18
SQL Tutorial
Person:
LastName
FirstName
Address
Pettersen
Kari
Storgt 20
V d
thm mt ct tn "City" vo bng "Person":
ALTER TABLE Person ADD City varchar(30)
Kt qu:
LastName
FirstName
Address
Pettersen
Kari
Storgt 20
City
V d
loi ct "Address" khi bng "Person":
ALTER TABLE Person DROP Address
Kt qu:
LastName
FirstName
Pettersen
Kari
Sch SQL
Sch
M t
Teach Yourself SQL in 10 Minutes
September 1999
Loi sch tutorial, t chc thnh chui cc bi hc-10 pht n gin.
Dng Thin T
19
City
SQL Tutorial
Dng Thin T
20