SQL Structure
Bài 6
Mục tiêu
n
n
n
n
n
Tìm hiểu các câu lệnh T-SQL để truy vấn dữ
liệu
Tìm hiểu các câu lệnh T-SQL có điều kiện truy vấn
dữ liệu đã tồn tại
Tìm hiểu câu lệnh T-SQL để truy vấn dữ liệu đã tồn
tại theo nhóm
Miêu tả và ứng dụng các hàm tập hợp khác nhau
của SQL Server
Miêu ta và ứng dụng các phép kết nối INNER JOIN
để truy vấn trên nhiều bảng
Concepts of RDBMS and SQL Server 2000/Session 6/ 2 of 25
Truy vấn là gì?
Đưa ra một câu
hỏi cần quan tâm
Truy
vấn
Khởi tạo
Xử lý bởi
Trả lời câu hỏi – Trả
về tập hợp kết quả
Người sử
dụng
Dữ liệu trong
các bảng
SQL
Server
Concepts of RDBMS and SQL Server 2000/Session 6/ 3 of 25
1
Câu lệnh SELECT trong truy
vấn
n
n
n
n
Truy vấn trên nhiều hàng và cột
Có thể truy vấn trên nhiều bảng hoặc
nhiều CSDL.
Xác định các cột yêu cầu trong truy vấn
được chỉ ra.
Các cột kết quả có cùng thứ tự trong
truy vấn.
Concepts of RDBMS and SQL Server 2000/Session 6/ 4 of 25
Thành phần của câu lệnh
SELECT
Danh sách
các cột chỉ ra
Tên các bảng
Điều kiện
Các mệnh đề khác
Sử dụng truy vấn trên các hàng và các cột
Concepts of RDBMS and SQL Server 2000/Session 6/ 5 of 25
SELECT – Cú pháp và Ví dụ
Cú Pháp: SELECT * FROM <Table_name>
E.g.: Select * from STUDENT
SELECT
<COLUMN1>, <COLUMN2>… From
<Table Name>
E.g.: Select Name, Class, Mark from STUDENT
Concepts of RDBMS and SQL Server 2000/Session 6/ 6 of 25
2
Mệnh đề ORDER BY
Concepts of RDBMS and SQL Server 2000/Session 6/ 7 of 25
Hiển thị dữ liệu với SELECT
và ORDER BY
Concepts of RDBMS and SQL Server 2000/Session 6/ 8 of 25
Mệnh đề DISTINCT
Concepts of RDBMS and SQL Server 2000/Session 6/ 9 of 25
3
Mệnh đề AS
Mệnh đề AS cũng có thể dùng để đổi tên của
cột kết quả hoặc gán tên cho cột tính toán
Ví dụ, để hiển thị tiêu đề “PNR Number”
cho cột PNR_no trong bảng Reservation, câu
lệnh SELECT là:
Concepts of RDBMS and SQL Server 2000/Session 6/ 10 of 25
SELECT với các ràng buộc
Câu lệnh SELECT cũng có thể sử dụng với các ràng
buộc.
Ví dụ ràng buộc IDENTITY có thể sử dụng như
dưới đây:
Ở đây Table1 là bảng tồn tại và Table2 là bảng mà chúng ta
muốn thêm giá trị.
Concepts of RDBMS and SQL Server 2000/Session 6/ 11 of 25
Mệnh đề TOP
Mệnh đề TOP giới hạn số lượng các hàng trả về trong
tập kết quả
Câu lệnh SELECT là:
Cú pháp: SELECT TOP n <Column Name>
FROM <table Name>
Concepts of RDBMS and SQL Server 2000/Session 6/ 12 of 25
4
Aggregate functions-1
n
n
n
n
Tính tổng các giá trị
Tính giá trị đơn từ mỗi tập hợp của
hàng
Áp dụng trên tất cả các hàng hoặc tập
hợp các hàng của mệnh đề WHERE
Ví dụ, AVG, SUM, MAX, MIN, COUNT
Concepts of RDBMS and SQL Server 2000/Session 6/ 13 of 25
Aggregate functions-2
Concepts of RDBMS and SQL Server 2000/Session 6/ 14 of 25
Mệnh đề GROUP BY -1
Concepts of RDBMS and SQL Server 2000/Session 6/ 15 of 25
5
Mệnh đề GROUP BY -2
Concepts of RDBMS and SQL Server 2000/Session 6/ 16 of 25
Mệnh đề GROUP BY (3)
Mệnh đề WHERE được sử dụng với
‘GROUP BY’ để hạn chế hàng của nhóm
n Các giá trị rỗng được nhóm cùng nhau
n Tất cả từ khoá – sử dụng với mệnh đề
WHERE bao gồm các hàng không phù
hợp điều kiện tìm kiếm
Cú pháp: GROUP BY ALL <Column Name>
n
Concepts of RDBMS and SQL Server 2000/Session 6/ 17 of 25
Mệnh đề GROUP BY và
HAVING
n
n
HAVING lọc các hàng trong nhóm
Thao tác trên cột với aggregate function.
(không giống ‘WHERE’ với GROUP BY)
Concepts of RDBMS and SQL Server 2000/Session 6/ 18 of 25
6
Các toán tử quan hệ và
mệnh đề WHERE clause
• Chúng ta có thể sử dụng các loại điều kiện tìm
kiếm và so sánh khác nhau trong mệnh đề
WHERE.
• Dưới đây là danh sách các toán tử so sánh khác
nhau đựoc sử dụng trong truy vấn
Operator
=
>
<
>=
<=
<>
!
Meaning
Equal to
Greater than
Less than
Greater than or equal to
Less than or Equal to
Not equal to
Not
Concepts of RDBMS and SQL Server 2000/Session 6/ 19 of 25
Ký tự đại diện và LIKE
Ký tự đại
diện
Mô tả
Ví dụ
‘_’
Một ký tự đơn
Select Branch_Code From Branch
Where Branch_Code Like ‘L__’
%
Một chuỗi tương ứng
Select Route_Code From
FlightSchedule Where Route_Code
Like ‘AMS-%’
[]
Một ký tự đơn nằm trong ngoặc
Select Airbusno From
FlightSchedule Where Airbusno
Like ‘AB0[1-5]’
[^]
Bất kỳ ký tự đơn nào không nằm
trong khoảng trong ngoặc
Select Airbusno From
FlightSchedule Where Airbusno
Like ‘AB0[^1-5]’
Concepts of RDBMS and SQL Server 2000/Session 6/ 20 of 25
IN, BETWEEN và %
Concepts of RDBMS and SQL Server 2000/Session 6/ 21 of 25
7
Sử dụng ký tự đại diện với
LIKE
Toán tử LIKE operator được sử dụng để tìm kiếm các chuỗi phù
hợp hoặc một phần của chuỗi (gọi là chuỗi con).
… WHERE <column1> LIKE (<value list>)
• Ký tự gạch chân (_) được sử dụng trong mệnh đề WHERE với toán tử
LIKE để đại diện một ký tự nào bất kỳ. Ví dụ ‘_at’ có thể phù hợp với ‘rat’
hoặc ‘bat’ nhưng không thể là ‘rate’.
Giả sử bạn muốn kiểm tra xem có bao nhiêu cái vali màu đen, 24” soft
đang chưa được giải quyết. Để làm điều này, các bản ghi thoả mãn
điều kiện dựa trên ký tự cuối cùng. Câu lệnh truy vấn sẽ là:
SELECT * FROM Pending WHERE Icode LIKE ‘STCS-24-S-D_’
Concepts of RDBMS and SQL Server 2000/Session 6/ 22 of 25
Các phép kết nối (1)
n
Các phép kết nối giữa hai hoặc nhiều bảng dựa trên mối quan hệ logic
giữa các bảng
Concepts of RDBMS and SQL Server 2000/Session 6/ 23 of 25
Các phép kết nối (2)
Concepts of RDBMS and SQL Server 2000/Session 6/ 24 of 25
8
Phép kết nối Inner
n
Các bản ghi từ hai bảng được kết nối và thêm vào
truy vấn kết quả, chỉ khi các bản ghi này thoả mãn
giá trị bằng nhau trên cột chung của cả 2 bảng
Concepts of RDBMS and SQL Server 2000/Session 6/ 25 of 25
9