1. Trang chủ
  2. » Thể loại khác

Cơ sở dữ liệu giới thiệu ngôn ngữ SQL. ThS. Lê Văn Lợi

19 5 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

Cơ sở liệu ThS Lê Văn Lợi B ài Bài chủ yếu giới thiệu ngôn ngữ SQL giới thiệu phần nhỏ SQL Ngôn ngữ SQL ngôn ngữ với độ phức tạp lớn Ví dụ tài liệu chuẩn International Standard Database Language SQL (1992) viết tắt SQL92 - dày 600 trang Các HQT CSDL thực tế tuân thủ phần SQL92 (tức tập SQL92) Mặc dầu vậy, HQT CSDL có nhiều chức mở rộng mà SQL92 lại khơng có Thực tế biểu diễn cách hình tượng Hình SQL92 SQL HQT CSDL Hình 1: Ngơn ngữ chuẩn SQL92 hỗ trợ HQT CSDL Bài giới hạn việc đề cập nội dung tương thích với SQL92 - có chuẩn khác (xem đây) HQT CSDL mở rộng số câu lệnh SQL92 Tuy nhiên, lấy ví dụ, câu lệnh chọn tương thích với MySQL Từ kinh nghiệm thực tế nên viết lệnh thuộc chuẩn SQL92, vậy, chuyển sang HQT CSDL mới, khả tương thích cao 1./ Nguồn gốc số đặc tính SQL − Xuất phát từ nhu cầu truy xuất liệu, người ta đến nhu cầu cần thống ngôn ngữ cho tất HQT CSDL − SQL (Structured Query Language) chuẩn phục vụ mục đích − SQL ngôn ngữ truy vấn (Query Language) gắn chặt với lịch sử phát triển CSDL quan hệ − Chú ý 12 nguyên tắc TS Codd mơ hình CSDL quan hệ phải sử dụng ngôn ngữ thống (Qui tắc #5) Bai-5.doc *** Trang Cơ sở liệu ThS Lê Văn Lợi − Vài mốc phát triển chuẩn SQL: Năm Tên 1986 SQL-86 1989 SQL-89 1992 SQL-92 Viết tắt Thuyết minh SQL- Lần công bố ANSI Sau ISO phê 87 chuẩn vào năm 1987 Phiên phụ SQL2 Phiên 1999 SQL:1999 SQL3 Thêm regular expression matching, truy vấn đệ qui, triggers, loại liệu khơng vơ hướng vài tính hướng đối tượng (Tuy nhiên, loại liệu không vô hướng hướng đối tượng gây nhiều tranh cãi.) 2003 SQL:2003 Đưa vào XML, window functions, liệu chuỗi cột có giá trị tự động − Một số HQT CSDL yểm trợ phần SQL3, SQL:2003 – MySQL, PostgreSQL − SQL ngôn ngữ khai báo (Declarative Language), khác với ngôn ngữ thủ tục (Procedural Language) C++, Java ngôn ngữ thủ tục Ngơn ngữ khai báo định cần không định cần phải làm để thực Việc làm HQT CSDL đảm trách − SQL ngôn ngữ tập hợp – nghĩa toán hạng phần tử tập hợp, vô hướng, rời rạc không phân biệt thứ tự 2./ Định nghĩa liệu (Data Definition) ■ Miền giá trị Miền giá trị (domain) ngôn ngữ SQL cách viết tắt loại liệu SQL không bắt buộc phải sử dụng miền Chính lý này, không chi tiết vào miền Ta phân tích khía cạnh thực tế vấn đề đề cập ứng dụng cụ thể Bai-5.doc *** Trang Cơ sở liệu ThS Lê Văn Lợi ■ Tạo bảng (CREATE TABLE) Cú pháp hình thức: CREATE TABLE table-name ({column-descr|constraint} [,{column-descr|constraint}] ); Giải thích cú pháp: Câu lệnh có hai phần tạo tên bảng (CREATE TABLE table-name ) định nghĩa cột (column-descr) bảng ràng buộc (constraint) Chú ý định nghĩa cột, khai báo ràng buộc viết tách dấu phẩy chúng nằm hai ngoặc đơn Thông thường ràng buộc khai báo sau định nghĩa xong cột Ngoài lề cách hiểu cú pháp hình thức: Nếu cú pháp viết { column-descr | constraint }, hiểu hai vế column-descr, constraint phải có mặt Khi viết [ exp ] exp tùy chọn – nghĩa có khơng có mặt, khơng bắt buộc Dấu ba chấm có nghĩa lặp biểu thức trước số lần tùy ý Mỗi cột lại định nghĩa sau: column-name data-type [column-constraints] Giải thích: Định nghĩa cột bắt đầu tên cột (column-name), kiểu liệu (data-type) – bắt buộc – có ràng buộc kèm theo cột ([column-constraints]) – khơng bắt buộc Các ràng buộc (constraints) o Có hai loại ràng buộc: ràng buộc bảng ràng buộc cột Ràng buộc bảng: • PRIMARY KEY định tổ hợp cột dùng làm khóa Chỉ có nhiều khóa cho bảng PRIMARY KEY ( column-1 [, column-2] ) • UNIQUE định cột khóa - khóa phụ (tổ hợp cột có giá trị ghi) UNIQUE ( column-1 [, column-2] ) • FOREIGN KEY định cột khóa ngoại Bai-5.doc *** Trang Cơ sở liệu ThS Lê Văn Lợi FOREIGN KEY (column-list) REFERENCES references-specification Trong đó, references-specification có cú pháp hình thức sau table-2 [ ( referenced-columns ) ] [ ON UPDATE { CASCADE | SET NULL | NO ACTION }] [ ON DELETE { CASCADE | SET NULL | NO ACTION }] Ngoài lề: nghĩa đen số từ, giúp dễ hiểu câu lệnh: Reference: tham chiếu – ý người ta viết động từ thứ số specification: Đặc tả ON UPDATE: Khi cập nhật ON DELETE: Khi xóa CASCADE: Hiệu ứng liên hồn (bậc thang) SET NULL: Đặt giá trị NULL NO ACTION: Không làm Chú ý phân biệt bảng tham chiếu (bảng tạo) bảng tham chiếu (table-2) Bảng tham chiếu phải tồn table table-2 PK phải khóa table-2 referenced-columns khơng định Nếu định referenced-columns phải cột (của table-2) khai báo UNIQUE column-list Vấn đề đặt cập nhật table-2 giá trị cột tham chiếu bị thay đổi Đó khai báo ON UPDATE ON DELETE Chú ý nghĩa từ CASCADE, SET NULL, NO ACTION • CHECK định điều kiện cần thỏa mãn (check condition) Phần điều kiện đặt dấu ngoặc đơn Các toán hạng tham gia điều kiện tham chiếu cột bảng Một số HQT CSDL cho phép lập điều kiện từ câu truy vấn (sub-queries) – tham chiếu cột khác bảng Trong không xét trường hợp tham chiếu đến cột bảng khác CHECK ( check-condition ) Ràng buộc cột • • NOT NULL định cột không phép nhận giá trị NULL Nếu khơng có định cột chấp nhận giá trị NULL Thông thường cột khóa (primary key) khai báo NOT NULL PRIMARY KEY định cột cột khóa có cột làm khóa bảng mà thơi Khi khai báo cột làm khóa chính, cột khác khơng khai báo PRIMARY KEY Bai-5.doc *** Trang Cơ sở liệu ThS Lê Văn Lợi • • • Chú ý: có cột tham gia làm khóa chính, ta phải khai báo theo kiểu PRIMARY KEY ( column-1 [, column-2] ) phần khai báo ràng buộc bảng UNIQUE định cột có giá trị khóa NULL Điều có nghĩa giá trị khơng phải NULL giá trị cột phải phân biệt – không trùng REFERENCES định cột khóa ngoại Chú ý ta có khóa ngoại gồm nhiều cột ta phải khai báo rời phần ràng buộc bảng CHECK định ràng buộc (xem phần ràng buộc bảng trên) ■ Kiểu liệu Ta có kiểu liệu sau: • • Ký tự (String) chuỗi ký tự với độ dài cố định biến thiên Bộ mã ký tự HQT CSDL qui định, mặc định ASCII Số (Numeric) – giá trị số Giá trị số chia làm loại chính:: o Biểu diễn xác (fixed-point) Chỉ định số chữ số phía trái phía phải dấu thập phân (dấu chấm) Tổng số chữ số (trái phải dấu thập phân) gọi độ xác Nếu khơng có chữ số sau dấu thập phân số gọi số nguyên: integer o Biểu diễn gần (floating-point) Biểu diễn số gần dấu phẩy động (floating) Số SQL92 luôn số có dấu (âm, dương) Điểm khác so với ngơn ngữ lập trình • Biểu diễn thời gian (Datetime) – Các giá trị ngày tháng năm, thời gian (Date, Time, Timestamp) Các giá trị biểu diễn thời gian gồm: o Date – giá trị ngày tháng năm o Time – thời gian giờ, phút, giấy, phần thập phân giây múi (timezone) Múi chỉnh theo phút o Timestamp – Con dấu thời gian: tổ hợp ngày tháng năm, phút giây phần thập phân giây cộng với múi ■ Khai báo kiểu liệu Ký tự (String) CHAR [(length)] CHARACTER [(length)] VARCHAR (length) CHARACTER VARYING (length) length độ dài: số ký tự chuỗi ký tự (CHAR, CHARACTER); Nếu ký tự khơng chiếm hết chỗ người ta bù vào ký tự trắng Độ dài mặc định Đối với kiểu liệu có độ Bai-5.doc *** Trang Cơ sở liệu ThS Lê Văn Lợi dài biến thiên (VARCHAR, CHARACTER VARYING), length độ dài tối đa Chuỗi ký tự có độ dài lớn độ dài tối đa bị cắt từ phải sang Số SMALLINT INT INTEGER Kiểu liệu số dựa vào độ xác nhị phân: 15 bit SMALLINT 31 bit INT, INTEGER Ngồi lề: Tại khơng phải 16 32 mà 15 31? NUMERIC ( precision [, scale] ) DECIMAL ( precision [, scale] ) Đây biểu diễn thập phân: precision tổng số chữ số, scale số chữ số thập phân Dĩ nhiên scale không vượt precision Số chữ số tối đa cho phép phụ thuộc vào HQT CSDL - thường lớn FLOAT [(precision)] REAL DOUBLE Dấu phẩy động biểu diễn nhị phân đạt chữ số có nghĩa mức cao Số bit biểu diễn phụ thuộc vào HQT CSDL Chuẩn SQL qui định số bit dùng biểu diên DOUBLE phải cao REAL FLOAT giống REAL, khác định số chữ số nhị phân (bit) Thời gian DATE TIME [(scale)] [WITH TIME ZONE] TIMESTAMP [(scale)] [WITH TIME ZONE] TIME TIMESTAMP cho phép định thêm số chữ số thập phân giây (scale) Giá trị mặc định scale TIME 0, TIMESTAMP Tùy chọn WITH TIME ZONE định có chỉnh múi giờ; Nếu khơng, múi lấy từ hệ điều hành ■ Tính tồn vẹn thực thể (Entity Integrity) Trong phần trước, biết mơ hình quan hệ địi hỏi bảng phải có khóa Tuy nhiên, SQL92 lại khơng địi hỏi – nghĩa có Bai-5.doc *** Trang Cơ sở liệu ThS Lê Văn Lợi thể tạo bảng mà khơng cần khai báo khóa Mặc dầu vậy, tạo bảng gốc (base table) nên khai báo khóa Khóa loại ràng buộc nội dung bảng, gọi tính tồn vẹn thực thể Đối với ghi bất kỳ, tập hợp giá trị ứng với khóa tồn ghi bảng, Các cột tham gia vào khóa khơng chấp nhận giá trị NULL, Một bảng có khóa Chú ý: SQL92 khơng u cầu điểm nêu – nghĩa cột tham gia lập thành khóa chấp nhận giá trị NULL Chúng ta khai báo khóa theo hai cách khác Trong trường hợp khóa gồm cột, ta khai báo ln phần khai báo cột Ví dụ: s_id VARCHAR(5) NOT NULL PRIMARY KEY Một hình thức khai báo khác (trong trường hợp khóa gồm nhiều cột cách khai báo bắt buộc), ta khai báo khóa sau: PRIMARY KEY ( column-1 [, column-2] ) column-1 column-2 tên cột VD: PRIMARY KEY (s_id, p_id) Thứ tự cột cú pháp không quan trọng – ta để thứ tự ■ Tính tồn vẹn tham chiếu (Referential Integrity) Khóa ngoại cho phép ta lập mối quan hệ bảng CSDL Khóa ngoại tập hợp cột tham chiếu đến khóa bảng khác Mỗi tham chiếu phải trỏ đến ghi bảng tương ứng cho giá trị khóa bảng phải giá trị khóa ngoại bảng Người ta đặt tên cho tính chất tính tồn vẹn tham chiếu (Referential Integrity) Tóm lại, điều kiện tồn vẹn tham chiếu gồm: Cột khóa ngoại phải khai báo kiểu độ dài với cột khóa bảng tham chiếu đến Giá trị khóa ngoại ghi phải trùng với giá trị khóa ghi bảng tham chiếu đến Có ngoại lệ điểm nêu trên, giá trị khóa ngoại NULL Trường hợp xảy khóa ngoại khơng trỏ đến khóa bảng tham chiếu (SQL92 cho phép vậy) Bai-5.doc *** Trang Cơ sở liệu ThS Lê Văn Lợi Cũng giống toàn vẹn thực thể, toàn vẹn tham chiếu hình thức ràng buộc nội dung Tồn vẹn thực thể ràng buộc nội dung bảng Toàn vẹn tham chiếu ràng buộc nội dung nhiều bảng Nếu ta thay đổi giá trị khóa bảng tham chiếu mà khóa ứng với khóa ngoại xảy phản ứng phụ: phải cập nhật lại giá trị khóa ngoại Nếu khơng, tính tồn vẹn tham chiếu bị phá vỡ Để đảm bảo tính tồn vẹn tham chiếu, có hai cách: Bảng tham chiếu không cho phép sửa giá trị khóa Giá trị khóa ngoại phải thay đổi theo Trong SQL92, để HQT CSDL thực thi đảm bảo tính tồn vẹn tham chiếu ta phải khai báo, khai báo có tên bẫy tham chiếu: • • • NO ACTION Sửa đổi bảng tham chiếu đến không dẫn đến sửa đổi bảng có khóa ngoại Đây trường hợp mặc định CASCADE Sửa đổi bảng tham chiếu đến dẫn đến sửa đổi bảng có khóa ngoại SET NULL Các giá trị tương ứng khóa ngoại đặt giá trị NULL sửa đổi bảng tham chiếu đến Đối với trường hợp CASCADE, cập nhật giá trị xóa ghi bảng tham chiếu dẫn đến thao tác khác lên bảng có khóa ngoại: • • Đối với trường hợp cập nhật giá trị, sửa giá trị khóa bảng tham chiếu đến, giá trị khóa ngoại bảng tương ứng sửa theo Đối với trường hợp xóa ghi, ghi tương ứng với khóa ngoại bị xóa theo Có hai cách khai báo khóa ngoại Khi khóa ngoại gồm trường: column-descr REFERENCES references-specification Khi khóa ngoại gồm nhiều trường: FOREIGN KEY (column-list) REFERENCES references-specification Chú ý thứ tự trường danh sách column-list phải khớp với thứ tự trường references-specification Phần references-specification có dạng sau: table-2 [ ( referenced-columns ) ] [ ON UPDATE { CASCADE | SET NULL | NO ACTION }] [ ON DELETE { CASCADE | SET NULL | NO ACTION }] Thứ tự ON UPDATE ON DELETE Phần khai báo thao tác cần thực thi tham chiếu khóa khóa bị thay đổi (ON UPDATE) bị xóa (ON DELETE) Giá trị mặc định hai tùy chọn NO ACTION Bai-5.doc *** Trang Cơ sở liệu ThS Lê Văn Lợi table-2 bảng tham chiếu đến Tùy chọn referenced-columns danh sách cột khóa Nếu khơng định tùy chọn này, thứ tự theo thứ tự khai báo khóa bảng table-2 Ngược lại với mơ hình quan hệ, SQL92 cho phép tham chiếu tất khóa – nghĩa tham chiếu đến tập hợp trường khai báo UNIQUE không riêng khóa Khi khai báo tham chiếu trường khơng phải khóa chính, bắt buộc phải định referenced-columns Ví dụ, khai báo khóa ngoại cho bảng sp: FOREIGN KEY (s_id) REFERENCES supplier (s_id) ON DELETE NO ACTION ON UPDATE CASCADE ■ Các ví dụ tạo bảng (tham khảo thêm 3) CREATE TABLE supplier ( s_id CHAR(5) NOT NULL, sname CHAR(20) NOT NULL, status NUMERIC(5) NOT NULL, city CHAR(15) NOT NULL, PRIMARY KEY (s_id) ); CREATE TABLE part ( p_id CHAR(6) NOT NULL, pname CHAR(20) NOT NULL, color CHAR(6) NOT NULL, weight NUMERIC(5) NOT NULL, city CHAR(15) NOT NULL, PRIMARY KEY (p_id) ); CREATE TABLE sp( s_id CHAR(5) NOT NULL, p_id CHAR(6) NOT NULL, qty NUMERIC(9) NOT NULL, PRIMARY KEY (s_id, p_id), FOREIGN KEY (s_id) REFERENCES supplier ON DELETE SET NULL ON UPDATE CASCADE, FOREIGN KEY (p_id) REFERENCES part (p_id) ON DELETE SET NULL ON UPDATE CASCADE, CHECK (qty > AND qty < 5001) ); ■ Tạo VIEW (CREATE VIEW) View thực chất câu lệnh SQL lưu catalog hệ thống CREATE VIEW view-name [ ( column-list ) ] AS query [ WITH [CASCADED|LOCAL] CHECK OPTION ] Bai-5.doc *** Trang Cơ sở liệu ThS Lê Văn Lợi view-name tên View, có danh sách cột thông qua định column-list query câu lệnh SELECT (khơng có mệnh đề ORDER BY) Tùy chọn WITH CHECK OPTION ràng buộc view cập nhật column-list cần có số cột tương thích với query Nếu khơng định columnlist , tất trường query phải đặt tên tên không trùng Tùy chọn WITH CHECK OPTION tác động lên câu lệnh INSERT UPDATE view Nếu có định WITH CHECK OPTION, mệnh đề WHERE query cần tôn trọng chèn thêm ghi thay đổi ghi View View có nhiều thang bậc, có nghĩa View A định nghĩa View B, View B lại định nghĩa View C, Nếu định CASCADED, điều kiện WITH CHECK OPTION phải tôn trọng tất bậc View Ngược lại, tùy chọn LOCAL yêu cầu tôn trọng View định nghĩa Mặc định LOCAL Ví dụ CREATE VIEW supplied_parts AS SELECT * FROM part WHERE p_id IN (SELECT p_id FROM sp) WITH CHECK OPTION; ■ Xóa bảng (DROP TABLE) Câu lệnh DROP TABLE xóa bảng tạo xóa phần thơng tin liên quan catalog hệ thống Cú pháp sau: DROP TABLE table-name {CASCADE|RESTRICT} table-name tên bảng tồn Một bảng có hai dạng phụ thuộc: • • View định nghĩa dựa bảng Một bảng khác tham chiếu đến bảng thơng qua khóa ngoại RESTRICT định khơng xóa bảng có phụ thuộc nêu Hệ thống báo lỗi ta đưa câu lệnh xóa bảng trường hợp CASCADE định phụ thuộc bị loại bỏ trước xóa bảng với trường hợp sau: • • Các View phụ thuộc bị xóa có hiệu ứng domino View lại dựa vào View Đối với bảng ràng buộc bị xóa bảng khơng bị xóa Bai-5.doc *** Trang 10 Cơ sở liệu ThS Lê Văn Lợi ■ Xóa View (DROP VIEW) DROP VIEW view-name {CASCADE|RESTRICT} Các tùy chọn tương tự câu lệnh xóa bảng ■ Sửa đổi cấu trúc bảng (ALTER TABLE) Sau tạo bảng, sau thời gian sử dụng, nhận thấy cần thay đổi cấu trúc Cách làm nào? Ta bỏ bảng (dùng lệnh DROP TABLE) tạo lại (CREATE TABLE) Tuy nhiên, bảng có liệu cách làm khơng phù hợp Người ta sử dụng câu lệnh ALTER TABLE Chúng ta xét số trường hợp: − Thêm cột Ta sử dụng câu lệnh tương tự câu lệnh sau: ALTER TABLE bang ADD [ COLUMN ] column_definition − Xóa cột Ta sử dụng câu lệnh tương tự câu lệnh sau: ALTER TABLE bang DROP [ COLUMN ] column_name − Thay đổi định nghĩa cột tồn bảng Ta sử dụng câu lệnh tương tự câu lệnh sau: ALTER TABLE bang CHANGE [ COLUMN ] old_col_name column_definition 3./ Điều hành liệu – Các lệnh cập nhật 3.1.- Lệnh INSERT Lệnh INSERT chèn ghi vào bảng: INSERT INTO table-1 [(column-list)] VALUES (value-list) và: INSERT INTO table-1 [(column-list)] (query-specification) Dạng thứ chèn dòng vào bảng table-1 định tường minh danh sách cột giá trị chúng Dạng thứ hai sử dụng kết câu truy vấn queryspecification chèn chúng vào bảng table-1 Chú ý dạng thứ Bai-5.doc *** Trang 11 Cơ sở liệu ThS Lê Văn Lợi hai, câu lệnh truy vấn không tham chiếu table-1 (SV tự giải thích lại phải cần điều kiện này?) Cả hai dạng có tùy chọn định column-list danh sách cột tham gia vào lệnh INSERT Khi có định, cột gán giá trị cụ thể Đối với cột không tùy chọn đó, chúng nhận giá trị mặc định: • • Nếu cột khai báo chấp nhận NULL, chúng nhận giá trị NULL Nếu cột khai báo NOT NULL, chúng nhận giá trị mặc định lúc thực lệnh CREATE TABLE Vấn đề phụ thuộc vào HQT CSDL (SV ghi chép thêm lớp.) • Nếu khơng định danh sách cột, danh sách mặc định thay Thứ tự danh sách mặc định tuân thủ thứ tự lúc khai báo lệnh CREATE TABLE 3.2.- Mệnh đề VALUES Mệnh đề VALUES lệnh INSERT định giá trị cần chèn vào ghi Dạng thức mệnh đề sau: VALUES ( value-1 [, value-2] ) value-1 value-2 giá trị cụ thể, định NULL Thứ tự giá trị mệnh đề VALUES phải với thứ tự danh mục cột định tường minh ngầm định theo thứ tự lúc CREATE TABLE Ngoài ra, chúng phải tương thích kiểu liệu VD: Trước chèn p_id P1 pname Nut color Red weight city 12 London P2 Bolt Green 17 Paris P3 Screw Blue 17 Rome P4 Screw Red 14 London P5 Cam Blue 12 Paris P6 Cog Red 19 London INSERT INTO part (p_id, pname, color, weight, city) VALUES ('P8', 'Sprocket', 'Pink', 14, 'Nice'); Bai-5.doc *** Trang 12 Cơ sở liệu ThS Lê Văn Lợi Sau chèn: p_id pname color weight city P1 Nut Red 12 London P2 Bolt Green 17 Paris P3 Screw Blue 17 Rome P4 Screw Red 14 London P5 Cam Blue 12 Paris P6 Cog Red 19 London P8 Sprocket Pink 14 Nice 3.3.- Câu lệnh UPDATE Câu lệnh UPDATE sửa đổi giá trị cột: UPDATE table-1 SET set-list [WHERE predicate] Tùy chọn mệnh đề WHERE giống câu lệnh SELECT Mệnh đề WHERE lọc ghi cần sửa đổi Nếu cho định mênh đề này, toàn ghi bảng table-1 bị sửa đổi Phần set-list định giá trị gán (xem đây) Mệnh đề SET mệnh đề WHERE truy vấn, khơng tham chiếu bảng table-1 3.4.- Mệnh đề SET Mệnh đề SET câu lệnh UPDATE chứa lệnh gián giá trị: SET column-1 = value-1 [, column-2 = value-2] column-1 column-2 cột bảng, value-1 value-2 biểu thức tham chiếu cột bảng cập nhật Chúng giá trị NULL 3.5.- Câu lệnh DELETE DELETE FROM table-1 [WHERE predicate] (SV ghi chép lớp) Bai-5.doc *** Trang 13 Cơ sở liệu ThS Lê Văn Lợi 4./ Điều khiển quản trị hệ thống CSDL 4.1.- Câu lệnh GRANT Câu lệnh GRANT cấp quyền truy xuất cho người dùng đến đối tượng CSDL: GRANT privilege-list ON [TABLE] object-list TO user-list [ WITH GRANT OPTION ] đó, privilege-list ALL PRIVILEGES (nghĩa tất các quyền) định quyền cụ thể từ danh sách quyền: SELECT, INSERT, UPDATE, DELETE; object-list danh mục bảng view; user-list từ khóa PUBLIC (nghĩa tất người) danh mục tên người dùng cụ thể Bình thường quyền có tác dụng tất cột bảng Tuy nhiên, ta định quyền UPDATE cho cột: UPDATE [ ( column-1 [, column-2] ) ] Nếu có định, cột có tên danh mục (column-1 [, column-2] ) người dùng có quyền UPDATE (cập nhật), cột không danh sách này, người dùng khơng có quyền cập nhật cột Chúng ta dùng lệnh REVOKE (xem đây) để thu hồi quyền cấp Tùy chọn WITH GRANT OPTION cho phép người dùng thuộc phần định userlist có quyền phép phân quyền, nghĩa có quyền sử dụng câu lệnh GRANT, bên cạnh quyền truy xuất cấp Dưới góc độ nhà thiết kế HQT CSDL, làm để quản lý quyền truy xuất quyền phép phân quyền CSDL? (SV ghi chép lớp) Làm để truyền mật mà không bị lộ phần mềm trung gian đọc liệu bảng mật khẩu? (SV ghi chép lớp) Bai-5.doc *** Trang 14 Cơ sở liệu ThS Lê Văn Lợi 4.2.- Ví dụ câu lệnh GRANT GRANT SELECT ON supplier,sp TO PUBLIC; GRANT SELECT,INSERT,UPDATE(color) ON part TO art, nan; GRANT SELECT ON sp TO sam WITH GRANT OPTION; 4.3.- Câu lệnh REVOKE Lệnh REVOKE thu hồi quyền cấp trước đây: REVOKE privilege-list ON [TABLE] object-list FROM user-list Lệnh REVOKE thu hồi quyền danh sách quyền privilege-list đối tượng danh sách đối tượng object-list từ danh mục ngwoif dùng user-list Tất các quyền phải cấp trước Danh mục user-list từ khóa PUBLIC Lệnh ừng với lệnh cấp quyền GRANT TO PUBLIC 4.4.- Ví dụ lệnh REVOKE REVOKE SELECT ON supplier,sp FROM PUBLIC REVOKE SELECT,INSERT,UPDATE(color) ON p FROM art,nan REVOKE SELECT ON sp FROM sam Bai-5.doc *** Trang 15 Cơ sở liệu ThS Lê Văn Lợi 5./ Ví dụ khởi tạo CSDL supplier project sp pp pemp mp part emp wp es warehouse ws shop Hình 2: Sơ đồ quan hệ thực thể nhà máy sản xuất ô tô Lạc Hồng Tạo CSDL có tên lac_hong: CREATE DATABASE lac_hong; Tạo bảng nhà cung cấp (supplier): CREATE TABLE supplier ( s_id CHAR(5) NOT NULL, sname VARCHAR(100) NOT NULL, status NUMERIC(5) NOT NULL, city CHAR(50) NOT NULL, PRIMARY KEY (s_id) ); Tạo bảng phụ tùng (part): CREATE TABLE part ( p_id char(6) NOT NULL, pname char(100) NOT NULL, color char(6) NOT NULL, weight numeric(5) NOT NULL, city char(50) NOT NULL, PRIMARY KEY (p_id) ); Bai-5.doc *** Trang 16 Cơ sở liệu ThS Lê Văn Lợi Tạo bảng quan hệ nhà cung cấp phụ tùng (sp): CREATE TABLE sp( s_id char(5) NOT NULL, p_id char(6) NOT NULL, qty numeric(9) NOT NULL, PRIMARY KEY (s_id, p_id) ); Tạo bảng kho (warehouse): CREATE TABLE warehouse ( wh_id CHAR(5) NOT NULL, wh_name VARCHAR(50) NOT NULL, address CHAR(50) NOT NULL, PRIMARY KEY (wh_id) ); Tạo bảng quan hệ kho phụ tùng (wp) CREATE TABLE wp( wh_id char(5) NOT NULL, p_id char(6) NOT NULL, s_id char(5) NOT NULL, qty numeric(9) NOT NULL, PRIMARY KEY (wh_id, p_id, s_id) ); Tạo bảng phân xưởng (shop) CREATE TABLE shop ( sh_id CHAR(5) NOT NULL, sh_name VARCHAR(50) NOT NULL, foreman INT NOT NULL, PRIMARY KEY (sh_id) ); Tạo bảng quan hệ kho phân xưởng (wshop) CREATE TABLE wshop( wh_id char(5) NOT NULL, sh_id char(5) NOT NULL, PRIMARY KEY (wh_id, sh_id) ); Tạo bảng nhân viên (emp) CREATE TABLE emp ( emp_id INT AUTO_INCREMENT NOT NULL, emp_name VARCHAR(50) NOT NULL, emp_contact VARCHAR(50) NOT NULL, sh_id CHAR(5) NOT NULL, proj_id INT, PRIMARY KEY (emp_id) ); Bai-5.doc *** Trang 17 Cơ sở liệu ThS Lê Văn Lợi Chú ý rằng, bảng emp hàm chứa quan hệ nhân viên với phân xưởng (shop) nhân viên có phụ trách dự án không (project) Tạo bảng dự án (project) CREATE TABLE project ( proj_id CHAR(5) NOT NULL, proj_name VARCHAR(50) NOT NULL, director INT NOT NULL, PRIMARY KEY (proj_id) ); Tạo bảng nhằm làm rõ nhân viên có tham gia dự án hay khơng thời gian tham gia (pemp) CREATE TABLE pemp ( id INT AUTO_INCREMENT NOT NULL, proj_id CHAR(5) NOT NULL, emp_id INT NOT NULL, start_date DATE NOT NULL, end_date DATE, PRIMARY KEY (id) ); Thực tập chèn giá trị vào bảng: − − − − − − − supplier, part, sp lấy ví dụ từ trước Lập phân xưởng phân xưởng kỹ thuật phân xưởng thi công Bảng project: thêm liệu tên dự án sau: o LH-siêu tiện ích, LH-xuyên Việt, LH-36-PP, LH-Gia đình, LH-Phờ xi păng Thêm liệu tên nhân viên từ lớp (mỗi lớp chọn sinh viên) Chọn sinh viên giám đốc dự án LH-siêu tiện ích LH-36-PP sinh viên nằm phân xưởng kỹ thuật sinh viên nằm phân xưởng thi công Tất sinh viên tham gia dự án, có sinh viên tham gia sinh viên tham gia dự án đồng thời Bai-5.doc *** Trang 18 Cơ sở liệu ThS Lê Văn Lợi 6./ Bài tập Bài tập 5.1 – Viết câu lệnh xóa bảng để xóa hết bảng CSDL phụ tùng – nhà cung cấp Bài tập 5.2 – Lập lại CSDL phụ tùng – nhà cung cấp ví dụ giảng Bài tập 5.3 – Lập CSDL sinh viên môn Kỹ thuật đo Tin học công nghiệp (giả thiết có nhiều lớp: 1, 2, 3, khóa) Bài tập 5.4 – Giả thiết cần theo dõi điểm môn học (như CSDL, HĐH thời gian thực, ), thiết kế thêm bảng cần thiết Bài tập 5.5– Giả thiết cần theo dõi học sinh có điểm giỏi: có mơn đạt điểm 9, 10 Chúng ta cần chọn giải pháp để biết từ CSDL Bai-5.doc *** Trang 19

Ngày đăng: 16/06/2023, 10:31

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

TÀI LIỆU LIÊN QUAN

w