CÁC HAÌM THƯ VIỆN

Một phần của tài liệu giáo án môn cơ sở dữ liệu (Trang 40 - 44)

9. Phủ cực tiểu

CÁC HAÌM THƯ VIỆN

Cũng giống như các ngôn ngữ Cơ Sở Dữ Liệu khác, 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à ‘*’ có nghĩa là đếm số bảng ghi thỏa mãn yêu cầu tìm kiếm mà không quan tâm đến bất kỳ cột nào. Ví du

Cho biết số lần mặt hàng P2 đã được cung cấp SELECT COUNT(*)

FROM SP 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)

FROM SP

WHERE S#=’S1’ AND P#=’P1’ Tìm kiếm nhờ mệnh đề GROUPE BY

Tìm mã số những mặt hàng mà mỗi nhà cung cấp đã cung cấp cho khách hàng. SELECT S#,P#

FROM SP GROUPE BY S#

trong mệnh đề này bảng dữ liệu SP được lấy ra, sau đó phân thành nhóm theo mã số của người cung cấp (S#). Có nghĩa là các bộ có cùng giá trị S# sẽ được xếp liên tiếp nhau, hết nhóm này đến nhóm khác.

Tìm kiếm nhờ mệnh đề HAVING

Mệnh đề HAVING thường được sử dụng cùng mệnh đề GROUP BY. Sau HAVING la 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 ở mệnh đề FROM mà chỉ tác độnầnnnn lượt đến từng nhóm các bản ghi đã chỉ ra tại mệnh đề GOUP 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 SELECT S#

FROM SP GROUP BY S#

HAVING CUONT (DISTINCT P#)>2 Tìm kiếm có săõp xếp

Ngôn ngữ SQL FROM P

WHERE COLOUR = ‘RED’ ORDER BY P# ASC

Mệnh đề ORDER BY cho phép ta săõp xếp các cột theo thứ tự tăng dần (ASC) hoặc giảm dần (DESC), ngầm định là ASC

Mệnh đề ORDER BY có thể săõp xếp theo nhiều cột. Nếu nó đứng sau mệnh đề GROUP BY thì miền tác động là từng nhóm của cột được chỉ ra trong mệnh đề GROUP BY. Nếu cột săõp xếp có mặt ở 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 tham chiếu là đủ.

trong ví dụ trên ta có thể viết SELECT PNAME,P#

FROM P

WHERE COLOUR = ‘RED’ ORDER BY 2 ASC

Tìm kiếm với câu hỏi phức tạp

Trong phần này sẽ trình bày việc tìm kiếm dữ liệu trên nhiều bảng thông qua phép kết nối hoặc việc sử dụng các ánh xạ lồng.

Khả năng kết nối dữ liệu

Trong phép kết nối, các cột tham gia kết nối phải có miền trị là so sánh được với nhau. Tên cột của các bảng khác nhau có thể viết tường minh qua tên bảng.

Ví Dụ:

Với mỗi mặt hàng được cung cấp , hãy cho biết mã số của mặt hàng và địa chỉ của hãng đã cung cấp mặt hàng đó.

SELECT DISTINCT P#, CITY FROM SP, S WHERE SP.S# =S.S# Aïnh xạ lồng Ta có thể sử dụng những mệnh đề SELECT lồng nhau Ví dụ: Tìm tên những hãng đã cung cấp mặt hàng P2 SELECT SNAME FROM S

WHERE S# IN( SELECT S# FROM SP

Ngôn ngữ SQL

Phép lồng nhau có thể lồng nhiều mức hoặc sử dụng sự dẫn trỏ giữa các khối mỗi khi hướng tới một bảng khác nhau (adsbygoogle = window.adsbygoogle || []).push({});

Ví dụ: Tìm tên các hãng không cung ứng mặt hàng P1 SELECT SNAME FROM S WHERE ‘P1’ NOT IN SELECT P# FROM SP WHERE S#= S.S#

Trong SQL còn cho phép tìm kiếm trên nhiều bảng nhờ mệnh đè EXISTS (tồn tại) Ví dụ:

Tìm kiếm những nhà cung cấp đã cung cấp ít nhất một mặt hàng nào đó SELECT * FROM S WHERE EXISTS (SELECT * FROM SP WHERE SP.S#=S.S#) Hoặc có thể biểu diễn bằng cách khá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ố mặt hàng là mặt hàng nào đó mà hãng S1 đã cung cấp SELECT PNAME FROM P WHERE P#= ANY SELECT P# FROM SP WHERE S#=’S1’

Ngôn ngữ SQL FROM S

WHERE S#= ANY SELECT S# FROM SP,S,P

WHERE S.S#=SP.S# AND P.P#=SP.P# AND COLOUR=’RED’

Tìm mã số những nhà cung cấp số lượng môyt 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 ứng của hãng

SELECT S# FROM SP

WHERE QTY >= ALL SELECT QTY FROM SP

Mệnh đề trên hoàn toàn tương đương với SELECT S#

FROM SP

WHERE QTY = (SELECT MAX( QTY) FROM SP)

Tìm những hãng chưa hoạt động SELECT *

FROM S

WHERE NOT EXISTS SELECT * FROM SP

WHERE SP.S# = S.S#

Chú ý mệnh đề NOT EXISTS có giá trị đúng (True) nếu kết quả của câu hỏi sau nó là một tập rỗng.

Tìm kiếm có chứa phép tính tập hợp

Tìm mã số những hãng hiện thời chưa cung cấp một mặt hàng nào cả SELECT S#

FROM S MINUS

SELECT S# FROM SP

Tìm tên các hãng cung cấp, cung cấp tất cả các mặt hàng SELECT SNAME

Ngôn ngữ SQL FRPM SP

WHERE S#=S.S#) = (SELECT P# FRPM P)

Một phần của tài liệu giáo án môn cơ sở dữ liệu (Trang 40 - 44)