Khái niệm truy vấn dữ liệu
Bài 11 Truy Vấn Dữ LiệuMục đích bài học:Sau khi hoàn thành bài thực hành học viên có thể: Thực hiện các truy vấn dữ liệu đơn giản Làm việc với các mệnh đề như: WHERE, TOP, ORDER BY Dùng mệnh đề GROUP BY trong truy vấn Truy xuất dữ liệu sử dụng các ký tự đại diện Thực hiện các truy vấn indistinctGiới thiệuTruy vấn là một câu hỏi được viết bằng ngôn ngữ truy vấn có cấu trúc (SQL). Câu lệnh SELECT được dùng để thực hiện các truy vấn. Cách dùng đơn giản nhất của câu lệnh SELECT là truy xuất tất cả các bản ghi của bảng không theo điều kiện. Trong phần này chúng ta sẽ học cách viết và thực thi truy vấn đơn giản.1. Khởi động Query Analyzer2. Chọn cơ sở dữ liệu làm việc pubs3. Viết câu lệnh SELECT sau để truy xuất tất cả các bản ghi từ bảng salesHình 11.1: Câu lệnh SELECT đơn giảnLọc các bản ghi bằng mệnh đề WHERECác bảng dữ liệu thường rất lớn và chứa nhiều bản ghi dữ liệu. Do đó việc hiển thị tất cả các bản ghi của bảng trong câu truy vấn là không cần thiết và thiếu thực tế. Với mệnh đề WHERE ta có Truy vấn dữ liệu 175 thể truy xuất dữ liệu theo điều kiện. Mệnh đề WHERE trong truy vấn đóng vai trò là bộ lọc hạn chế số bản ghi theo điều kiện định sẵn. Chỉ những bản ghi thỏa mãn điều kiện mới được hiển thị trong kết quả truy vấn. Để truy xuất các bản ghi có điều kiện thanh toán là ON invoice, ta dùng câu lệnh sau:Hình 11.2: Câu lệnh SELECT có mệnh đề WHEREHạn chế số bản ghi dùng TOP:Mệnh đề TOP hạn chế số bản ghi trả về trong truy vấn.Để truy xuất 3 bản ghi đầu tiên của trường QTY ta dùng truy vấn sau:Hình 11.3: Câu lệnh SELECT dùng mệnh đề WHERE và TOPSắp xếp dữ liệu hiển thị dùng ORDER BYĐể hiển thị các bản ghi trong bảng sales sắp xếp theo giá trị tăng dần của trường quantity, chúng ta dùng truy vấn sau176 Khái niệm Hệ quản trị CSDLQH và SQL Server 2000 Hình 11.4: SELECT với ORDER BYSắp xếp và lọc dữ liệu dùng ORDER BYĐể hiển thị các bản ghi có điều kiện thanh toán là Net 60 và sắp xếp theo trường quantity, ta dùng Hình 11.5: SELECT với ORDER BY và WHERENhóm dữ liệuMệnh đề GROUP BY nhóm các bản ghi trong bảng dựa trên một hay nhiều trường dữ liệu. Kết quả là mỗi nhóm dữ liệu sẽ hiển thị thành một bản ghi chứa các giá trị tổng cho từng nhóm.Truy vấn dữ liệu 177 Mệnh đề GROUP BY chia bảng dữ liệu thành một hay nhiều tập con trong đó mỗi tập con này có các giá trị và biểu thức giống nhau. Nếu trong câu lệnh SELECT ta dùng các hàm tập hợp, mệnh đề này sẽ cho ta một giá trị duy nhất cho từng tập hợp. Để nhóm các bản ghi trong bảng sales theo trường mã kho hàng (stor_id) và tính tổng số lượng hàng cho từng kho hàng ta dùng truy vấnHình 11.6: SELECT với GROUP BYThực thi các truy vấn indistinctTa có thể tìm kiếm dữ liệu dựa vào điều kiện tìm kiếm indistinct như trong hình Figure 11.7 dưới đây. Kết quả truy vấn bao gồm dữ liệu tương tự.Hình 11.7: SELECT dùng LIKEPhần II: 1 giờ tiếp theoBài tập1. Hiển thị số lượng truy vấn theo khóa học.2. Tìm tổng số truy vấn nhận được trong tháng.3. Hiển thị hóa đơn có giá trị (amount) lớn nhất của mỗi học viên.178 Khái niệm Hệ quản trị CSDLQH và SQL Server 2000 4. Truy xuất 4 bản ghi đầu tiên trong bảng Course.5. Hiển thị danh sách tên các khóa học bắt đầu bằng ký tự ‘e’ dùng ký tự đại diện %.6. Hiển thị dánh sách các khóa học từ bảng Course sắp xếp theo tên khóa học.7. Hiển thị chi tiết các kiểu người dùng không kết thúc bằng ký tự ‘d’.Truy vấn dữ liệu 179 Phần Tự Thực Hành1. Tạo liên kết trong (inner join) giữa bảng Material và CourseMaterial có cùng trường MaterialCode.2. Tạo liên kết trong (inner join) giữa bảng Enquiry và Users có cùng trường UserId.180 Khái niệm Hệ quản trị CSDLQH và SQL Server 2000 . trong truy vấn Truy xuất dữ liệu sử dụng các ký tự đại diện Thực hiện các truy vấn indistinctGiới thiệuTruy vấn là một câu hỏi được viết bằng ngôn ngữ truy. thực tế. Với mệnh đề WHERE ta có Truy vấn dữ liệu 175 thể truy xuất dữ liệu theo điều kiện. Mệnh đề WHERE trong truy vấn đóng vai trò là bộ lọc hạn chế