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

GIÁO TRÌNH NGÔN NGỮ SQL

177 545 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

Cấu trúc

  • LỜI MỞ ĐẦU

  • CHƯƠNG I: SQL CƠ BẢN

    • 1.1 CÁC TRUY VẤN ĐƠN GIẢN TRONG SQL.

      • 1.1.1 Phép chiếu trong SQL

      • 1.1.2 Phép chọn trong SQL

      • 1.1.3 So sánh các xâu

      • 1.1.4 Ngày tháng và thời gian

      • 1.1.5 Các giá trị NULL và các so sánh bao hàm NULL.

      • 1.1.6 Giá trị lôgic UNKNOWN

      • 1.1.7 Sắp thứ tự dữ liệu ra

      • 1.1.8 Các hàm thông dụng trong SQL

    • 1.2 CÁC TRUY VẤN BAO GỒM NHIỀU HƠN MỘT QUAN HỆ

      • 1.2.1 Tích và nối trong SQL

      • 1.2.2 Làm rõ nghĩa các thuộc tính

      • 1.2.3 Các biến bộ

      • 1.2.4 Phép hợp, phép giao, phép trừ của các truy vấn

    • 1.3 CÁC TRUY VẤN CON

      • 1.3.1 Các truy vấn con tạo ra các giá trị vô hướng

      • 1.3.2 Các điều kiện có bao hàm các quan hệ

      • 1.3.3 Các điều kiện có bao hàm các bộ

      • 1.3.4 Các truy vấn con tương quan với nhau

      • 1.3.5 Các truy vấn con trong mệnh đề FROM

      • 1.3.6 Các biểu thức nối của SQL

      • 1.3.7 Nối tự nhiên (Natural Join)

      • 1.3.8 Nối ngoài

    • 1.4 CÁC PHÉP TOÁN QUAN HỆ ĐẦY ĐỦ

      • 1.4.1 Loại bỏ trùng lặp

      • 1.4.2 Trùng lặp trong phép hợp, phép giao và phép trừ

      • 1.4.3 Nhóm và sự kết hợp trong SQL

      • 1.4.4 Các phép toán nhóm

      • 1.4.5 Nhóm

      • 1.4.6 Các mệnh đề HAVING

    • 1.5 SỬA ĐỔI CƠ SỞ DỮ LIỆU

      • 1.5.1 Chèn

      • 1.5.2 Xóa

      • 1.5.3 Cập nhật

    • 1.6 ĐỊNH NGHĨA MỘT LƯỢC ĐỒ QUAN HỆ TRONG SQL

      • 1.6.1 Các kiểu dữ liệu

      • 1.6.2 Các khai báo bảng đơn giản

      • 1.6.4 Các giá trị ngầm định

      • 1.6.5 Các chỉ số

      • 1.6.6 Nhập môn về việc lựa chọn các chỉ số

    • 1.7 KHUNG NHÌN (VIEW)

      • 1.7.1 Khai báo các khung nhìn

      • 1.7.2 Truy vấn các khung nhìn

      • 1.7.3 Đặt tên lại các thuộc tính

      • 1.7.4 Sửa đổi các khung nhìn

      • 1.7.5 Giải thích các truy vấn có chứa các khung nhìn

    • 1.8 TỔNG KẾT CHƯƠNG I

    • MỘT SỐ BÀI TẬP

  • CHƯƠNG II: CÁC RÀNG BUỘC VÀ CÁC TRIGGER

    • 2.1 KHÓA VÀ KHÓA NGOÀI

      • 2.1.1 Mô tả khoá chính

      • 2.1.2 Các khoá được mô tả với UNIQUE

      • 2.1.3 Làm có hiệu lực các ràng buộc khoá

      • 2.1.4 Mô tả các ràng buộc khoá ngoài

      • 2.1.5 Duy trì toàn vẹn tham chiếu

      • 2.1.6 Làm chậm việc kiểm tra ràng buộc.

    • 2.2 CÁC RÀNG BUỘC TRÊN CÁC THUỘC TÍNH VÀ CÁC BỘ

      • 2.2.1 Các ràng buộc Not-Null

      • 2.2.2 Các ràng buộc kiểm tra (CHECK) dựa trên thuộc tính

      • 2.2.3 Các ràng buộc kiểm tra (CHECK)dựa trên bộ giá trị.

    • 2.3 SỬA ĐỔI CÁC RÀNG BUỘC

      • 2.3.1 Đặt tên cho các ràng buộc

      • 2.3.2 Sửa đổi các ràng buộc trên các bảng

    • 2.4 CÁC RÀNG BUỘC MỨC LƯỢC ĐỒ VÀ CÁC TRIGGER

    • 2.4.1 Các khẳng định (assertion)

    • So sánh các ràng buộc

      • 2.4.2 Trigger

    • 2.5 TỔNG KẾT CHƯƠNG II

    • MỘT SỐ BÀI TẬP

  • CHƯƠNG III: LẬP TRÌNH

    • 3.1 SQL TRONG MÔI TRƯỜNG LẬP TRÌNH

      • 3.1.1 Vấn đề trở ngại không phù hợp

      • 3.1.2 Giao diện ngôn ngữ chủ /SQL

      • 3.1.3 Phần khai báo (DECLARE)

      • 3.1.4 Sử dụng các biến dùng chung.

      • 3.1.5 Các câu lệnh Select đơn hàng

      • 3.1.6 Con trỏ

      • 3.1.7 Cập nhật bằng con trỏ

      • 3.1.8 Bảo vệ khỏi sự cập nhật đồng thời

      • 3.1.9 Con trỏ cuộn (Scrolling Cursor)

      • 3.1.10 SQL động

    • 3.2 CÁC THỦ TỤC ĐƯỢC LƯU GIỮ (stored procedure)

      • 3.2.1 Tạo các hàm và các thủ tục PSM

      • 3.2.2 Một vài dạng câu lệnh đơn giản trong PSM

      • 3.2.3 Các câu lệnh rẽ nhánh.

      • 3.2.4 Các truy vấn trong PSM

      • 3.2.5 Vòng lặp trong PSM

      • 3.2.6 Vòng lặp for

      • 3.2.7 Những câu lệnh lặp khác

    • 3.3 MÔI TRƯỜNG SQL

      • 3.3.1 Môi trường

      • 3.3.2 Lược đồ

      • 3.3.4 Client và Server trong môi trường SQL

      • 3.3.5 Kết nối

      • 3.3.6 Phiên (Session)

      • 3.3.7 Modules

    • 3.4 SỬ DỤNG GIAO DIỆN MỨC GỌI (call-level interface)

      • 3.4.1 Nhập môn SQL/CLI

      • 3.4.2 Xử lý các lệnh

      • 3.4.3 Lấy dữ liệu ra từ kết quả truy vấn

    • 3.5 GIAO TÁC TRONG SQL

      • 3.5.1 Xếp hàng theo thứ tự

      • 3.5.2 Atomicity

      • 3.5.3 Giao tác (Transaction)

      • 3.5.4 Read-Only Transaction

      • 3.5.5 Dirty Read

      • 3.5.6 Các mức cô lập khác

    • 3.6 AN TOÀN VÀ CẤP QUYỀN TRONG SQL

      • 3.6.1 Các quyền

      • 3.6.2 Tạo các quyền

      • 3.6.3 Tiến trình kiểm tra đặc quyền

      • 3.6.4 Cấp các quyền

      • 3.6.5 Biểu đồ grant

      • 3.6.6 Hủy bỏ các quyền

    • 3.7 TỔNG KẾT CHƯƠNG III

Nội dung

ỦY BAN NHÂN DÂN THÀNH PHỐ HÀ NỘI SỞ BƯU CHÍNH VIỄN THÔNG HÀ NỘI GIÁO TRÌNH NGÔN NGỮ SQL (Mã số giáo trình: 3CD3) HÀ NỘI Thuvientailieu.net.vn LỜI MỞ ĐẦU Ngôn ngữ SQL (Structured Query Language) sử dụng hầu hết hệ quản trị sở liệu để truy vấn sửa đổi sở liệu Ngôn ngữ SQL hỗ trợ truy vấn dựa phép toán đại số quan hệ, đồng thời chứa lệnh sửa đổi sở liệu mô tả lược đồ sở liệu Như vậy, SQL vừa ngôn ngữ thao tác liệu, vừa ngôn ngữ định nghĩa liệu Ngoài SQL tiêu chuẩn hoá nhiều lệnh sở liệu khác Có nhiều phiên khác SQL Trước tiên, có ba chuẩn Đó ANSI (American National Standards Institute) SQL Sau đến năm 1992, chuẩn SQL-92 đời gọi SQL2 Gần nhất, chuẩn SQL-99 (trước gọi SQL3) mở rộng SQL2 với đặc trưng quan hệ - đối tượng số khả khác Ngoài có nhiều phiên SQL nhà bán hệ quản trị sở liệu sản xuất Các phiên có tất khả chuẩn ANSI nguyên gốc chúng phù hợp với mở rộng SQL tính chất chuẩn SQL-99 Trong giáo trình trình bày dựa chuẩn SQL-99 Giáo trình gồm ba chương: Chương 1: SQL bản, trình bày truy vấn bảng sở liệu, kiểu liệu SQL cách tạo sở liệu đơn giản SQL Chương 2: Các ràng buộc trigger Chương trình bày loại ràng buộc: ràng buộc miền, ràng buộc khóa, ràng buộc toàn vẹn thực thể, ràng buộc toàn vẹn tham chiếu, ràng buộc khác cách thể chúng SQL Chương 3: Lập trình với SQL, trình bày phương pháp lập trình SQL: lập trình nhúng, SQL động, hàm thủ tục PSM, sử dụng giao diện gọi Ngoài ra, chương đề cập đến vấn đề an toàn sở liệu SQL Cuối chương có tổng kết vấn đề trình bày chương số tập Để hiểu giáo trình bạn đọc cần phải có kiến thức sở liệu quan hệ Do hạn chế thời gian kinh nghiệm, chắn giáo trình nhiều thiếu sót Mong bạn đọc góp ý, phê bình Chúng xin cảm ơn trước hứa tiếp thu để hoàn thiện giáo trình Thuvientailieu.net.vn - Tên môn học: Ngôn ngữ SQL - Mã số môn học: 3CD3 - Thời gian: 45 tiết (lí thuyết + thực hành) - Mục tiêu: Hướng dẫn học viên sử dụng thành thạo ngôn ngữ truy vấn SQL - Những kiến thức cần trang bị trước: Cơ sở liệu quan hệ - Nội dung môn học: Chương I: CƠ BẢN VỀ SQL Chương II: CÁC RÀNG BUỘC VÀ TRIGGER Chương III: LẬP TRÌNH - Đối tượng học: Các lập trình viên - Biên soạn: Bộ môn Các hệ thống thông tin, Khoa Công nghệ thông tin, Trường ĐH Công Nghệ, ĐHQG Hà Nội Thuvientailieu.net.vn LỜI MỞ ĐẦU .2 CHƯƠNG I: SQL CƠ BẢN 1.1 CÁC TRUY VẤN ĐƠN GIẢN TRONG SQL 1.1.1 Phép chiếu SQL 1.1.2 Phép chọn SQL 11 1.1.3 So sánh xâu 13 1.1.4 Ngày tháng thời gian .14 1.1.5 Các giá trị NULL so sánh bao hàm NULL .15 1.1.6 Giá trị lôgic UNKNOWN 16 1.1.7 Sắp thứ tự liệu 17 1.1.8 Các hàm thông dụng SQL 18 1.2 CÁC TRUY VẤN BAO GỒM NHIỀU HƠN MỘT QUAN HỆ .20 1.2.1 Tích nối SQL 20 1.2.2 Làm rõ nghĩa thuộc tính .21 1.2.3 Các biến 22 1.2.4 Phép hợp, phép giao, phép trừ truy vấn 23 1.3 CÁC TRUY VẤN CON 25 1.3.1 Các truy vấn tạo giá trị vô hướng .25 1.3.2 Các điều kiện có bao hàm quan hệ .27 1.3.3 Các điều kiện có bao hàm .27 1.3.4 Các truy vấn tương quan với .28 1.3.5 Các truy vấn mệnh đề FROM 30 1.3.6 Các biểu thức nối SQL 31 1.3.7 Nối tự nhiên (Natural Join) 32 1.3.8 Nối 33 1.4 CÁC PHÉP TOÁN QUAN HỆ ĐẦY ĐỦ 34 1.4.1 Loại bỏ trùng lặp 34 1.4.2 Trùng lặp phép hợp, phép giao phép trừ 34 1.4.3 Nhóm kết hợp SQL 36 1.4.4 Các phép toán nhóm 36 1.4.5 Nhóm 37 1.4.6 Các mệnh đề HAVING .40 1.5 SỬA ĐỔI CƠ SỞ DỮ LIỆU .41 1.5.1 Chèn 41 1.5.2 Xóa .43 1.5.3 Cập nhật 44 1.6 ĐỊNH NGHĨA MỘT LƯỢC ĐỒ QUAN HỆ TRONG SQL 45 1.6.1 Các kiểu liệu 45 Thuvientailieu.net.vn 1.6.2 Các khai báo bảng đơn giản .46 1.6.4 Các giá trị ngầm định 47 1.6.5 Các số 48 1.6.6 Nhập môn việc lựa chọn số .49 1.7 KHUNG NHÌN (VIEW) 50 1.7.1 Khai báo khung nhìn 50 1.7.2 Truy vấn khung nhìn 51 1.7.3 Đặt tên lại thuộc tính 52 1.7.4 Sửa đổi khung nhìn 53 1.7.5 Giải thích truy vấn có chứa khung nhìn 56 1.8 TỔNG KẾT CHƯƠNG I 59 MỘT SỐ BÀI TẬP 61 CHƯƠNG II: CÁC RÀNG BUỘC VÀ CÁC TRIGGER 65 2.1 KHÓA VÀ KHÓA NGOÀI .66 2.1.1 Mô tả khoá 66 2.1.2 Các khoá mô tả với UNIQUE 67 2.1.3 Làm có hiệu lực ràng buộc khoá 68 2.1.4 Mô tả ràng buộc khoá 69 2.1.5 Duy trì toàn vẹn tham chiếu .71 2.1.6 Làm chậm việc kiểm tra ràng buộc 73 2.2 CÁC RÀNG BUỘC TRÊN CÁC THUỘC TÍNH VÀ CÁC BỘ 76 2.2.1 Các ràng buộc Not-Null .76 2.2.2 Các ràng buộc kiểm tra (CHECK) dựa thuộc tính 77 2.2.3 Các ràng buộc kiểm tra (CHECK)dựa giá trị 79 2.3 SỬA ĐỔI CÁC RÀNG BUỘC 80 2.3.1 Đặt tên cho ràng buộc 80 2.3.2 Sửa đổi ràng buộc bảng 80 2.4 CÁC RÀNG BUỘC MỨC LƯỢC ĐỒ VÀ CÁC TRIGGER 81 2.4.1 Các khẳng định (assertion) .82 So sánh ràng buộc .85 2.4.2 Trigger .85 2.5 TỔNG KẾT CHƯƠNG II 92 MỘT SỐ BÀI TẬP 93 CHƯƠNG III: LẬP TRÌNH .96 3.1 SQL TRONG MÔI TRƯỜNG LẬP TRÌNH .96 3.1.1 Vấn đề trở ngại không phù hợp 97 3.1.2 Giao diện ngôn ngữ chủ /SQL 98 3.1.3 Phần khai báo (DECLARE) .99 3.1.4 Sử dụng biến dùng chung 100 3.1.5 Các câu lệnh Select đơn hàng 102 Thuvientailieu.net.vn 3.1.6 Con trỏ 103 3.1.7 Cập nhật trỏ .107 3.1.8 Bảo vệ khỏi cập nhật đồng thời 108 3.1.9 Con trỏ cuộn (Scrolling Cursor) .110 3.1.10 SQL động 111 3.2 CÁC THỦ TỤC ĐƯỢC LƯU GIỮ (stored procedure) 113 3.2.1 Tạo hàm thủ tục PSM .114 3.2.2 Một vài dạng câu lệnh đơn giản PSM 115 3.2.3 Các câu lệnh rẽ nhánh .117 3.2.4 Các truy vấn PSM 119 3.2.5 Vòng lặp PSM 120 3.2.6 Vòng lặp for 123 3.2.7 Những câu lệnh lặp khác 124 3.3 MÔI TRƯỜNG SQL .128 3.3.1 Môi trường 128 3.3.2 Lược đồ .130 3.3.4 Client Server môi trường SQL 132 3.3.5 Kết nối 132 3.3.6 Phiên (Session) 133 3.3.7 Modules 134 3.4 SỬ DỤNG GIAO DIỆN MỨC GỌI (call-level interface) 135 3.4.1 Nhập môn SQL/CLI 135 3.4.2 Xử lý lệnh 138 3.4.3 Lấy liệu từ kết truy vấn 140 3.5 GIAO TÁC TRONG SQL 142 3.5.1 Xếp hàng theo thứ tự 142 3.5.2 Atomicity 145 3.5.3 Giao tác (Transaction) 147 3.5.4 Read-Only Transaction .148 3.5.5 Dirty Read 150 3.5.6 Các mức cô lập khác 153 3.6 AN TOÀN VÀ CẤP QUYỀN TRONG SQL 154 3.6.1 Các quyền 155 3.6.2 Tạo quyền 157 3.6.3 Tiến trình kiểm tra đặc quyền 158 3.6.4 Cấp quyền 159 3.6.5 Biểu đồ grant 161 3.6.6 Hủy bỏ quyền .162 3.7 TỔNG KẾT CHƯƠNG III 167 Thuvientailieu.net.vn Thuvientailieu.net.vn CHƯƠNG I: SQL CƠ BẢN Giống ngôn ngữ bậc cao khác, ngôn ngữ SQL xây dựng dựa chữ cái, chữ số, ký tự (dấu phép toán, dấu ngăn, dấu cách ký tự đặc biệt) tập từ khóa Một lệnh SQL viết dòng nhiều dòng, kết thúc dấu chấm phảy “;” Ngôn ngữ SQL chia thành ba nhóm: - Ngôn ngữ định nghĩa liệu dùng để mô tả cấu trúc sở liệu (các bảng, khung nhìn, thuộc tính, mục, ) - Ngôn ngữ thao tác liệu cho phép thực thao tác sở liệu cập nhật sở liệu truy vấn lấy thông tin từ sở liệu - Ngôn ngữ kiểm soát liệu bao gồm lệnh dùng để quản lý giao tác, quyền truy cập liệu, kết nối với server Ngôn ngữ SQL sử dụng theo hai kiểu: kiểu trực tiếp lập trình SQL trực tiếp cho phép thực truy vấn nhận kết tức khắc SQL lập trình cho phép sử dụng SQL chương trình viết ngôn ngữ ngôn ngữ lập trình bậc cao khác (C, Pascal, ), viết chương trình Trong chương làm quen với lệnh SQL Các lệnh minh họa dựa sở liệu “CÔNGTY” cho phần PHỤLỤC giáo trình 1.1 CÁC TRUY VẤN ĐƠN GIẢN TRONG SQL Giả sử muốn đưa nhân viên đơn vị có MãsốĐV = 5, viết SQL sau SELECT * FROM NHÂNVIÊN WHERE MãsốĐV = ; Truy vấn trình bày dạng đặc trưng select-from-where hầu hết truy vấn SQL • Mệnh đề FROM cho quan hệ quan hệ mà truy vấn tham chiếu đến Trong ví dụ trên, quan hệ NHÂNVIÊN Thuvientailieu.net.vn • Mệnh đề WHERE điều kiện, giống điều kiện chọn đại số quan hệ Các phải thoả mãn điều kiện chọn để phù hợp với truy vấn Điều kiện thuộc tính MãsốĐV phải có giá trị Tất đáp ứng điều kiện thoả mãn điều kiện chọn • Mệnh đề SELECT nói thuộc tính đáp ứng điều kiện đưa phần câu trả lời Dấu * ví dụ tất thuộc tính đưa Kết truy vấn quan hệ chứa tất tiến trình sản xuất Một cách giải thích truy vấn xem xét giá trị quan hệ kể mệnh đề FROM Điều kiện mệnh đề WHERE áp dụng cho Chính xác hơn, thuộc tính kể mệnh đề WHERE thay giá trị thuộc tính Sau đó, điều kiện tính, thành phần xuất mệnh đề SELECT sản xuất câu trả lời 1.1.1 Phép chiếu SQL a) Chúng ta chiếu quan hệ truy vấn SQL sản xuất lên số thuộc tính Để làm điều đó, vị trí dấu * mệnh đề SELECT ta liệt kê số thuộc tính quan hệ mệnh đề FROM Kết chiếu lên thuộc tính liệt kê Ví dụ 1: Đưa Họđệm Tên nhân viên đơn vị có mã số Chúng ta viết: SELECT Họđệm, Tên FROM NHÂNVIÊN WHERE MãsốĐV =5; Kết bảng có hai cột, có tên Họđệm Tên Các bảng cặp, cặp gồm Họđệm Tên nhân viên, nhân viên đơn vị có mã số Bảng kết có dạng sau: Họđệm Lê Tên Vân Thuvientailieu.net.vn Trần Đức Nam Nguyễn Sơn Vũ Hương Giang b) Đôi muốn tạo quan hệ với đầu cột khác với thuộc tính quan hệ kể mệnh đề FROM Chúng ta viết sau tên thuộc tính từ khoá AS bí danh (alias), bí danh trở thành đầu cột quan hệ kết Từ khoá AS tuỳ chọn, nghĩa viết bí danh sau tên thuộc tính mà không cần phải có từ khoá AS Ví dụ 2: Ta sửa đổi ví dụ để đưa quan hệ có thuộc tính Họnhânviên Tênnhânviên thay cho vị trí Họđệm Tên sau: SELECT Họđệm AS Họnhânviên, Tên AS Tênnhânviên FROM NHÂNVIÊN WHERE MãsốĐV = ; Bảng kết có dạng sau: Họnhânviên Tên nhânviên Lê Vân Trần Đức Nguyễn Nam Sơn Vũ Hương Giang c) Một tuỳ chọn khác mệnh đề SELECT sử dụng biểu thức vị trí thuộc tính Ví dụ 3: Chúng ta muốn đưa Họđệm, Tên lương sau tăng 10% nhân viên đơn vị có mã số Ta viết: SELECT Họđệm, Tên, Lương*1.1 AS Lươngmới FROM NHÂNVIÊN WHERE MãsốĐV =5; Kết Họđệm Lê Vân Tên Lươngmới 3300 10 Thuvientailieu.net.vn quyền bị hủy bỏ cấp Chính xác hơn, người sử dụng U hủy bỏ quyền P người sử dụng V dựa quyền Q thuộc vào U loại bỏ cạnh từ U/Q đến V/P biểu đồ cấp quyền Bây đỉnh không truy cập từ đỉnh chủ bị loại bỏ Một lệnh kết thúc RESTRICT, điều có nghĩa lệnh hủy thực luật lan truyền mô tả mục trước dẫn đến việc loại bỏ quyền quyền bị hủy chuyển cho quyền khác Hoa SELECT on Movie ** Hoa SELECT on Studio ** Hoa INSERT on Movie ** Thanh SELECT on Movie * Nam SELECT on Movie * Nam SELECT on Studio * Thanh SELECT on Studio * Nam INSERT on Studio * Huy SELECT(name) on Studio Hoa INSERT on Studio ** Thanh INSERT on Studio * Huy SELECT on Movie Huy SELECT on Studio Hình 3.26 Biểu đồ cấp quyền 163 Thuvientailieu.net.vn Huy INSERT on Studio Việc thay REVOKE REVOKE GRANT OPTION FOR phép, trường hợp quyền cốt lõi tùy chọn cấp chúng cho người khác bị loại bỏ Chúng ta sửa đổi đỉnh, định hướng lại cạnh, tạo đỉnh để phản ánh thay đổi người sử dụng bị ảnh hưởng Dạng REVOKE thực với CASCADE RESTRICT Ví dụ 3.38: Tiếp tục với ví dụ 3.36, giả sử Hoa hủy bỏ quyền mà cấp cho Thanh với lệnh: REVOKE SELECT, INSERT ON Studio FROM CASCADE ; REVOKE SELECT ON Movie FROM CASCADE ; Chúng ta loại bỏ cạnh hình 3.26 từ quyền Hoa đến quyền tương ứng Thanh Bởi CASCADE quy định, phải nhìn xem có quyền đến từ quyền có hai dấu Khảo sát hình 8.26 thấy quyền Thanh không đến từ đỉnh có hai dấu Cũng vậy, quyền INSERT vào Studio Huy không đến Vậy không bỏ quyền Thanh khỏi biểu đồ cấp quyền mà bỏ quyền INSERT Huy Chú ý không loại bỏ quyền SELECT Movie Studio Huy quyền INSERT(name) Studio Huy quyền đến từ quyền sở hữu Hoa thông qua quyền Nam Biểu đồ cấp quyền kết hình 3.27 164 Thuvientailieu.net.vn Hoa SELECT on Movie ** Hoa INSERT on Movie ** Hoa SELECT on Studio ** Hoa INSERT on Studio ** Nam SELECT on Movie * Nam SELECT on Studio * Hình 3.27: Biểu đồ cấp quyền sau loại bỏ quyền Thanh Nam INSERT on Studio * Huy SELECT(name) on Studio Huy SELECT on Movie Huy SELECT on Studio Ví dụ 3.39: Có vài điều tinh tế mà minh họa ví dụ trừu tượng Đầu tiên, hủy bỏ quyền tổng quát p, chúng 165 Thuvientailieu.net.vn ta không hủy bỏ quyền trường hợp riêng p Ví dụ, xét dãy bước sau đây, người sử dụng U chủ quan hệ R cấp quyền INSERT quan hệ R cho V, cấp quyền INSERT(A) quan hệ U GRANT INSERT ON R TO V U GRANT INSERT(A) ON R TO V U REVOKE INSERT ON R FROM V RESTRICT Khi U hủy bỏ INSERT khỏi V, quyền INSERT(A) Các biểu đồ cấp quyền sau bước (2) bước (3) cho hình 3.28 U INSERT on R ** U INSERT on R ** V INSERT on R V INSERT( A) on R V INSERT( A) on R Hình 3.28 Hủy bỏ quyền tổng quát để lại quyền riêng Chú ý sau bước (2) có hai đỉnh rời cho hai quyền khác V Cũng ý tùy chọn RESTRICT bước (3) không ngăn ngừa hủy bỏ V không cấp cấp tùy chọn cho người sử dụng khác Trên thực tế, V cấp quyền V nhận quyền tùy chọn cấp quyền Ví dụ 3.40 Bây xét ví dụ tương tự U cấp cho V quyền p với tùy chọn cấp quyền sau hủy tùy chọn cấp quyền Trong trường hợp này, phải thay đổi đỉnh V để phản ánh việc tùy chọn cấp quyền cấp quyền p V thực phải hủy bỏ cách loại cạnh từ đỉnh V/p Dãy bước sau: 166 Thuvientailieu.net.vn U GRANT p TO V WITH GRANT OPTION V GRANT p TO W U REVOKE OPTION FOR p FROM V CASCADE Trong bước (1), U cấp quyền p cho V với tùy chọn cấp quyền Trong bước (2), V sử dụng tùy chọn cấp quyền để cấp p cho W Biểu đồ đưa hình 3.29(a) Sau bước (3), U hủy bỏ tùy chuyện cấp quyền quyền p từ V không hủy bỏ quyền p Như vậy, dấu bị loại bỏ khỏi đỉnh V p Tuy hiên, đỉnh dấu * có cạnh đỉnh nguồn việc cấp quyền Vì phải loại bỏ cạnh từ đỉnh V/p đến đỉnh W/p Bây đỉnh W/p đường đến từ đỉnh có hai dấu biểu thị nguồn gốc quyền p Kết đỉnh W/p bị loại bỏ khỏi biểu đồ Tuy nhiên đỉnh V/p bị bỏ dấu biểu thị tùy chọn cấp quyền Biểu đồ cấp quyền kết cho hình 3.29(b) U p ** Sau bước (2) V p * U p ** W p V p Sau bước (3) Hình 3.29 Hủy bỏ tùy chọn cấp quyền để lại quyền 3.7 TỔNG KẾT CHƯƠNG III • SQL nhúng: Thay sử dụng giao diện truy vấn chung để biểu thị truy vấn sửa đổi, việc viết chương trình nhúng truy vấn SQL vào ngôn ngữ chủ thích hợp thường hiệu Một tiền dịch chuyển đổi lệnh SQL nhúng thành lời gọi hàm thích hợp ngôn ngữ chủ • Trở ngại không phù hợp: Mô hình liệu SQL hoàn toàn khác với mô hình liệu ngôn ngữ chủ thông thường Vì vậy, thông tin trao đổi SQL ngôn ngữ chủ thông qua biến dùng chung biểu diễn thành phần phần SQL chương trình 167 Thuvientailieu.net.vn • Con trỏ: Một trỏ biến SQL giá trị quan hệ Việc kết nối ngôn ngữ chủ SQL làm dễ dàng nhờ có trỏ với quan hệ thành phần lấy đưa vào biến dùng chung xử lý cách sử dụng ngôn ngữ chủ • SQL động: Thay nhúng lệnh cụ thể SQL vào chương trình ngôn ngữ chủ, chương trình chủ tạo chuỗi ký tự hệ thống SQL dịch lệnh SQL thực • Các module lưu giữ thường trực: Chúng ta tạo tập hợp thủ tục hàm phần lược đồ sở liệu Chúng viết ngôn ngữ đặc biệt có tất cấu trúc kiểm tra quen biết lệnh SQL Nó gọi từ SQL nhúng thông qua giao diện truy vấn chung • Môi trường sở liệu: Một cài đặt sử dụng hệ quản trị sở liệu SQL tạo môi trường SQL Bên môi trường, phần tử sở liệu quan hệ nhóm thành lược đồ sở liệu, catalog, cluster Một catalog tập hợp lược đồ cluster tập hợp lớn phần tử mà người sử dụng nhìn thấy • Các hệ thống Client/Server: Một SQL Client kết nối với SQL Server tạo nên kết nối (kết nối hai tiến trình) phiên (dãy thao tác) Các chương trình thực phiên đến từ module thực module gọi agent SQL • Giao diện mức gọi: Đó thư viện chuẩn hàm gọi SQL/CLI ODBC, kết nối vào chương trình C Các hàm cho khả tương tự SQL nhúng không cần có tiền xử lý • Kiểm tra cạnh tranh: SQL cung cấp hai cấu nhằm ngăn ngừa thao tác cạnh tranh khỏi gây phiền phức lẫn nhau: giao tác hạn chế trỏ Sự hạn chế trỏ bao gồm khả 168 Thuvientailieu.net.vn khai báo trỏ “không nhạy cảm”(insensitive), trường hợp trỏ không nhìn thấy thay đổi quan hệ • Các giao tác: SQL cho phép người lập trình nhóm lệnh SQL vào giao tác, chúng ghi (committed) khôi phục lại (rolled back aborted) Các giao tác rolled back chương trình ứng dụng để xóa bỏ thay đổi hệ thống để đảm bảo tính nguyên tử cô lập • Các mức cô lập: SQL cho phép giao tác chạy với bốn mức cô lập, từ chặt chẽ đến chặt chẽ nhất: “xếp hàng thứ tự (serializable)”(giao tác phải chạy trước sau giao tác khác hoàn thành), “ repeatable read” (mỗi đọc trả lời cho truy vấn xuất lại truy vấn lặp lại), “read-commited” (chỉ có ghi giao tác ghi giao tác nhìn thấy) “ read uncommited” (không có ràng buộc mà giao tác nhìn thấy) • Con trỏ giao tác đọc: Một trỏ giao tác khai báo đọc (read-only) Khai báo môt đảm bảo trỏ giao tác không làm thay đổi sở liệu, thông báo cho hệ thống SQL không làm ảnh hưởng giao tác trỏ khác theo cách vi phạm không nhạy cảm, việc xếp hàng có thứ tự, yêu cầu khác • Quyền: Với mục đích an toàn, hệ thống SQL cho phép nhiều loại quyền khác nhận phần tử sở liệu Các quyền bao gồm quyền select (đọc), insert, delete update quan hệ, quyền tham chiếu quan hệ (tham chiếu đến chúng ràng buộc) quyền tạo trigger • Biểu đồ cấp quyền: Các quyền người sở hữu cấp cho người sử dụng khác cho người sử dụng tổng quát PUBLIC Nếu cấp với tùy chọn cấp quyền quyền 169 Thuvientailieu.net.vn chuyển cho người khác Các quyền bị hủy bỏ Biểu đồ cấp quyền cách hữu ích để nhớ lại lịch sử cấp quyền hủy bỏ quyền, để giữ dấu vết có quyền họ nhận quyền từ người MỘT SỐ BÀI TẬP I Với sở liệu trên, viết chương trình nhúng (ngôn ngữ chủ C++) sau: 1) Yêu cầu người dùng giá tìm PC có giá gần với giá mong muốn In nhà sản xuất, model number tốc độ PC 2) Hỏi người dùng giá trị tối thiểu tốc độ, RAM, kích cỡ đĩa cứng mà họ chấp nhận Tìm tất laptop thỏa mãn đòi hỏi In đặc trưng (tất cá thuộc tính Laptop) nhà sản xuất 3) Hỏi người sử dụng nhà sản xuất In đặc trưng tất sản phẩm nhà sản xuất làm Điều có nghĩa số model, kiểu sản phẩm, tất thuộc tính quan hệ thích hợp kiểu 4) Hỏi người dùng “túi tiền” (tổng giá PC printer), tốc độ tối thiểu PC Tìm hệ thống rẻ (PC cộng với printer) 5) Hỏi người dùng nhà sản xuất, số model, tốc độ, RAM, kích thước đĩa cứng, loại đĩa CD giá PC Hãy kiểm tra PC có số model Đưa lời cảnh báo thế, ngược lại chèn thông tin vào bảng Product PC 6) Hạ giá tất PC “cũ” $100 Hãy đảm bảo PC “mới” chèn vào thời gian chương trình bạn chạy không bị hạ giá II Viết chương trình Dựa sở liệu trên, viết hàm thủ tục sau: 1) Lấy giá làm đối số trả lại số model PC có giá gần 170 Thuvientailieu.net.vn 2) Lấy nhà sản xuất, model, giá làm đối số trả lại giá của kiểu sản phẩm có model cho 3) Lấy thông tin model, tốc độ, ram, đĩa cd giá làm đối số chèn thông tin vào quan hệ PC Tuy nhiên có PC với model (nghĩa vi phạm toàn vẹn thực thể, SQLSTATE = ‘23000”) thêm vào số model tìm số model chưa tồn bảng 4) Cho trước giá, đưa số PC, số Laptop số Printer bán giá PHỤ LỤC 1: CƠ SỞ DỮ LIỆU “CÔNG TY “ NHÂNVIÊN MãsốNV Họđệm Tên Ngày sinh Địachỉ Giớitính Lương MãsôNGS NV001 Lê Vân 1979-12-02 Hà nội Nam 3000 NV002 NV002 Trần Đức Nam 1966-02-14 Hà nội Nam 4000 NV061 NV010 Hoàng Thanh 1979-05-08 Nghệ an Nữ 2500 NV014 NV014 Phạm Bằng 1952-06-26 Bắc ninh Nam 4300 NV061 NV016 Nguyễn Sơn 1973-08-14 Hànam Nam 3800 NV002 NV018 Vũ Hương Giang 1983-03-26 Nam định Nữ 2500 NV002 NV025 Trần Lê Hoa 1980-03-15 Phúthọ Nữ 2500 NV014 NV061 Hoàng Giáp 1947-02-05 Hà tĩnh Nam 5500 Null ĐƠNVỊ MãsốĐV TênĐV Mã sốNQL Ngàybắtdầu Nghiên cứu NV002 2000-09-15 Hànhchính NV014 1997-06-24 Lãnhđạo NV061 1992-01-25 171 Thuvientailieu.net.vn MãsốĐV DỰÁN TênDA Mã sốDA ĐịađiểmDA Mã sốĐV DA01 Hà nộI DA02 Nam định DA03 Bắc Ninh DA04 10 Hà nội DA05 20 Hà nội DA06 30 Hà nội NHÂNVIÊN_DỰÁN Mã sốNV Mã sốDA Sốgiờ NV001 32 NV001 NV016 40 NV018 20 NV018 20 NV002 10 NV002 10 NV002 10 10 NV002 20 10 NV010 30 30 NV010 10 10 NV025 10 35 NV025 30 NV014 30 20 NV014 20 15 NVO61 20 null Trong đó, thuộc tính có ý nghĩa sau: 1.Trong bảng NHÂNVIÊN - Họđệm, Tên: họ đệm tên nhân viên - MãsốNV: Mã số nhân viên 172 Thuvientailieu.net.vn - Ngàysinh, Địachỉ, Luơng, Giới tính: thuộc tính nhân viên - MãsốNGS: Mã số người giám sát nhân viên (một nhân viên có người giám sát) Thuộc tính có kiểu với MãsốNV - MãsốĐV: mã số đơn vị mà nhân viên làm việc cho Trong bảng ĐƠNVỊ - TênĐV: tên đơn vị - MãsốĐV: mã số đơn vị - MãsốNQL: mã số người quản lý đơn vị (đơn vị trưởng) Người quản lý nhân viên Thuộc tính có kiểu với MãsốNV - Ngàybắtđầu: ngày người quản lý bắt đầu quản lý đơn vị Trong bảng DỰÁN - MãsốDA: mã số dự án - TênDA: tên dự án - ĐịađiểmDA: địa điểm dự án - MãsốĐV: Mã số đơn vị quản lý dự án * Trong bảng NHÂNVIÊN_DỰÁN - MãsốDA: mã số dự án - MãsốNV: mã số nhân viên - Sốgiờ: số nhân viên làm việc cho dự án 173 Thuvientailieu.net.vn 174 Thuvientailieu.net.vn PHỤ LỤC 2: CƠ SỞ DỮ LIỆU ‘MÁY TÍNH” Lược đồ sở liệu gồm quan hệ: Product(maker, model, type) PC(model, speed, ram, hd, rd, price) Laptop(model, speed, ram, hd, screen, price); Printer(model, color, type, price) Quan hệ Product cho nhà sản xuất, số model, kiểu(PC,laptop,hoặc printer) sản phẩm khác Để tiện lợi giả thiết số model tất nhà sản xuất kiểu sản phẩm (giả thiết không thực tiễn sở liệu thực phải chứa mã nhà sản xuất phần số model) Quan hệ PC có thuộc tính model, speed (tốc độ xử lý, tính megahertz), dung lượng RAM (tính megabyte), dung lượng đĩa cứng (tính gigabyte), tốc độ kiểu đĩa di chuyển (CD DVD) gía Quan hệ Laptop tương tự, có thuộc tính Screen, cho kích thước hình (tính inch) Quan hệ Printer có thuộc tính model, color (máy in màu hay đen trắng, có giá trị lôgic), type (kiểu xử lý: laze, in phun hay bọt) price (giá tính dolar) PC model speed ram hd rd price 1001 700 64 10 48xCD 799 1002 1500 128 60 12xDVD 2499 1003 866 128 20 8xDVD 1999 1004 866 64 10 12xDVD 999 1005 1000 128 20 12xDVD 1499 1006 1300 256 40 16xDVD 2119 1007 1400 128 80 12xDVD 2299 1008 700 64 30 24xCD 999 1009 1200 128 80 16xDVD 1699 1010 750 64 30 40xCD 699 1011 1100 128 60 16xDVD 1299 1012 350 64 48xCD 799 1013 733 256 60 12xDVD 2499 175 Thuvientailieu.net.vn PRODUCT LAPTOP maker model type mode l speed ram hd screen price A 1001 pc 2001 700 64 12.1 1448 A 1002 pc 2002 800 96 10 15.1 2584 A 1003 pc 2003 850 64 10 15.1 2738 A 2004 laptop 2004 550 32 12.1 999 A 2005 laptop 2005 600 64 12.1 2399 A 2006 laptop 2006 800 96 20 15.7 2999 B 1004 pc 2007 850 128 20 15.0 3099 B 1005 pc 2008 650 64 10 12.1 1249 B 1006 pc 2009 750 256 20 15.1 2599 B 2001 laptop 2010 366 64 10 12.1 1499 B 2002 laptop B 2003 laptop C 1007 pc C 1008 pc C 2008 laptop mode l color type price C 2009 laptop 3001 true ink-jet 231 C 3002 printer 3002 true ink-jet 267 C 3003 printer 3003 false lazer 390 C 3006 printer 3004 true ink-jet 439 D 1009 pc 3005 true bubble 200 D 1010 pc 3006 true lazer 1999 D 1011 pc 3007 false lazer 350 D 2007 laptop E 1012 pc E 1013 pc E 2010 laptop F 3001 printer F 3004 printer G 3005 printer H 3007 printer PRINTER 176 Thuvientailieu.net.vn TÀI LIỆU THAM KHẢO 1) C.J.Date, Hug Darwen, A guide to the SQL standard, Addison-Wesley Publishing company, 1993 2) Hector Garcia-Molina, Jeffrey D.Ulman, Jennifer Widom, Database Systems: The Complete Book (Chapters: 6,7,8), Prentice Hall, 2002 3) Peter Gulutzan, Trudy Pelzer, Optimzing SQL, R&D Publication, Inc,1994 4) Christian Maree Guy Ledant, SQL2 Initiation Programmation, Armand Colin, Paris 1994 177 Thuvientailieu.net.vn [...]... là Đơnvịtính và mỗi bộ trong câu trả lời sẽ có hằng ‘ngàn đồng’ ở cột thứ tư 1.1.2 Phép chọn trong SQL Phép toán chọn của đại số quan hệ và nhiều thứ nữa sẵn có trong mệnh đề WHERE của SQL Các biểu thức đi sau WHERE bao gồm các biểu thức điều kiện giống như các biểu thức điều kiện trong các ngôn ngữ lập trình Chúng ta có thể xây dựng các điều kiện bằng cách so sánh các giá trị sử dụng sáu phép toán so... các dấu ngoặc đơn Các dấu ngoặc là cần thiết bởi vì thứ tự ưu tiên của các phép toán lô gic trong SQL là giống như trong các ngôn ngữ lập trình, AND có thứ tự cao hơn OR, NOT có thứ tự cao hơn cả AND và OR 12 Thuvientailieu.net.vn 1.1.3 So sánh các xâu Hai xâu là bằng nhau nếu chúng là cùng một dãy ký tự SQL cho phép các mô tả các kiểu xâu khác nhau, ví dụ, các mảng ký tự có độ dài cố định và các danh... xem có bằng hằng 5 hay không Hằng này là một giá trị số Các hằng số, như các số nguyên và số thực được sử dụng và được ghi như cách thông thường trong các ngôn ngữ lập trình Ngoài các hằng số còn có các hằng xâu Các xâu 11 Thuvientailieu.net.vn trong SQL được ghi bằng cách đặt chúng và trong cặp dấu nháy đơn, ví dụ, ‘Hà nội’ Kết quả của một phép so sánh là một giá trị lô gic TRUE hoặc FALSE Các giá trị... rằng SQL sử dụng các quan hệ như là các túi (bag) chứ không phải như tập hợp Điều đó có nghĩa là một bộ có thể xuất hiện nhiều lần trong một quan hệ 1.4.1 Loại bỏ trùng lặp Như đã nói đến ở trên, khái niệm quan hệ của SQL khác với khái niệm quan hệ trừu tượng được trình bày trong mô hình quan hệ Một quan hệ là một tập hợp, không thể có nhiều hơn một bản sao của một bộ cho trước Khi một truy vấn SQL. .. khác 1.2 CÁC TRUY VẤN BAO GỒM NHIỀU HƠN MỘT QUAN HỆ Sức mạnh của đại số quan hệ là khả năng tổ hợp hai hoặc nhiều quan hệ thông qua các phép nối, tích, hợp, giao và trừ Trong SQL có tất cả các phép toán đó 1.2.1 Tích và nối trong SQL SQL có một cách đơn giản để ghép cặp các quan hệ vào một truy vấn: liệt kê từng quan hệ trong mệnh đề FROM Sau đó, các mệnh đề SELECT và WHERE có thể tham chiếu đến các thuộc... điều kiện chọn, chẳng hạn như Nam, Thanh, Hoa 1.1.4 Ngày tháng và thời gian Các thể hiện của SQL nói chung hỗ trợ ngày tháng và thời gian như những kiểu dữ liệu đặc biệt Các giá trị này thường trình bày được trong nhiều dạng khác nhau như 14/5/1948 hoặc 14-05-48 Ở đây chúng ta sẽ chỉ mô tả cách ghi chuẩn của SQL Một hằng ngày tháng được biểu diễn bằng từ khoá DATE sau đó là một xâu có dạng đặc biệt... tập hợp, không thể có nhiều hơn một bản sao của một bộ cho trước Khi một truy vấn SQL tạo một quan hệ mới, hệ thống SQL không loại bỏ các trùng lặp Như vậy, SQL trả lời cho một truy vấn có thể liệt kê nhiều lần cùng một bộ Nhớ lại rằng một định nghĩa cho một truy vấn select-from-where của SQL là như sau: Chúng ta bắt đầu với tích Đềcac của các quan hệ được tham chiếu đến trong mệnh đề FROM Mỗi bộ của... theo thứ tự tăng dần của Tên của tất cả các nhân viên trong đơn vị có mã số bằng 5, ta có truy vấn sau: SELECT Họđệm, Tên FROM NHÂNVIÊN WHERE MãsốĐV = 5 ORDER BY Tên ; 1.1.8 Các hàm thông dụng trong SQL Trong SQL có một số các hàm xây dựng sẵn Sau đây là một số hàm thông dụng 1) Các hàm nhóm: Hàm AVG trả về giá trị trung bình của cột Ví dụ: SELECT AVG(Lương) FROM NHÂNVIÊN; Hàm MIN trả về giá trị nhỏ nhất... Giả sử x có giá trị null Khi đó giá trị của x+3 cũng là null Tuy nhiên null+3 không phải là một biểu thức SQL hợp lệ Tương tự, giá trị của x = 3 là UNKNOWN bởi vì chúng ta không thể nói rằng giá trị của x (một giá trị NULL) là bằng 3 Tuy nhiên, phép so sánh NULL = 3 không phải là phép so sánh SQL đúng Cách đúng đắn để hỏi xem x có giá trị null hay không là dùng biểu thức x IS NULL Biểu thức này có... nhiều bộ khác nhau của tích, và nếu như vậy, mỗi bản sao của kết quả sẽ được in ra Hơn nữa, không có gì sai đối với một quan hệ SQL có trùng lặp Nếu chúng ta không muốn có sự trùng lặp trong kết quả, ta có thể tiếp theo sau từ khoá SELECT bằng từ khoá DISTINCT Từ đó nói với SQL chỉ tạo ra một bản sao cho một bộ giá trị Chẳng hạn SELECT DISTINCT Lương FROM NHÂNVIÊN ; 1.4.2 Trùng lặp trong phép hợp, phép

Ngày đăng: 15/08/2016, 05:45

TỪ KHÓA LIÊN QUAN

w