Bài 3 Truy vấn (query) nâng cao
Số trang: 16
Loại file: pdf
Dung lượng: 852.71 KB
Lượt xem: 27
Lượt tải: 0
Xem trước 2 trang đầu tiên của tài liệu này:
Thông tin tài liệu:
Giới thiệu Trong bài trước, chúng ta đã học các khái niệm thiết kế CSDL. Chúng ta cũng đã nói về E-R diagrams and chuẩn hóa CSDL. Chúng ta cũng đã học về một vài dạng chuẩn và cách áp dụng trên các bài tập cụ thể. Trong bài này, chúng ta sẽ làm quen với khái niệm subqueries và cách viết các câu lệnh T-SQL để thực thi các subqueries.
Nội dung trích xuất từ tài liệu:
Bài 3 Truy vấn (query) nâng cao Bài 3 Truy vấn (query) nâng cao Mục tiêu bài học: Kết thúc bài này bạn có thể – Hiểu và thực thi được các subquery Nắm được cách sử dụng mệnh đề EXISTS Nắm được cách thực hiện các truy vấn với các mênh đề khác nhau Sử dụng mệnh đề DISTINCT để lọc bớt kêt quả các truy vấn Nắm được cách sử dụng mệnh đề COMPUTE BY Chuyển dữ liệu giữa các tables sử dụng mệnh đề SELECT INTO Giới thiệu Trong bài trước, chúng ta đã học các khái niệm thiết kế CSDL. Chúng ta cũng đã nói về E-R diagrams and chuẩn hóa CSDL. Chúng ta cũng đã học về một vài dạng chuẩn và cách áp dụng trên các bài tập cụ thể. Trong bài này, chúng ta sẽ làm quen với khái niệm subqueries và cách viết các câu lệnh T-SQL để thực thi các subqueries. Chúng ta sẽ khảo sát cách sử dụng mệnh đề EXISTS, làm sao để thực thi queries trên tập kết quả và cách lọc kết quả của các query để trả về các dòng không trùng nhau bằng cách sử dụng mệnh đề DISTINCT. Chúng ta cũng sẽ thảo luận về cách sử dụng các mệnh đề COMPUTE BY và SELECT INTO cùng với các câu lệnh T-SQL. Chúng ta cũng đã học về câu lệnh SELECT cùng với các mệnh đề trên ở các bài trước, trong bài này có thể chúng ta sẽ nhắc lại một số khái niệm, và nó sẽ giúp chúng ta củng cố lại các kiến thức trong các bài trước. 3.1 Thực hiện truy vấn trên nhiều bảng Đôi khi, chúng ta thấy cần thiết phải lấy và kết hợp dữ liệu từ nhiều bảng. Trong bài dưới đây, chúng ta sẽ nói về cách kết hợp thông tin từ nhiều bảng. Có ba cách để kết hợp dữ liệu từ nhiều bảng: Unions – Kết hợp các dòng của nhiều bảng. Subqueries – là các query được gói bên trong các query khác. Joins – Kết hợp các cột từ nhiều bảng. Có khá nhiều mệnh đề có thể được sử dụng với SELECT để trả lại các kết quả khác nhau. Từ khóa DISTINCT khử các dòng trùng nhau trong kết quả của một câu lệnh SELECT. Nếu DISTINCT không được chỉ ra, tất cả các dòng thỏa mãn câu lệng SELECT được trả về, bao gồm cả các dòng trùng nhau. Khi một subquery có từ EXISTS, thì nó có chức năng giống như là kiểm tra sự tồn tại. Từ khóa EXISTS được sử dụng để kiểm tra sự tồn tại của những dòng được trả về bởi subquery. Câu lệng subquery đó sẽ trả lại dữ liệu thực sự mà thay vào đó nó trả về giá trị True hoặc False. Mệng đề COMPUTE and COMPUTE BY có thể được sử dụng để sinh ra các kết quả tổng hợp cho một tập hợp các dòng. COMPUTE trả về các dòng bình thường và thêm một dòng chữa thông tin tổng hợp. COMPUTE BY được sử dụng để sinh ra các giá trị tổng hợp dựa trên từng nhóm con. Truy vấn năng cao 33 Trong phần này chúng ta sẽ học về sub-queries và unions. 3.2 Sub-Query Tính năng subquery của SQL cho phép chúng ta sử dụng kết quả của một query như là một phần của query khác. Một subquery được viết bằng cách đặt một query vào vị trí xác định bên trong một query khác. C. J. Date chỉ ra khả năng sử dụng một query bên trong một query là đương nhiên đối với từ “structured” bên trong câu “Structured Query Language”. Tính năng subquery đóng một vai trò quan trọng trong SQL vì ba điều sau: 1. Một câu lệng SQL sử dụng subquery là cách tự nhiên nhất để diễn tả một query, bởi vì nó gần như tương đương với cấu trúc truy vấn trong tiêng anh. 2. Subqueries giúp dễ viết câu lệnh SELECT hơn, bởi vì nó cho phép chúng ta “tách một query thành nhiều phần” và sau đó “kết hợp lại với nhau”. 3. Có nhiều queries không thể diễn đạt đươc trong SQL nếu không sử dụng subquery. Khi một câu lệng SELECT được sử dụng để trả về các bản ghi nó sẽ được sử dụng bởi câu lệng SELECT khác, Câu lệnh bao ở ngoài gọi là parent query và câu lệnh ở trong gọi là subquery. Nói cách khác, trong một Subquery sẽ có một câu lệnh SELECT được lồng bên trong một câu lệnh SELECT khác. Câu lệnh SELECT bên trong sẽ trả về cột được sử dụng bởi câu lệnh SELECT bên ngoài. Câu lệnh SELECT bên trong nhất sẽ được thực hiện trước. Đây là cách để thực hiện được từng bước các thao tác mà trong trường hơp ngược lại khó thực hiện với hai query riêng biệt. Có nhiều câu lệng SQL chứa các subquery cũng giống như việc được tạo bởi joins. Ví dụ dưới đây chỉ ra các thi hành các sub-queries và cũng giới thiệu cách sử dụng nhiều mệnh đề cùng với sub-queries. Ví dụ dưới đây tìm những tiêu dề mà tác giả của nó kiếm được thù lao tối thiểu là 100. Hình 3.1: Ví dụ về một Subquery đơn giản 3.2.1 Những từ khóa sử dụng trong Sub-query 34 Thiết kế CSDL và thực thi với SQL Server Khi sử dụng subqueries cần ghi nhớ các điểm sau: Chúng ta có thể sử dụng một subquery để thay thế cho một giá trị ở trong mệnh đề SELECT, Khi sử dụng các toán tử so sánh với sub-query, có một số giới hạn với việc trả lại số lượng dòng và cột của sub-query. Các giới hạn được tổng kết trong bảng 3.1. Một cột Nhiều cột Một dòng Sử dụng EXISTS Sử dụng =, >, < và các toán tử so sánh khác Nhiều dòng Sử dụng ANY, ALL, IN và Sử dụng EXISTS EXISTS Bảng 3.1 : Các từ khóa sử dụng trong Sub-query Bằng cách sử dụng mệnh đề EXISTS trong sub-query chúng ta có thể điều khiển kiểm tra sự trả về dòng trong sub-query. Biểu thức EXISTS (subquery) là ‘true’ nếu subquery trả về ít nhất một dòng, và ‘false’ nếu nố không trả về dòng. Ví dụ, để hiển thị thông tin về những nhân viên mà có ít nhất một thông tin của nhân viên khác về họ, chúng ta sẽ viết lệnh như hình 3.2: Hình 3.2: Sử dụng mệnh đề EXISTS 3.2.2 Các kiểu của Sub-queries Có hai kiểu của subquery: Nested queries và Correlated queries. Chúng ta có thể có một subquery mà gọi subque ...
Nội dung trích xuất từ tài liệu:
Bài 3 Truy vấn (query) nâng cao Bài 3 Truy vấn (query) nâng cao Mục tiêu bài học: Kết thúc bài này bạn có thể – Hiểu và thực thi được các subquery Nắm được cách sử dụng mệnh đề EXISTS Nắm được cách thực hiện các truy vấn với các mênh đề khác nhau Sử dụng mệnh đề DISTINCT để lọc bớt kêt quả các truy vấn Nắm được cách sử dụng mệnh đề COMPUTE BY Chuyển dữ liệu giữa các tables sử dụng mệnh đề SELECT INTO Giới thiệu Trong bài trước, chúng ta đã học các khái niệm thiết kế CSDL. Chúng ta cũng đã nói về E-R diagrams and chuẩn hóa CSDL. Chúng ta cũng đã học về một vài dạng chuẩn và cách áp dụng trên các bài tập cụ thể. Trong bài này, chúng ta sẽ làm quen với khái niệm subqueries và cách viết các câu lệnh T-SQL để thực thi các subqueries. Chúng ta sẽ khảo sát cách sử dụng mệnh đề EXISTS, làm sao để thực thi queries trên tập kết quả và cách lọc kết quả của các query để trả về các dòng không trùng nhau bằng cách sử dụng mệnh đề DISTINCT. Chúng ta cũng sẽ thảo luận về cách sử dụng các mệnh đề COMPUTE BY và SELECT INTO cùng với các câu lệnh T-SQL. Chúng ta cũng đã học về câu lệnh SELECT cùng với các mệnh đề trên ở các bài trước, trong bài này có thể chúng ta sẽ nhắc lại một số khái niệm, và nó sẽ giúp chúng ta củng cố lại các kiến thức trong các bài trước. 3.1 Thực hiện truy vấn trên nhiều bảng Đôi khi, chúng ta thấy cần thiết phải lấy và kết hợp dữ liệu từ nhiều bảng. Trong bài dưới đây, chúng ta sẽ nói về cách kết hợp thông tin từ nhiều bảng. Có ba cách để kết hợp dữ liệu từ nhiều bảng: Unions – Kết hợp các dòng của nhiều bảng. Subqueries – là các query được gói bên trong các query khác. Joins – Kết hợp các cột từ nhiều bảng. Có khá nhiều mệnh đề có thể được sử dụng với SELECT để trả lại các kết quả khác nhau. Từ khóa DISTINCT khử các dòng trùng nhau trong kết quả của một câu lệnh SELECT. Nếu DISTINCT không được chỉ ra, tất cả các dòng thỏa mãn câu lệng SELECT được trả về, bao gồm cả các dòng trùng nhau. Khi một subquery có từ EXISTS, thì nó có chức năng giống như là kiểm tra sự tồn tại. Từ khóa EXISTS được sử dụng để kiểm tra sự tồn tại của những dòng được trả về bởi subquery. Câu lệng subquery đó sẽ trả lại dữ liệu thực sự mà thay vào đó nó trả về giá trị True hoặc False. Mệng đề COMPUTE and COMPUTE BY có thể được sử dụng để sinh ra các kết quả tổng hợp cho một tập hợp các dòng. COMPUTE trả về các dòng bình thường và thêm một dòng chữa thông tin tổng hợp. COMPUTE BY được sử dụng để sinh ra các giá trị tổng hợp dựa trên từng nhóm con. Truy vấn năng cao 33 Trong phần này chúng ta sẽ học về sub-queries và unions. 3.2 Sub-Query Tính năng subquery của SQL cho phép chúng ta sử dụng kết quả của một query như là một phần của query khác. Một subquery được viết bằng cách đặt một query vào vị trí xác định bên trong một query khác. C. J. Date chỉ ra khả năng sử dụng một query bên trong một query là đương nhiên đối với từ “structured” bên trong câu “Structured Query Language”. Tính năng subquery đóng một vai trò quan trọng trong SQL vì ba điều sau: 1. Một câu lệng SQL sử dụng subquery là cách tự nhiên nhất để diễn tả một query, bởi vì nó gần như tương đương với cấu trúc truy vấn trong tiêng anh. 2. Subqueries giúp dễ viết câu lệnh SELECT hơn, bởi vì nó cho phép chúng ta “tách một query thành nhiều phần” và sau đó “kết hợp lại với nhau”. 3. Có nhiều queries không thể diễn đạt đươc trong SQL nếu không sử dụng subquery. Khi một câu lệng SELECT được sử dụng để trả về các bản ghi nó sẽ được sử dụng bởi câu lệng SELECT khác, Câu lệnh bao ở ngoài gọi là parent query và câu lệnh ở trong gọi là subquery. Nói cách khác, trong một Subquery sẽ có một câu lệnh SELECT được lồng bên trong một câu lệnh SELECT khác. Câu lệnh SELECT bên trong sẽ trả về cột được sử dụng bởi câu lệnh SELECT bên ngoài. Câu lệnh SELECT bên trong nhất sẽ được thực hiện trước. Đây là cách để thực hiện được từng bước các thao tác mà trong trường hơp ngược lại khó thực hiện với hai query riêng biệt. Có nhiều câu lệng SQL chứa các subquery cũng giống như việc được tạo bởi joins. Ví dụ dưới đây chỉ ra các thi hành các sub-queries và cũng giới thiệu cách sử dụng nhiều mệnh đề cùng với sub-queries. Ví dụ dưới đây tìm những tiêu dề mà tác giả của nó kiếm được thù lao tối thiểu là 100. Hình 3.1: Ví dụ về một Subquery đơn giản 3.2.1 Những từ khóa sử dụng trong Sub-query 34 Thiết kế CSDL và thực thi với SQL Server Khi sử dụng subqueries cần ghi nhớ các điểm sau: Chúng ta có thể sử dụng một subquery để thay thế cho một giá trị ở trong mệnh đề SELECT, Khi sử dụng các toán tử so sánh với sub-query, có một số giới hạn với việc trả lại số lượng dòng và cột của sub-query. Các giới hạn được tổng kết trong bảng 3.1. Một cột Nhiều cột Một dòng Sử dụng EXISTS Sử dụng =, >, < và các toán tử so sánh khác Nhiều dòng Sử dụng ANY, ALL, IN và Sử dụng EXISTS EXISTS Bảng 3.1 : Các từ khóa sử dụng trong Sub-query Bằng cách sử dụng mệnh đề EXISTS trong sub-query chúng ta có thể điều khiển kiểm tra sự trả về dòng trong sub-query. Biểu thức EXISTS (subquery) là ‘true’ nếu subquery trả về ít nhất một dòng, và ‘false’ nếu nố không trả về dòng. Ví dụ, để hiển thị thông tin về những nhân viên mà có ít nhất một thông tin của nhân viên khác về họ, chúng ta sẽ viết lệnh như hình 3.2: Hình 3.2: Sử dụng mệnh đề EXISTS 3.2.2 Các kiểu của Sub-queries Có hai kiểu của subquery: Nested queries và Correlated queries. Chúng ta có thể có một subquery mà gọi subque ...
Tìm kiếm theo từ khóa liên quan:
quản trị dữ liệu hệ thống dữ liệu cơ sở dữ liệu tổ chức cơ sơ dữ liệu thiết kế cơ sơ dữ liệuGợi ý tài liệu liên quan:
-
62 trang 389 3 0
-
Đề thi kết thúc học phần học kì 2 môn Cơ sở dữ liệu năm 2019-2020 có đáp án - Trường ĐH Đồng Tháp
5 trang 371 6 0 -
Đáp án đề thi học kỳ 2 môn cơ sở dữ liệu
3 trang 290 1 0 -
Giáo trình Cơ sở dữ liệu: Phần 2 - TS. Nguyễn Hoàng Sơn
158 trang 281 0 0 -
PHÂN TÍCH THIẾT KẾ HỆ THỐNG XÂY DỰNG HỆ THỐNG ĐẶT VÉ TÀU ONLINE
43 trang 278 2 0 -
13 trang 272 0 0
-
Phân tích thiết kế hệ thống - Biểu đồ trạng thái
20 trang 266 0 0 -
Tài liệu học tập Tin học văn phòng: Phần 2 - Vũ Thu Uyên
85 trang 237 1 0 -
Đề cương chi tiết học phần Quản trị cơ sở dữ liệu (Database Management Systems - DBMS)
14 trang 235 0 0 -
8 trang 184 0 0