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

Tailieu OnTapCSDL final

68 108 0

Đ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

Nội dung

đây là bài ôn tập về chuyên ngành công nghệ thông tin cơ sở dữ liệu mọi người cứ việc tải về làm tài liệu tham khảo, rất hữu ích đấy. đây là bài ôn tập về chuyên ngành công nghệ thông tin cơ sở dữ liệu mọi người cứ việc tải về làm tài liệu tham khảo, rất hữu ích đấy.đây là bài ôn tập về chuyên ngành công nghệ thông tin cơ sở dữ liệu mọi người cứ việc tải về làm tài liệu tham khảo, rất hữu ích đấy.đây là bài ôn tập về chuyên ngành công nghệ thông tin cơ sở dữ liệu mọi người cứ việc tải về làm tài liệu tham khảo, rất hữu ích đấy.

Th.sĩ Nguyễn Minh Đế Ôn tập Cơ Sở Dữ Liệu MỤC LỤC LỜI NÓI ĐẦU GIỚI THIỆU MÔN HỌC Chương I: Mơ hình liệu quan hệ Codd Các khái niệm mơ hình liệu quan hệ .10 1.1 1.1.1 Thực thể 10 1.1.2 Kiểu thực thể 10 1.1.3 Thuộc tính thực thể 10 1.1.4 Mối kết hợp 11 1.1.5 Liên kết kiểu liên kết 12 1.1.6 Biểu đồ liên kết thực thể ERD 12 1.2 Lược đồ quan hệ - Relation Schema, quan hệ .14 1.2.3 Quan hệ - Relation 15 1.2.4 Bộ - Tuple 16 Phụ thuộc hàm .17 2.1 Khái niệm .17 2.2 Hệ tiên đề Armstrong 17 2.2.1 Giới thiệu 17 2.2.2 Hệ tiên đề 18 2.2.3 Bài toán áp dụng 18 2.2.4 Các phép suy dẫn phụ thuộc hàm 18 2.3 Thực thể mối liên hệ 10 Bao đóng tính chất bao đóng phụ thuộc hàm 19 2.3.1 Định nghĩa bao đóng phụ thuộc hàm 19 2.3.2 Phụ thuộc hàm đầy đủ không đầy đủ 19 2.3.3 Bao đóng tập thuộc tính 20 2.3.4 Tập phụ thuộc hàm tương đương 23 2.3.5 Phủ tối thiểu – Minimal Cover tập phụ thuộc hàm 24 Phép tách quan hệ Khóa quan hệ 29 3.1 Phép tách 29 3.1.1 Định nghĩa 29 3.1.2 Định lý 29 Trang Tài Liệu Lưu Hành Nội Bộ Th.sĩ Nguyễn Minh Đế 3.1.3 Kiểm tra phép tách không mát thông tin 30 3.1.4 Hai định lý tách 31 3.2 Ơn tập Cơ Sở Dữ Liệu Khóa quan hệ 31 3.2.1 Định nghĩa 31 3.2.2 Thuật toán 31 Chuẩn hóa CSDL 33 4.1 Một số định nghĩa 33 4.1.1 Thuộc tính khóa .33 4.1.2 Phụ thuộc hàm đầy đủ .33 4.1.3 Phụ thuộc hàm bắc cầu 33 4.2 Dạng chuẩn – NF 34 4.2.1 Định nghĩa 34 4.2.2 Ví dụ: 34 4.3 Dạng chuẩn – NF 34 4.3.1 Định nghĩa 34 4.3.2 Ví dụ 34 4.3.3 Thuật toán 34 4.4 Dạng chuẩn - 3NF 35 4.4.1 Định nghĩa 35 4.4.2 Ví dụ 36 4.4.3 Thuật toán 36 4.4.4 Phân rã thành 3NF vừa bảo tồn thơng tin vừa bảo toàn phụ thuộc hàm .37 Chương II: Ngôn Ngữ Đại Số Quan Hệ .38 Các khái niệm 39 1.1 Mơ hình xử lý liệu .39 1.2 Quan hệ khả hợp .39 1.3 Biểu thức luận lý bao gồm có: 39 Phép toán tập hợp 39 2.1 Phép hợp ( Union operation ) 39 2.2 Phép giao (Intersection) 40 2.3 Phép trừ (Minus, difference) 40 2.4 Tích Descartes (Cartesian Product) 40 Phép toán quan hệ 41 3.1 Trang Phép chiếu( Projection ) 41 Tài Liệu Lưu Hành Nội Bộ Th.sĩ Nguyễn Minh Đế Ôn tập Cơ Sở Dữ Liệu 3.2 Phép chọn( Selection ) 41 3.3 Phép kết, kết tự Nhiên(join, Natural Join) 41 3.4 Phép chia (division) 41 3.5 Phép gán 42 3.6 Phép đổi tên .42 3.7 Một số hàm tiện ích 42 Tính chất 42 4.1 Tính chất giao hốn 43 4.2 Tính chất kết hợp 43 4.3 Tính chất tích lũy đẳng 43 4.4 Một số tính chất khác 43 Ví dụ: 43 Chương III: Ngôn ngữ truy vấn SQL 46 Lệnh định nghĩa liệu 47 1.1 Lệnh tạo bảng 47 1.2 Chỉ mục 48 1.3 Thêm ràng buộc khóa lược đồ quan hệ .48 1.4 Thêm ràng buộc miền giá trị lược đồ quan hệ 48 1.5 Thêm cột 48 1.6 Xóa cột .48 1.7 Xoá ràng buộc 48 Lệnh SELECT 48 2.1 Cú pháp 48 2.2 Mệnh đề FORM .49 2.3 Mệnh đề SELECT 49 2.4 Mệnh đề điều kiện WHERE 50 2.5 Sắp xếp kết truy vấn 52 2.6 Phép kết nối .52 2.7 Nối liệu từ nhiều bảng với lệnh: Join 53 2.7.1 Giới thiệu 53 2.7.2 Kết nội 54 2.7.3 Kết ngoại trái- left outer join .54 2.7.4 Kết ngoại phải 54 SELECT Khoa.MKH, Khoa.TenKH, SinhVien.MSV, SinhVien.HoSV, SinhVien.TenSV 55 Trang Tài Liệu Lưu Hành Nội Bộ Th.sĩ Nguyễn Minh Đế Ôn tập Cơ Sở Dữ Liệu FROM Sinhvien right outer JOIN Khoa ON Khoa.MKH = SinhVien.MKH 55 Thống kê liệu với GROUP BY 55 2.8 2.8.1 Thống kê toàn liệu 56 2.8.2 Thống kê liệu nhóm 56 2.8.3 Mệnh đề điều kiện hàm nhóm - HAVING 56 2.9 Truy vấn (Subquery) .57 Bổ sung liệu 58 3.1 Bổ sung dòng liệu với lệnh INSERT .58 3.2 Bổ sung nhiều dòng liệu từ bảng khác 59 Cập nhật xóa liệu 59 4.1 Cập nhật 59 4.2 Xóa liệu 60 4.3 Bài tập 60 Chương IV: Tối ưu hóa câu hỏi 62 Các chiến lược tối ưu .63 1.1 Thực phép chọn sớm 63 1.2 Tổ hợp phép chọn với phép tích Đề thành phép kết nối 63 1.3 Tổ hợp dãy phép tính ngơi thành 63 1.4 Tìm biểu thức chung biểu thức .63 1.5 Xử lý độc lập tệp trước xử lý chung CSDL 63 1.6 Lựa chọn thứ tự thực phép toán 63 Các phép biến đổi tương đương 63 2.1 Phép giao hoán 63 2.2 Phép kết hợp 63 2.3 Xử lý dãy phép toán chọn 63 2.4 Xử lý dãy phép toán chiếu 63 2.5 Giao hoán phép chọn phép chiếu 63 2.6 Giao hoán phép chọn phép tích Đề -các .64 2.7 Giao hoán phép chọn phép hợp 64 2.8 Giao hoán phép chọn phép trừ 64 2.9 Giao hoán phép chiếu phép tích Đề 64 2.10 Giao hoán phép chiếu phép hợp .64 Khái quát bước thuật toán tối ưu hoá kinh nghiệm tiêu biểu .65 BÀI TẬP 67 Trang Tài Liệu Lưu Hành Nội Bộ Th.sĩ Nguyễn Minh Đế Trang Ôn tập Cơ Sở Dữ Liệu Tài Liệu Lưu Hành Nội Bộ Th.sĩ Nguyễn Minh Đế Ôn tập Cơ Sở Dữ Liệu LỜI NĨI ĐẦU Mơn học Cơ Sở Dữ Liệu môn học chuyên ngành, chiếm vị trí quan trọng hàng đầu q trình đào tạo Học sinh, Sinh viên cấp: Trung cấp chuyên nghiệp, Cao đẳng đến Đại học Môn học môn sở ngành bắt buộc để tổ chức thi tuyển các cấp học chuyển tiếp từ Trung cấp chuyên nghiệp đến Cao học Trong biên soạn Tài liệu ôn tập này, tham khảo nhiều giảng, Sách giáo khoa, Giáo trình trường Đại học lý thuyết, tập môn Cơ Sở Dữ Liệu Do khơng có điều kiện để tiếp xúc, trao đổi xin phép việc trích dẫn, mong Tác giả lượng thứ Tôi chân thành cám ơn đồng nghiệp môn Cơ Sở Dữ Liệu - khoa Công Nghệ Thông Tin tạo nhiều điều kiện tài liệu phương tiện để tơi hồn thành Tài liệu Mặc dù tơi có nhiều nỗ lực Tài liệu khơng tránh khỏi số sai sót Tơi thực mong có đóng góp ý kiến đồng nghiệp, em Học sinh, Sinh viên độc giả gần xa để Tài liệu ngày hoàn thiện Tác giả Trang Tài Liệu Lưu Hành Nội Bộ Th.sĩ Nguyễn Minh Đế Ôn tập Cơ Sở Dữ Liệu GIỚI THIỆU MƠN HỌC Tài liệu ơn tập mơn học Cơ Sở Dữ Liệu bao gồm phần: lý thuyết tập Phần lý thuyết đề cập đến nội dung quan trọng mà khơng có khái niệm sở chứng minh tính đắn lý thuyết, Phần tập yêu cầu bắt buộc phải làm Riêng Phần thực hành, Sinh viên tự lựa chọn hệ quản trị Cơ Sở Dữ Liệu, phần mềm vẽ biểu đồ thời gian thực hành; Sinh viên tự hỗ trợ thực hành máy tính để làm tập gợi ý Tài liệu ôn Tài liệu bám sát nội dung đề cương chi tiết môn học Nhập Môn Cơ Sở Dữ Liệu  Mục tiêu môn học Phần kiến thức: a Ôn tập cho sinh viên lại lý thuyết Cơ sở liệu quan hệ, thuật tốn: phụ thuộc hàm, dạng chuẩn, Khóa, phép phân rã; thao tác truy xuất, xử lý liệu ngôn ngữ đại số quan hệ SQL; tối ưu hóa câu truy vấn Phần kỹ năng: a Sinh viên tự thực tập với hệ quản trị CSDL SQL-Server, Power Designer 1.52  Nội dung môn học Tài liệu bao gồm chương Mỗi chương có câu hỏi ôn tập, tập Chương I: Mô hình liệu quan hệ Codd Trình bày khái niệm lý thuyết sở liệu quan hệ E.F Codd đề xuất, khái niệm quan hệ, thuộc tính, lược đồ quan hệ, khóa lược đồ quan hệ, phép phân rã Chương trình bày thuật tốn liên quan mơ hình liệu quan hệ Codd Chương II: Ngơn ngữ đại số quan hệ Trình bày phép toán quan hệ, tập hợp Chương III: Ngơn ngữ truy vấn SQL Trình bày ngôn ngữ định nghĩa liệu, điều khiển, thao tác liệu Chương trình bày truy vấn từ đơn giản đến phức tạp, hàm tính tốn gom nhóm liệu Chương IV: Tối ưu hóa câu hỏi Giới thiệu nguyên tắc tổng qt, tính chất phép kết, phép tích trình bày kỹ thuật tối ưu hóa câu hỏi  Phương pháp nghiên cứu mơn học Để học tốt môn này, cần lưu ý điểm sau: a Thu thập đa dạng, phong phú tài liệu học tập khác nhau: [1] Đỗ Phúc, Nguyễn Đăng Tỵ, “Giáo trình Cơ Sở Dữ Liệu”, NXB Đại Học Quốc Gia Tp HCM, 2005 [2] Nguyễn gia Tuấn Anh, “Bài tập giải CSDL”, NXB Thanh Niên, 2006 [3] Đỗ Trung Tuấn, ”Cơ sở liệu”, NXB Giáo Dục, 1999 [4] Lê Tiến Vương, “Nhập môn CSDL quan hệ” [5] Hồ Thuần, Hồ Cẩm Hà, “Nguyên lý hệ sở liệu: Lý thuyết thực hành” [6] Phương Lan, “Giáo trình nhập mơn Cơ sở liệu” Trang Tài Liệu Lưu Hành Nội Bộ Th.sĩ Nguyễn Minh Đế Ôn tập Cơ Sở Dữ Liệu [7] Lê Quang Tấn, “Giáo trình sở liệu”, ĐHSP TP.HCM [8] Nguyễn Xuân Huy; Lê Hoài Bắc, “Bài tập sở liệu” [9] Michael V Mannino, “Database design, application development & administration”, McGraw-Hill, ISBN-13: 978-0-07-294220-0 [10] Ulman J F., Nguyên lí hệ thống sở liệu hệ thống tri thức, biên dịch: Trần Đức Quang, tập 1, NXB Thống Kê, 1998 [11] Ulman J F., ”Nguyên lí hệ thống sở liệu hệ thống tri thức”, biên dịch: Trần Đức Quang, tập 2, NXB Thống Kê, 1998 [12] Ulman J F., ”Nguyên lí hệ thống sở liệu hệ thống tri thứ”, biên dịch: Trần Đức Quang, tập 3, NXB Thống Kê, 1998 Các Website: môn học Cơ Sở Dữ Liệu trường đại học nước b Tham gia đầy đủ buổi học lý thuyết: Thông qua buổi học giảng viên lý thuyết thực hành đứng lớp, học sinh sinh viên nắm nội dung kiến thức tổng thể, giải đáp thắc mắc; đồng thời trao đổi, thảo luận với bạn học hay giảng viên c Trả lời câu hỏi ôn tập, làm tập gợi ý cuối buổi học: Cuối chương, người học cần phải tự trả lời tất câu hỏi, cố gắng vạch ý chính, bước trả lời thành câu hoàn thiện Đối với tập, người học nên tự thân giải đáp trước tham khảo hướng dẫn, chủ động liên hệ với bạn học hay giảng viên để có hỗ trợ cần thiết d Nắm phương pháp chi ghép, học tập: Phương pháp học tập cần thiết, đặc biệt từ sau bậc học phổ thông Để có phương pháp học tập tốt nên công việc đơn giản trước: ghi chép(ghi chép ý chính), phương pháp đọc tài liệu( đọc nhanh, gạch chỗ quan trọng), … Người học nên tham khảo qua sách hướng dẫn học tập trước nghiên cứu giảng, giáo trình mơn học e Đặt mục tiêu thời hạn cho thân: Sau có mục tiêu học tập người học cố gắng thực khoảng thời gian cho trước Ngồi lịch học, hướng dẫn từ phía nhà trường người học tự đặt cho thân kế hoạch học tập cho riêng thân Lịch học nên mô tả chi tiết đến tuần, đánh dấu khối lượng công việc cần làm, … đánh dấu chi tiết thời gian, địa điểm kỳ sát hạch, thi cử, nộp kiểm tra Trang Tài Liệu Lưu Hành Nội Bộ Th.sĩ Nguyễn Minh Đế Ôn tập Cơ Sở Dữ Liệu Chương I: Mơ hình liệu quan hệ Codd Giới thiệu chương: chương cung cấp kiến thức sau: - Các khái niệm mô hình liệu: thực thể mối liên hệ, lược đồ quan hệ Phụ thuộc hàm: khái niệm, hệ tiên đề Armstrong, bao đóng Phép tách khóa quan hệ Chuẩn hóa CSDL Ngồi giới thiệu thuật tốn phụ thuộc hàm, khóa quan hệ, chuẩn hóa CSDL, … Trang Tài Liệu Lưu Hành Nội Bộ Th.sĩ Nguyễn Minh Đế Ôn tập Cơ Sở Dữ Liệu Các khái niệm mơ hình liệu quan hệ 1.1 Thực thể mối liên hệ 1.1.1 Thực thể Thực thể - Entity: khái niệm để đối tượng, nhiệm vụ, kiện giới thực hay tư quan tâm quản lí Tên thực thể danh từ Ký hiệu: E Thực thể: diễn tả đối tượng; có tên gọi riêng-khơng trùng; có danh sách thuộc tính; có khóa để nhận diện Ví dụ: Quản lý thư viện ta có thực thể như: "Sách", "Độc giả" đối tượng cụ thể Các đối tượng trừu tượng là: Khoa cơng nghệ thơng tin, Ngành tốn ứng dụng, … 1.1.2 Kiểu thực thể Là tập hợp đối tượng loại hình thành kiểu thực thể, nói cách khác kiểu thực thể tập hợp thực thể mô tả đặc trưng giống Ví dụ: Một Nhân viên thực thể, tập hợp Nhân viên hệ thống tạo thành kiểu thực thể Biểu diễn kiểu thực thể: ta dùng hình chữ nhật ghi tên kiểu thực thể Tên kiểu thực thể Nhân viên Sách Độc giả Chú ý: Cách gọi khác Kiểu thực thể - Thực thể Thực thể - Thể thực thể Ví dụ: nói kiểu thực thể SINH VIÊN có thực thể Nguyễn A, Hồng Văn, …Hay thực thể SINH VIÊN Nguyễn A, Hoàng Văn, … Kiểu gọi Thực thể - Thể thực thể kiểu gọi thơng dụng 1.1.3 Thuộc tính thực thể Thuộc tính liệu dùng để mô tả đặc trưng thực thể, chi tiết cần mô tả thực thể Mỗi thực thể có tập thuộc tính Tên thuộc tính phải danh từ Ví dụ: Thực thể "Sách" có thuộc tính: Tên sách, tên tác giả, nhà xuất bản, Các kiểu mơ tả thuộc tính Thực thể:  Định danh: gọi thuộc tính khố, khóa K thực thể E: tập thuộc tính cho o Khi lấy thể e1 e2 E e1 e2 khơng có giá trị giống thuộc tính K Chú ý: o Mỗi thực thể phải có khóa K o Mỗi khóa có nhiều thuộc tính Trang 10 Tài Liệu Lưu Hành Nội Bộ Th.sĩ Nguyễn Minh Đế Ôn tập Cơ Sở Dữ Liệu 2.7.2 Kết nội Phép kết nội (inner join) tìm giao bảng liệu, phép kết hợp mặc định Ta có câu hỏi: liệt kê danh sách sinh viên thơng tin Khoa mà sinh viên theo học: SELECT SinhVien.MSV, SinhVien.HoSV, SinhVien.TenSV, SinhVien.MKH, Khoa.TenKH FROM Khoa INNER JOIN SinhVien ON Khoa.MKH = SinhVien.MKH Kết câu SQL hình Hình 2.7.1 Như Sinh viên có MSV = 003 Khoa có MKH = NN không xuất câu kết truy vấn Select 2.7.3 Kết ngoại trái- left outer join Phép kết ngoại bên trái khác nhiều với phép kết nội Thay giới hạn kết thu bảng, giới hạn kết qua bảng bên trái (A) Nghĩa mệnh đề ON khơng có ghi tương ứng bên bảng B, dòng kết trả với giá trị NULL cho cột bảng B Nó trả tất giá trị từ bên trái + giá trị tương ứng với bảng bên phải null (khi giá trị bảng bên phải không tương ứng) Ta có câu hỏi: liệt kê danh sách sinh viên thơng tin lớp mà sinh viên theo học Để tìm thơng tin Khoa tương ứng với Sinh viên Sinh viên chưa thuộc Khoa Nghĩa thông tin Khoa Sinh viên NULL chưa có SELECT SinhVien.MSV, Khoa.TenKH SinhVien.HoSV, SinhVien.TenSV, SinhVien.MKH, FROM Sinhvien LEFT OUTER JOIN Khoa ON Khoa.MKH = SinhVien.MKH Kết câu SQL hình Hình 2.7.2 Kết có sinh viên mà MSV = 003 chưa tham gia vào Khoa Hình 2.7.2: Kết truy vấn 2.7.4 Kết ngoại phải Một phép kết ngoại bên phải (right outer join) tương tự với phép kết ngoại bên trái, trừ điều thứ tự bảng đổi lại Mỗi ghi từ bảng bên phải, B trả giá trị NULL trả cho dòng mà khơng có ghi tương ứng bên bảng A Nó trả tất giá trị từ bảng bên phải + giá trị tương ứng từ bảng bên trái (hoặc null) Ta có câu hỏi: liệt kê danh sách thơng tin Khoa kèm theo thơng tin sinh viên có theo học Để tìm thơng tin Sinh viên tương ứng với Khoa Khoa chưa có sinh viên Nghĩa thơng tin Khoa khơng có Sinh viên theo học Trang 54 Tài Liệu Lưu Hành Nội Bộ Th.sĩ Nguyễn Minh Đế Ôn tập Cơ Sở Dữ Liệu SELECT Khoa.MKH, Khoa.TenKH, SinhVien.MSV, SinhVien.HoSV, SinhVien.TenSV FROM Sinhvien right outer JOIN Khoa ON Khoa.MKH = SinhVien.MKH Kết câu SQL hình Hình 2.7.3 Kết có Khoa mà MKH = NN chưa có sinh viên theo học Hình 2.7.3: Kết truy vấn 2.7.5 Kết ngoại đủ-full outer join Phép kết ngoại đủ: kết hợp kết phép kết ngoại bên trái phép kết ngoại bên phải Những phép kết đưa ghi bảng liệu, lấp đầy dòng tương ứng bị thiếu phía NULLs SELECT SinhVien.MSV, Khoa.TenKH SinhVien.HoSV, SinhVien.TenSV, SinhVien.MKH, FROM Sinhvien FULL OUTER JOIN Khoa ON Khoa.MKH = SinhVien.MKH Một vài hệ sở liệu khơng hỗ trợ chức này, thay việc dùng phép kết ngoại bên trái bên phải phép hợp (union) SELECT Khoa.MKH, Khoa.TenKH, SinhVien.MSV, SinhVien.HoSV, SinhVien.TenSV FROM Sinhvien left outer JOIN Khoa ON Khoa.MKH = SinhVien.MKH UNION SELECT Khoa.MKH, Khoa.TenKH, SinhVien.MSV, SinhVien.HoSV, SinhVien.TenSV FROM Sinhvien right outer JOIN Khoa ON Khoa.MKH = SinhVien.MKH; 2.8 Thống kê liệu với GROUP BY Mệnh đề GROUP BY sử dụng câu lệnh SELECT nhằm phân hoạch dòng liệu bảng thành nhóm liệu nhóm liệu thực tính tốn giá trị thống kê tính tổng, tính giá trị trung bình… Các hàm nhóm sử dụng để tính giá trị thống kê cho tồn bảng nhóm liệu Chúng sử dụng cột danh sách chọn câu lệnh SELECT Trang 55 Tài Liệu Lưu Hành Nội Bộ Th.sĩ Nguyễn Minh Đế Ôn tập Cơ Sở Dữ Liệu xuất mệnh đề HAVING, không phép xuất mệnh đề WHERE SQL cung cấp hàm nhóm đây: Trong đó: - Hàm SUM, AVG làm việc với biểu thức số Hàm SUM, AVG, COUNT, MIN MAX bỏ qua giá trị NULL tính tốn - Hàm COUNT(*) không bỏ qua giá trị NULL 2.8.1 Thống kê tồn liệu Khi cần tính tốn giá trị thống kê toàn liệu, ta sử dụng hàm nhóm danh sách chọn câu lệnh SELECT Trong trường hợp này, danh sách chọn không sử dụng tên cột hay biểu thức ngồi hàm gộp Ví dụ: Để thống kê trung bình điểm thi tất môn học ta sử dụng câu lệnh sau: SELECT AVG(Diem) AS Tinh_Trung_Binh_Diem FROM KetQua Để thống kê tổng số sinh viên có ta sử dụng câu lệnh sau: SELECT COUNT(MSV) AS TongSinhVien FROM SinhVien 2.8.2 Thống kê liệu nhóm Trong trường hợp cần thực tính tốn giá trị thống kê nhóm liệu, ta sử dụng mệnh đề GROUP BY để phân hoạch liệu vào nhóm Các hàm nhóm sử dụng thực thao tác tính tốn nhóm cho biết giá trị thống kê theo nhóm liệu Ví dụ: Câu lệnh cho biết sĩ số sinh viên Khoa SELECT Khoa.MKH, TenKH, COUNT(MSV) AS SiSo FROM Khoa, Sinhvien WHERE Khoa.MKH = SinhVien MKH GROUP BY Khoa.MKH, TenKH Chú ý: - Biểu thức điều khiển việc phân nhóm liệu biểu thức phải liệt kê sau mệnh đề GROUP BY Trong trường hợp danh sách chọn câu lệnh SELECT có hàm nhóm biểu thức khơng phải đối số hàm nhóm biểu thức phải liệt kê đầy đủ mệnh đề GROUP BY, không câu lệnh không hợp lệ 2.8.3 Mệnh đề điều kiện hàm nhóm - HAVING Trang 56 Tài Liệu Lưu Hành Nội Bộ Th.sĩ Nguyễn Minh Đế Ôn tập Cơ Sở Dữ Liệu Mệnh đề HAVING mệnh đề đặt điều kiện lên nhóm liệu Mệnh đề HAVING thường khơng thực có nghĩa không sử dụng kết hợp với mệnh đềGROUP BY Một điểm khác biệt HAVING WHERE điều kiện WHERE khơng có hàm nhóm HAVING lại cho phép sử dụng hàm nhóm điều kiện Ví dụ: Đưa danh sách sinh viên có trung bình điểm thi lớn SELECT SinhVien.MSV, HoSV, TenSV, SUM(Diem*SoTiet)/SUM(SoTiet) FROM Sinhvien, MonHoc, KetQua WHERE SinhVien.MSV = KetQua.MSV AND MonHoc.MMH = KetQua MMH GROUP BY SinhVien.MSV, HoSV, TenSV HAVING SUM(Diem*SoTiet)/SUM(SoTiet) >=5 2.9 Truy vấn (Subquery) Truy vấn câu lệnh SELECT lồng vào bên câu lệnh SELECT, INSERT, UPDATE, DELETE bên truy vấn khác Loại truy vấn sử dụng để biểu diễn cho truy vấn điều kiện truy vấn liệu cần phải sử dụng đến kết truy vấn khác Ví dụ: Tìm tên cơng ty cung cấp mặt hàng H2 SELECT TenCongTy FROM CongTy, CungCap WHERE (CongTy.MaCongTy = CungCap.MaCongTy) AND (MaHang = ‘H2’) Hoặc viết sau: SELECT TenCongTy FROM CongTy WHERE MaCongTy IN (SELECT MaCongTy FROM CungCap WHERE MaHang = ‘H2’) Ví dụ: Câu lệnh sau liệt kê tên công ty chưa cung cấp mặt hàng nào: SELECT TenCongTy FROM CongTy WHERE MaCongTy NOT IN (SELECT MaCongTy FROM Cungcap) Hoặc viết sau: SELECT * FROM CongTy WHERE MaCongTy ALL (SELECT MaCongTy FROM CungCap) Ví dụ: Tìm cơng ty cung cấp mặt hàng màu đỏ SELECT TenCongTy FROM CongTy WHERE MaCongTy IN (SELECT MaCongTy FROM Cungcap WHERE MaHang IN (SELECT MaHang FROM HangHoa WHERE màu = “đỏ”)) Ví dụ: Câu lệnh sau liệt kê tên cơng ty chưa cấp mặt hàng có mã H1 SELECT TenCongTy FROM CongTy WHERE EXISTS (SELECT MaCongTy FROM Cungcap CC WHERE CC.MaCongTy=CongTy.MaCongTy AND MaHang ‘H1’) 2.10 Một số câu truy vấn thông dụng  Một số hàm sử dụng có hỗ trợ: Now(), year(), month(), day(), … Trang 57 Tài Liệu Lưu Hành Nội Bộ Th.sĩ Nguyễn Minh Đế  Ôn tập Cơ Sở Dữ Liệu Lấy thơng tin mơn học mà có số tiết cao SELECT TOP MONHOC.MMH, MONHOC.TenMH, MONHOC.SoTiet FROM MONHOC ORDER BY MONHOC.SoTiet DESC  Lấy thơng tin sinh viên mà có tuổi cao SELECT TOP SINHVIEN.MSV, HoSV + " " + TenSV AS Họvàtên, SINHVIEN.Phai, SINHVIEN.NgaySinh FROM SINHVIEN ORDER BY Year(Now())-Year([ngaysinh]) DESC  Lấy thông tin môn học mà sinh viên có MSV = “002” có điểm thi cao SELECT TOP monhoc.MMH, monhoc.tenmh, monhoc.sotiet, ketqua.diem FROM SinhVien INNER JOIN (monhoc INNER JOIN ketqua ON monhoc.MMH = ketqua.MMH) ON SinhVien.MSV = ketqua.MSV WHERE (((SinhVien.MSV)="002"))  Thống kê số sinh viên theo khoa SELECT KHOA.MKH, KHOA.TenKH, Count(SINHVIEN.masv) AS [Tổng số SV] FROM KHOA INNER JOIN SINHVIEN ON KHOA.MKH = SINHVIEN.MKH GROUP BY KHOA.MKH, KHOA.TenKH  Thống kê số môn thi sinh viên SELECT SINHVIEN.MSV, HoSV + " " + TenSV AS Họvàtên, SINHVIEN.NgaySinh, SINHVIEN.Phai, KHOA.TenKH, Count(MONHOC.MMH) AS [Tổng số môn thi] FROM MONHOC INNER JOIN (KHOA INNER JOIN (SINHVIEN INNER JOIN KETQUA ON (SINHVIEN.MSV = KETQUA.MSV) AND (SINHVIEN.MSV = KETQUA.MSV)) ON KHOA.MKH = SINHVIEN.MKH) ON MONHOC.MMH = KETQUA.MMH GROUP BY SINHVIEN.MSV, HoSV + " " + TenSV, SINHVIEN.NgaySinh, SINHVIEN.Phai, KHOA.TenKH; Bổ sung liệu Dữ liệu bảng thề dòng (bản nghi) Để bổ sung thêm dòng liệu vào bảng, ta sử dụng câu lệnh INSERT SQL cung cấp cách để thực thao tác bổ sung liệu cho bảng: Bổ sung dòng liệu với câu lệnh INSERT Bổ sung nhiều dòng liệu cách truy xuất liệu tù bảng liệu khác 3.1 Bổ sung dòng liệu với lệnh INSERT Cú pháp: INSERT () INTO [()] VALUES Trong câu lệnh INSERT, danh_sách_tên_cột sau tên bảng không cần thiết phải định giá trị trường cửa ghi định đầy đủ danh sách giá trị Trang 58 Tài Liệu Lưu Hành Nội Bộ Th.sĩ Nguyễn Minh Đế Ôn tập Cơ Sở Dữ Liệu Trong trường hợp này, thứ tự giá trị danh sách trị phải số lượng trường bảng cần bổ sung liệu phải tuân theo thứ tự trường bảng định nghĩa Ví dụ: Câu lệnh bồ sung thêm công ty vào quan hệ CongTy INSERT INTO CongTy VALUES (C12, ‘Hồ bình’, 600000000, ‘Thái ngun’, ’0280754379’) Trong trường hợp nhập giá trị cho số cột bảng, ta phải định danh sách cột cần nhập liệu sau tên bảng Khi cột không nhập liệu nhận giá trị mặc định (nếu có) nhận giá trị NULL (nếu cột cho phép nhận giá trị NULL) Nếu cột khơng có giá trị mặc định khơng chấp nhận giá trị NULL mà không nhập liệu, câu lệnh bị lỗi Ví dụ: Câu lệnh sau bổ sung ghi cho bảng CongTy INSERT INTO CongTy ( MaCongTy, TenCongTy, Diachi, NganSach) VALUES (C13, ‘Trần Anh’, ‘Hà nội’, 500000000) Khi trường SODT nhận giá trị NULL Câu lệnh viết sau: INSERT INTO CongTy VALUES (CI3, ‘Trần Anh’, 500000000, ‘Hà nội’, NULL) 3.2 Bổ sung nhiều dòng liệu từ bảng khác Một cách sử dụng khác câu lệnh INSERT sử dụng để bổ sung nhiều dòng liệu vào bảng, dòng liệu lấy từ bảng khác thông qua câu lệnh SELECT Ở cách này, giá trị liệu bổ sung vào bảng khơng chì định tường minh mà thay vào câu lệnh SELECT truy vấn liệu từ bảng khác Cú pháp câu lệnh có dạng sau: Cú pháp: INSERT INTO [()] Ví dụ: Giả sử ta có bảng LuuCongTy bao gồm trường MaCongTy, TenCongTy, NganSach, DiaChi Câu lệnh bổ sung vào bảng LuuCongTy dòng liệu có từ câu truy vấn SELECT INSERT INTO LuuCongTy SELECT MaCongTy, TenCongTy, NganSach, DiaChi FROM CongTy WHERE Diachi = ‘Hà nội’ Ghi chú: Kết câu lệnh SELECT phải có số cột với số cột định bảng đích phải tương thích kiểu liệu Cập nhật xóa liệu 4.1 Cập nhật Câu lệnh UPDATE SQL sử dụng để cập nhật liệu bảng Câu lệnh có cú pháp sau: UPDATE SET = [,…, = ] [FROM ] [WHERE ] Trang 59 Tài Liệu Lưu Hành Nội Bộ Th.sĩ Nguyễn Minh Đế Ôn tập Cơ Sở Dữ Liệu Sau UPDATE tên bảng cần cập nhật liệu Một câu lệnh UPDATE cập nhật liệu cho nhiều cột cách định danh sách tên cột biểu thức tương ứng sau từ khoá SET Mệnh đề WHERE câu lệnh UPDATE thường tược sử dụng đề định dòng liệu chịu tác động câu lệnh (nêu không định, phạm vi tác động câu lệnh tồn dòng bảng) Ví dụ: Cập nhật lại địa cơng ty có mã CT1 UPDATE TABLE CongTy SET DiaChi = ‘Thái nguyên’ WHERE MaCongTy = ‘CTl’ 4.2 Xóa liệu Để xoá liệu bảng, ta sử dụng câu lệnh DELETE Cú pháp câu lệnh sau: DELETE FROM [FROM ] [WHERE ] Trong đó, tên bàng cần xoá liệu định sau DELETE FROM Mệnh đề WHERE câu lệnh sử dụng để định điều kiện dòng liệu cần xố Nếu câu lệnh DELETE khơng có mệnh đề WHERE tồn dòng bảng bị xoá Mệnh đề FROM định danh sách bảng có liệu liên quan đến việc xố liệu Ví dụ: Câu lệnh sau xố khỏi bảng CONGTY cơng ty có địa Hà nội DELETE FROM CongTy WHERE DiaChi = ‘Hà nội’ Ví dụ: Xố khỏi bảng CongTy danh sách cơng ty cung cấp mặt có mã H1 DELETE FROM CongTy FROM Cungcap CongTy.MaCongTy AND MaHang= ‘H1’ WHERE Cungcap.MaCongTy = Ví dụ: Xố khỏi bảng CongTy cơng ty chưa cung cấp mặt hàng DELETE FROM CongTy WHERE MaCongTy NOT IN (SELECT DISTINCT MaCongTy FROM CungCap) Ví dụ: Xố tất thơng tin bảng Cungcap : DELETE FROM CungCap 4.3 Bài tập Bài 1: Cho CSDL gồm quan hệ: CC(MSNCC, TEN_CC, DCCC) MH(MSNCC, MSMH) Trong đó: MSNCC: Mã số người cung cấp; TEN CC: Tên người cung cấp; DCCC: Địa cung cấp; MSMH: Mã số mặt hàng a Hãy cho quan hệ liệu b Hãy biểu diễn u câu sau ngơn ngữ SQL - Tìm mã số người cung cấp Ql: mặt hàng Q2: không cung cấp mặt hàng Q3: cung cấp mặt hàng có MSMH 15 Q4: cung cấp mặt hàng khơng có mặt hàng có mã số 15 Trang 60 Tài Liệu Lưu Hành Nội Bộ Th.sĩ Nguyễn Minh Đế - Ôn tập Cơ Sở Dữ Liệu Mặt hàng có mã số 12, 13, 15 dược cung cấp nhà cung cấp địa nào? Lập danh sách gồm cột MSNCC, TEN_CC, MSMH) từ sở liệu Bài 2: Cho CSĐL gồm quan hệ sau: DAIHOC(TENTRUONG, HIEUTRUONG, DIACHI); KHOA(TENTRUONG, MSKHOA, TENKHOA, SOSINHVIEN); SINHVIEN (TENTRUONG, MSKHOA, MSSV, TENSV, DIACHISV); Trong đó: SOSINHVIEN: số lượng sinh Viên; MSKHOA: mã số khoa; TENSV: tên sinh viên; DIACHISV: địa sinh viên (hiểu quê quán) a b - Hãy cho quan hệ liệu Biểu diễn câu hỏi sau ngôn ngữ SQL Trường Đại học có khoa TINHOC Tổng số sinh viên học tất trường đại học Sinh viên học quê nhà (giả sử lấy tên tỉnh, thành phố) Khoa trường có số sinh viên cao nhất? - Cho biết tên hiệu trưởng trường có khoa TINHOC Trang 61 Tài Liệu Lưu Hành Nội Bộ Th.sĩ Nguyễn Minh Đế Ôn tập Cơ Sở Dữ Liệu Chương IV: Tối ưu hóa câu hỏi Giới thiệu chương: chương cung cấp kiến thức sau: - Các chiến lược tối ưu Các phép biến đổi tương đương Bài tập Trang 62 Tài Liệu Lưu Hành Nội Bộ Th.sĩ Nguyễn Minh Đế Ôn tập Cơ Sở Dữ Liệu Các chiến lược tối ưu 1.1 Thực phép chọn sớm Biến đổi câu hỏi để đưa phép chọn vào thực trước nhằm làm giảm bớt kích cỡ kết trung gian chi phí phải trả giá cho việc truy nhập nhớ thứ cấp lưu trữ nhớ nhỏ 1.2 Tổ hợp phép chọn với phép tích Đề thành phép kết nối Như biết, phép kết nối, đặc biệt phép kết nối thực “rẻ” thực phép tích Đề-các quan hệ Nếu kết tích Đề-các R x S đối số phép chọn phép chọn liên quan tới phép so sánh thuộc tính R S rõ ràng phép tích Đề-các phép kết nối 1.3 Tổ hợp dãy phép tính ngơi thành Một dãy phép phép chọn phép chiếu mà kết chúng phụ thuộc vào quan hệ độc lập nhóm phép lại 1.4 Tìm biểu thức chung biểu thức F = Fl x F2 ∪ Fl x F3 ⇒ F = Fl x (F2 ∪ F3) 1.5 Xử lý độc lập tệp trước xử lý chung CSDL Có thể xếp thiết lập tệp số cho quan hệ độc lập trước xử lý 1.6 Lựa chọn thứ tự thực phép toán Một cần chọn trình tự thực phép tính biểu thức chọn hai đối số phép hai ngơi cần tính tốn xem chi phí thực phép tính (thường số phép tính, thời gian, dung tích nhớ theo tỷ lệ kích cỡ quan hệ…) Từ có chi phí phải trả cho cách khác để thực câu hỏi Các phép biến đổi tương đương 2.1 Phép giao hoán Nếu R1 R2 hai quan hệ, F điều kiện thuộc tính Rl R2 Rl*R2 ≡ R2* v Rl; Rl x R2 ≡ R2 x Rl 2.2 Phép kết hợp Nếu R1, R2 R3 quan hệ, Fl F2 biểu thức điều kiện (Rl x R2) x R3 ≡ Rl x (R2 x R3); 2.3 Xử lý dãy phép toán chọn σ F1(σ F2(σ F3…(σ F1n(r))) ≡ σ F1^F2^F3^…^Fn(r) 2.4 Xử lý dãy phép toán chiếu Nếu có: A1 A2…An ⊆ B1 B2…Bn Thì Π A1A2 An( Π B1B2 Bn(R)) ≡ Π A1A2 An(R) 2.5 Trang 63 Giao hoán phép chọn phép chiếu Tài Liệu Lưu Hành Nội Bộ Th.sĩ Nguyễn Minh Đế Ôn tập Cơ Sở Dữ Liệu σ F( Π A1A2 An(R)) ≡ Π A1A2 An(σ F(R)) 2.6 Giao hoán phép chọn phép tích Đề -các - Nếu điều kiện chọn liên quan đến R1 thì: σ F(R1 x R2) ≡ σ F1(Rl) x (R2) - Nếu F = Fl ∧ F2 Fl liên quan đến Rl; F2 liên quan đến R2 ; F2 liên quan đến R2 thì: σ F(Rl x R2) ≡ σ F1(Rl) x σ F2(R2) - Nếu F1 liên quan đến Rl, F2 liên quan đến Rl R2 σ F(Rl x R2) ≡ σ F1(σ F1(Rl) x R2) 2.7 Giao hoán phép chọn phép hợp σ F(Rl ∪ R2) ≡ σ F(Rl) ∪ σ F(R2) 2.8 Giao hoán phép chọn phép trừ σ F(Rl - R2) ≡ σ F(Rl) - σ F(R2) 2.9 Giao hoán phép chiếu phép tích Đề Nếu thuộc tính Al, A2,…An ∈ Rl; Bl, B2,…Bn ∈ R2 Ta có: Π A1A2 An, B1B2…BN(Rl x R2) ≡ Π A1A2 An(Rl) x Π B1B2 Bn(R2) 2.10 Giao hoán phép chiếu phép hợp Π A1A2 An(Rl ∪ R2) ≡ Π A1A2 An(Rl) ∪ Π A1A2 An(R2) Ví dụ: Cho biết tên công ty cung cấp mặt hàng màu đỏ *Dùng đại số quan hệ Π TenCongTy(σ mau =“đỏ”(σCongTy.MaCongTy=CungCap.MaCongTy(σ CungCap.MaHang=HangHoa.MaHang(congty x hanghoa x cungcap)))) - Đẩy phép chọn lên trước Π TenCongTy(σ mau = “đỏ”(σ CongTy.MaCongTy σCungCap.MaHang=HangHoa.MaHang(HangHoa x Cungcap))) = CungCap.MaCongTy (CongTy - Chuyển phép chọn phép tích Đề thành phép kết nối Π TenCongTy(σ mau=“đỏ” (σ CongTy.MaCongTy = CungCap.MaCongTy (CongTy x (HangHoa * Cungcap))) - Chuyển phép chọn phép tích Đề thành phép kết nối Π TenCongTy(σ mau=“đỏ”(CongTy * HangHoa * CungCap)) MaCongTy MaHang - Đẩy phép chọn lên trước Π TenCongTy(CongTy * (σ mau=“đỏ”(HangHoa) * CungCap)) *Dùng SQL - Không tối ưu: Trang 64 Tài Liệu Lưu Hành Nội Bộ x Th.sĩ Nguyễn Minh Đế Ôn tập Cơ Sở Dữ Liệu SELECT TenCongTy FROM Congty, HangHoa, CungCap WHERE (CongTy.MaCongTy = CungCap.MaCongTy) AND (CungCap.MaHang = HangHoa.MaHang) AND (HangHoa.Mau = “Đỏ”) - Tối ưu : SELECT TenCongTy FROM CongTy WHERE MaCongTy IN ( SELECT MaCongTy FROM Cungcap WHERE MaHang lN ( SELECT MaHang FROM HangHoa WHERE Mau = “Đỏ”))) Khái quát bước thuật toán tối ưu hoá kinh nghiệm tiêu biểu 3.1 Tách phép chọn liên kết thành chuỗi phép chọn riêng lẻ Bước dựa qui tắc tương đương 3.2 Chuyển phép chọn xuống đại số để thực trước Bước sử dụng tính chất giao hốn tính chất phân phối phép chọn thể qui tắc tương đương Chăng hạn, biến σ Ɵ( r |>< | s) thành σƟ( r) |>< | s r |>< |σƟ (s) Thực phép chọn dựa giá trị sớm giảm chi phí xếp hồ lẫn kết trung gian 3.3 Xác định phép chọn phép kết nối Để đưa biểu thức quan hệ nhỏ nhất, nghĩa đưa số liệu Sử dụng tính chất kết hợp phép toán |>

Ngày đăng: 26/05/2018, 15:55

TỪ KHÓA LIÊN QUAN

w