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

70 2.4K 3
Ngôn ngữ thao tác dữ liệu

Đ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

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

Ch−¬ng Ngơn ngữ thao tác liệu Ngơn ngữ đại số quan hệ Ngôn ngữ đại số quan hệ sở quan trọng ngôn ngữ bậc cao sử dụng để thao tác quan hệ Các phép toán đại số quan hệ chia thành hai nhóm (tập hợp đặc trưng) Hồ Cẩm Hà Chương Các phép toán tập hợp Phép hợp: r ∪s = {t⏐ t∈r t∈s} Phép giao: r ∩ s = {t⏐ t ∈ r t ∈ s} Phép hiệu: r – s = {t⏐ t ∈ r t ∉ s} r ∪ (s ∪ t) = (r ∪ s) ∪ t r ∩ (s ∩ t) = (r ∩ s) ∩ t Hồ Cẩm Hà Chương 3 Các phép toán tập hợp Phép tích Descartes: r × s = {t⏐t=(a1, a2, ,an, b1, b2, ,bm), (a1, a2, ,an) ∈ r (b1, b2, ,bm)∈s } Như r có k1 bộ, s có k2 r × s có k1× k2 Hồ Cẩm Hà Chương Các phép toán tập hợp Phép chia: r r÷s ={t⏐t=(am+1,am+2, ,an): ∀(a1, a2, ,am) ∈ s, (a1, a2, ,am, am+1, ,an) ∈ r } Hồ Cẩm Hà Chương Các phép toán đặc biệt quan hệ Phép chọn σC(r) = {t/ t∈r, C(t) = TRUE} Ví du σ ((MA_DU_AN= D1) ∨ (LUONG ≥ 3500)) (PHAN_CONG) Hồ Cẩm Hà Chương Các phép toán đặc biệt quan hệ Phép chiếu ΠX(r) = {t[X]/ t ∈ r} Ví du ΠHOTEN, LUONG(PHAN_CONG) Hồ Cẩm Hà Chương Các phép toán đặc biệt quan hệ Phép kết nối (join) Khái niệm ” xếp cạnh nhau”: Cho p =(p1, p2 , , pn) q =(q1, q2 , , qm) Xếp cạnh p q : (p,q) = {p1, p2 , , pn, q1, q2 , , qm } r ⋈ Ai θ Bj s = {(t, u)/ t ∈ r, u ∈ s t[Ai] θ u[Bj]} Hồ Cẩm Hà Chương Các phép toán đặc biệt quan hệ Phép kết nối (join) r ⋈ Ai θ Bj s = {(t, u)/ t ∈ r, u ∈ s t[Ai] θ u[Bj]} Trường hợp θ “=” gọi kết nối kết nối tự nhiên sử dụng kí hiệu r * s (hoặc r ⋈ s ) Ví dụ NHA_CUNG_CAP ⋈DIACHI≠NOI-SXUATSAN_PHAM Hồ Cẩm Hà Chương Các phép toán đặc biệt 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ụ NHA_CUNG_CAP * CUNG_UNG Hồ Cẩm Hà Chương 10 NGÔN NGỮ SQL Điều kiện chọn (lọc) câu HAVING ln chứa hàm gộp, khơng điều kiện chuyển vào câu WHERE Nên nhớ hàm gộp không dùng câu WHERE 56 NGÔN NGỮ SQL Trường hợp câu truy vấn có câu WHERE câu HAVING (dĩ nhiên có câu GROUP BY), trước tiên điều kiện chọn câu WHERE áp dụng thỏa điều kiện tạo thành nhóm câu GROUP BY Tiếp theo, câu HAVING loại nhóm khơng thỏa điều kiện đặt sau từ HAVING Các nhóm lại câu SELECT sử dụng để tạo kết câu truy vấn SELECT ma_dv, MAX(luong) AS max_dv, SUM(luong) AS tong_dv FROM nhan_vien GROUP BY ma_dv HAVING SUM(luong) > 000 000 57 NGƠN NGỮ SQL Các truy vấn lồng Để tìm mã số tên nhân viên phòng ‘Kỹ thuật’ dùng câu truy vấn sau SELECT manv, ho_ten FROM nhan_vien WHERE ma_dv IN (SELECT ma_dv FROM phong WHERE ten_phong = ‘Kỹ thuật’); 58 NGÔN NGỮ SQL Các truy vấn lồng Xét câu hỏi: ‘Tìm tên nhân viên có lương đạt mức lương trung bình tất nhân viên, đồng thời cho biết 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 > (SELECT AVG(luong) FROM nhan_vien); 59 NGÔN NGỮ SQL Các truy vấn lồng Câu ORDER BY không sử dụng câu truy vấn dùng câu truy vấn ngồi Danh sách mục liệt kê câu truy vấn SELECT phải chứa tên cột biểu thức câu truy vấn dùng từ khóa EXISTS 60 NGƠN NGỮ SQL Các truy vấn lồng Theo ngầm định, tên cột câu truy vấn tham chiếu đến tên bảng câu FROM truy vấn này, tham chiếu đến bảng câu FROM truy vấn ngồi việc xác định tên cột Khi câu truy vấn hai toán hạng biểu thức so sánh truy vấn phải xuất vế phải so sánh 61 NGÔN NGỮ SQL Các truy vấn lồng Muốn biết thông tin nhân viên làm việc cho đơn vị có địa điểm ’23 Lý Thường Kiệt’, dùng truy vấn sau SELECT * FROM nhan_vien WHERE ma_dv IN (SELECT ma_dv FROM dia_diem_dv WHERE dia_diem = ’23 Lý Thường Kiệt); 62 NGÔN NGỮ SQL Các truy vấn lồng “ Tìm tên lương người có lương cao lương nhân viên thuộc đơn vị mã P2 “ SELECT ho_ten FROM nhan_vien WHERE luong > ALL (SELECT luong FROM nhan_vien WHERE ma_dv = ’P2’); 63 NGÔN NGỮ SQL Các truy vấn lồng Câu hỏi “ Cho biết thông tin nhân viên có lương cao nhân viên làm phòng kỹ thuật” SELECT ho_ten FROM nhan_vien WHERE luong > SOME (SELECT luong FROM nhan_vien WHERE ma_dv IN (SELECT ma_dv FROM phong WHERE ten_phong = ‘Kỹ thuật’)64 ); NGÔN NGỮ SQL Các truy vấn lồng “ Cho biết tên phịng có trung bình lương cao nhất” viết SELECT ten_phong FROM phong WHERE ma_dv IN (SELECT ma_dv FROM nhan_vien GROUP BY ma_dv HAVING AVG(luong) >= ALL (SELECT AVG(luong) FROM nhan_vien GROUP BY ma_dv) ); 65 NGƠN NGỮ SQL Dùng biến Để tìm thơng tin tên lương 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 phát triển’ Các biến hữu ích việc so sánh hai quan hệ 66 NGƠN NGỮ SQL Dùng biến Có thể tìm nhân viên có lương cao lương nữ nhân viên 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’ 67 NGÔN NGỮ SQL Các quan hệ dẫn xuất khung nhìn SQL-92 cho phép dùng câu hỏi câu FROM, bảng kết câu hỏi phải đặt tên cột phép đổi tên Một kết gọi quan hệ (bảng) dẫn xuất 68 NGÔN NGỮ SQL Các quan hệ dẫn xuất khung nhìn “Tìm lương trung bình phịng có lương trung bình lớn 100 000”, SQL (chuẩn 92) viết sau: SELECT ma_phong, luong_tb FROM (SELECT ma_dv, AVG(luong) FROM nhan_vien GROUP BY ma_dv) AS ket_qua (ma_phong, luong_tb) WHERE luong_tb > 100 000 69 Xin cảm ơn ! ... ngôn ngữ hỏi bậc cao Hồ Cẩm Hà Chương 35 NGÔN NGỮ SQL SQL xem ngôn ngữ chuẩn hệ sở liệu quan hệ Ngôn ngữ SQL gồm nhiều phần Nó cho phép định nghĩa liệu (gồm DDL), cho phép cập nhật tìm kiếm liệu. .. tồn vẹn liệu, cấp phát quyền truy cập, điều khiển giao tác, thao tác liệu nhúng Hồ Cẩm Hà Chương 36 SQL Phần thao tác liệu có đơng đảo người dùng hơn, xem xét phần trước phần định nghĩa liệu SQL.. .Ngôn ngữ đại số quan hệ Ngôn ngữ đại số quan hệ sở quan trọng ngôn ngữ bậc cao sử dụng để thao tác quan hệ Các phép toán đại số quan hệ chia thành

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ả, Xem tại trang 55 của tài liệu.

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan