Viết được được các câu lệnh truy ván theo yêu cầu Truy vấn được dữ liệu từ nhiều bảng với các hình thức kết nối bảng khác Thực hiện được thao tác truy vấn lồng Tạo và sử dụng được View M
Trang 1BÀI 3:
TRUY VẤN DỮ LIỆU VÀ BẢNG ẢO
ThS Trần Ngọc Thăng
1
Trang 2• Dựa trên các cơ sở dữ liệu, chuyên viên quản trị dữ liệu thường phải trả lời
hàng loạt câu hỏi liên quan đến dữ liệu Chẳng hạn như “Cho biết địa điểm
của 3 cột ATM gần nhất”, “Sao kê thu chi 3 tháng gần đây của một tài khoản
ngân hàng”, “Cho biết 10 giao dịch với khối lượng tiền lớn nhất” …
TÌNH HUỐNG DẪN NHẬP
Câu hỏi đặt ra là:
Làm thế nào để hệ quản trị cơ sở dữ liệucó thể hiểu và trả lời những câu
hỏi này của người dùng?
Trang 3Viết được được các câu lệnh truy ván theo yêu cầu
Truy vấn được dữ liệu từ nhiều bảng với các hình thức kết nối bảng khác
Thực hiện được thao tác truy vấn lồng
Tạo và sử dụng được View
MỤC TIÊU
3
Trang 4Cấu trúc truy vấn cơ bản
Truy vấn dữ liệu từ nhiều bảng
Truy vấn lồng nhau
Bảng ảo (View)
NỘI DUNG
1
2
3
4
Trang 53.1 CẤU TRÚC TRUY VẤN CƠ BẢN
5
3.1.1 Câu lệnh SELECT
3.1.2 Mệnh đề WHERE
3.1.3 Một số hàm thường dùng
3.1.4 Truy vấn thống kê với GROUP BY và HAVING
3.1.5 Sắp xếp với ORDER BY
Trang 63.1 CẤU TRÚC TRUY VẤN CƠ BẢN
• Ngôn ngữ vấn tin có cấu trúc(SQL) là một ngôn ngữ rất phổ dụng trong lĩnh vực cơ sở
dữ liệu
• Microsoft xây dựng Transact-SQL dựa trên ngôn ngữ vấn tin có cấu trúc chuẩn
(ANSI-SQL: là ngôn ngữ vấn tin có cấu trúc do học viện quốc gia Hoa Kỳ đưa ra), ANSI-SQL
thường được gọi là SQL, ngôn ngữ này là cách thức chuẩn để giao tiếp với cơ sở dữ liệu
• Câu lệnh SELECT dùng để rút trích dữ liệu từ cơ sở dữ liệu, lệnh này cho phép chúng
ta rút trích một hàng hoặc nhiều hàng, một hoặc nhiều cột
Cú pháp:
Với,
<Table_Name> là tên của bảng dữ liệu
<Column_name(s)> là tên của cột hoặc danh sách cột cần lấy dữ liệu
• Câu lệnh SELECT mở rộng đi kèm với mệnh đề WHERE, GROUP BY, ORDER BY …
SELECT <Column_name(s)> FROM <Table_name>
Trang 73.2 TRUY VẤN DỮ LIỆU TỪ NHIỀU BẢNG
7
3.2.1 Inner Join
3.2.2 Left Outer Join
3.2.3 Right Outer Join
3.2.4 Full Outer Join
3.2.5 Cross Join
3.2.6 Self Join
3.2.7 Non-Equal Join
3.2.8 Union
Trang 83.2 TRUY VẤN DỮ LIỆU TỪ NHIỀU BẢNG
• Truy vấn dữ liệu từ nhiều bảng được xác định theo quan hệ giữa các cột của các bảng
với nhau Có thể truy vấn thông qua điều kiện liên kết trong mệnh đề WHERE hoặc từ
khóa JOIN
• Sử dụng điều kiện liên kết theo cột giữa các bảng, thông tin cần truy vấn được đặt ở
nhiều bảng khác nhau, để truy vấn được các thông tin như trên phải xác định điều kiện
liên kết giữa các bảng
• SQL Server cung cấp câu lệnh JOIN thay thế các phép toán liên kết
SELECT P.ProductID,
S.SupplierID,
S.CompanyName
FROM Suppliers AS S, Products AS P
WHERE S.SupplierID = P.SupplierID
AND P.UnitPrice > $10
AND S.CompanyName LIKE N'F%'
SELECT * FROM authors AS a INNER JOIN publishers AS p
ON a.city = p.city ORDER BY a.au_lname DESC
Trang 93.3 TRUY VẤN LỒNG NHAU (SUBQUERY)
9 3.3.1 Nested Scalar SubQuery
3.3.2 Correlated SubQuery
Trang 103.3 TRUY VẤN LỒNG NHAU (SUBQUERY)
• Trong câu lệnh truy vấn Select có câu lệnh truy vấn Select khác trong điều
kiện xác định của lệnh Select ngoài
• Thông thường các câu lệnh dạng này đi cùng các từ lhóa IN, NOT IN,
EXITST, NOT EXIST, ANY, ALL.
SELECT distinct pub_name
FROM publishers
WHERE pub_id IN
(SELECT pub_id
FROM titles
WHERE type = 'business')
SELECT DISTINCT pub_name FROM publishers
WHERE EXISTS (SELECT *
FROM titles WHERE pub_id = publishers.pub_id AND type = 'business')
Trang 113.4 BẢNG ẢO (VIEW)
11
3.4.1 Định nghĩa View
3.4.2 Sửa và Xóa View
Trang 123.4 BẢNG ẢO (VIEW)
• View hay bảng ảo là bảng được tạo thành bởi các cột lấy từ một hay nhiều
bảng khác.
• Bảng ảo có thể được tạo nên nhờ câu lệnh SELECT
CREATE VIEW titles_view
AS
SELECT title, type, price, pubdate
FROM titles
Trang 1313
CÂU HỎI TRẮC NGHIỆM
1 Đâu là trật tự đúng của các từ khóa sau trong câu truy SQL?
2 Những tham số nào sau đây không thể đứng trong mệnh đề SELECT trong câu GROUP
BY theo ProductID
3 Liên kết hai bảng cho trước theo cách nào để được số bản ghi nhỏ nhất?
4 Từ khóa nào sau đây không được sử dụng trong truy vấn lồng nhau?
5 Có thể thực hiện truy vấn nào trên bảng ảo?
Trang 14ĐÁP ÁN TRẮC NGHIỆM
1 Đâu là trật tự đúng của các từ khóa sau trong câu truy SQL?
a SELECT, FROM, ORDER BY b FROM, SELECT, ORDER BY
2 Những tham số nào sau đây không thể đứng trong mệnh đề SELECT trong câu GROUP
BY theo ProductID
c ProductName d COUNT(ProductID)
3 Liên kết hai bảng cho trước theo cách nào để được số bản ghi nhỏ nhất?
a INNER JOIN b LEFT OUTER JOIN
c RIGHT OUTER JOIN d Cả ba cách đều cho số bản ghi bằng nhau
4 Từ khóa nào sau đây không được sử dụng trong truy vấn lồng nhau?
5 Có thể thực hiện truy vấn nào trên bảng ảo?
Trang 15TÓM LƯỢC CUỐI BÀI
Sau khi học xong Bài 3 Truy vấn dữ liệu và bảng ảo, học viên :
• Đã viết được được các câu lệnh truy ván theo yêu cầu
• Truy vấn được dữ liệu từ nhiều bảng với các hình thức kết nối bảng khác nhau
• Thực hiện được thao tác truy vấn lồng
• Tạo và sử dụng được View
15