Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 15 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
15
Dung lượng
1,91 MB
Nội dung
BÀI 3: TRUY VẤN DỮ LIỆU VÀ BẢNG ẢO ThS Trần Ngọc Thăng B1_2011.11.26 TÌNH HUỐNG DẪN NHẬP • Dựa sở liệu, chuyên viên quản trị liệu thường phải trả lời hàng loạt câu hỏi liên quan đến liệu Chẳng hạn “Cho biết địa điểm cột ATM gần nhất”, “Sao kê thu chi tháng gần 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” … Câu hỏi đặt là: Làm để hệ quản trị sở liệucó thể hiểu trả lời câu hỏi người dùng? B1_2011.11.26 MỤC TIÊU Viết được câu lệnh truy ván theo yêu cầu Truy vấn liệu từ nhiều bảng với hình thức kết nối bảng khác Thực thao tác truy vấn lồng Tạo sử dụng View B1_2011.11.26 NỘI DUNG Cấu trúc truy vấn Truy vấn liệu từ nhiều bảng Truy vấn lồng Bảng ảo (View) B1_2011.11.26 3.1 CẤU TRÚC TRUY VẤN CƠ BẢN 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 HAVING 3.1.5 Sắp xếp với ORDER BY B1_2011.11.26 3.1 CẤU TRÚC TRUY VẤN CƠ BẢN • Ngôn ngữ vấn tin có cấu trúc(SQL) ngôn ngữ phổ dụng lĩnh vực sở liệu • Microsoft xây dựng Transact-SQL dựa ngôn ngữ vấn tin có cấu trúc chuẩn (ANSISQL: ngôn ngữ vấn tin có cấu trúc học viện quốc gia Hoa Kỳ đưa ra), ANSI-SQL thường gọi SQL, ngôn ngữ cách thức chuẩn để giao tiếp với sở liệu • Câu lệnh SELECT dùng để rút trích liệu từ sở liệu, lệnh cho phép rút trích hàng nhiều hàng, nhiều cột Cú pháp: SELECT FROM Với, tên bảng liệu tên cột danh sách cột cần lấy liệu • Câu lệnh SELECT mở rộng kèm với mệnh đề WHERE, GROUP BY, ORDER BY … B1_2011.11.26 3.2 TRUY VẤN DỮ LIỆU TỪ NHIỀU BẢNG 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 B1_2011.11.26 3.2 TRUY VẤN DỮ LIỆU TỪ NHIỀU BẢNG • Truy vấn liệu từ nhiều bảng xác định theo quan hệ cột bảng với Có thể truy vấn thông qua điều kiện liên kết mệnh đề WHERE từ khóa JOIN • Sử dụng điều kiện liên kết theo cột bảng, thông tin cần truy vấn đặt nhiều bảng khác nhau, để truy vấn thông tin phải xác định điều kiện liên kết bảng • SQL Server cung cấp câu lệnh JOIN thay 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 B1_2011.11.26 3.3 TRUY VẤN LỒNG NHAU (SUBQUERY) 3.3.1 Nested Scalar SubQuery 3.3.2 Correlated SubQuery B1_2011.11.26 3.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 điều kiện xác định lệnh Select • Thông thường câu lệnh dạng 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') 10 B1_2011.11.26 3.4 BẢNG ẢO (VIEW) 3.4.1 Định nghĩa View 3.4.2 Sửa Xóa View 11 B1_2011.11.26 3.4 BẢNG ẢO (VIEW) • View hay bảng ảo bảng tạo thành cột lấy từ hay nhiều bảng khác • Bảng ảo tạo nên nhờ câu lệnh SELECT CREATE VIEW titles_view AS SELECT title, type, price, pubdate FROM titles 12 B1_2011.11.26 CÂU HỎI TRẮC NGHIỆM Đâu trật tự từ khóa sau câu truy SQL? a SELECT, FROM, ORDER BY b FROM, SELECT, ORDER BY c ORDER BY, FROM, SELECT d SELECT, ORDER BY, FROM Những tham số sau đứng mệnh đề SELECT câu GROUP BY theo ProductID a ProductID b SUM(Quantity) c ProductName d COUNT(ProductID) Liên kết hai bảng cho trước theo cách để số ghi nhỏ nhất? a INNER JOIN b LEFT OUTER JOIN c RIGHT OUTER JOIN d Cả ba cách cho số ghi Từ khóa sau không sử dụng truy vấn lồng nhau? a ANY b NOT EXIST c SOME d INNER JOIN Có thể thực truy vấn bảng ảo? a SELECT b INSERT c UPDATE d Cả ba cách 13 B1_2011.11.26 ĐÁP ÁN TRẮC NGHIỆM Đâu trật tự từ khóa sau câu truy SQL? a SELECT, FROM, ORDER BY b FROM, SELECT, ORDER BY c ORDER BY, FROM, SELECT d SELECT, ORDER BY, FROM Những tham số sau đứng mệnh đề SELECT câu GROUP BY theo ProductID a ProductID b SUM(Quantity) c ProductName d COUNT(ProductID) Liên kết hai bảng cho trước theo cách để số ghi nhỏ nhất? a INNER JOIN b LEFT OUTER JOIN c RIGHT OUTER JOIN d Cả ba cách cho số ghi Từ khóa sau không sử dụng truy vấn lồng nhau? a ANY b NOT EXIST c SOME d INNER JOIN Có thể thực truy vấn bảng ảo? a SELECT b INSERT c UPDATE d Cả ba cách 14 B1_2011.11.26 TÓM LƯỢC CUỐI BÀI Sau học xong Bài Truy vấn liệu bảng ảo, học viên : • Đã viết được câu lệnh truy ván theo yêu cầu • Truy vấn liệu từ nhiều bảng với hình thức kết nối bảng khác • Thực thao tác truy vấn lồng • Tạo sử dụng View 15 B1_2011.11.26 ... BY, FROM Những tham số sau đứng mệnh đề SELECT câu GROUP BY theo ProductID a ProductID b SUM(Quantity) c ProductName d COUNT(ProductID) Liên kết hai bảng cho trước theo cách để số ghi nhỏ nhất?... BY, FROM Những tham số sau đứng mệnh đề SELECT câu GROUP BY theo ProductID a ProductID b SUM(Quantity) c ProductName d COUNT(ProductID) Liên kết hai bảng cho trước theo cách để số ghi nhỏ nhất?... Server cung cấp câu lệnh JOIN thay 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