M ệnh đề WHERE Để chọn có điều kiện dữ liệu từ m t b ng, m t mệnh đề WHERE có thể thêm vào phát biểu SELECT với cú pháp sau: SELECT column FROM table WHERE column condition value Với mệ
Trang 1Welcome to SQL tutorial
M ục lục
SQL c ăn bản
Giới thiệu SQL
Mô t thế nào là SQL, cách dùng SQL
SQL Select
Cách dùng phát biểu SELECT để chọn dữ liệu từ m t b ng trong SQL
SQL Where
Cách dùng mệnh đề WHERE để chỉ định tiêu chuẩn chọn
SQL And & Or
Cách dùng AND và OR để kết nối hai hay nhiều điều kiện trong mệnh đề WHERE
SQL Between
Cách dùng BETWEEN AND để tìm dữ liệu trong m t kho ng giới h n
SQL Distinct
Cách dùng từ khóa DISTINCT để chỉ tr về các trị khác nhau trong m t c t
SQL Order By
Cách dùng từ khóa ORDER BY để tr về các hàng được sắp xếp theo m t thứ tự định trước
SQL Insert
Cách dùng phát biểu INSERT để chèn hàng mới vào trong m t b ng
SQL Update
Cách dùng phát biểu UPDATE để cập nhật hay thay đổi các hàng trong m t b ng
SQL Delete
Cách dùng phát biểu DELETE để xóa các hàng trong m t b ng
SQL Count
Gi i thích các hàm COUNT t o s n trong SQL
SQL nâng cao
Các hàm SQL
Gi i thích cách dùng các hàm t o s n trong SQL
SQL Group By
Gi i thích cách dùng hàm GROUP BY t o s n trong SQL
Các bí danh SQL
Gi i thích cách dùng các bí danh (alias) cho các tên c t và các tên b ng
SQL Join
Gi i thích cách chọn thông tin từ nhiều b ng
SQL Create
Cách t o các cơ sở dữ liệu và các b ng, và cách xóa chúng
SQL Alter
Cách dùng phát biểu ALTER TABLE để thêm hay lo i các c t trong m t b ng cho trước
SQL là m ột ngôn ngữ theo chuẩn ANSI để truy xuất các cơ sở dữ liệu
SQL là gì?
• SQL là Structured Query Language – Ngôn ngữ Truy v n có C u trúc
• SQL cho phép b n truy xu t m t cơ sở dữ liệu
• SQL là m t ngữ theo chuẩn ANSI
• SQL có thể thực hiện các truy v n đến m t cơ sở dữ liệu
• SQL có thể truy tìm dữ liệu từ m t cơ sở dữ liệu
• SQL có thể chèn các mẩu tin mới vào trong m t cơ sở dữ liệu
• SQL có thể xóa các mẩu tin trong m t cơ sở dữ liệu
Trang 2• SQL có thể cập nhật các mẩu tin trong m t cơ sở dữ liệu
• SQL r t dễ học
SQL là m ột chuẩn
SQL là m t chuẩn ANSI (American National Standards Institute - Viện Tiêu chuẩn Quốc gia Mỹ) cho các hệ thống truy xu t cơ
sở dữ liệu Các phát biểu SQL dùng để truy tìm và cập nhật dữ liệu trong m t cơ sở dữ liệu
SQL làm việc với các trình qu n lý cơ sở dữ liệu như Access, DB2, Informix, Microsoft SQL Server, Oracle, Sybase, và nhiều trình khác (đáng tiếc là đa số trong chúng có các phần mở r ng ngôn ngữ SQL riêng)
Các b ảng cơ sở dữ liệu
Cơ sở dữ liệu chứa các đối tượng gọi là các Bảng (Tables)
Các M ẩu tin (Records) lưu trong các b ng này Các b ng được gọi theo tên b ng (như "Persons", "Orders", "Suppliers")
Các b ng chứa các C ột (Columns) và các Dòng (Rows) dữ liệu Dòng chứa các mẩu tin (như mẩu tin về m t người) C t chứa
dữ liệu (như First Name, Last Name, Address, và City)
M t ví dụ là b ng "Persons" sau:
LastName FirstName Address City
LastName, FirstName, Address, và City là các c t của b ng Các dòng chứa ba mẩu tin của 3 người
Các truy v ấn SQL
Với SQL, chúng ta có thể truy vấn m t cơ sở dữ liệu và nhận được m t kết quả tr về với d ng b ng
M t truy v n giống như sau:
SELECT LastName FROM Persons
Sẽ tr về m t kết qu giống như sau:
LastName
Hansen
Svendson
Pettersen
Chú ý: Vài hệ cơ sở dữ liệu cần m t d u “;” ở cuối phát biểu SQL Chúng ta không dùng d u “;” trong bài viết này
Thao tác d ữ liệu SQL
SQL là m t cú pháp để thực hiện các truy v n Nhưng ngôn ngữ SQL cũng chứa các cú pháp cập nhật các mẩu tin (record), chèn các mẩu tin mới và xóa các mẩu tin đang tồn t i
Các lệnh truy v n và cập nhật này thu c d ng Ngôn ngữ Thao tác Dữ liệu (Data Manipulation Language - DML) m t phần của SQL:
̇ SELECT – trích dữ liệu từ m t cơ sở dữ liệu
̇ UPDATE – cập nhật dữ liệu trong m t cơ sở dữ liệu
̇ DELETE – xóa dữ liệu từ m t cơ sở dữ liệu
̇ INSERT – chèn dữ liệu mới vào trong m t cơ sở dữ liệu
Định nghĩa dữ liệu SQL
Ngôn ngữ Định nghĩa Dữ liệu (Data Definition Language - DDL) m t phần của SQL, cho phép t o hay xóa các b ng cơ sở dữ liệu Chúng ta cũng có thể định nghĩa các chỉ mục (các khóa - key), chỉ định liên kết giữa các b ng, và ràng bu t giữa các b ng
cơ sở dữ liệu
Các phát biểu DDL quan trọng nh t trong SQL là::
̇ CREATE TABLE – t o m t b ng cơ sở dữ liệu mới
̇ ALTER TABLE – thay đổi (alters) m t b ng cơ sở dữ liệu
Trang 3̇ DROP TABLE – xóa m t b ng cơ sở dữ liệu
̇ CREATE INDEX – t o m t chỉ mục (khóa tìm kiếm)
̇ DROP INDEX – xoá m t chỉ mục
SQL và ASP
SQL là m t phần quan trọng của ASP (Active Server Pages), vì ADO (Active Data Object) được dùng trong ASP để truy xu t cơ
sở dữ liệu, ADO dựa trên SQL để truy xu t dữ liệu
Phát bi ểu SELECT chọn các cột dữ liệu từ một cơ sở dữ liệu
K ết quả dạng bảng được lưu trong một bảng kết quả (gọi là tập kết quả - result set)
Phát bi ểu SELECT
Phát biểu SELECT chọn các c t dữ liệu từ m t cơ sở dữ liệu
Dùng phát biểu này để chọn (SELECT) thông tin từ (FROM) m t b ng như sau:
SELECT column_name(s) FROM table_name
Ví d ụ: Chọn các cột từ một bảng
Để chọn các c t có tên "LastName" và "FirstName", dùng m t phát biểu SELECT như sau:
SELECT LastName,FirstName FROM Persons
B ảng "Persons":
LastName FirstName Address City
K ết quả:
LastName FirstName
Ví d ụ: Chọn tất cả các cột
Để chọn t t c các c t từ b ng "Person", dùng m t ký hiệu * thay thế cho tên các c t như sau:
SELECT * FROM Persons
K ết quả:
LastName FirstName Address City
B ảng kết quả
Kết qu từ m t truy v n SQL được lưu trữ trong m t tập kết qu Tập kết qu có thể xem như m t b ng kết qu Đa số các
Trang 4trình qu n lý cơ sở dữ liệu cho phép duyệt tập kết qu với các hàm lập trình như: Move-To-First-Record, Get-Record-Content, Move-To-Next-Record
M ệnh đề WHERE dùng để chỉ định một tiêu chuẩn (criteria) chọn
M ệnh đề WHERE
Để chọn có điều kiện dữ liệu từ m t b ng, m t mệnh đề WHERE có thể thêm vào phát biểu SELECT với cú pháp sau:
SELECT column FROM table WHERE column condition value
Với mệnh đề WHERE, các điều kiện sau có thể được dùng:
Operator Condition
<> Không bằng
>= Lớn hơn ho c bằng
<= Nhỏ hơn ho c bằng
LIKE Sẽ gi i thích bên dưới
Chú ý: Vài phiên b n SQL toán tử <> có thể được viết thành !=
Ví d ụ: Chọn người từ một công ty
Để chọn những người chỉ sống ở Sandnes, thêm mệnh đề WHERE vào phát biểu SELECT như sau:
SELECT * FROM Persons WHERE City='Sandnes'
B ảng "Persons":
LastName FirstName Address City Year
K ết quả:
LastName FirstName Address City Year
Dùng d ấu nháy
Chú ý rằng chúng ta dùng d u nháy đơn bao quanh các trị điều kiện trong các ví dụ SQL dùng d u nháy đơn bao quanh các trị văn b n Phần lớn các hệ qu n lý cơ sở dữ liệu cũng ch p nhận d u nháy kép Các trị số không được đóng trong d u nháy Với các trị văn b n:
Viết đúng:
SELECT * FROM Persons WHERE FirstName='Tove'
Viết sai:
SELECT * FROM Persons WHERE FirstName=Tove
Với các trị số:
Viết đúng:
SELECT * FROM Persons WHERE Year>1965
Viết sai:
SELECT * FROM Persons WHERE Year>'1965'
Trang 5Điều kiện LIKE
Điều kiện LIKE dùng chỉ định việc tìm m t mẫu trong m t c t
Cú pháp:
SELECT column FROM table WHERE column LIKE pattern
M t d u "%" có thể dùng như ký tự đ i diện (wildcards) c trước lẫn sau mẫu
Ví d ụ: Chọn trong bảng Persons với mẫu tên
Phát biểu SQL sẽ tr về những người có firstname bắt đầu với m t ký tự 'O'
SELECT * FROM Persons WHERE FirstName LIKE 'O%'
Phát biểu SQl sẽ tr về những người có firstname kết thúc với m t ký tự 'a'
SELECT * FROM Persons WHERE FirstName LIKE '%a'
Phát biểu SQL sẽ tr về những người có firstname chứa mẫu 'la'
SELECT * FROM Persons WHERE FirstName LIKE '%la%'
T t c các ví dụ trên sẽ tr về kết qu sau:
LastName FirstName Address City Year
SQL And & Or
AND & OR
AND và OR kết nối hai hay nhiều điều kiện trong m t mệnh đề WHERE
Toán tử AND hiển thị m t c t nếu T T C các điều kiện liệt kê đều đúng
Toán tử OR hiển thị m t c t nếu M T TRONG các điều kiện liệt kê là đúng
B ảng gốc (dùng trong các ví dụ)
LastName FirstName Address City
Ví d ụ
Dùng AND để hiển thị người có firstname là "Tove", và lastname là "Svendson":
SELECT * FROM Persons
WHERE FirstName='Tove'
AND LastName='Svendson'
K ết quả:
LastName FirstName Address City
Ví d ụ
Dùng OR để hiển thị người có firstname là "Tove", ho c có lastname là "Svendson":
SELECT * FROM Persons
WHERE firstname='Tove'
OR lastname='Svendson'
K ết quả:
Trang 6LastName FirstName Address City
Ví d ụ
B n cũng có thể dùng phối hợp AND và OR (dùng d u ngo c đơn để bao các biểu thức phức t p):
SELECT * FROM Persons WHERE
(FirstName='Tove' OR FirstName='Stephen')
AND LastName='Svendson'
K ết quả:
LastName FirstName Address City
SQL Between And
BETWEEN AND
Toán tử BETWEEN AND chọn t t c các trị trong kho ng giới h n giữa hai trị Các trị này có thể là các số, văn b n, hay ngày tháng
SELECT column_name FROM table_name
WHERE column_name
BETWEEN value1 AND value2
B ảng gốc (dùng trong các ví dụ)
LastName FirstName Address City
Ví d ụ 1
Để hiển thị các tên theo thứ tự alphabet giữa hai tên (kể c hai tên này) "Hansen" và "Pettersen", dùng SQL sau:
SELECT * FROM Persons WHERE LastName
BETWEEN 'Hansen' AND 'Pettersen'
K ết quả:
LastName FirstName Address City
Ví d ụ 2
Để hiển thị các tên ngoài các tên trong ví dụ trên, dùng toán tử NOT:
SELECT * FROM Persons WHERE LastName
NOT BETWEEN 'Hansen' AND 'Pettersen'
K ết quả:
Trang 7LastName FirstName Address City
SQL Select Distinct
T ừ khóa DISTINCT dùng trả về chỉ các trị khác biệt (distinct)
T ừ khóa DISTINCT
Phát biểu SQL SELECT tr về thông tin từ các c t của b ng Nhưng làm thế nào nếu chúng ta chỉ muốn chọn các kết qu không trùng nhau?
Với SQL, chúng ta chỉ cần thêm vào m t từ khóa DISTINCT cho phát biểu SELECT vớI cú pháp sau:
SELECT DISTINCT column-name(s) FROM table-name
Ví d ụ: Chọn tên công ty từ bảng Orders
Ví dụ: B ng đ t hàng đơn gi n:
Company OrderNumber
Phát biểu SQL sau:
SELECT Company FROM Orders
Sẽ tr về kết qu :
Company
Sega
W3Schools
Trio
W3Schools
Chú ý rằng công ty W3Schools xu t hiện hai lần trong kết qu Đôi lúc chúng ta không muốn điều này
Ví d ụ: Chọn tên công ty (không trùng tên) từ bảng Orders
Phát biểu SQL sau:
SELECT DISTINCT Company FROM Orders
Sẽ tr về kết qu :
Company
Sega
W3Schools
Trio
Bây giờ tên công ty W3Schools chỉ xu t hiện m t lần trong kết qu
SQL Order By
T ừ khóa ORDER BY dùng sắp xếp kết quả thứ tự kết quả
Trang 8S ắp xếp các Dòng
Mệnh đề ORDER BY dùng sắp xếp các dòng
M ột số cách sắp xếp:
Company OrderNumber
Ví d ụ
Để hiển thị tên công ty (Company) theo thứ tự alphabet:
SELECT Company, OrderNumber FROM Orders
ORDER BY Company
K ết quả:
Company OrderNumber
Ví d ụ
Để hiển thị tên công ty (Company) theo thứ tự alphabet, nếu tên công ty giống nhau thì sắp xếp theo số thứ tự (OrderNumber): SELECT Company, OrderNumber FROM Orders
ORDER BY Company, OrderNumber
K ết quả:
Company OrderNumber
Ví d ụ
Để hiển thị tên công ty (Company) theo thứ tự alphabet đ o ngược (từ Z đến A):
SELECT Company, OrderNumber FROM Orders
ORDER BY Company DESC
K ết quả:
Company OrderNumber
SQL INSERT INTO
Chèn các dòng m ới
Phát biểu INSERT INTO chèn các dòng mới vào trong m t b ng:
INSERT INTO table_name
VALUES (value1, value2, )
Trang 9B n có thể chỉ định các c t b n muốn chèn chèn dữ liệu vào:
INSERT INTO table_name (column1, column2, )
VALUES (value1, value2, )
Chèn m ột dòng mới
B ng "Persons":
LastName FirstName Address City
Phát biểu SQL chèn vào b ng trên:
INSERT INTO Persons
VALUES ('Hetland', 'Camilla', 'Hagabakka 24', 'Sandnes')
Sẽ cho kết qu như sau:
LastName FirstName Address City
Chèn d ữ liệu vào trong các cột chỉ định
B ng "Persons":
LastName FirstName Address City
Phát biểu SQL chèn dữ liệu vào các c t chỉ định:
INSERT INTO Persons (LastName, Address)
VALUES ('Rasmussen', 'Storgt 67')
Sẽ cho kết qu như sau::
LastName FirstName Address City
SQL Update
Update Rows
Phát biểu UPDATE cập nhật ho c thay đổi các dòng:
UPDATE table_name SET column_name = new_value
WHERE column_name = some_value
B ảng Person:
LastName FirstName Address City
C ập nhật một cột trong một dòng
Chúng ta sẽ thêm m t first name “Nina” đến người có lastname="Rasmussen":
Trang 10UPDATE Person SET FirstName = 'Nina'
WHERE LastName = 'Rasmussen'
C ập nhật vài cột trong một dòng
Chúng ta sẽ thay đổ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 FirstName Address City
SQL Delete
Xóa các c ột
Phát biểu DELETE dùng xóa m t hay nhiều dòng trong m t b ng
DELETE FROM table_name WHERE column_name = some_value
B ảng “Person”:
LastName FirstName Address City
Xóa m ột dòng
"Nina Rasmussen" sẽ bị xóa:
DELETE FROM Person WHERE LastName = 'Rasmussen'
K ết quả
LastName FirstName Address City
Các hàm SQL Count
SQL có các hàm t ạo sẵn để đếm các mẩu tin cơ sở dữ liệu
Cú pháp hàm Count
Cú pháp của các hàm COUNT t o s n như sau:
SELECT COUNT(column) FROM table
Hàm COUNT(*)
Hàm COUNT(*) tr về số hàng chọn được trong m t phép chọn
Với b ng "Persons" sau:
Trang 11Name Age
Ví dụ này tr về số hàng trong b ng:
SELECT COUNT(*) FROM Persons
Kết qu :
3
Ví dụ này tr về số người lớn hơn 20 tuổi:
SELECT COUNT(*) FROM Persons WHERE Age>20
Kết qu :
2
Hàm COUNT(column)
Hàm COUNT(column) tr về số hàng (ngo i trừ hàng có giá trị NULL) trong c t chỉ định
Với b ng "Persons":
Ví dụ này tìm số người có ghi tuổi t i field “Age” trong b ng "Persons":
SELECT COUNT(Age) FROM Persons
Kết qu :
2
Hàm COUNT(column) cũng dùng để tính số hàng không chứa trị Chú ý kết qu sẽ nhỏ hơn số hàng trong b ng
COUNT DISTINCT
Từ khóa DISTINCT với COUNT có thể dùng để đếm số kết qu khác nhau (không trùng nhau)
Cú pháp như sau:
SELECT DISTINCT COUNT(column(s)) FROM table
Với b ng "Orders":
Company OrderNumber
Với phát biểu SQL sau:
SELECT COUNT(Company) FROM Orders
Sẽ tr về kết qu :
4
Với phát biểu SQL sau:
SELECT DISTINCT COUNT(Company) FROM Orders
Sẽ tr về kết qu :
3
Các hàm SQL
Trang 12SQL có m ột số hàm tạo sẵn để đếm và tính toán
Cú pháp dùng hàm
Cú pháp cho các hàm SQL t o s n như sau::
SELECT function(column) FROM table
B ảng gốc (dùng trong các ví dụ)
Hàm AVG(column)
Hàm AVG trị trung bình của dữ liệu trong m t c t có đu7ọc nhờ phép chọn Các trị NULL sẽ không được tính toán
Ví d ụ
Ví dụ này tr về tuổi trung bình của những người trong b ng "Persons":
SELECT AVG(Age) FROM Persons
K ết quả
32.67
Ví d ụ
Ví dụ này tr về tuổi trung bình của những người có tuổi lớn hơn 20 tuổi:
SELECT AVG(Age) FROM Persons where Age>20
K ết quả
39.5
Hàm MAX(column)
Hàm MAX tr về trị lớn nh t trong m t c t Các trị NULL sẽ không được tính toán
Ví d ụ
SELECT MAX(Age) FROM Persons
K ết quả:
45
Hàm MIN(column)
Hàm MIN tr về trị lớn nh t trong m t c t Các trị NULL sẽ khô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ó thể dùng trên các c t văn b n, để tìm trị lớn nh t và nhỏ nh t theo thứ tự alphabet
Hàm SUM(column)
Hàm SUM tổng của m t c t có được nhờ phép chọn Các trị NULL sẽ không được tính toán
Ví d ụ
Ví dụ này tr về tổng số tuổi của những người trong b ng "Persons":
SELECT SUM(Age) FROM Persons
K ết quả: