1. Trang chủ
  2. » Công Nghệ Thông Tin

Ngôn ngữ thao tác dữ liệu

70 2,4K 3
Tài liệu đã được kiểm tra trùng lặp

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

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Ngôn Ngữ Thao Tác Dữ Liệu
Tác giả Hồ Cẩm Hà
Định dạng
Số trang 70
Dung lượng 683 KB

Nội dung

Ngôn ngữ thao tác dữ liệu

Trang 1

C h−¬ng 3

Ngôn ngữ thao tác dữ liệu

Trang 2

Ngôn ngữ đại số quan hệ

hợp và đặc trưng)

Trang 3

Các phép toán tập hợp

„ Phép hợp: r ∪s = {t⏐ t∈r hoặc t∈s}

„ Phép giao: r ∩ s = {t⏐ t ∈ r và t ∈ s}

„ Phép hiệu: r – s = {t⏐ t ∈ r và t ∉ s}

Trang 6

Các phép toán đặc biệt trên quan hệ

Trang 7

Các phép toán đặc biệt trên quan hệ

Trang 8

Các phép toán đặc biệt trên quan hệ

Phép kết nối (join)

Khái niệm ” xếp cạnh nhau ”:

Cho bộ p =( p1, p2 , , pn ) và bộ q =( q1, q2 , , qm ) Xếp cạnh nhau của p và q :

(p,q) = { p1, p2 , , pn , q1, q2 , , qm }

r Ai θ Bj s = {(t, u)/ t ∈ r, u ∈ s và t[Ai] θ u[Bj]}

Trang 9

Các phép toán đặc biệt trên quan hệ

Phép kết nối (join)

r Ai θ Bj s = {(t, u)/ t ∈ r, u ∈ s và t[Ai] θ u[Bj]}

Trường hợp θ là “=” gọi là kết nối bằng

kết nối tự nhiên sử dụng kí hiệu r * s (hoặc r ⋈ s )

Trang 10

Các phép toán đặc biệt trên quan hệ

Phép kết nối (join)

kết nối tự nhiên sử dụng kí hiệu r * s (hoặc r ⋈ s )

Ví dụ

Trang 11

Các phép toán đặc biệt trên quan hệ

Phép kết nối nửa (semi join)

r ⊲F s = ΠA(r ⋈ F s )

Ví du

CUNG_UNG ⊲ F SAN_PHAM

Trang 12

Các phép toán đặc biệt trên quan hệ

Phép kết nối ngoài trái (left outer join)

kết nối ngoài phải (right outer join)

(Đọc tài liệu)

Trang 13

Các phép toán quan hệ bổ sung

(Additional Relational Operations)

Trang 14

Các phép toán quan hệ bổ sung

(Additional Relational Operations)

Trang 15

Chú ý

không phải là một đại lượng vô hướng kể cả khi nó chỉ gồm

bỏ khỏi nhóm khi thực hiện một hàm kết tập

khác

Trang 16

Dùng các biểu thức đại số quan hệ

biểu diễn câu hỏi

ΠHOTEN, LUONG (NHAN_VIEN*

(ΠMA-DV (σ(TEN-PHONG=”Nghiên cứu và phát triển ) (PHONG))))

Trang 17

Dùng các biểu thức đại số quan hệ

biểu diễn câu hỏi

„ Câu hỏi 3

Với mỗi dự án thực hiện ở “TT khí thượng thủy văn HN” hãy cho biết mã

số dự án, đồng thời cho biết họ tên, ngày sinh của trưởng phòng quản lý

dự án này.

KQTG ← (ΠMA-DA, MA-DV(σ(DIA-DIEM-DA=”TT Khí tượng thủy văn HN’ )(DU_AN))

KETQUA ← ΠMA-DA, HO-TEN, NG-SINH(NHAN_VIEN ⋈ MA-NV=MA-TP (PHONG*KQTG))

Trang 18

Dùng các biểu thức đại số quan hệ

biểu diễn câu hỏi

„ Câu hỏi 4

Tìm tên những nhân viên làm việc cho tất cả các dự án do phòng có mã

số P4 quản lý.

ΠHO-TEN((ΠMANV,MA-DA(CHAM_CONG)÷

ΠMA-DA(σ(MA-DV=P4)(DU_AN)))*NHAN_VIEN).

Trang 19

Dùng các biểu thức đại số quan hệ

biểu diễn câu hỏi

„ Câu hỏi 5

Tìm mã số những dự án có sự tham gia của một người là lãnh đạo phòng trực tiếp quản lý dự án này.

KQTG ← ΠMA-DA, MA-DV(DU_AN) * ΠMA-DV, MA-TP(PHONG)

KETQUA ← KQTG ⋈ ((KQTG.MA-DA=CHAM_CONG.MA-DA) AND (KQTG.MA-TP=CHAM_CONG.MA-NV))

CHAM_CONG

Trang 20

Ngôn ngữ tân từ

(Các phép tính quan hệ)

liệu quan hệ

Có hai loại: ngôn ngữ tân từ biến bộ và ngôn ngữ tân từ biến miền

Trang 21

Ngôn ngữ tân từ biến bộ

(Tuple relational calculus)

Một câu hỏi đơn giản trong ngôn ngữ tân từ

biến bộ có dạng

{ t ⏐ ĐK( t ) }

Trang 22

Ngôn ngữ tân từ biến bộ

(Tuple relational calculus)

{ t ⏐ NHÂN_VIÊN ( t ) AND t LUONG > 1700 000}

Trang 23

Biểu thức của phép tính biến bộ

Một cách tổng quát, một biểu thức của phép tính biến bộ códạng

{ti.A1, tj.A2,…, tk.An ⏐ ĐK (t1, t2,…, tn, tn+1, tn+2, …, tn+m)}

Trang 24

Biểu thức của phép tính biến bộ

Công thức của phép tính biến bộ được tạo nên từ các công thức nguyên

tố Một công thức nguyên tố thuộc một trong những dạng sau:

(1) r(t) nói một cách khác đó là phát biểu (t ∈ r)

(2) ti.A θ tj.B

(3) ti.A θ c

Mỗi công thức nguyên tố sẽ nhận một trong hai giá trị TRUE

và FALSE đối với một tổ hợp các bộ (giá trị chân lý)

Trang 25

Biểu thức của phép tính biến bộ

Các công thức nguyên tố tạo nên công thức của phép tính bộtheo các luật:

(L1) Mỗi công thức nguyên tố là một công thức

(L2) F, F1, F2 là công thức thì (F1 AND F2), (F1 OR F2), NOT(F) là công thức (L3) F là một công thức thì (∃ t )(F) với t là một biến bộ cũng là một công thức

Trang 28

Ví dụ

Câu hỏi 3

Với mỗi dự án thực hiện ở “TT khí thượng thủy văn HN” hãy cho biết mã số dự án, đồng thời cho biết họ tên trưởng phòng quản lý dự án này

Trang 29

Ví dụ

Câu hỏi 4

Tìm tên những nhân viên làm việc cho tất cả các dự

án do phòng có mã số P4 quản lý

Trang 30

(q.MA_DA = t.MA_DA))}.

Trang 31

Luật chuyển đổi công thức tương đương liên quan đến các lượng từ

Trang 32

Ngôn ngữ tân từ biến miền

Ví dụ

Câu hỏi 1

Tìm tên của dự án có mã số D4

{tenX ⏐ ∃ diadiemX ∃ma_dvX

(DU_AN(“D4”,tenX, diadiemX, ma_dvX))}

Trang 33

Ngôn ngữ tân từ biến miền

Ví dụ

Câu hỏi 2

Cho biết họ tên và lương của những nhân viên thuộc phòng

“Nghiên cứu và phát triển”

{ho_tenX, luongX⏐

∃ma_nvX∃ngay_sinhX∃gioi_tinhX ∃ ma_dvX ∃ ma_tpX

(PHONG (ma_dvX, “Nghiên cứu và phát triển”, ma_tpX) AND

Trang 34

Ngôn ngữ tân từ biến miền

Ví dụ

Câu hỏi 3

Với mỗi dự án thực hiện ở “TT khí thượng thủy văn HN” hãy cho biết

mã số dự án, đồng thời cho biết họ tên trưởng phòng quản lý dự án này

{ma_daX, ho_tenX⏐

∃ ten_daX ∃ ma_dvX ∃ten_phongX ∃ma_tpX ∃ngay_sinhX ∃gioi_tinhX ∃luongX ( DU_AN (ma_daX, ten_daX, “TT khí tượng thủy văn HN”, ma_dvX) AND PHONG (ma_dvX, ten_phongX, ma_tpX) AND

NHAN_VIEN (ma_tpX, ho_tenX, ngay_sinhX, gioi_tinhX, ma_dvX, luongX)) }

Trang 35

Tính đầy đủ của NN hỏi

đủ nếu với L, chúng ta có thể biểu diễn được bất cứ một câu

Trang 36

NGÔN NGỮ SQL

dữ liệu quan hệ

liệu (gồm DDL), cho phép cập nhật và tìm kiếm dữ liệu

(gồm DML)

(view), kiểm soát tính toàn vẹn dữ liệu, cấp phát quyền truy cập, điều khiển các giao tác, thao tác dữ liệu nhúng

Trang 37

Phần thao tác dữ liệu sẽ có đông đảo người dùng hơn, do chúng ta xem xét phần này trước phần định nghĩa dữ liệu của SQL

Trang 40

NGÔN NGỮ SQL

Cho biết họ tên của mỗi nhân viên và lương mới của mỗi

người nếu lương họ được tăng 10%

SELECT ho_ten, luong + luong*0.10

FROM nhan_vien

Trong bảng kết quả, nếu muốn có thể đặt tên cho cột thứ

ba, chẳng hạn cột thứ ba được đặt tên là luong_moi, với câu lệnh sau

Trang 41

NGÔN NGỮ SQL

Cho biết danh sách nhân viên có lương trên 2 300 000, với mỗi nhân viên như vậy các thông tin đưa ra gồm: mã nhân viên, họ tên, mã đơn vị và lương

SELECT manv, ho_ten, ma_dv, luong

FROM nhan_vien

Trang 43

NGÔN NGỮ SQL

Có thể tìm biết tên và mã các dự án mà địa điểm có chứa từ

‘UBND’ bằng câu sau:

SELECT ma_da, ten_da, dia_diem_da

FROM du_an

WHERE dia_diem_da LIKE ‘%UBND%’

Trang 46

NGÔN NGỮ SQL

Câu hỏi: “Có bao nhiêu nhân viên lương cao hơn 3 000 000 ?”

có thể viết như sau:

SELECT COUNT(*) AS vip

FROM nhan_vien

WHERE luong > 3000 000

Trang 51

NGÔN NGỮ SQL

Xét câu hỏi: ‘Tìm tên của những nhân viên có lương đạt trên mức lương trung bình của tất cả các nhân viên, đồng thời cho biết luôn mức chênh lệch này’ Chúng ta có thể dùng truy vấn sau:

SELECT ho_ten , luong – (SELECT AVG(luong) FROM

nhan_vien) AS hieu

FROM nhan_vien

Trang 53

NGÔN NGỮ SQL

Theo ngầm định, các tên cột trong câu truy vấn con tham

chiếu đến tên bảng trong câu FROM của truy vấn con này, hoặc có thể tham chiếu đến bảng trong câu FROM của truy vấn ngoài bằng việc xác định tên cột đó

Khi một câu truy vấn con là một trong hai toán hạng của một biểu thức so sánh thì truy vấn con này phải xuất hiện ở vế

Trang 55

NGÔN NGỮ SQL

câu HAVING Mặc dù có cú pháp tương tự:

WHERE lọc lấy một số bộ trong bảng đưa vào bảng kết quả,

HAVING lọc lấy một số nhóm nào đó để đưa vào bảng kết quả

Trang 56

NGÔN NGỮ SQL

Điều kiện chọn (lọc) trong câu HAVING luôn

chứa ít nhất một hàm gộp, nếu không thì điều kiện này có thể chuyển vào câu WHERE

Nên nhớ rằng hàm gộp không được dùng trong câu WHERE

Trang 57

NGÔN NGỮ SQL

Trường hợp câu truy vấn có cả câu WHERE và câu HAVING (dĩ nhiên có cả câu GROUP BY), thì trước tiên điều kiện chọn ở câu WHERE được áp

dụng các bộ thỏa điều kiện này được tạo thành các nhóm do câu GROUP

BY Tiếp theo, câu HAVING loại đi những nhóm không thỏa điều kiện đặt sau từ HAVING Các nhóm còn lại được câu SELECT sử dụng để tạo ra các bộ là kết quả của câu truy vấn

SELECT ma_dv, MAX(luong) AS max_dv,

SUM(luong) AS tong_dv

Trang 59

NGÔN NGỮ SQL

Các truy vấn lồng nhau

Xét câu hỏi: ‘Tìm tên của những nhân viên có lương đạt trên mức lương trung bình của tất cả các nhân viên, đồng thời cho biết luôn mức chênh lệch này’

SELECT ho_ten , luong – (SELECT AVG(luong) FROM

nhan_vien) AS hieu

FROM nhan_vien

WHERE luong >

Trang 60

Danh sách các mục được liệt kê bởi câu truy vấn con

SELECT phải chứa tên của một cột hoặc một biểu thức trừphi câu truy vấn con này dùng từ khóa EXISTS

Trang 61

NGÔN NGỮ SQL

Các truy vấn lồng nhau

Theo ngầm định, các tên cột trong câu truy vấn con tham chiếu đến tên bảng trong câu FROM của truy vấn con này, hoặc cóthể tham chiếu đến bảng trong câu FROM của truy vấn ngoài bằng việc xác định tên cột đó

Khi một câu truy vấn con là một trong hai toán hạng của một biểu thức so sánh thì truy vấn con này phải xuất hiện ở vế phải

Trang 66

NGÔN NGỮ SQL

Dùng các biến bộ

Để tìm thông tin về tên và lương của trưởng phòng nghiên cứu phát triển

SELECT nv.ho_ten, nv.luong

FROM nhan_vien nv, phong p

WHERE nv.manv = p.ma_tp AND

p.ten_phong = ‘Nghiên cứu và phát triển’

Các biến bộ rất hữu ích trong việc so sánh hai bộ trong cùng

Trang 67

NGÔN NGỮ SQL

Dùng các biến bộ

Có thể tìm nhân viên có lương cao hơn ít nhất lương của một nữ nhân viên bằng câu lệnh sau :

SELECT DISTINCT nv.ho_ten, nv.luong

FROM nhan_vien a, nhan_vien b

WHERE a.luong > b.luong AND b.gioi_tinh = ‘nu’

Trang 68

NGÔN NGỮ SQL

Các quan hệ được dẫn xuất và khung nhìn

SQL-92 cho phép dùng câu hỏi con trong

câu FROM, trong đó bảng kết quả của câu hỏi con phải được đặt tên và các cột được phép đổi tên Một kết quả như vậy được gọi

là một quan hệ (bảng) được dẫn xuất.

Trang 69

NGÔN NGỮ SQL

Các quan hệ được dẫn xuất và khung nhìn

“Tìm lương trung bình của các phòng có lương trung bình lớn hơn 2 100 000”, trong SQL (chuẩn 92) có thể viết như sau:

SELECT ma_phong, luong_tb

FROM (SELECT ma_dv, AVG(luong)

FROM nhan_vien

GROUP BY ma_dv)

Trang 70

Xin cảm ơn !

Ngày đăng: 31/08/2012, 16:13

HÌNH ẢNH LIÊN QUAN

WHERE lọc lấy một số bộ trong bảng đưa vào bảng kết quả,  - Ngôn ngữ thao tác dữ liệu
l ọc lấy một số bộ trong bảng đưa vào bảng kết quả, (Trang 55)

TỪ KHÓA LIÊN QUAN

TRÍCH ĐOẠN

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

TÀI LIỆU LIÊN QUAN

w