Tài liệu Câu lệnh truy vấn SQL - Dương Thiên Tứ

SQL Tutorial  
Welcome to SQL tutorial  
Mc lc  
SQL căn bn  
Gii thiu SQL  
Mô tthế nào là SQL, cách dùng SQL.  
SQL Select  
Cách dùng phát biu SELECT để chn dliu tmt bng trong SQL.  
SQL Where  
Cách dùng mnh đề WHERE để chỉ định tiêu chun chn.  
SQL And & Or  
Cách dùng AND và OR để kết ni hai hay nhiu điu kin trong mnh đề WHERE.  
SQL Between  
Cách dùng BETWEEN....AND để tìm dliu trong mt khong gii hn.  
SQL Distinct  
Cách dùng tkhóa DISTINCT để chtrvcác trkhác nhau trong mt ct.  
SQL Order By  
Cách dùng tkhóa ORDER BY để trvcác hàng được sp xếp theo mt thtự định trước.  
SQL Insert  
Cách dùng phát biu INSERT để chèn hàng mi vào trong mt bng.  
SQL Update  
Cách dùng phát biu UPDATE để cp nht hay thay đổi các hàng trong mt bng.  
SQL Delete  
Cách dùng phát biu DELETE để xóa các hàng trong mt bng.  
SQL Count  
Gii thích các hàm COUNT to sn trong SQL.  
SQL nâng cao  
Các hàm SQL  
Gii thích cách dùng các hàm to sn trong SQL.  
SQL Group By  
Gii thích cách dùng hàm GROUP BY to sn trong SQL.  
Các bí danh SQL  
Gii thích cách dùng các bí danh (alias) cho các tên ct và các tên bng.  
SQL Join  
Gii thích cách chn thông tin tnhiu bng.  
SQL Create  
Cách to các cơ sdliu và các bng, và cách xóa chúng.  
SQL Alter  
Cách dùng phát biu ALTER TABLE để thêm hay loi các ct trong mt bng cho trước.  
Gii thiu SQL  
SQL là mt ngôn ngtheo chun ANSI để truy xut các cơ sdliu.  
SQL là gì?  
SQL là Structured Query Language – Ngôn ngTruy vn có Cu trúc  
SQL cho phép bn truy xut mt cơ sdliu  
SQL là mt ngtheo chun ANSI  
SQL có ththc hin các truy vn đến mt cơ sdliu  
SQL có thtruy tìm dliu tmt cơ sdliu  
SQL có thchèn các mu tin mi vào trong mt cơ sdliu  
SQL có thxóa các mu tin trong mt cơ sdliu  
© Dương Thiên Tứ  
1
SQL Tutorial  
SQL có thcp nht các mu tin trong mt cơ sdliu  
SQL rt dhc  
SQL là mt chun  
SQL là mt chun ANSI (American National Standards Institute - Vin Tiêu chun Quc gia M) cho các hthng truy xut cơ  
sdliu. Các phát biu SQL dùng để truy tìm và cp nht dliu trong mt cơ sdliu.  
SQL làm vic vi các trình qun lý cơ sdliu như Access, DB2, Informix, Microsoft SQL Server, Oracle, Sybase, và nhiu  
trình khác (đáng tiếc là đa strong chúng có các phn mrng ngôn ngSQL riêng).  
Các bng cơ sdliu  
Cơ sdliu cha các đối tượng gi là các Bng (Tables).  
Các Mu tin (Records) lưu trong các bng này. Các bng được gi theo tên bng (như "Persons", "Orders", "Suppliers").  
Các bng cha các Ct (Columns) và các Dòng (Rows) dliu. Dòng cha các mu tin (như mu tin vmt người). Ct cha  
dliu (như First Name, Last Name, Address, và City).  
Mt ví dlà bng "Persons" sau:  
LastName  
Hansen  
Svendson  
Pettersen  
FirstName  
Ola  
Tove  
Address  
City  
Timoteivn 10  
Borgvn 23  
Storgt 20  
Sandnes  
Sandnes  
Stavanger  
Kari  
LastName, FirstName, Address, và City là các ct ca bng. Các dòng cha ba mu tin ca 3 người.  
Các truy vn SQL  
Vi SQL, chúng ta có thtruy vn mt cơ sdliu và nhn được mt kết qutrvvi dng bng.  
Mt truy vn ging như sau:  
SELECT LastName FROM Persons  
Strvmt kết quging như sau:  
LastName  
Hansen  
Svendson  
Pettersen  
Chú ý: Vài hcơ sdliu cn mt du “;” cui phát biu SQL. Chúng ta không dùng du “;” trong bài viết này.  
Thao tác dliu SQL  
SQL là mt cú pháp để thc hin các truy vn. Nhưng ngôn ngSQL cũng cha các cú pháp cp nht các mu tin (record),  
chèn các mu tin mi và xóa các mu tin đang tn ti.  
Các lnh truy vn và cp nht này thuc dng Ngôn ngThao tác Dliu (Data Manipulation Language - DML) mt phn ca  
SQL:  
ƒ
ƒ
ƒ
ƒ
SELECT – trích dliu tmt cơ sdliu  
UPDATE – cp nht dliu trong mt cơ sdliu  
DELETE – xóa dliu tmt cơ sdliu  
INSERT – chèn dliu mi vào trong mt cơ sdliu  
Định nghĩa dliu SQL  
Ngôn ngữ Định nghĩa Dliu (Data Definition Language - DDL) mt phn ca SQL, cho phép to hay xóa các bng cơ sdữ  
liu. Chúng ta cũng có thể định nghĩa các chmc (các khóa - key), chỉ định liên kết gia các bng, và ràng but gia các bng  
cơ sdliu.  
Các phát biu DDL quan trng nht trong SQL là::  
ƒ
CREATE TABLE – to mt bng cơ sdliu mi  
ƒ
ALTER TABLE – thay đổi (alters) mt bng cơ sdliu  
© Dương Thiên Tứ  
2
SQL Tutorial  
ƒ
ƒ
ƒ
DROP TABLE – xóa mt bng cơ sdliu  
CREATE INDEX – to mt chmc (khóa tìm kiếm)  
DROP INDEX – xoá mt chmc  
SQL và ASP  
SQL là mt phn quan trng ca ASP (Active Server Pages), vì ADO (Active Data Object) được dùng trong ASP để truy xut cơ  
sdliu, ADO da trên SQL để truy xut dliu.  
Phát biu SQL Select  
Phát biu SELECT chn các ct dliu tmt cơ sdliu.  
Kết qudng bng được lưu trong mt bng kết qu(gi là tp kết qu- result set).  
Phát biu SELECT  
Phát biu SELECT chn các ct dliu tmt cơ sdliu.  
Dùng phát biu này để chn (SELECT) thông tin t(FROM) mt bng như sau:  
SELECT column_name(s) FROM table_name  
Ví d: Chn các ct tmt bng  
Để chn các ct có tên "LastName" và "FirstName", dùng mt phát biu SELECT như sau:  
SELECT LastName,FirstName FROM Persons  
Bng "Persons":  
LastName  
Hansen  
FirstName  
Ola  
Tove  
Address  
City  
Timoteivn 10  
Borgvn 23  
Storgt 20  
Sandnes  
Sandnes  
Stavanger  
Svendson  
Pettersen  
Kết qu:  
LastName  
Hansen  
Kari  
FirstName  
Ola  
Svendson  
Pettersen  
Tove  
Kari  
Ví d: Chn tt ccác ct  
Để chn tt ccác ct tbng "Person", dùng mt ký hiu * thay thế cho tên các ct như sau:  
SELECT * FROM Persons  
Kết qu:  
LastName  
Hansen  
Svendson  
Pettersen  
FirstName  
Ola  
Tove  
Address  
City  
Timoteivn 10  
Borgvn 23  
Storgt 20  
Sandnes  
Sandnes  
Stavanger  
Kari  
Bng kết quả  
Kết qutmt truy vn SQL được lưu trtrong mt tp kết qu. Tp kết qucó thxem như mt bng kết qu. Đa scác  
© Dương Thiên Tứ  
3
SQL Tutorial  
trình qun lý cơ sdliu cho phép duyt tp kết quvi các hàm lp trình như: Move-To-First-Record, Get-Record-Content,  
Move-To-Next-Record......  
Mnh đề SQL Where  
Mnh đề WHERE dùng để chỉ định mt tiêu chun (criteria) chn.  
Mnh đề WHERE  
Để chn có điu kin dliu tmt bng, mt mnh đề WHERE có ththêm vào phát biu SELECT vi cú pháp sau:  
SELECT column FROM table WHERE column condition value  
Vi mnh đề WHERE, các điu kin sau có thể được dùng:  
Operator  
Condition  
=
Bng  
<>  
>
Không bng  
Ln hơn  
<
Nhhơn  
>=  
<=  
LIKE  
Ln hơn hoc bng  
Nhhơn hoc bng  
Sgii thích bên dưới  
Chú ý: Vài phiên bn SQL toán t<> có thể được viết thành !=  
Ví d: Chn người tmt công ty  
Để chn nhng người chsng Sandnes, thêm mnh đề WHERE vào phát biu SELECT như sau:  
SELECT * FROM Persons WHERE City='Sandnes'  
Bng "Persons":  
LastName  
Hansen  
FirstName  
Ola  
Tove  
Ståle  
Kari  
Address  
City  
Year  
1951  
1978  
1980  
1960  
Timoteivn 10  
Borgvn 23  
Kaivn 18  
Sandnes  
Sandnes  
Sandnes  
Stavanger  
Svendson  
Svendson  
Pettersen  
Kết qu:  
LastName  
Hansen  
Storgt 20  
FirstName  
Ola  
Tove  
Address  
City  
Year  
1951  
1978  
1980  
Timoteivn 10  
Borgvn 23  
Kaivn 18  
Sandnes  
Sandnes  
Sandnes  
Svendson  
Svendson  
Ståle  
Dùng du nháy  
Chú ý rng chúng ta dùng du nháy đơn bao quanh các trị điu kin trong các ví d. SQL dùng du nháy đơn bao quanh các trị  
văn bn. Phn ln các hqun lý cơ sdliu cũng chp nhn du nháy kép. Các trskhông được đóng trong du nháy.  
Vi các trvăn bn:  
Viết đúng:  
SELECT * FROM Persons WHERE FirstName='Tove'  
Viết sai:  
SELECT * FROM Persons WHERE FirstName=Tove  
Vi các trs:  
Viết đúng:  
SELECT * FROM Persons WHERE Year>1965  
Viết sai:  
SELECT * FROM Persons WHERE Year>'1965'  
© Dương Thiên Tứ  
4
SQL Tutorial  
Điu kin LIKE  
Điu kin LIKE dùng chỉ định vic tìm mt mu trong mt ct.  
Cú pháp:  
SELECT column FROM table WHERE column LIKE pattern  
Mt du "%" có thdùng như ký tự đại din (wildcards) ctrước ln sau mu.  
Ví d: Chn trong bng Persons vi mu tên  
Phát biu SQL strvnhng người có firstname bt đầu vi mt ký t'O'.  
SELECT * FROM Persons WHERE FirstName LIKE 'O%'  
Phát biu SQl strvnhng người có firstname kết thúc vi mt ký t'a'.  
SELECT * FROM Persons WHERE FirstName LIKE '%a'  
Phát biu SQL strvnhng người có firstname cha mu 'la'.  
SELECT * FROM Persons WHERE FirstName LIKE '%la%'  
Tt ccác ví dtrên strvkết qusau:  
LastName  
FirstName  
Address  
City  
Year  
Hansen  
Ola  
Timoteivn 10  
Sandnes  
1951  
SQL And & Or  
AND & OR  
AND và OR kết ni hai hay nhiu điu kin trong mt mnh đề WHERE.  
Toán tAND hin thmt ct nếu TT Ccác điu kin lit kê đều đúng.  
Toán tOR hin thmt ct nếu MT TRONG các điu kin lit kê là đúng.  
Bng gc (dùng trong các ví d)  
LastName  
FirstName  
Address  
City  
Hansen  
Svendson  
Svendson  
Ola  
Tove  
Stephen  
Timoteivn 10  
Borgvn 23  
Kaivn 18  
Sandnes  
Sandnes  
Sandnes  
Ví dụ  
Dùng AND để hin thngười có firstname là "Tove", và lastname là "Svendson":  
SELECT * FROM Persons  
WHERE FirstName='Tove'  
AND LastName='Svendson'  
Kết qu:  
LastName  
Svendson  
FirstName  
Tove  
Address  
Borgvn 23  
City  
Sandnes  
Ví dụ  
Dùng OR để hin thngười có firstname là "Tove", hoc có lastname là "Svendson":  
SELECT * FROM Persons  
WHERE firstname='Tove'  
OR lastname='Svendson'  
Kết qu:  
© Dương Thiên Tứ  
5
SQL Tutorial  
LastName  
Svendson  
Svendson  
FirstName  
Tove  
Stephen  
Address  
Borgvn 23  
Kaivn 18  
City  
Sandnes  
Sandnes  
Ví dụ  
Bn cũng có thdùng phi hp AND và OR (dùng du ngoc đơn để bao các biu thc phc tp):  
SELECT * FROM Persons WHERE  
(FirstName='Tove' OR FirstName='Stephen')  
AND LastName='Svendson'  
Kết qu:  
LastName  
Svendson  
Svendson  
FirstName  
Tove  
Stephen  
Address  
Borgvn 23  
Kaivn 18  
City  
Sandnes  
Sandnes  
SQL Between...And  
BETWEEN ... AND  
Toán tBETWEEN ... AND chn tt ccác trtrong khong gii hn gia hai tr. Các trnày có thlà các s, văn bn, hay ngày  
tháng.  
SELECT column_name FROM table_name  
WHERE column_name  
BETWEEN value1 AND value2  
Bng gc (dùng trong các ví d)  
LastName  
FirstName  
Address  
City  
Hansen  
Ola  
Tove  
Anna  
Kari  
Timoteivn 10  
Borgvn 23  
Neset 18  
Sandnes  
Sandnes  
Sandnes  
Stavanger  
Svendson  
Nordmann  
Pettersen  
Storgt 20  
Ví d1  
Để hin thcác tên theo thtalphabet gia hai tên (kchai tên này) "Hansen" và "Pettersen", dùng SQL sau:  
SELECT * FROM Persons WHERE LastName  
BETWEEN 'Hansen' AND 'Pettersen'  
Kết qu:  
LastName  
Hansen  
Nordmann  
Pettersen  
FirstName  
Ola  
Anna  
Address  
Timoteivn 10  
Neset 18  
City  
Sandnes  
Sandnes  
Stavanger  
Kari  
Storgt 20  
Ví d2  
Để hin thcác tên ngoài các tên trong ví dtrên, dùng toán tNOT:  
SELECT * FROM Persons WHERE LastName  
NOT BETWEEN 'Hansen' AND 'Pettersen'  
Kết qu:  
© Dương Thiên Tứ  
6
SQL Tutorial  
LastName  
FirstName  
Address  
City  
Svendson  
Tove  
Borgvn 23  
Sandnes  
SQL Select Distinct  
Tkhóa DISTINCT dùng trvchcác trkhác bit (distinct).  
Tkhóa DISTINCT  
Phát biu SQL SELECT trvthông tin tcác ct ca bng. Nhưng làm thế nào nếu chúng ta chmun chn các kết quả  
không trùng nhau?  
Vi SQL, chúng ta chcn thêm vào mt tkhóa DISTINCT cho phát biu SELECT vI cú pháp sau:  
SELECT DISTINCT column-name(s) FROM table-name  
Ví d: Chn tên công ty tbng Orders  
Ví d: Bng đặt hàng đơn gin:  
Company  
Sega  
OrderNumber  
3412  
W3Schools  
Trio  
2312  
4678  
W3Schools  
Phát biu SQL sau:  
6798  
SELECT Company FROM Orders  
Strvkết qu:  
Company  
Sega  
W3Schools  
Trio  
W3Schools  
Chú ý rng công ty W3Schools xut hin hai ln trong kết qu. Đôi lúc chúng ta không mun điu này.  
Ví d: Chn tên công ty (không trùng tên) tbng Orders  
Phát biu SQL sau:  
SELECT DISTINCT Company FROM Orders  
Strvkết qu:  
Company  
Sega  
W3Schools  
Trio  
Bây gitên công ty W3Schools chxut hin mt ln trong kết qu.  
SQL Order By  
Tkhóa ORDER BY dùng sp xếp kết quthtkết qu.  
© Dương Thiên Tứ  
7
SQL Tutorial  
Sp xếp các Dòng  
Mnh đề ORDER BY dùng sp xếp các dòng.  
Mt scách sp xếp:  
Company  
OrderNumber  
Sega  
3412  
ABC Shop  
W3Schools  
W3Schools  
5678  
2312  
6798  
Ví dụ  
Để hin thtên công ty (Company) theo thtalphabet:  
SELECT Company, OrderNumber FROM Orders  
ORDER BY Company  
Kết qu:  
Company  
ABC Shop  
Sega  
OrderNumber  
5678  
3412  
W3Schools  
W3Schools  
6798  
2312  
Ví dụ  
Để hin thtên công ty (Company) theo thtalphabet, nếu tên công ty ging nhau thì sp xếp theo stht(OrderNumber):  
SELECT Company, OrderNumber FROM Orders  
ORDER BY Company, OrderNumber  
Kết qu:  
Company  
ABC Shop  
Sega  
OrderNumber  
5678  
3412  
W3Schools  
W3Schools  
2312  
6798  
Ví dụ  
Để hin thtên công ty (Company) theo thtalphabet đảo ngược (tZ đến A):  
SELECT Company, OrderNumber FROM Orders  
ORDER BY Company DESC  
Kết qu:  
Company  
W3Schools  
W3Schools  
Sega  
OrderNumber  
6798  
2312  
3412  
ABC Shop  
5678  
SQL INSERT INTO  
Chèn các dòng mi  
Phát biu INSERT INTO chèn các dòng mi vào trong mt bng:  
INSERT INTO table_name  
VALUES (value1, value2,....)  
© Dương Thiên Tứ  
8
SQL Tutorial  
Bn có thchỉ định các ct bn mun chèn chèn dliu vào:  
INSERT INTO table_name (column1, column2,...)  
VALUES (value1, value2,....)  
Chèn mt dòng mi  
Bng "Persons":  
LastName  
FirstName  
Address  
City  
Pettersen  
Kari  
Storgt 20  
Stavanger  
Phát biu SQL chèn vào bng trên:  
INSERT INTO Persons  
VALUES ('Hetland', 'Camilla', 'Hagabakka 24', 'Sandnes')  
Scho kết qunhư sau:  
LastName  
Pettersen  
Hetland  
FirstName  
Kari  
Camilla  
Address  
Storgt 20  
Hagabakka 24  
City  
Stavanger  
Sandnes  
Chèn dliu vào trong các ct chỉ định  
Bng "Persons":  
LastName  
Pettersen  
Hetland  
FirstName  
Kari  
Camilla  
Address  
Storgt 20  
Hagabakka 24  
City  
Stavanger  
Sandnes  
Phát biu SQL chèn dliu vào các ct chỉ định:  
INSERT INTO Persons (LastName, Address)  
VALUES ('Rasmussen', 'Storgt 67')  
Scho kết qunhư sau::  
LastName  
Pettersen  
Hetland  
FirstName  
Kari  
Camilla  
Address  
Storgt 20  
Hagabakka 24  
Storgt 67  
City  
Stavanger  
Sandnes  
Rasmussen  
SQL Update  
Update Rows  
Phát biu UPDATE cp nht hoc thay đổi các dòng:  
UPDATE table_name SET column_name = new_value  
WHERE column_name = some_value  
Bng Person:  
LastName  
Nilsen  
Rasmussen  
FirstName  
Fred  
Address  
Kirkegt 56  
Storgt 67  
City  
Stavanger  
Cp nht mt ct trong mt dòng  
Chúng ta sthêm mt first name “Nina” đến người có lastname="Rasmussen":  
© Dương Thiên Tứ  
9
SQL Tutorial  
UPDATE Person SET FirstName = 'Nina'  
WHERE LastName = 'Rasmussen'  
Cp nht vài ct trong mt dòng  
Chúng ta sthay đổi địa ch(Address) và thêm tên thành ph.  
UPDATE Person  
SET Address = 'Stien 12', City = 'Stavanger'  
WHERE LastName = 'Rasmussen'  
Kết quả  
LastName  
Nilsen  
Rasmussen  
FirstName  
Fred  
Nina  
Address  
Kirkegt 56  
Stien 12  
City  
Stavanger  
Stavanger  
SQL Delete  
Xóa các ct  
Phát biu DELETE dùng xóa mt hay nhiu dòng trong mt bng.  
DELETE FROM table_name WHERE column_name = some_value  
Bng “Person”:  
LastName  
Nilsen  
Rasmussen  
FirstName  
Fred  
Nina  
Address  
Kirkegt 56  
Stien 12  
City  
Stavanger  
Stavanger  
Xóa mt dòng  
"Nina Rasmussen" sbxóa:  
DELETE FROM Person WHERE LastName = 'Rasmussen'  
Kết quả  
LastName  
FirstName  
Address  
City  
Nilsen  
Fred  
Kirkegt 56  
Stavanger  
Các hàm SQL Count  
SQL có các hàm to sn để đếm các mu tin cơ sdliu.  
Cú pháp hàm Count  
Cú pháp ca các hàm COUNT to sn như sau:  
SELECT COUNT(column) FROM table  
Hàm COUNT(*)  
Hàm COUNT(*) trvshàng chn được trong mt phép chn.  
Vi bng "Persons" sau:  
© Dương Thiên Tứ  
10  
SQL Tutorial  
Name  
Hansen, Ola  
Age  
34  
Svendson, Tove  
45  
Pettersen, Kari  
19  
Ví dnày trvshàng trong bng:  
SELECT COUNT(*) FROM Persons  
Kết qu:  
3
Ví dnày trvsngười ln hơn 20 tui:  
SELECT COUNT(*) FROM Persons WHERE Age>20  
Kết qu:  
2
Hàm COUNT(column)  
Hàm COUNT(column) trvshàng (ngoi trhàng có giá trNULL) trong ct chỉ định.  
Vi bng "Persons":  
Name  
Hansen, Ola  
Age  
34  
Svendson, Tove  
45  
Pettersen, Kari  
Ví dnày tìm sngười có ghi tui ti field “Age” trong bng "Persons":  
SELECT COUNT(Age) FROM Persons  
Kết qu:  
2
Hàm COUNT(column) cũng dùng để tính shàng không cha tr. Chú ý kết qusnhhơn shàng trong bng.  
COUNT DISTINCT  
Tkhóa DISTINCT vi COUNT có thdùng để đếm skết qukhác nhau (không trùng nhau).  
Cú pháp như sau:  
SELECT DISTINCT COUNT(column(s)) FROM table  
Vi bng "Orders":  
Company  
Sega  
OrderNumber  
3412  
W3Schools  
Trio  
2312  
4678  
W3Schools  
Vi phát biu SQL sau:  
6798  
SELECT COUNT(Company) FROM Orders  
Strvkết qu:  
4
Vi phát biu SQL sau:  
SELECT DISTINCT COUNT(Company) FROM Orders  
Strvkết qu:  
3
Các hàm SQL  
© Dương Thiên Tứ  
11  
SQL Tutorial  
SQL có mt shàm to sn để đếm và tính toán.  
Cú pháp dùng hàm  
Cú pháp cho các hàm SQL to sn như sau::  
SELECT function(column) FROM table  
Bng gc (dùng trong các ví d)  
Name  
Hansen, Ola  
Svendson, Tove  
Pettersen, Kari  
Age  
34  
45  
19  
Hàm AVG(column)  
Hàm AVG trtrung bình ca dliu trong mt ct có đu7c nhphép chn. Các trNULL skhông được tính toán.  
Ví dụ  
Ví dnày trvtui trung bình ca nhng người trong bng "Persons":  
SELECT AVG(Age) FROM Persons  
Kết quả  
32.67  
Ví dụ  
Ví dnày trvtui trung bình ca nhng người có tui ln hơn 20 tui:  
SELECT AVG(Age) FROM Persons where Age>20  
Kết quả  
39.5  
Hàm MAX(column)  
Hàm MAX trvtrln nht trong mt ct. Các trNULL skhông được tính toán.  
Ví dụ  
SELECT MAX(Age) FROM Persons  
Kết qu:  
45  
Hàm MIN(column)  
Hàm MIN trvtrln nht trong mt ct. Các trNULL skhông được tính toán.  
Ví dụ  
SELECT MIN(Age) FROM Persons  
Kết qu:  
19  
Chú ý: Các hàm MIN và MAX cũng có thdùng trên các ct văn bn, để tìm trln nht và nhnht theo thtalphabet.  
Hàm SUM(column)  
Hàm SUM tng ca mt ct có được nhphép chn. Các trNULL skhông được tính toán.  
Ví dụ  
Ví dnày trvtng stui ca nhng người trong bng "Persons":  
SELECT SUM(Age) FROM Persons  
Kết qu:  
© Dương Thiên Tứ  
12  
SQL Tutorial  
98  
Ví dụ  
Ví dnày trvtng stui ca nhng người ln hơn 20 tui.  
SELECT SUM(Age) FROM Persons where Age>20  
Kết qu:  
79  
SQL Group By và SQL Having  
Các hàm tng (như SUM) thường kèm theo chc năng GROUP BY.  
Tkhóa GROUP BY  
Tkhóa GROUP BY được thêm vào SQL vì các hàm tng (như SUM) trvtng ca tt ccác trtrong ct mi khi chúng ta  
gi đến.  
Thiếu chc năng GROUP BY, không thtìm tng ca mi nhóm trriêng trong ct.  
Cú pháp ca GROUP BY như sau:  
SELECT column,SUM(column) FROM table GROUP BY column  
Ví dGROUP BY  
Bng "Sales":  
Company  
W3Schools  
Amount  
5500  
IBM  
4500  
W3Schools  
7100  
Vi SQL:  
SELECT Company, SUM(Amount) FROM Sales  
Trvkết qunhư sau:  
Company  
W3Schools  
IBM  
SUM(Amount)  
17100  
17100  
W3Schools  
17100  
SQL trên không trvtng riêng bit ca tng công ty. Dùng mnh đề GROUP BY như sau:  
SELECT Company,SUM(Amount) FROM Sales  
GROUP BY Company  
Strvkết quả đúng:  
Company  
W3Schools  
IBM  
SUM(Amount)  
12600  
4500  
Tkhóa The HAVING  
Tkhóa HAVING được thêm vào SQL vì tkhóa WHERE không thdùng vi các hàm tng (như hàm SUM).  
Thiếu tkhóa HAVING skhông thkim tra các điu kin dùng hàm tng.  
Cú pháp ca HAVING như sau:  
SELECT column,SUM(column) FROM table  
GROUP BY column  
HAVING SUM(column) condition value  
© Dương Thiên Tứ  
13  
SQL Tutorial  
Bng "Sales":  
Company  
W3Schools  
IBM  
Amount  
5500  
4500  
W3Schools  
Vi SQL:  
7100  
SELECT Company,SUM(Amount) FROM Sales  
GROUP BY Company HAVING SUM(Amount)>10000  
Trvkết quả  
Company  
SUM(Amount)  
W3Schools  
12600  
Các bí danh (Alias) SQL  
Vi SQL, các bí danh (alias) có thdùng thay các tên ct và các tên bng.  
Bí danh tên Ct  
Cú pháp như sau:  
SELECT column AS column_alias FROM table  
Bí danh tên Bng  
Cú pháp như sau:  
SELECT column FROM table AS table_alias  
Ví d: Dùng bí danh tên Ct  
Bng “Persons”:  
LastName  
Hansen  
Svendson  
Pettersen  
Vi SQL sau:  
FirstName  
Ola  
Tove  
Address  
City  
Timoteivn 10  
Borgvn 23  
Storgt 20  
Sandnes  
Sandnes  
Stavanger  
Kari  
SELECT LastName AS Family, FirstName AS Name  
FROM Persons  
Strvkết qusau:  
Family  
Hansen  
Name  
Ola  
Svendson  
Pettersen  
Tove  
Kari  
Ví d: Dùng bí danh tên Bng  
Bng “Persons”:  
LastName  
Hansen  
Svendson  
FirstName  
Ola  
Tove  
Address  
Timoteivn 10  
Borgvn 23  
City  
Sandnes  
Sandnes  
© Dương Thiên Tứ  
14  
SQL Tutorial  
Pettersen  
Kari  
Storgt 20  
Stavanger  
Vi SQL sau:  
SELECT LastName, FirstName  
FROM Persons AS Employees  
Strvkết qusau:  
Bng Employees:  
LastName  
Hansen  
FirstName  
Ola  
Svendson  
Pettersen  
Tove  
Kari  
SQL Join  
Joins and các Khóa (Key)  
Đôi khi chúng ta chn dliu thai bng để to kết qu, Chúng ta thc hin mt kết ni (join).  
Các bng trong cơ sdliu có thliên hvi các bng khác thông qua các khóa. Mt khóa chính (primary key) là mt ct vi  
các trduy nht cho mi hàng. Mc tiêu là ràng buc dliu, tham chiếu chéo các bng, không cn lp li tt cdliu trong  
tng bng.  
Trong bng "Employees" phía dưới, ct "ID" là khóa chính, nghĩa là ct này không có hai hàng cùng ID. ID dùng phân bit hai  
người nếu chai có cùng tên.  
Khi bn xem bng ví dphía dưới, chú ý rng:  
Ct "ID" là khóa chính ca bng "Employees"  
Ct "ID" trong bng "Orders" dùng để tham chiếu các tên trong bng "Employees" không cn đưa các tên này vào  
bng “Orders”  
Employees:  
ID  
Name  
01  
Hansen, Ola  
02  
03  
04  
Svendson, Tove  
Svendson, Stephen  
Pettersen, Kari  
Orders:  
ID  
01  
Product  
Printer  
Table  
03  
03  
Chair  
Tham chiếu đến hai Bng  
Chúng ta có thchn dliu thai bng bng cách tham chiếu đến hai bng, như sau:  
Ví dụ  
Ai đã đăng ký mt sn phm và đăng ký sn phm nào?  
SELECT Employees.Name, Orders.Product  
FROM Employees, Orders  
WHERE Employees.ID = Orders.ID  
Kết quả  
Name  
Hansen, Ola  
Svendson, Stephen  
Product  
Printer  
Table  
© Dương Thiên Tứ  
15  
SQL Tutorial  
Svendson, Stephen  
Chair  
Ví dụ  
Ai đã đăng ký mt máy in?  
SELECT Employees.Name  
FROM Employees, Orders  
WHERE Employees.ID = Orders.ID  
AND Orders.Product = 'Printer'  
Kết quả  
Name  
Hansen, Ola  
Dùng các Kết ni (Join)  
HOC, chúng ta có thchn dliu thai bng vi tkhóa JOIN, ging như sau:  
Ví dINNER JOIN  
Cú pháp  
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 nào?  
SELECT Employees.Name, Orders.Product  
FROM Employees  
INNER JOIN Orders  
ON Employees.ID = Orders.ID  
INNER JOIN trvtt ccác hàng thai bng khi điu kin được so trùng. Nếu các hàng trong bng Employees không so  
trùng trong bng Orders, hàng đó skhông được lit kê ra.  
Kết quả  
Name  
Hansen, Ola  
Svendson, Stephen  
Svendson, Stephen  
Product  
Printer  
Table  
Chair  
Ví dLEFT JOIN  
Cú pháp  
SELECT field1, field2, field3  
FROM first_table  
LEFT JOIN second_table  
ON first_table.keyfield = second_table.foreign_keyfield  
Lit kê tt cnhân viên, và các đăng ký mua ca hnếu có.  
SELECT Employees.Name, Orders.Product  
FROM Employees  
LEFT JOIN Orders  
ON Employees.ID = Orders.ID  
LEFT JOIN trvtt ccác hàng tbng thnht (Employees), cho dù nó không được so trùng trong bng thhai (Orders).  
Nếu các hàng trong bng Employees không so trùng trong bng Orders, nhng hàng này cũng được lit kê.  
Kết quả  
Name  
Product  
Hansen, Ola  
Printer  
Svendson, Tove  
Svendson, Stephen  
Svendson, Stephen  
Pettersen, Kari  
Table  
Chair  
Ví dRIGHT JOIN  
© Dương Thiên Tứ  
16  
SQL Tutorial  
Cú pháp  
SELECT field1, field2, field3  
FROM first_table  
RIGHT JOIN second_table  
ON first_table.keyfield = second_table.foreign_keyfield  
Lit kê tt cnhân viên, và các đăng ký mua ca hnếu có.  
SELECT Employees.Name, Orders.Product  
FROM Employees  
RIGHT JOIN Orders  
ON Employees.ID = Orders.ID  
RIGHT JOIN trvtt ccác hàng tbng thhai (Orders), cho dù nó không được so trùng trong bng thnht (Employees).  
Nếu có bt khàng nào trong bng Orders không được so trùng trong bng Employees, các hàng này cũng được lit kê.  
Kết quả  
Name  
Hansen, Ola  
Svendson, Stephen  
Svendson, Stephen  
Product  
Printer  
Table  
Chair  
Ví dụ  
Ai đăng ký mt máy in?  
SELECT Employees.Name  
FROM Employees  
INNER JOIN Orders  
ON Employees.ID = Orders.ID  
WHERE Orders.Product = 'Printer'  
Kết quả  
Name  
Hansen, Ola  
SQL To Cơ sdliu và Bng  
To mt Cơ sdliu  
Để to mt cơ sdliu:  
CREATE DATABASE database_name  
To mt bng  
Để to mt bng trong mt cơ sdliu:  
CREATE TABLE table_name  
(
column_name1 data_type,  
column_name2 data_type,  
.......  
)
Ví dụ  
Ví dnày minh ha các bn to mt bng tên "Person", vi bn ct tên:"LastName", "FirstName", "Address", và "Age":  
CREATE TABLE Person  
(
LastName varchar,  
FirstName varchar,  
Address varchar,  
Age int  
)
Ví dnày minh ha cách bn chỉ định kích thước ti đa ca vài ct:  
© Dương Thiên Tứ  
17  
SQL Tutorial  
CREATE TABLE Person  
(
LastName varchar(30),  
FirstName varchar,  
Address varchar,  
Age int(3)  
)
Kiu dliu được chỉ định là kiu dliu cha trong ct. Bng dưới cha các kiu dliu thường gp nht trong SQL:  
Kiu dliu  
Mô tả  
integer(size)  
Chcha snguyên. Ský tsti đa được chỉ định trong du ngoc đơn  
int(size)  
smallint(size)  
tinyint(size)  
decimal(size, d)  
numeric(size,d)  
Cha svi phân s. Ský tsti đa được chỉ định trong "size". Ský tsti đa bên phi (phn  
phân s) được chỉ định trong "d"  
char(size)  
Cha chui có kích thước cố định (có thcha ký tch, s, và các ký tự đặc bit). Kích thước cố  
định được chỉ định trong du ngoc đơn  
varchar(size)  
date(yyyymmdd)  
Cha mt chui có chiu dài thay đổi (có thcha ký tch, s, và các ký tự đặc bit). Kích thước  
ti đa được chỉ định trong du ngoc đơn  
Cha mt ngày  
To Chmc (Index)  
Chmc được to ra trên mt bng có sn để định vthêm nhanh và hiu qucác hàng. Có thto mt chmc trên mt hoc  
nhiu ct ca mt bng, vi mt chmc cho mt tên. Người dùng không nhìn thy các chmc, chúng chdùng để tăng tc độ  
truy vn.  
Chú ý: Cp nht mt bng cha chmc cn nhiu thi gian hơn cp nht mt bng không cha chmc, vì chmc cũng cn  
cp nht. Tuy nhiên, ý tưởng tt là to chmc chtrên các ct thường tìm kiếm nht.  
Mt Chmc duy nht  
To mt chmc duy nht trên mt bng. mt chmc duy nht nghĩa là không thcó hai hàng có cùng mt trchmc.  
CREATE UNIQUE INDEX index_name  
ON table_name (column_name)  
"column_name" chỉ định ct bn mun chmc.  
Mt Chmc đơn gin  
To mt chmc đơn gin trên mt bng. Khi tkhóa UNIQUE không có, các trtrùng sẽ được cho phép.  
CREATE INDEX index_name  
ON table_name (column_name)  
"column_name" chỉ định ct bn mun chmc.  
Ví dụ  
Ví dnày to mt chmc đơn gin, có tên "PersonIndex", trên field LastName ca bng Person:  
CREATE INDEX PersonIndex  
ON Person (LastName)  
Nếu bn mun chmc các trtrong mt ct theo thtgim (descending), bn có ththêm tDESC sau tên ct:  
CREATE INDEX PersonIndex  
ON Person (LastName DESC)  
Nếu bn mun chmc nhiu hơn mt ct bn có thlit kê các tên ct trong du ngoc đơn, tách chúng bng du phy:  
CREATE INDEX PersonIndex  
ON Person (LastName, FirstName)  
Xóa chmc  
Bn có thxóa mt chmc có trong mt bng vi phát biu DROP.  
DROP INDEX table_name.index_name  
Xóa mt cơ sdliu hoc bng  
Để xóa mt cơ sdliu:  
© Dương Thiên Tứ  
18  
SQL Tutorial  
DROP DATABASE database_name  
Để xóa mt bng:  
DROP TABLE table_name  
Để xóa toàn bdliu trong bng mà không xóa bng:  
DELETE TABLE table_name  
SQL Alter Table  
Alter Table  
Phát biu ALTER TABLE dùng để thêm hay loi bcác ct trong mt bng cho trước.  
ALTER TABLE table_name  
ADD column_name datatype  
ALTER TABLE table_name  
DROP column_name  
Person:  
LastName  
FirstName  
Address  
Pettersen  
Kari  
Storgt 20  
Ví dụ  
Để thêm mt ct tên "City" vào bng "Person":  
ALTER TABLE Person ADD City varchar(30)  
Kết qu:  
LastName  
FirstName  
Address  
City  
Pettersen  
Kari  
Storgt 20  
Ví dụ  
Để loi ct "Address" khi bng "Person":  
ALTER TABLE Person DROP Address  
Kết qu:  
LastName  
Pettersen  
FirstName  
Kari  
City  
Sách SQL  
Sách  
Mô tả  
Teach Yourself SQL in 10 Minutes  
September 1999  
Loi sách tutorial, tchc thành chui các bài hc-10 phút đơn gin.  
© Dương Thiên Tứ  
19  
SQL Tutorial  
SQL Queries for Mere Mortals  
August 2000  
Giúp người dùng mi hc cơ bn vcác truy vn SQL, và cung cp mt hướng dn tham  
chiếu cn thiết vi người dùng có trình độ cao hơn.  
SQL: The Complete Reference  
October 1999  
Cung cp tt cnhng gì bn cn biết vSQL.  
Professional SQL Server 2000 Programming  
December 2000  
Cung cp mt hướng dn toàn din để lp trình vi SQL Server 2000.  
Professional SQL Server 7.0 Programming  
September 1999  
Cung cp tng quan vtt ccác bphn ca SQL Server.  
© Dương Thiên Tứ  
20  
pdf 20 trang baolam 09/05/2022 5660
Bạn đang xem tài liệu "Tài liệu Câu lệnh truy vấn SQL - Dương Thiên Tứ", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

File đính kèm:

  • pdftai_lieu_cau_lenh_truy_van_sql_duong_thien_tu.pdf