Đăng ký Đăng nhập
Trang chủ Tiền tối ưu các các sql chương trình nguồn...

Tài liệu Tiền tối ưu các các sql chương trình nguồn

.PDF
66
153
92

Mô tả:

i ĐẠI HỌC THÁI NGUYÊN TRƢỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG NGUYỄN THỊ THU NGA TIỀN TỐI ƢU CÁC CÂU SQL TỪ CHƢƠNG TRÌNH NGUỒN LUẬN VĂN THẠC SĨ KHOA HỌC MÁY TÍNH THÁI NGUYÊN - 2014 Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn/ ii ĐẠI HỌC THÁI NGUYÊN TRƢỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG NGUYỀN THỊ THU NGA TIỀN TỐI ƢU CÁC CÂU SQL TỪ CHƢƠNG TRÌNH NGUÔN Chuyên ngành: KHOA HỌC MÁY TÍNH Mã số : 60 48 01 LUẬN VĂN THẠC SĨ KHOA HỌC MÁY TÍNH Giáo viên hƣớng dẫn: PGS.TS. LÊ HUY THẬP Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn/ iii LỜI CAM ĐOAN Tôi cam đoan đây là công trình nghiên cứu của riêng tôi. Các số liệu, kết quả nêu trong luận văn là trung thực và chƣa từng đƣợc ai công bố trong bất kỳ công trình nào khác. Qua đây em xin chân thành cảm ơn toàn thể các thầy cô trong khoa đào tạo sau đại học trƣờng Đại học Công nghệ Thông tin và Truyền thông và đặc biệt là Thầy PGS.TS. Lê Huy Thập, đã tạo điều kiện thuận lợi và hƣớng dẫn em để hoàn thành luận văn này. Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn/ iv MỤC LỤC LỜI CAM ĐOAN .............................................................................................. i MỤC LỤC ........................................................................................................ iv DANH MỤC CÁC KÝ HIỆU ......................................................................... vi DANH MỤC CÁC CHỮ VIẾT TẮT .............................................................. vi DANH MỤC BẢNG BIỂU ........................................................................... viii DANH MỤC HÌNH ẢNH ............................................................................... ix LỜI MỞ ĐẦU ................................................................................................... 1 CHƢƠNG 1: TỔNG QUAN VỀ NGÔN NGỮ SQL ...................................... 3 1.1. Nghiên cứu ngôn ngữ SQL và một số dạng câu vấn tin SQL cơ bản... 3 1.1.1. Giới thiệu ngôn ngữ SQL ............................................................... 3 1.1.2. Câu vấn tin SQL (Structured Query Language) ............................ 4 1.1.2.1. Thao tác với bảng. .................................................................. 4 1.1.2.2. Khối lệnh Select ...................................................................... 5 1.1.2.3. Tìm kiếm theo câu hỏi đơn giản ............................................. 6 1.1.2.4. Các hàm thƣ viện .................................................................... 8 1.1.2.5. Tìm nhờ mệnh đề GROUP BY ............................................... 9 1.1.2.6. Tìm kiếm và câu hỏi phức tạp .............................................. 10 1.2. Nghiên cứu thuật toán Ingres và System tập trung ............................. 12 1.2.1. Thuật toán Ingres .......................................................................... 12 1.2.2. Thuật toán System ........................................................................ 20 1.3. Kết luận chƣơng .................................................................................. 25 CHƢƠNG 2: TIỀN TỐI ƢU CÁC CÂU SQL TỪ CHƢƠNG TRÌNH NGUỒN .......................................................................................................... 26 2.1. Phƣơng pháp phân rã SQL .................................................................. 26 2.1.1 Phƣơng pháp phân rã SQL. ........................................................... 26 2.1.2 Những ƣu và nhƣợc điểm của phƣơng pháp phân rã SQL ........... 32 2.1.3 Ứng dụng của phƣơng pháp phân rã SQL: ................................... 33 Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn/ v 2.2. Phƣơng pháp thay thế SQL ................................................................. 34 2.2.1 Phƣơng pháp thay thế SQL ........................................................... 34 2.2.2 Những ƣu và nhƣợc điểm của của phƣơng pháp thay thế SQL.... 36 2.2.3 Ứng dụng của phƣơng pháp thay thế SQL ................................... 37 2.3. Thuật toán xử lý tiền tối ƣu câu SQL ................................................. 37 2.4. Kết luận chƣơng .................................................................................. 42 CHƢƠNG 3 CHƢƠNG TRÌNH THỬ NGHIỆM ......................................... 43 3.1 Mô tả bài toán........................................................................................ 43 3.2 Thử nghiệm tiền tối ƣu câu lệnh SQL................................................... 48 3.2.1 Xây dựng chƣơng trình thử nghiệm. .............................................. 48 3.2.2. Thực hiện thử nghiệm. .................................................................. 49 KẾT LUẬN ..................................................................................................... 56 HƢỚNG PHÁT TRIỂN .................................................................................. 56 TÀI LIỆU THAM KHẢO ............................................................................... 57 Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn/ vi DANH MỤC CÁC KÝ HIỆU Phép giao Phép hợp ∈ Ký hiệu thuộc Ký hiệu không thuộc - Phép trừ X Tích đề các ⨝ Phép nối π Phép chiếu θ Tê ta * Kết nối tự nhiên > Phép so sánh lớn hơn < Phép so sánh bé hơn ÷ Phép chia ⨝ Phép và ⨝ Phép hoặc Tập rỗng ¬ Phủ định = Phép bằng => Lớn hơn hoặc bằng <= Nhỏ hơn hoặc bằng σ Phép chọn Π Pi DANH MỤC CÁC CHỮ VIẾT TẮT Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn/ vii AQL Algebraic Query Language (Ngôn ngữ vấn tin đại số) CSDL Cơ sở dữ liệu CPU Central Processing Unit (Bộ xử lý trung tâm) OOP Object Oriented Programming (Lập trình hướng đối tượng) QEP Query Executtion Plan (Chiến lược thực thi vấn tin) SQL Structured Query Language (Ngôn ngữ truy vấn có cấu trúc) OVQP One Variable Query processor (thể xử lý truy vấn một biến) ORQ Đơn quan hệ MRQ Đa quan hệ Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn/ viii DANH MỤC BẢNG BIỂU Bảng 1.1. Bảng nhân viên ............................................................................... 15 Bảng 1.2.Bảng phân nhiệm ............................................................................. 15 Bảng 1.3. Bảng dự án ...................................................................................... 15 Bảng 1.4. Bảng Trả lƣơng ............................................................................... 16 Bảng 2.1. Số liệu của quan hệ DanhHieu ....................................................... 29 Bảng 2.2. Số liệu quan hệ ThamGiaCM ......................................................... 29 Bảng 2.3. Số liệu quan hệ KhenThuong ......................................................... 30 Bảng 2.2.1 Kết quả danh sách ngƣời nhận huân chƣơng................................ 36 Bảng 2.2.2. Số liệu của quan hệ DanhHieu .................................................... 39 Bảng 2.2.3 Số liệu quan hệ ThamGiaCM ....................................................... 39 Bảng 2.2.4. Số liệu quan hệ KhenThƣởng ...................................................... 40 Bảng 2.2.5 Kết quả sau khi thực hiện thuật toán tối ƣu .................................. 42 Bảng 3.1: Bảng sinh viên ................................................................................ 44 Bảng 3.2: Bảng lớp.......................................................................................... 44 Bảng 3.3: Bảng môn học ................................................................................. 45 Bảng 3.4: Bảng điểm ....................................................................................... 45 Bảng 3.5: Bảng điểm rèn luyện ....................................................................... 45 Bảng 3.6: Bảng đối tƣợng ............................................................................... 46 Bảng 3.7: Bảng gia đình .................................................................................. 46 Bảng 3.8: Bảng học kỳ .................................................................................... 46 Bảng 3.9: Bảng quan hệ .................................................................................. 47 Bảng 3.10: Bảng thành viên gia đình .............................................................. 47 Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn/ ix DANH MỤC HÌNH ẢNH Hình 1.1. Đồ thị kết nối của câu truy vấn ....................................................... 23 Hình 1.2 Các thứ tự kết nối lựa chọn ............................................................. 24 Hình 3.1: Giao diện chính chƣơng trình ......................................................... 48 Hình 3.2: Giao diện phần chèn dữ liệu tự động .............................................. 49 Hình 3.3: Thực hiện truy vấn lấy danh sách điểm sinh viên........................... 50 Hình 3.4 Thực hiện truy vấn lấy danh sách điểm sinh viên sau khi tối ƣu SQL....52 Hình 3.5 Thực hiện truy vấn lấy thông tin sinh viên ...................................... 53 Hình 3.6 Thực hiện truy vấn lấy thông tin sinh viên sau khi tối ƣu SQL ....... 55 Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn/ 1 LỜI MỞ ĐẦU Trong tình hình hiện nay, các tổ chức, doanh nghiệp có nhiều chi nhánh và đặt ở nhiều nơi với khối lƣợng dữ liệu lớn và đa ngƣời dùng, thƣờng sử dụng cơ sở dữ liệu. Do đó các phần mềm máy tính hỗ trợ nghiệp vụ của các tổ chức, doanh nghiệp cũng phải đƣợc tổ chức và phân tán một cách hợp lý. Tuy nhiên, tốc độ xử lý của các phần mềm quản lý có dữ liệu lớn và nằm phân tán sẽ trở nên vô cùng chậm, không đáp ứng đƣợc các yêu cầu của ngƣời dùng. Điều này đòi hỏi các nhà phát triển phần mềm không những phải không ngừng xây dựng đƣợc những phần mềm lớn đa ngƣời dùng mà còn phải nghiên cứu và đƣa ra các giải pháp tối ƣu hóa câu lệnh, nhằm từng bƣớc nâng cao tốc độ xử lý và giảm giá thành của phần mềm. Qua tìm hiểu và nghiên cứu một số quy trình xây dựng phần mềm thì quá trình tối ƣu hóa câu lệnh của các hệ chƣơng trình rất có ý nghĩa vì kinh phí đầu tƣ của các tổ chức, doanh nghiệp cho các thiết bị phần cứng bƣớc đầu còn rất hạn chế. Cho nên giải pháp tối ƣu hóa đến từng câu lệnh càng trở nên quan trọng hơn. Điều này luôn có ý nghĩa lớn ngay cả khi các thiết bị phần cứng đáp ứng đƣợc yêu cầu. Nếu câu vấn tin SQL (Structured Query Language) đã đƣợc tối ƣu trƣớc khi thực hiện truy vấn sẽ nâng cao hiệu quả của chƣơng trình và tiết kiệm chi phí. Cũng chính vì vậy, học viên quyết định chọn đề tài “Tiền tối ưu các câu SQL từ chương trình nguồn”. Trong phạm vi luận văn của mình, học viên tìm hiểu câu lệnh truy vấn SQL, nghiên cứu phƣơng pháp tối ƣu câu SQL để nâng cao hiệu quả của chƣơng trình. Trong quá trình nghiên cứu học viên đã đề xuất phƣơng pháp phân rã và thay thế câu lệnh SQL. Câu truy vấn đã đƣợc tối ƣu sẽ nâng cao hiệu quả nếu nó thỏa mãn một số tiêu chuẩn cho trƣớc nào đó. Một số phƣơng pháp phân tích và tối ƣu hóa các câu truy vấn dạng SQL đã đƣợc một số tác giả trong và ngoài Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn/ 2 nƣớc nghiên cứu. Một số thuật toán cũng đã đƣợc công bố. Tuy nhiên tất cả đều dựa trên giả thuyết các câu vấn tin dạng SQL đƣợc lấy trực tiếp từ một chƣơng trình nguồn hay ngƣời lập trình viết khi lập trình và tối ƣu hóa một cách thủ công. Một vấn đề đặt ra là một chƣơng trình nguồn dạng tuần tự mà trong đó có nhiều lệnh SQL có thể thỏa mãn điều kiện song song hóa và chỉ đƣợc song song hóa và tối ƣu hóa bởi phƣơng pháp song song tự động. Điều đó gây nhiều bất cập trong ứng dụng. Việc tìm kiếm trong chƣơng trình nguồn các lệnh SQL để hỗ trợ tối ƣu hóa vấn tin là một vấn đề thời sự và cần thiết. Trong khuôn khổ của luận văn các vấn đề sẽ lần lƣợt trình bày trong các chƣơng. Chƣơng 1: Sẽ trình bày các kiến thức cơ bản về một số phần mềm tìm kiếm, tổng quan ngôn ngữ SQL, một số dạng câu vấn tin SQL, quá trình tối ƣu hóa. Chƣơng 2: Sẽ trình bày các thuật toán tiền tối ƣu câu SQL từ chƣơng trình nguồn. Chƣơng 3: xây dựng chƣơng trình demo tìm các câu vấn tin SQL từ một chƣơng trình nguồn . Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn/ 3 CHƢƠNG 1: TỔNG QUAN VỀ NGÔN NGỮ SQL 1.1. Nghiên cứu ngôn ngữ SQL và một số dạng câu vấn tin SQL cơ bản 1.1.1. Giới thiệu ngôn ngữ SQL Ngôn ngữ SQL (Structured Query Language) là ngôn ngữ truy vấn mang tính cấu trúc, đƣợc sử dụng trong hầu hết các hệ quản trị cơ sở dữ liệu để truy vấn và sửa đổi cơ sở dữ liệu. Ngôn ngữ SQL hỗ trợ các truy vấn dựa trên các phép toán đại số quan hệ, đồng thời cũng chứa các lệnh sửa đổi cơ sở dữ liệu và mô tả lƣợc đồ cơ sở dữ liệu. SQL trƣớc kia đƣợc gọi là SEQUEL, là một ngôn ngữ phi thủ tục đƣợc IBM phát triển ở San Jose, mục đích để sử dụng rộng rãi trong hệ thống cơ sở dữ liệu thử nghiệm là System R. Ngày nay, nó đƣợc sử dụng trong rất nhiều hệ thống CSDL thƣơng mại, và trong một số trƣờng hợp, toàn bộ hệ thống cơ sở dữ liệu đƣợc thƣơng mại hoá với tên SQL. Tƣơng tự các ngôn ngữ bậc cao khác, SQL đƣợc xây dựng dựa trên các chữ cái, các chữ số, các ký tự (ký hiệu phép toán, và các ký tự đặc biệt) và một tập các từ khóa. Ngôn ngữ SQL có thể sử dụng theo hai kiểu: kiểu trực tiếp và lập trình. SQL trực tiếp cho phép thực hiện một truy vấn và nhận đƣợc kết quả ngay tức khắc. SQL lập trình cho phép sử dụng SQL trong một chƣơng trình viết bằng ngôn ngữ lập trình bậc cao khác (nhƣ C#, Java,..), hoặc viết các chƣơng trình con. Ngôn ngữ SQL đƣợc chia thành ba nhóm:  Ngôn ngữ định nghĩa dữ liệu dùng để mô tả cấu trúc của cơ sở dữ liệu (các bảng, các khung nhìn, các thuộc tính, các chỉ mục, ...)  Ngôn ngữ thao tác dữ liệu cho phép thực hiện các thao tác trên cơ sở dữ liệu nhƣ: cập nhật cơ sở dữ liệu và truy vấn, lấy ra các thông tin từ cơ sở dữ liệu. Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn/ 4  Ngôn ngữ kiểm soát dữ liệu bao gồm các lệnh dùng để quản lý các thao tác, các quyền truy cập dữ liệu, kết nối với server. 1.1.2. Câu vấn tin SQL (Structured Query Language) Đây là một loại ngôn ngữ con dữ liệu quan hệ đƣợc xác nhận là rất mạnh. Phép toán cơ bản trong SQL là phép ánh xạ, đƣợc mô tả về cú pháp nhƣ là khối SELECT - FROM - WHERE. Mệnh đề SELECT nghĩa là chọn các thuộc tính ra, hay còn gọi là thuộc tính kết quả, nếu không chỉ ra thuộc tính thì dùng dấu * có nghĩa là tất cả các thuộc tính của quan hệ đang đƣợc chỉ ra sau mệnh đề FROM. Mệnh đề FROM để chỉ ra quan hệ cần cho việc xử lý. Sau mệnh đề WHERE là một biểu thức điều kiện lọc dữ liệu (hay còn gọi là biểu thức logic). Chú ý: Từ đây về sau chúng ta đồng nhất; quan hệ với bảng, thuộc tính với cột (columns) hay trƣờng (field), bộ (tupe) với bản ghi (record) hay hàng (Rows) 1.1.2.1. Thao tác với bảng. Tạo bảng Create Table TênBảng (TênCột1 LoạiDữLiệu[(ĐộRộng)] [Not null], TênCột2,...) Với Not null là ngầm định Ví dụ Create Table S ( S# Integer Not null, Sname VarChar(8) Not Null, Status Integer Not Null, City VarChar (30) Not Null) Create Table P ( P# Integer Not null, Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn/ 5 Pname VarChar(10) Not Null, Weight Integer Not Null, Color VarChar ( 10) Not Null ) Create Table SP ( S# Integer Not null, P# Integer Not null, Qty Integer, Sdate Date Not Null, Price Decimal (8,2) ) Xóa bảng Cú pháp Drop Table TênBảng Nhập dữ liệu Insert Into S(S#, Sname, Status, City) Values (1011, „Việt Tiên‟, 40, „TP. Hà Nội‟) Nêu vị trí các cột là cố định thì viết: Insert Into S Values (1011, „Việt Tiến‟, 40, „TP. Hà Nội‟) Nếu quên vị trí các cột là cố định thì viết tên cột và các giá trị theo vị trí tƣơng ứng Chẳng hạn: Insert Into S (Status, s#, City, Sname ) Values (40, 1011, „TP. Hà Nội‟, „Việt Tiến‟, 40) Chú ý: Đây là lệnh thêm dữ liệu nhƣng cũng đƣợc dùng để nhập dữ liệu. 1.1.2.2. Khối lệnh Select Cú pháp nhƣ một khối select - from - where select: Xác định nội dung của các cột cần đƣa ra kết quả. Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn/ 6 from: Xác định các bảng cần lấy thông tin ra where: Lọc các bản ghi thoả yêu cầu để đƣa ra kết quả. Ngoài ra, để mở rộng khả năng của ngôn ngữ, khối select - from where còn đƣợc bổ sung thêm các mệnh đề groupe by, having, order by. Các hàm mẫu và một số phần mềm còn thêm cả mệnh đề contpute, for browse. Dạng tổng quát của khối select đuợc biểu diễn nhƣ sau: SELECT [* | DISTINCT] danh-sách-chiếu FROM danh_sách_tên_bảng | tên_các_View [WHERE biểu_thức_điều_kiện] [GROUPE BY danh_sách_tên_cột ] [ HAVING biểu_thức_điều_kiện] [ ORDER BY {tên_cột | số thứ_tự_cột | biểu_thức} [ ASC | DESC ]] Trong đó mệnh đề where dƣợc biểu diễn dạng: WHERE [NOT] BiểuThức PhépSoSánh BiểuThức WHERE [NOT] tên_cột [ NOT] LIKE xâu_ký_tự WHERE [NOT] biểu_thức [NOT] BETWEEN biểu_thức AND biểu_thức WHERE [NOT] BiểuThức [NOT] IN ({danhSách | CâuHỏiCon}) WHERE EXISTS (CâuHỏiCon) WHERE [NOT] BiểuThức PhépSoSánh { ANY | ALL (CâuHỏiCon)} WHERE [NOT] TênCột phépKếtNối TênCột WHERE [NOT] biểu_thức_logic WHERE [NOT] biểu_thức { AND | OR } [NOT] biểu_thức 1.1.2.3. Tìm kiếm theo câu hỏi đơn giản Không điều kiện và câu hỏi chỉ liên quan tới 1 bảng. Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn/ 7 Trong mệnh đề select có danh sách chiếu. Danh sách này xác định tên các cột cần có trong bảng kết quả. Nếu xuất hiện là chọn hết các cột của bảng. Cho biết danh sách các nhà cung cấp. SELECT * FROM S Các cách kết sau đây là hoàn toàn phù hợp trong SQL SELECT P#, (7 + 3 ) * QTY Để bảng kết quả đúng là một quan hệ (không có bộ trùng nhau ), trong mệnh đề select cần thêm từ khoá distinct Cho biết các mặt hàng khác nhau đã đƣợc cung cấp SELECT DISTINCT PName FROM SP Tìm kiếm với điều kiện đơn giản Tìm mã số những nhà cung cấp đã cung cấp mật hàng P2. SELECT S# FROM SP WHERE P# = 'P2 ' Trong SQL- các phép so sánh đƣợc sử dụng bao gồm >, <, >= , <=, = và <>. Các phép tính trên dùng cho mọi loại dữ liệu. Tìm kiếm có xử lý xâu ký tự Trong trƣờng hợp ngƣời sử dụng, không nhớ rõ tên ngƣời hoặc địa danh... ví dụ là Hoa hay Hoan khi đó có thể viết: SELECT * FROM S WHERE SNAME LIKE 'HOA%' Trong đó ký hiệu ' % ' là thay thế cho một xâu con, dấu phân cách để thay thế cho một ký tự. A%B: xâu ký tự bất kỳ bắt đầu bằng chữ A và kết thúc bảng chữ B %A Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn/ 8 : xâu ký tự bất kỳ có ký tự kết thúc là A A_B : xâu gồm ba ký tự có ký tự thứ hai là bất kỳ A_: xâu gồm hai ký tự có ký đầu là A. Xử lý ngày tháng Ngoài các phép tính thông thƣờng SQL còn có thể xử lý dữ liệu dạng ngày tháng. Ví dụ: Tìm những mã mặt hàng bán trƣớc ngày 04-04-11 là 10 ngày. SELECT P# FROM SP WHERE „04-04-11' - sdate = 10 Tìm kiếm sử dụng IN và BETWEEN Tìm mã nhƣng mặt hàng đã cung cấp có giá từ 1000 đến 2000 SELECT P# FROM SP WHERE PRICE BETWEEN 1000 AND 2000 Tìm mã số các nhà cung cấp dã cung cấp ít nhất một trong các mặt hàng có mã P1, P2, P3. SELECT S# FROM SP WHERE P# IN („P1‟ , „P2‟, „P3‟) 1.1.2.4. Các hàm thư viện Trong SQL có các hàm mẫu gồm count, max, min, sum, avg. Riêng hàm count khi có đối số là “*” là chỉ đếm số bản ghi thỏa yêu cầu tìm kiếm mà không cần quan tâm tới bất kỳ cột nào Cho biết số lần mặt hàng P2 đã đƣợc cung cấp. SELECT COUNT ( * ) FROM SP Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn/ 9 WHERE P# = „P2‟ Tìm hiệu số mặt hàng P1 bán một lần nhiều nhất và một lần ít nhất của hãng S1. SELECT MAX(QTY ) - MIN(QTY) FROMSP WHERE S# = 'Sl' AND P# = 'P1‟ Cho biết danh sách mã số mặt hàng đã đƣợc cung cấp. SELECT COUNT ( DISTINCT p# ) FROM SP Chú ý rằng đối số của các hàm có thể là một biểu thức sổ học bất kỳ 1.1.2.5. Tìm nhờ mệnh đề GROUP BY Tìm mà sổ các mặt hàng mà mỗi nhà cung cấp đã cung cấp cho khách hàng. SELECT S#,P# FROM SP GROUP BY S# Sau mệnh đề này bảng SP đƣợc ấy ra sau đó phân thành nhóm theo mã số S#, có nghĩa là các hộ có cùng giá trị S# đƣợc sắp xếp liên tiếp nhau, hết nhóm này đến nhóm khác. Tìm kiếm sử dụng mệnh đề HAVING . HAVING thƣờng đƣợc sử dụng cùng group by. Sau HAVING là biểu thức điều kiện. Biểu thức điều kiện này không tác động vào toàn bảng đƣợc chỉ ra sau from mà chỉ tác động lần lƣợt từng nhóm các bản ghi đã chỉ ra tại mệnh đề group by. Ví dụ: Tìm mã số những nhà cung cấp đã cung cấp ít nhất hơn hai mặt hàng. Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn/ 10 SELECT S# FROM SP GROUPE BY S# HAVING COUNT(DISTINCT P#) > 2 Tìm kiếm có sắp xếp Tìm tên các mặt hàng mầu đỏ và sắp xếp theo thứ tự giảm dần của mã số mặt hàng. SELECT PNAME, P# FROM P WHERE COLOUR = ' ĐỎ ‟ ORDER BY P# ASC Sau order by là tên cột rồi đến chiều sắp xếp tăng hoặc giảm ( ASC hoặc DESC ). Có thế sắp xếp nhiều cột và nếu không chỉ ra chiều sắp xếp thi hệ thống ngầm định là ASC. Mệnh đề order By nếu đứng sau group by thì miền tác động của sắp xếp là trong từng nhóm của cột đƣợc chỉ ra trong group by. Nếu cột sắp xếp có ở mệnh đề select thì trong mệnh đề order by có thể chỉ cần chỉ ra số thứ tự của cột đó trong danh sách chiếu là đủ. Ví dụ trên có thể viết: SELECT PNAME, P# FROM P WHERE COLOUR = 'ĐỎ' ORDER BY 2 ASC 1.1.2.6. Tìm kiếm và câu hỏi phức tạp Tìm kiếm với nhiều bảng qua việc sử dụng ánh xạ lồng nhau hoặc qua phép kết nối. Tìm những nhà cung cấp đã cung cấp ít nhất một mặt hàng nào đó. Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn/ 11 SELECT * FROM S WHERE EXISTS (SELECT * FROM SP WHERE SP.S# = S.S# ) hoặc: SELECT * FROM S WHERE 0 < (SELECT COUNT (*) FROM SP WHERE SP.S # = S.S# ) Tìm kiếm có sử dụng lƣợng từ ANY và ALL Tìm tên những mặt hàng có mã số là mặt hàng mà hãng có mã sổ S1 đã bán. SELECT PNAME FROM P WHERE P# = ANY (SELECT P# FROM SP WHERE S# = 'S1 ‟) Tìm tên những hãng cung cấp ít nhất một mặt hàng màu đỏ. SELECT SNAME FROM S * WHERE S# = ANY SELECT S# FROM SP, S WHERE S.S# = SP.S# AND P.P# = SP.P# AND COLOUR = 'Đỏ‟ Tìm mã số những hãng cung cấp số lƣợng một lần một mặt hàng nào đó lớn hơn hoặc bằng số lƣợng mỗi lần cung cấp của các hãng. Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn/
- Xem thêm -

Tài liệu liên quan