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, AddressCity).
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 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 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 ườ ế
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 ườ 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