Bài giảng Hệ quản trị cơ sở dữ liệu - Chương 3: Ngôn ngữ thao tác dữ liệu, cung cấp cho người học những kiến thức như: Đại số quan hệ; Phép toán đại số quan hệ; Phép toán tập hợp; Ngôn ngữ SQL. Mời các bạn cùng tham khảo!
12/07/2018 Nội dung Chương III Đại số quan hệ Phép toán đại số quan hệ Phép chọn (Selection): σ Phép chiếu (Projection): Π Phép toán tập hợp Phép hợp: Phép giao: Phép trừ: Phép tích Descartes: Phép kết: Ngơn ngữ SQL NGƠN NGỮ THAO TÁC DỮ LIỆU Giới thiệu Giới thiệu Truy vấn CSDL: đưa câu hỏi yêu cầu lấy tin (query) Có loại xử lý truy vấn Không làm thay đổi liệu: Truy vấn rút trích, lựa chọn Làm thay đổi liệu (truy vấn cập nhật): Thêm mới, xóa sửa Thực xử lý Đại số quan hệ: Biểu diễn câu truy vấn dạng biểu thức Ngôn ngữ SQL (Structured Query Language): Được cài đặt Hệ quản trị CSDL cho hệ CSDL Ngôn ngữ truy vấn: Là ngôn ngữ quy ước riêng, cho phép người dùng cập nhật rút trích liệu lưu CSDL Ðại số quan hệ (ĐSQH) xem phương pháp để mơ hình hố phép tốn CSDL quan hệ Một chuỗi phép toán ĐSQH gọi biểu thức ĐSQH Kết quan hệ 12/07/2018 Phép chọn Phép chọn Được dùng để lấy quan hệ cho trước thỏa Ví dụ mãn điều kiện chọn Cho quan hệ R, phép chọn tập (dòng) từ quan hệ R thỏa mãn biểu thức điều kiện chọn F Kí hiệu F (R) Kết quan hệ gồm tập quan hệ R thỏa mãn biểu thức chọn F F (R)= { t | t r F(t) } F(t): giá trị thuộc tính F t, trả giá trị sai R A B C D a1 d1 a1 d2 a2 1 d3 (C=1) (R) (C=1) (A = a1) R A B C D a2 1 d3 (R) = {} Phép chọn - Ví dụ Phép chọn - Ví dụ Lập danh sách sinh viên thuộc khoa có Mã khoa Lập danh sách tất thơng tin đất có diện tích (m2) từ 250 trở lên “TH” Quan hệ: SINHVIEN Quan hệ: ChiTietThuaDat Điều kiện: MaKhoa=“TH” Điều kiện: DienTich250 MaKhoa=“TH” (SINHVIEN) SINHVIEN(MaSV, HoSV, TenSV, Phai, NgaySinh, MaKhoa, HocBong) KHOA(MaKhoa, TenKhoa) MONHOC(MaMH, TenMH, DVHT) KETQUA(MaSV, MaMH, LanThi, Diem) DienTich250 (ChiTietThuaDat) ChuSD(CMND, HoTen, NgaySinh, GioiTinh, SoNha, Xom, Ap, Xa) BanDKSD(MaSoBanDK, NgayDKThua, CMND, SoThuaGoc, MucDichSD) ChiTietThuaDat(SoThuaGoc, LoDat, Xa, DienTich, SoToBanDo) 12/07/2018 Phép chọn - Ví dụ Phép chọn - Ví dụ Lập danh sách tất thông tin hồ sơ đăng ký Lập danh sách tất thông tin chủ sử dụng giới quyền SD đất thực năm 2000 tính nam Quan hệ: BanDKSD Quan hệ: ChuSD Điều kiện: NgayDKThua=… Điều kiện: GioiTinh=Yes/No (Yes=Nam, No=Nữ) Text NgayDKThua1/1/2000 NgayDKThua31/12/2000 (BanDKSD) ChuSD(CMND, HoTen, NgaySinh, GioiTinh, SoNha, Xom, Ap, Xa) BanDKSD(MaSoBanDK, NgayDKThua, CMND, SoThuaGoc, MucDichSD) ChiTietThuaDat(SoThuaGoc, LoDat, Xa, DienTich, SoToBanDo) GioiTinh=Yes (ChuSD) GioiTinh=“Nam” (ChuSD) ChuSD(CMND, HoTen, NgaySinh, GioiTinh, SoNha, Xom, Ap, Xa) BanDKSD(MaSoBanDK, NgayDKThua, CMND, SoThuaGoc, MucDichSD) ChiTietThuaDat(SoThuaGoc, LoDat, Xa, DienTich, SoToBanDo) 10 Phép chiếu Phép chiếu Phép chiếu phép loại bỏ số thuộc tính (cột) Lập danh sách Mã SV, họ tên sinh viên Quan hệ: SINHVIEN Thuộc tính: MaSV, HoSV, TenSV quan hệ Cho quan hệ R(U), tập thuộc tính X U Phép chiếu quan hệ R lên tập thuộc tính X Kí hiệu X (R) Kết trả quan hệ gồm thuộc tập thuộc tính X Ví dụ: C r A B {B,C} (r) B C a1 c1 r’ c1 a2 c1 c2 a3 c2 11 MaSV, HoSV, TenSV(SINHVIEN) MaSV HoSV TenSV … … … SINHVIEN(MaSV, HoSV, TenSV, Phai, NgaySinh, MaKhoa, HocBong) KHOA(MaKhoa, TenKhoa) MONHOC(MaMH, TenMH, DVHT) KETQUA(MaSV, MaMH, LanThi, Diem) 12 12/07/2018 Chuỗi phép toán Chuỗi phép toán Kết hợp phép toán đại số quan hệ Lồng biểu thức lại với Lập danh sách gồm: Mã SV, họ tên sinh viên thuộc ( (R)) X khoa có Mã khoa “TH” Quan hệ: SINHVIEN ( (R)) F F Thuộc tính: MaSV, HoSV, TenSV X Điều kiện: MaKhoa=“TH Thực phép toán MaSV, HoSV, TenSV ( Bước 1: (R) Bước 2: (Quan hệ kết Bước 1) MaKhoa=“TH” (SINHVIEN)) F SINHVIEN(MaSV, HoSV, TenSV, Phai, NgaySinh, MaKhoa, HocBong) KHOA(MaKhoa, TenKhoa) MONHOC(MaMH, TenMH, DVHT) KETQUA(MaSV, MaMH, LanThi, Diem) X 13 14 Chuỗi phép toán Chuỗi phép toán Lập danh sách thông tin gồm: Mã số ĐK, ngày ĐK, số Lập danh sách thông tin gồm: Số gốc, xã, diện gốc hồ sơ đăng ký từ năm 2000 đến tích đất thuộc xã “Hịa Bình” Quan hệ: BanDKSD Quan hệ: ChiTietThuaDat Thuộc tính: MaSoBanDK, NgayDKThua, SoThuaGoc Thuộc tính: … Điều kiện: NgayDKThua… Điều kiện: Xa=“Hịa Bình” MaSoBanDK, NgayDKThua, SoThuaGoc ( NgayDKThua1/1/2000 (BanDKSD)) ChuSD(CMND, HoTen, NgaySinh, GioiTinh, SoNha, Xom, Ap, Xa) BanDKSD(MaSoBanDK, NgayDKThua, CMND, SoThuaGoc, MucDichSD) ChiTietThuaDat(SoThuaGoc, LoDat, Xa, DienTich, SoToBanDo) SoThuaGoc, Xa, DienTich ( Xa=“Hịa Bình” (ChiTietThuaDat)) ChuSD(CMND, HoTen, NgaySinh, GioiTinh, SoNha, Xom, Ap, Xa) BanDKSD(MaSoBanDK, NgayDKThua, CMND, SoThuaGoc, MucDichSD) ChiTietThuaDat(SoThuaGoc, LoDat, Xa, DienTich, SoToBanDo) 15 16 12/07/2018 Phép tốn tập hợp Tính khả hợp Phép toán tập hợp bao gồm: Phép hợp: R S Phép giao: R S Phép trừ: R S Tính khả hợp Hai lược đồ quan hệ R(A1, A2, …, An) S(B1, B2, …, Bn) khả hợp Cùng bậc n (cùng số lượng thuộc tính) Cùng miền giá trị Ví dụ Cho quan hệ NHAHANG KHACHSAN danh sách nhà hàng khách sạn THÀNH PHỐ.HCM quan hệ NHAHANG KHACHSAN có tính khả hợp NHAHANG TEN Huy Hồng Tương Lai Sinh Đôi Đông Nam Á DIACHI PHUONG QUAN 504 Điện Biên Phủ 14 229 Ngơ Chí Thanh 300 Lý Thái Tổ 10 230 Ngô Gia Tự 10 KHACHSAN TEN Viễn Đơng Huy Hồng Ánh Hồng Tương Lai DIACHI PHUONG QUAN Lê Lợi 504 Điện Biên Phủ 14 151 Đặng Dung PN 229 Ngơ Chí Thanh Kết , , quan hệ có tên thuộc tính với quan hệ (R) 17 18 Tính khả hợp Tính khả hợp quan hệ NHAHANG KHACHSAN khơng có tính khả hợp quan hệ NHAHANG KHACHSAN khơng có tính khả hợp NHAHANG TEN Huy Hồng Tương Lai Sinh Đơi Đơng Nam Á DIACHI PHUONG QUAN 504 Điện Biên Phủ 14 229 Ngơ Chí Thanh 300 Lý Thái Tổ 10 230 Ngô Gia Tự 10 NHAHANG TEN Huy Hồng Tương Lai Sinh Đơi Đơng Nam Á DIACHI PHUONG QUAN 504 Điện Biên Phủ 14 229 Ngơ Chí Thanh 300 Lý Thái Tổ 10 230 Ngô Gia Tự 10 KHACHSAN TEN Viễn Đông Huy Hoàng Ánh Hồng Tương Lai DIACHI Lê Lợi 504 Điện Biên Phủ 151 Đặng Dung 229 Ngơ Chí Thanh KHACHSAN TEN Viễn Đơng Huy Hồng Ánh Hồng Tương Lai DIACHI MSTHUE QUAN Lê Lợi 201-123 504 Điện Biên Phủ 459-837 151 Đặng Dung 110-213 PN 229 Ngơ Chí Thanh 223-012 QUAN PN 19 20 12/07/2018 Phép hợp Phép giao Phép hợp quan hệ R S tương thích khả hợp: Ký hiệu: R S Là quan hệ gồm thuộc R thuộc S, hai (các trùng lắp bị bỏ) Phép giao quan hệ R S tương thích khả hợp Ký hiệu: R S Là quan hệ gồm tập vùa thuộc R vừa thuộc S RS={t|tRtS} R S = { t | t R t S} Ví dụ: Ví dụ: R r A B C a1 b1 a2 a3 S A B C A B C A B C a1 b1 c1 a1 b1 c1 c1 a1 b1 c1 a2 b2 c2 a2 b1 c3 c3 a2 b1 c3 a3 b3 c3 a2 b2 c2 a3 b3 c3 A B C c1 a1 b1 b2 c2 a2 b1 b3 c3 R S s r s A B C a1 b1 c1 21 22 Phép trừ Phép trừ Phép trừ quan hệ r s tương thích Ký hiệu: R – S Là quan hệ gồm thuộc R không thuộc S Phép giao hai quan hệ tương thích r s biểu diễn qua phép trừ: R – S = R – (R – S) R RS={t|tRtS} Ví dụ: R A B C a1 b1 a2 b2 a3 b3 c3 S A B C c1 a1 b1 c2 a2 b1 R S A B C c1 a2 b2 c2 c3 a3 b3 c3 R–S S S–R RS 23 24 12/07/2018 Phép tích Đề Phép tích Đề MaSoBanDK AA112233 AB123456 BB456789 CB987654 Ví dụ: R S RS ChuSD CMND 123456789 987654321 BanDKSD Được dùng để kết hợp quan hệ lại với A B C D A B C D a1 1 d1 a1 1 d1 a2 d2 a1 d2 a2 d1 a2 d2 NgayDK 08/07/1995 02/11/2000 10/05/1999 01/12/1990 CMND 123456789 123456789 987654321 123456789 MaSoBanDK NgayDK BanDKSD.CMND AA112233 08/07/1995 123456789 AA112233 08/07/1995 123456789 ChuSD.CMND 123456789 987654321 HoTen Nguyễn A Trần B HoTen Nguyễn A Trần B 25 Phép tích Đề BanDKSD MaSoBanDK AA112233 AB123456 BB456789 CB987654 NgayDK 08/07/1995 02/11/2000 10/05/1999 01/12/1990 MaSoBanDK AA112233 AA112233 AB123456 AB123456 BB456789 BB456789 CB987654 CB987654 CMND 123456789 123456789 987654321 123456789 NgayDK BanDKSD.CMND 08/07/1995 123456789 08/07/1995 123456789 02/11/2000 123456789 02/11/2000 123456789 10/05/1999 987654321 10/05/1999 987654321 01/12/1990 123456789 01/12/1990 123456789 26 Phép kết nối tự nhiên ChuSD CMND 123456789 987654321 ChuSD.CMND 123456789 987654321 123456789 987654321 123456789 987654321 123456789 987654321 HoTen Nguyễn A Trần B HoTen Nguyễn A Trần B Nguyễn A Trần B Nguyễn A Trần B Nguyễn A Trần B Cho quan hệ CSDL quản lý đăng ký hồ sơ địa Thực phép kết nối tự nhiên quan hệ BanDKSD ChuSD Bảng tổng hợp liệu BanDKSD MaSoBanDK AA112233 AB123456 BB456789 CB987654 ChuSD 27 CMND 123456789 987654321 NgayDK 08/07/1995 02/11/2000 10/05/1999 01/12/1990 CMND 123456789 123456789 987654321 123456789 HoTen … … … … HoTen Nguyễn A Trần B 28 12/07/2018 Phép kết nối tự nhiên Phép kết nối tự nhiên Bước 1: BanDKSD × ChuSD (Tích Đề-các) Bước 2: Lấy dòng thỏa điều kiện BanDKSD CMND 123456789 123456789 987654321 123456789 × MaSoBanDK AA112233 AB123456 BB456789 CB987654 NgayDK 08/07/1995 02/11/2000 10/05/1999 01/12/1990 MaSoBanDK AA112233 AA112233 AB123456 AB123456 … NgayDK BanDKSD.CMND 08/07/1995 123456789 08/07/1995 123456789 02/11/2000 123456789 02/11/2000 123456789 … … ChuSD CMND 123456789 987654321 ChuSD.CMND 123456789 987654321 123456789 987654321 … BanDKSD.CMND = ChuSD.CMND HoTen Nguyễn A Trần B MaSoBanDK AA112233 AA112233 AB123456 AB123456 BB456789 BB456789 CB987654 CB987654 HoTen Nguyễn A Trần B Nguyễn A Trần B … NgayDK BanDKSD.CMND 08/07/1995 123456789 08/07/1995 123456789 02/11/2000 123456789 02/11/2000 123456789 10/05/1999 987654321 10/05/1999 987654321 01/12/1990 123456789 01/12/1990 123456789 ChuSD.CMND 123456789 987654321 123456789 987654321 123456789 987654321 123456789 987654321 HoTen Nguyễn A Trần B Nguyễn A Trần B Nguyễn A Trần B Nguyễn A Trần B 29 Phép kết nối tự nhiên Tổng hợp chuỗi phép toán Kết phép kết nối tự nhiên: BanDKSD BanDKSD MaSoBanDK AA112233 AB123456 BB456789 CB987654 NgayDK 08/07/1995 02/11/2000 10/05/1999 01/12/1990 CMND 123456789 123456789 987654321 123456789 30 ChuSD ChuSD CMND 123456789 987654321 Lập danh sách Mã SV, họ tên sinh viên thuộc khoa có tên khoa “Tin học” HoTen Nguyễn A Trần B Quan hệ: SINHVIEN, KHOA Thuộc tính: MaSV, HoSV, TenSV Điều kiện: TenKhoa=“Tin học” MaSV, HoSV, TenSV MaSoBanDK AA112233 AB123456 BB456789 CB987654 NgayDK BanDKSD.CMND 08/07/1995 123456789 02/11/2000 123456789 10/05/1999 987654321 01/12/1990 123456789 ChuSD.CMND 123456789 123456789 987654321 123456789 HoTen Nguyễn A Nguyễn A Trần B Nguyễn A ( TenKhoa=“Tin học” (SINHVIEN KHOA)) SINHVIEN(MaSV, HoSV, TenSV, Phai, NgaySinh, MaKhoa, HocBong) KHOA(MaKhoa, TenKhoa) MONHOC(MaMH, TenMH, DVHT) KETQUA(MaSV, MaMH, LanThi, Diem) 31 32 12/07/2018 Tổng hợp chuỗi phép toán Nội dung Chương III Lập danh sách thông tin gồm: Mã số ĐK, ngày ĐK, số Đại số quan hệ Phép toán đại số quan hệ Phép chọn (Selection): σ Phép chiếu (Projection): Π Phép toán tập hợp Phép hợp: Phép giao: Phép trừ: Phép tích Descartes: Phép kết: Ngơn ngữ SQL CMND, họ tên hồ sơ từ năm 2000 đến Quan hệ: BanDKSD, ChuSD Thuộc tính: MaSoBanDK, NgayDKThua, CMND, HoTen Điều kiện: NgayDKThua… ( NgayDKThua1/1/2000 (BanDKSD ChuSD)) MaSoBanDK, NgayDKThua, CMND, HoTen ChuSD(CMND, HoTen, NgaySinh, GioiTinh, SoNha, Xom, Ap, Xa) BanDKSD(MaSoBanDK, NgayDKThua, CMND, SoThuaGoc, MucDichSD) ChiTietThuaDat(SoThuaGoc, LoDat, Xa, DienTich, SoToBanDo) 33 34 Cú pháp tổng quát câu lệnh Truy vấn SELECT FROM WHERE GROUP BY HAVING ORDER BY Cú pháp ASC / DESC SELECT FROM Trong đó: Tên thuộc tính (cột) hiển thị kết truy vấn Tên bảng liên quan đến câu truy vấn 35 36 12/07/2018 Truy vấn Mệnh đề WHERE Lập danh sách Mã SV, họ tên sinh viên Cú pháp SELECT MaSV, HoSV, TenSV FROM SINHVIEN MaSV HoSV TenSV … … … SELECT FROM WHERE Trong đó: là: SELECT MaSV AS [Mã SV], HoSV AS [Họ SV], TenNV AS [Tên SV] FROM SINHVIEN Mã SV Họ SV Tên SV … … … Các phép toán so sánh: , > , = , , Các phép tốn logic: AND, OR Các từ khóa: LIKE, BETWEEN … AND …, IN, NOT IN, EXISTS… 37 38 Mệnh đề WHERE - Ví dụ Mệnh đề WHERE - Ví dụ Lập danh sách sinh viên thuộc khoa có Mã khoa Lập danh sách tất thơng tin đất có diện tích (m2) 250 “TH” Quan hệ: SINHVIEN Quan hệ: ChiTietThuaDat Điều kiện: MaKhoa=“TH” Điều kiện: DienTich>250 SELECT * FROM SINHVIEN WHERE MaKhoa=“TH” SELECT * FROM ChiTietThuaDat WHERE DienTich>250 SINHVIEN(MaSV, HoSV, TenSV, Phai, NgaySinh, MaKhoa, HocBong) KHOA(MaKhoa, TenKhoa) MONHOC(MaMH, TenMH, DVHT) KETQUA(MaSV, MaMH, LanThi, Diem) 39 ChuSD(CMND, HoTen, NgaySinh, GioiTinh, SoNha, Xom, Ap, Xa) BanDKSD(MaSoBanDK, NgayDKThua, CMND, SoThuaGoc, MucDichSD) ChiTietThuaDat(SoThuaGoc, LoDat, Xa, DienTich, SoToBanDo) 40 12/07/2018 Mệnh đề WHERE - Ví dụ Mệnh đề WHERE - Ví dụ Lập danh sách gồm: Mã số ĐK, ngày ĐK, CMND Lập danh sách gồm: Mã số ĐK, ngày ĐK, CMND hồ sơ đăng ký quyền SD đất Thổ cư năm 2000 hồ sơ đăng ký quyền SD đất Thổ cư năm 2000 Quan hệ: BanDKSD | Điều kiện: NgayDKThua=… Quan hệ: BanDKSD | Điều kiện: NgayDKThua=… SELECT MaSoBanDK, NgayDKThua, CMND FROM BanDKSD WHERE NgayDKThua>=#1/1/2000# AND NgayDKThua=#1/1/2000# ChuSD(CMND, HoTen, NgaySinh, GioiTinh, SoNha, Xom, Ap, Xa) BanDKSD(MaSoBanDK, NgayDKThua, CMND, SoThuaGoc, MucDichSD) ChiTietThuaDat(SoThuaGoc, LoDat, Xa, DienTich, SoToBanDo) SELECT MaSoBanDK, ChuSD.CMND, HoTen, NgayDKThua FROM ChuSD INNER JOIN BanDKSD ON ChuSD.CMND=BanDKSD.CMND WHERE NgayDKThua>=#1/1/2000# ChuSD(CMND, HoTen, NgaySinh, GioiTinh, SoNha, Xom, Ap, Xa) BanDKSD(MaSoBanDK, NgayDKThua, CMND, SoThuaGoc, MucDichSD) ChiTietThuaDat(SoThuaGoc, LoDat, Xa, DienTich, SoToBanDo) 51 52 12/07/2018 Truy vấn kết nối bảng Truy vấn gom nhóm Lập danh sách đất đăng ký quyền SD Cú pháp năm 1995 Danh sách gồm: Số gốc, số tờ đồ, mã số đăng ký, số CMND người đăng ký SELECT FROM WHERE GROUP BY Ví dụ: SELECT BanDKSD.SoThuaGoc, SoToBanDo, MaSoBanDK, CMND FROM BanDKSD, ChiTietThuaDat WHERE BanDKSD.SoThuaGoc=ChiTietThuaDat.SoThuaGoc AND NgayDKThua>=#1/1/1995# AND NgayDKThua