
Gi i thi u v MYSQLớ ệ ề
SQL là chu n ngôn ng ANSI đ truy c p CSDL.ẩ ữ ể ậ
SQL là gì?
* SQL là vi t t t c a Structured Query Language - Ngôn ng truy v n c u trúc.ế ắ ủ ữ ấ ấ
* SQL cho phép b n truy c p vào CSDL.ạ ậ
* SQL là m t chu n ngôn ng c a ANSI.ộ ẩ ữ ủ
* SQL có th th c thi các câu truy v n trên CSDL.ể ự ấ
* SQL có th l y d li u t CSDL.ể ấ ữ ệ ừ
* SQL có th chèn d li u m i vào CSDL.ể ữ ệ ớ
* SQL có th xoá d li u trong CSDL.ể ữ ệ
* SQL có th s a đ i d li u hi n có trong CSDL.ể ử ổ ữ ệ ệ
* SQL d h cễ ọ
SQL là m t chu nộ ẩ
SQL là m t chu n c a ANSI (ộ ẩ ủ American National Standards Institute - Vi n tiêu chu n qu c giaệ ẩ ố
Hoa kỳ) v truy xu t các h th ng CSDL. Các câu l nh SQL đ c s d ng đ truy xu t và c pề ấ ệ ố ệ ượ ử ụ ể ấ ậ
nh t d li u trong m t CSDL.ậ ữ ệ ộ
SQL ho t đ ng v i h u h t các ch ng trình CSDL nh ạ ộ ớ ầ ế ươ ư MS Access, DB2, Informix, MS SQL
Server, Oracle, Sybase v.v...
L u ý:ư H u h t các ch ng trình CSDL h tr SQL đ u có ph n m r ng cho SQL ch ho tầ ế ươ ỗ ợ ề ầ ở ộ ỉ ạ
đ ng v i chính ch ng trình đó.ộ ớ ươ
B ng CSDLả
M t CSDL th ng bao g m m t ho c nhi u b ng (table). M i b ng đ c xác đ nh thông quaộ ườ ồ ộ ặ ề ả ỗ ả ượ ị
m t tên (ví d ộ ụ Customers ho c ặOrders). B ng ch a các m u tin - dòng (record - row), là d li uả ứ ẩ ữ ệ
c a b ng.ủ ả
D i đây là m t ví d v m t b ng có tên là ướ ộ ụ ề ộ ả Persons (ng i):ườ
LastName FirstName Address City Hansen Ola Timoteivn 10 Sandnes Svendson Tove Borgvn
23 Sandnes Pettersen Kari Storgt 20 Stavanger
B ng trên bao g m 3 m u tin (dòng), m i m u tin t ng ng v i m t ng i, và b n c tả ở ồ ẩ ỗ ẩ ươ ứ ớ ộ ườ ố ộ
(LastName, FirstName, Address và City).
Câu truy v n SQLấ
V i SQL ta có th truy v n CSDL và nh n l y k t qu tr v thông qua các câu truy v n.ớ ể ấ ậ ấ ế ả ả ề ấ
M t câu truy v n nh sau:ộ ấ ư
SELECT LastName FROM Persons
S tr v k t qu nh sau:ẽ ả ề ế ả ư
LastName Hansen Svendson Pettersen
L u ý:ư M t s h th ng CSDL đòi h i câu l nh SQL ph i k t thúc b ng m t d u ch m ph y (ộ ố ệ ố ỏ ệ ả ế ằ ộ ấ ấ ả ;).
Chúng ta s không dùng d u ch m ph y trong bài vi t này.ẽ ấ ấ ả ế
SQL là ngôn ng thao tác d li u (DML - Data Manipulation Language)ữ ữ ệ
SQL là cú pháp đ th c thi các câu truy v n. SQL cũng bao g m cú pháp đ c p nh t - s a đ i,ể ự ấ ồ ể ậ ậ ử ổ
chèn thêm và xoá các m u tin.ẩ
Sau đây là danh sách các l nh và truy v n d ng DML c a SQL:ệ ấ ạ ủ
•SELECT - l y d li u t m t b ng CSDL.ấ ữ ệ ừ ộ ả
•UPDATE - c p nh t/s a đ i d li u trong b ng.ậ ậ ử ổ ữ ệ ả
•DELETE - xoá d li u trong b ng.ữ ệ ả
•INSERT INTO - thêm d li u m i vào b ng.ữ ệ ớ ả
SQL là ngôn ng đ nh nghĩa d li u (DDL - Data Definition Language)ữ ị ữ ệ
Ph n DDL c a SQL cho phép t o ra ho c xoá các b ng. Chúng ta cũng có th đ nh nghĩa cácầ ủ ạ ặ ả ể ị
khoá (key), ch m c (index), ch đ nh các liên k t gi a các b ng và thi t l p các quan h ràngỉ ụ ỉ ị ế ữ ả ế ậ ệ

bu c gi a các b ng trong CSDL.ộ ữ ả
Các l nh DDL quan tr ng nh t c a SQL là:ệ ọ ấ ủ
•CREATE TABLE - t o ra m t b ng m i.ạ ộ ả ớ
•ALTER TABLE - thay đ i c u trúc c a b ng.ổ ấ ủ ả
•DROP TABLE - xoá m t b ng.ộ ả
•CREATE INDEX - t o ch m c (khoá đ tìm ki m - search key).ạ ỉ ụ ể ế
•DROP INDEX - xoá ch m c đã đ c t o.ỉ ụ ượ ạ
M nh đ WHEREệ ề
M nh đ WHERE đ c dùng đ thi t l p đi u ki n truy xu t.ệ ề ượ ể ế ậ ề ệ ấ
M nh đệ ề WHERE
Đ truy xu t d li u trong b ng theo các đi u ki n nào đó, m t m nh để ấ ữ ệ ả ề ệ ộ ệ ề
WHERE có th đ c thêm vào câu l nh SELECT.ể ượ ệ
Cú pháp
Cú pháp m nh đ WHERE trong câu l nh SELECT nh sau:ệ ề ệ ư
SELECT tên_c t ộFROM tên_b ngả
WHERE tên_c t ộphép_toán giá_trị
Trong m nh đ WHERE, các phép toán đ c s d ng làệ ề ượ ử ụ
Phép toán Mô tả
= So sánh b ngằ
<> So sánh không b ngằ
> L n h nớ ơ
< Nh h nỏ ơ
>= L n h n ho c b ngớ ơ ặ ằ
<= Nh h n ho c b ngỏ ơ ặ ằ
BETWEEN N m gi a m t kho ngằ ữ ộ ả
LIKE So sánh m u chu iẫ ỗ
L u ý:ư Trong m t s phiên b n c a SQL, phép toán ộ ố ả ủ <> có th đ c vi t d iể ượ ế ướ
d ng ạ!=
S d ng m nh đ WHEREử ụ ệ ề
Đ l y danh sách nh ng ng i s ng thành ph ể ấ ữ ườ ố ở ố Sandnes, ta s d ng m nhử ụ ệ
đ WHERE trong câu l nh SELECT nh sau:ề ệ ư
SELECT * FROM Persons
WHERE City = 'Sandnes'
B ng ảPersons:
LastNameFirstNameAddressCityYearHansenOlaTimoteivn 10Sandnes1951SvendsonToveBorgvn
23Sandnes1978SvendsonStaleKaivn 18Sandnes1980PettersenKariStorgt 20Stavanger1960
K t qu tr v :ế ả ả ề
LastNameFirstNameAddressCityYearHansenOlaTimoteivn 10Sandnes1951SvendsonToveBorgvn
23Sandnes1978SvendsonStaleKaivn 18Sandnes1980
S d ng d u nháyử ụ ấ
L u ý r ng ví d trên ta đã s d ng hai d u nháy đ n (ư ằ ở ụ ử ụ ấ ơ ') bao quanh giá trị
đi u ki n 'Sandnes'.ề ệ
SQL s d ng d u nháy đ n bao quanh các giá tr d ng chu i văn b n (text).ử ụ ấ ơ ị ở ạ ỗ ả
Nhi u h CSDL còn cho phép s d ng d u nháy kép (ề ệ ử ụ ấ "). Các giá tr d ng sị ở ạ ố
không dùng d u nháy đ bao quanh.ấ ể
V i d li u d ng chu i văn b n:ớ ữ ệ ạ ỗ ả

Câu l nh đúng:ệ
SELECT * FROM Persons WHERE FirstName = 'Tove'
Câu l nh sai:ệ
SELECT * FROM Persons WHERE FirstName = Tove
V i d li u d ng s :ớ ữ ệ ạ ố
Câu l nh đúng:ệ
SELECT * FROM Persons WHERE Year > 1965
Câu l nh sai:ệ
SELECT * FROM Persons WHERE Year > '1965'
Phép toán đi u ki n LIKEề ệ
Phép toán LIKE đ c dùng đ tìm ki m m t chu i m u văn b n trên m t c t.ượ ể ế ộ ỗ ẫ ả ộ ộ
Cú pháp
Cú pháp c a phép toán LIKE nh sau:ủ ư
SELECT tên_c t ộFROM tên_b ngả
WHERE tên_c t ộLIKE m uẫ
M t ký hi u ộ ệ % có th đ c s d ng đ đ nh nghĩa các ký t đ i di n. ể ượ ử ụ ể ị ự ạ ệ % có thể
đ c đ t tr c và/ho c sau m u.ượ ặ ướ ặ ẫ
S d ng LIKEử ụ
Câu l nh SQL sau s tr v danh sách nh ng ng i có tên b t đ u b ng ch ệ ẽ ả ề ữ ườ ắ ầ ằ ữ O:
SELECT * FROM Persons
WHERE FirstName LIKE 'O%'
Câu l nh SQL sau s tr v danh sách nh ng ng i có tên k t thúc b ng ch ệ ẽ ả ề ữ ườ ế ằ ữ a:
SELECT * FROM Persons
WHERE FirstName LIKE '%a'
Câu l nh SQL sau s tr v danh sách nh ng ng i có tên k t ch a chu iệ ẽ ả ề ữ ườ ế ứ ỗ
la:SELECT * FROM Persons
WHERE FirstName LIKE '%la%'
Toán t lô-gic AND và ORử
AND và OR
Hai toán t AND và OR n i hai ho c nhi u đi u ki n trong m nh đ WHERE l iử ố ặ ề ề ệ ệ ề ạ
v i nhau.ớ
Toán t AND s hi n th 1 dòng n u T T C các đi u ki n đ u tho mãn. Toánử ẽ ể ị ế Ấ Ả ề ệ ề ả
t OR hi n th m t dòng n u B T KỲ đi u ki n nào đ c tho .ử ể ị ộ ế Ấ ề ệ ượ ả
B ng d li u dùng trong ví dả ữ ệ ụ
LastNameFirstNameAddressCityHansenOlaTimoteivn 10SandnesSvendsonToveBorgvn 23SandnesSvendsonStephenKaivn
18Sandnes
Ví d 1ụ
S d ng AND đ tìm nh ng ng i có tên là ử ụ ể ữ ườ Tove và h là ọSvendson:
SELECT * FROM PersonsWHERE FirstName = 'Tove'AND LastName =
'Svendson'
K t qu tr v :ế ả ả ề
LastNameFirstNameAddressCitySvendsonToveBorgvn 23Sandnes
Ví d 2ụ
S d ng OR đ tìm nh ng ng i có tên là ử ụ ể ữ ườ Tove ho c h là ặ ọ Svendson:
SELECT * FROM PersonsWHERE firstname = 'Tove'OR lastname = 'Svendson'
K t qu tr v :ế ả ả ề
LastNameFirstNameAddressCitySvendsonToveBorgvn 23SandnesSvendsonStephenKaivn 18Sandnes

Ví d 3ụ
B n cũng có th s d ng k t h p AND và OR cùng v i d u ngo c đ n đ t oạ ể ử ụ ế ợ ớ ấ ặ ơ ể ạ
nên các câu truy v n ph c t p:ấ ứ ạ
SELECT * FROM Persons WHERE(FirstName = 'Tove' OR FirstName =
'Stephen')AND LastName = 'Svendson'
K t qu tr v :ế ả ả ề
LastNameFirstNameAddressCitySvendsonToveBorgvn 23SandnesSvendsonStephenKaivn 18Sandnes
Toán t BETWEEN...ANDử
Toán t BETWEEN...AND l y ra m t mi n d li u n m gi a hai giá tr . Hai giáử ấ ộ ề ữ ệ ằ ữ ị
tr này có th là s , chu i văn b n ho c ngày tháng.ị ể ố ỗ ả ặ
SELECT tên_c t ộFROM tên_b ngả
WHERE tên_c tộ
BETWEEN giá_tr _1 ịAND giá_tr _2ị
B ng d li u dùng trong ví dả ữ ệ ụ
LastNameFirstNameAddressCityHansenOlaTimoteivn 10SandnesNordmannAnnaNeset 18SandnesPettersenKariStorgt
20StavangerSvendsonToveBorgvn 23Sandnes
Ví d 1ụ
Tìm t t c nh ng ng i có h (s p x p theo ABC) n m gi a ấ ả ữ ườ ọ ắ ế ằ ữ Hansen (tính luôn
Hansen) và Pettersen (không tính Pettersen):
SELECT * FROM Persons WHERE LastName
BETWEEN 'Hansen' AND 'Pettersen'
K t qu tr v :ế ả ả ề
LastNameFirstNameAddressCityHansenOlaTimoteivn 10SandnesNordmannAnnaNeset 18Sandnes
L u ý quan tr ng:ư ọ Toán t BETWEEN...END s tr v nh ng k t qu khácử ẽ ả ề ữ ế ả
nhau trên các h CSDL khác nhau. V i m t s h CSDL, toán tệ ớ ộ ố ệ ử
BETWEEN...END s tr v các dòng mà có giá tr th c s "n m gi a" haiẽ ả ề ị ự ự ằ ữ
kho ng giá tr (t c là b qua không tính đ n các giá tr trùng v i giá tr c a haiả ị ứ ỏ ế ị ớ ị ủ
đ u mút). M t s h CSDL thì s tính luôn các giá tr trùng v i hai đ u mút.ầ ộ ố ệ ẽ ị ớ ầ
Trong khi đó m t s h CSDL khác l i ch tính các giá tr trùng v i đ u mút thộ ố ệ ạ ỉ ị ớ ầ ứ
nh t mà không tính đ u mút th hai (nh ví d phía trên). Do v y, b n ph iấ ầ ứ ư ở ụ ậ ạ ả
ki m tra l i h CSDL mà b n đang dùng khi s d ng toán t BETWEEN...AND.ể ạ ệ ạ ử ụ ử
Ví d 2ụ
Đ tìm nh ng ng i có h (s p x p theo ABC) n m ngoài kho ng hai giá tr víể ữ ườ ọ ắ ế ằ ả ị ở
d 1, ta dùng thêm toán t NOT:ụ ử
SELECT * FROM Persons WHERE LastName
NOT BETWEEN 'Hansen' AND 'Pettersen'
K t qu tr v :ế ả ả ề
LastNameFirstNameAddressCityPettersenKariStorgt 20StavangerSvendsonToveBorgvn 23Sandnes
Câu l nh INSERT INTO.ệ
Câu l nh INSERT INTOệ
Câu l nh INSERT INTO đ c dùng đ chèn dòng m i vào b ng.ệ ượ ể ớ ả
Cú pháp:
INSERT INTO tên_b ngả
VALUES (giá_tr _1, giá_tr _2,....ị ị )
B n cũng có th ch rõ các c t/tr ng nào c n chèn d li u:ạ ể ỉ ộ ườ ầ ữ ệ
INSERT INTO tên_b ng ả(c t_1, c t_2,...ộ ộ )

VALUES (giá_tr _1, giá_tr _2,....ị ị )
Chèn 1 dòng m iớ
Ta có b ng ảPersons nh sau:ư
LastNameFirstNameAddressCityPettersenKariStorgt 20Stavanger
Câu l nh SQL sau:ệ
INSERT INTO Persons
VALUES ('Hetland', 'Camilla', 'Hagabakka 24', 'Sandnes')
s t ora k t qu trong b ng ẽ ạ ế ả ả Persons nh sau:ư
LastNameFirstNameAddressCityPettersenKariStorgt 20StavangerHetlandCamillaHagabakka 24Stavanger
Chèn d li u vào các c t/tr ng c thữ ệ ộ ườ ụ ể
V i b ng ớ ả Persons nh trên, câu l nh SQL sau:ư ệ
INSERT INTO Persons (LastName, Address)
VALUES ('Rasmussen', 'Storgt 67')
S t o ra k t qu :ẽ ạ ế ả
LastNameFirstNameAddressCityPettersenKariStorgt 20StavangerHetlandCamillaHagabakka 24StavangerRasmussenStorgt 67
Câu l nh UPDATEệ
Câu l nh UPDATEệ
Câu l nh UPDATE đ c s d ng đ c p nh t/s a đ i d li u đã có trong b ng.ệ ượ ử ụ ể ậ ậ ử ổ ữ ệ ả
Cú pháp:
UPDATE tên_b ngả
SET tên_c t ộ= giá_tr _m iị ớ
WHERE tên_c t ộ= giá_trị
Ví d : b ng ụ ả Person c a ta nh sau:ủ ư
LastNameFirstNameAddressCityNilsenFredKirkegt 56StavangerRasmussenStorgt 67
C p nh t 1 c t trên 1 dòngậ ậ ộ
Gi s ta mu n b xung thêm ph n tên cho ng i có h là ả ử ố ổ ầ ườ ọ Rasmussen:
UPDATE Person SET FirstName = 'Nina'
WHERE LastName = 'Rasmussen'
Ta s có k t qu nh sau:ẽ ế ả ư
LastNameFirstNameAddressCityNilsenFredKirkegt 56StavangerRasmussenNinaStorgt 67
C p nh t nhi u c t trên 1 dòngậ ậ ề ộ
Bây gi ta l i mu n đ i tên và đ a ch :ờ ạ ố ổ ị ỉ
UPDATE Person
SET Address = 'Stien 12', City = 'Stavanger'
WHERE LastName = 'Rasmussen'
K t qu s là:ế ả ẽ
LastNameFirstNameAddressCityNilsenFredKirkegt 56StavangerRasmussenNinaStien
12Stavanger
Câu l nh DELETEệ