1. Trang chủ
  2. » Giáo án - Bài giảng

Bài giảng cơ sở dữ liệu sql nâng cao ths trịnh hoàng nam (2018)

9 6 0

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 9
Dung lượng 465,27 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Trịnh Hoàng Nam, namth@buh.edu.vn GIÁ TRỊ NULL • Null là giá trị đặc biệt, không phải là hằng số, mà là giá trị không biết Định nghĩa • Các phép toán số học liên quan tới Null cho giá tr

Trang 1

SQL NÂNG CAO

CƠ SỞ DỮ LIỆU

Ths Trịnh Hoàng Nam, namth@buh.edu.vn

GIÁ TRỊ NULL

• Null là giá trị đặc biệt, không phải là hằng số, mà là giá trị không

biết

Định nghĩa

• Các phép toán số học liên quan tới Null cho giá trị là Null

• Các phép toán so sánh liên quan tới Null cho giá trị là Unknown

• Phép toán so sánh IS NULL và IS NOT NULL

Đặc trưng

• Liệt kê danh sách nhân viên không có lãnh đạo trực tiếp

Ví dụ

SELECT

FROM

WHERE

EMPLOYEE

supervisorSSN IS NULL

*

TOÁN TỬ AS

• Được sử dụng để đổi tên cột hiển thị trong phần kết

quả của câu truy vấn mà không ảnh hưởng đến bản

thân các quan hệ trong mệnh đề WHERE của câu

truyvấn đó

Toán tử AS trong SQL

• Liệt kê danh sách nhân viên và tên lãnh đạo trực tiếp

Ví dụ

SELECTE.ENameAS ‘Tên nhân viên’,

S.ENameAS ‘Tên lãnh đạo trực tiếp’

FROM EMPLOYEE E, EMPLOYEE S

WHEREE.supervisorSSN=S.ESSN

Trang 2

Ths Trịnh Hoàng Nam, namth@buh.edu.vn

TRUY VẤN LỒNG

• Câu lệnh truy vấn chứa câu lệnh truy vấn khác bên

trong các thànhphần của nó

Định nghĩa

• Kết quả trả về của câu truy vấn này được sử dụng

trongmột mệnh đề của câu truy vấn khác

• Kết quả trả về của một câu truy vấn có thể là một giá

trị đơn hoặc một quan hệ với nhiều bộ, nhiều thuộc

tính

• Một số toán tử so sánh: IN, NOT IN, ANY, SOME, ALL

Đặc trưng

Ths Trịnh Hoàng Nam, namth@buh.edu.vn

TRUY VẤN LỒNG

• Cho biết danh sách các dự án có sự tham gia của

nhân viên tên là‘Lê Duy Anh’

Ví dụ

SELECT

FROM

WHERE

PROJECT p, EMPLOYEE e, WORKSON w

p.ProNum = w.PNum ANDw.ESSN = e.ESSN

ANDe.EName = N’Lê Duy Anh’

p.*

?

Độ phức tạp của truy vấn

TRUY VẤN LỒNG

• Cho biết danh sách các dự án có sự tham gia của

nhân viên tên là‘Lê Duy Anh’

Ví dụ

?

Độ phức tạp của truy vấn

(SELECTw.PNum

FROM WORKSON w, EMPLOYEE e

WHERE w.ESSN=e ESSN

ANDe.EName= N’Lê Duy Anh’)

SELECT*

FROM PROJECT

WHEREPNumberIN

Trang 3

Ths Trịnh Hoàng Nam, namth@buh.edu.vn

TRUY VẤN LỒNG

• Cho biết danh sách các dự án có sự tham gia của

nhân viên tên là‘Lê Duy Anh’

Ví dụ

?

Độ phức tạp của truy vấn

(SELECTw.PNum

FROM WORKSON w

WHERE w.ESSN IN

)

SELECT*

FROM PROJECT

WHEREPNumberIN

(SELECTe.ESSN

FROM EMPLOYEE e

WHERE e.EName= N’…’)

Ths Trịnh Hoàng Nam, namth@buh.edu.vn

TRUY VẤN LỒNG

• Được sử dụng để kiểm tra kết quả của câu truy vấn lồng

xem córỗng hay không

Hàm EXISTS trong SQL

• Cho biết tên các nhân viên chưa tham gia bất kỳ dự án nào

của công ty

Ví dụ

SELECTEName

FROM EMPLOYEE E

WHERENOT EXISTS (SELECT*

FROM WOKRSON

WHEREE.ESSN=ESSN)

TRUY VẤN LỒNG

• Được sử dụng để kiểm tra kết quả của câu truy vấn lồng xem

córỗng hay không

• Có thể được viết lại bằng cách sử dụng toán tử so sánh IN

Hàm EXISTS trong SQL

• Cho biết tên các nhân viên chưa tham gia bất kỳ dự án nào

của công ty

Ví dụ

SELECTEName

FROM EMPLOYEE

WHEREESSN NOT IN (SELECTESSN

FROM WOKRSON)

Trang 4

Ths Trịnh Hoàng Nam, namth@buh.edu.vn

BẢNG KẾT TRONG SQL

• Phép kết thể hiện thông qua việc sử dụng

nhiều quan hệ trong mệnh đề FROM và các

điều kiện kết tương ứng trong mệnh đề

WHERE

• Phép kết được thực hiện ngay trong mệnh

đề FROM thông qua việc sử dụng các toán

tử INNER JOIN, OUTER JOIN đi kèm điều

kiện kết tương ứng

Giới thiệu

Ths Trịnh Hoàng Nam, namth@buh.edu.vn

BẢNG KẾT

• Hiển thị tên và mức lương của các nhân viên trong

phòng‘Nghiên cứu’

• Sử dụng phép nhân chéo và phép chọn:

• Sử dụng bảng kết:

Ví dụ

SELECTEName, ESalary

FROM EMPLOYEE, DEPARTMENT

WHEREDNum = DNumber ANDDName=N’Phòng Nghiên cứu’

SELECTEName, ESalary

FROM EMPLOYEEJOINDEPARTMENTONDNum = DNumber

WHEREDName=N’Phòng Nghiên cứu’

BẢNG KẾT

Ví dụ

SELECTEName, ESalary

FROM EMPLOYEE, DEPARTMENT

WHEREDNum = DNumber

ANDDName=N’Phòng Nghiên cứu’

SELECTEName, ESalary

FROM EMPLOYEEJOINDEPARTMENT

ONDNum = DNumber

WHEREDName=N’Phòng Nghiên cứu’

Trang 5

Ths Trịnh Hoàng Nam, namth@buh.edu.vn

BẢNG KẾT

• Với mỗi nhân viên hãy hiển thị tên của người đó và

têncủa lãnh đạo trực tiếp của họ

• Sử dụng phép nhân chéo và phép chọn:

• Sử dụng bảng kết:

Ví dụ

SELECTe.EName as ‘Employee’, s.EName as ‘Supervisor’

FROM EMPLOYEE e, EMPLOYEE s

WHEREe.supervisorSSN = s.ESSN

SELECTe.EName as ‘Employee’, s.EName as ‘Supervisor’

FROM EMPLOYEE e JOINEMPLOYEE s

ON e.supervisorSSN = s.ESSN

Ths Trịnh Hoàng Nam, namth@buh.edu.vn

BẢNG KẾT

Ví dụ

SELECTe.EName as ‘Employee’,

s.EName as ‘Supervisor’

FROM EMPLOYEE e, EMPLOYEE s

WHEREe.supervisorSSN = s.ESSN

SELECTe.EName as ‘Employee’,

s.EName as ‘Supervisor’

FROM EMPLOYEE e JOINEMPLOYEE s

ON e.supervisorSSN = s.ESSN

BẢNG KẾT

• Với mỗi nhân viên hãy hiển thị tên của người đó và

têncủa lãnh đạo trực tiếp của họ

• Tuy nhiên, trong bảng EMPLOYEE có tất cả 21 bộ với

15bộ có giá trị khác NULL tại thuộc tính supervisor

ứng với 15 bộ trả về bởi câu truy vấn

• Làm thế nào để hiển thị hết đầy đủ 21 bộ của quan hệ

EMPLOYEE theo yêucầu đề bài?

Ví dụ

SELECTe.EName as ‘Employee’,

s.EName as ‘Supervisor’

FROM EMPLOYEE e JOINEMPLOYEE s

ON e.supervisorSSN = s.ESSN

Trang 6

Ths Trịnh Hoàng Nam, namth@buh.edu.vn

BẢNG KẾT

• Với mỗi nhân viên hãy hiển thị tên của người đó và

têncủa lãnh đạo trực tiếp của họ

• Sử dụng bảng kếttrong:

• Sử dụng bảng kếtngoài

Ví dụ

SELECTe.EName as ‘Employee’, s.EName as ‘Supervisor’

FROM EMPLOYEE e JOINEMPLOYEE s

ON e.supervisorSSN = s.ESSN

SELECTe.EName as ‘Employee’, s.EName as ‘Supervisor’

FROM EMPLOYEE e LEFT JOINEMPLOYEE s

ON e.supervisorSSN = s.ESSN

Ths Trịnh Hoàng Nam, namth@buh.edu.vn

BẢNG KẾT

Ví dụ

SELECTe.EName as ‘Employee’,

s.EName as ‘Supervisor’

FROM EMPLOYEE e LEFT JOINEMPLOYEE s

ON e.supervisorSSN = s.ESSN

BẢNG KẾT

• Với mỗi dự án tại ‘TP Hồ Chí Minh’, liệt kê số hiệu dự

án,số hiệu đơn vị quản lý dự án, và tên, ngày sinh

của trưởng đơn vị quản lý dự án

Ví dụ

SELECTPNumber, DNumber, EName, EBirthdate

FROM ((PROJECTJOINDEPARTMENTONdNum=DNumber)

JOINEMPLOYEEONmgrSSN=ESSN)

WHEREPLocation= N’TP Hồ Chí Minh’

Trang 7

Ths Trịnh Hoàng Nam, namth@buh.edu.vn

CÁC HÀM THỐNG KÊ TRONG SQL

• Các hàm số học được thực hiện theo từng nhóm

• Các hàm MAX, MIN, AVG, SUM thực hiện trên một thuộc tính

số học

• Hàm COUNT thực hiện trên một hoặc nhiều thuộc tính

Các hàm thống kê (kết hợp)

• Cho biết tổng lương, lương trung bình của nhân viên trong

công ty

Ví dụ

SELECTSUM(ESalary) AS ‘Tổng lương’,

AVG(ESalary) AS ‘Lương trung bình’

FROM EMPLOYEE

Ths Trịnh Hoàng Nam, namth@buh.edu.vn

CÁC HÀM THỐNG KÊ TRONG SQL

• Cho biết tổng lương, mức lương cao nhất, mức lương

thấp nhất, và của các nhân viên tham gia dự án có

mãsố là 1

Ví dụ

SELECTSUM(E.ESalary), MAX(E.ESalary), MIN(E.ESalary)

FROM (EMPLOYEE E JOINWORKSON W ONE.ESSN=W.ESSN)

WHEREW.PNUM = 1

MỆNH ĐỀ GOM NHÓM

• Gom các bộ trong quan hệ thành từng nhóm theo một

(số) thuộc tính

• Các bộ có giá trị bằng nhau tại (các) thuộc tính gom

nhómsẽ được xếp ở gần nhau

• Điều kiện để chọn các nhóm được đặt trong mệnh đề

HAVING

• Các hàm kết hợp được áp dụng cho các nhóm sau

khiđã gom

GROUP BY và HAVING trong SQL

Trang 8

Ths Trịnh Hoàng Nam, namth@buh.edu.vn

MỆNH ĐỀ GOM NHÓM

• Với mỗi phòng ban hãy cho biết mã số phòng ban, số

nhân viênthuộc quyền quản lý của phòng ban đó, và

mức lương trung bình của họ

Ví dụ

SELECT DNum, COUNT(*), AVG(ESalary)

FROM EMPLOYEE

GROUP BY DNum

Ths Trịnh Hoàng Nam, namth@buh.edu.vn

MỆNH ĐỀ GOM NHÓM

• Với mỗi dự án, cho biết mã số dự án, tên dự án, số

nhân viên tham giadự án đó

Ví dụ

SELECT p PNumber, p PName, COUNT(*)

FROM PROJECT p, WORKSON w

WHERE p.PNumber = w.PNum

GROUP BY p PNumber, p.PName

MỆNH ĐỀ GOM NHÓM

• Với mỗi dự án có nhiều hơn hai nhân viên tham gia,

chobiết mã số dự án, tên dự án, và số nhân viên

tham giadự án đó

Ví dụ

SELECT p.PNumber, p.PName, COUNT(*)

FROM PROJECT p, WORKSON w

WHERE p.PNumber = w.PNum

GROUP BY p.PNumber, p.PName

HAVING COUNT(*) > 2

Trang 9

Ths Trịnh Hoàng Nam, namth@buh.edu.vn

CÂU TRUY VẤN SQL TỔNG QUÁT

Công thức chung của câu truy vấn SQL

SELECT <danh sách thuộc tính, hàm kết hợp>

FROM <danh sách quan hệ>

[ WHERE <điều kiện trên bộ>]

[ GROUP BY <các thuộc tính gom nhóm>]

[ HAVING <điều kiện trên nhóm>]

[ ORDER BY <các thuộc tính sắp xếp>]

Ngày đăng: 22/01/2022, 08:22

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm