SQL ra đời vào năm 1970 tại phòng thí nghiệm của IBM,san jose, California.
Là một ngôn ngư phi thủ tục – declarative, non procedural language.
Các câu lệnh mô tả yêu cầu cần làm gì - WHAT chứ không cần nêu từng bước tiến hành làm như thế nào – HOW.
11 trang |
Chia sẻ: haohao89 | Lượt xem: 2039 | Lượt tải: 1
Bạn đang xem nội dung tài liệu Vài nét về lịch sử của SQL, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
1.1 Vài nét về lịch sử
SQL ra đời vào năm 1970 tại phòng thí nghiệm của IBM,san jose, California.
Là một ngôn ngư phi thủ tục – declarative, non procedural language.
Các câu lệnh mô tả yêu cầu cần làm gì - WHAT chứ không cần nêu từng bước tiến hành làm như thế nào – HOW.
Thực chất không không chỉ có Query Language còn thực hiện nhiều chức năng khác như bổ xung thêm dữ liệu, sửa đổi cập nhật thông tin, huỷ thông tin, huỷ thông tin, lien kết lưu trữ thông tin.
1.2 Sử dụng SQL.
Ngôn ngữ SQL được dùng trong ứng dụng CSDL theo mô hình Client – Server. Các chương trình khách gửi yêu cầu truy vấn thông tin dưới dạng các câu lệnh SQL. Chương trình chủ dịch vụ - Server CSDL - sẽ thực hiện yêu cầu và gửi lại kết quả cho chương trình khách.
Ba kiểu tương tác với ứng dụng.
- Modun: Các thủ tục làm sẵn thông qua các tham số, gọi và trả kết quả về.
Nhúng trực tiếp: Các câu lệnh SQL trong chương trình.
Gọi trực tiếp: Tương tác.
Nhúng là hình thức làm việc tĩnh – Static: câu lệnh được biên dịch ra, không thay đổi được khi chạy.
Hiện nay Dynamic SQL: cho phép chuẩn bị câu lệnh SQL trong khi chạy. các thành phần của câu lệnh SQL được ghép nối lại trong thời gian chạy cho phép mức linh hoạt rất linh hoạt rất cao trong khai thác CSDL. Giống như chuyển từ Compiler sang Interpreter.
bộ kí tự của SQL.
Các chữ cái thường a – z , chữ cái hoa A – Z.
Các chư số 0 – 9
Các kí tự khác: “ % & ‘ () * / + - , ; = ? _ và khoảng trống tên:
Không phân biệt chư hoa chữ thường.
Không quá 128 ký tự
Không trùng với các từ khoá, từ dành riêng, tên có tách riêng .
Bất kỳ sâu ký tự nào(không nhất thiết phải thuộc bộ kí tự của SQL, có trùng với từ khoá) đặt trong cặp dấu ngoặc kép và không quá 128 kí tự, kể cả cặp dấu ngoặc kép.
2. Câu vấn tin SQL.
Một câu lệnh SQL thường gọi là một Query. Như trên đã nêu, Query không chỉ đơn giản là hỏ – truy vấn thông tin từ CSDL để phục vụ người dùng.
một SQL query có thể
Tạo lập hay huỷ một bảng.
Thêm, xoá, cập nhật một dòng, một trường.
Tìm kiếm trong nhiều bảng có liên quan.
Thay đổi chế độ an toàn
trước hết ta tập trung vào chức năng hay sử dụng nhất của một SQL query là truy vấn thông tin.
Vi dụ:
Cán bộ(MãCB: Xâu kí tự,Họvàtên : Xâu kí tự, Giớitính :Boolean, Nămsinh: Số nguyên, lương: Số thực:.)
Xemáy(MãXM: Xâu kí tự, Màuxe: Xâu kí tự, Màuxe : Xâu kí tự,Giátiên: số thực)
SửDụng(MãCB: Xâu kí tự, MãXM: Xâu kí tự, Ngàybắtđầu: Ngày tháng, Ngàykếtthúc: Ngày Tháng).
2.1. Cú pháp chung – câu lệnh SELECT.
Câu lệnh SQL không phân biệt chữ in hoa, viết thường (Nhưng kiểu dữ liệu Char = sâu kí tự thì có phân biệt)
Dấu cách có thể là các khoảng trắng, dấu table, dấu xuống dòng.
Kết thúc câu lệnh có thể là: dấu chấm phẩy hoặc khoảng trắng tuỳ hệ thống.
Ví dụ:
SELECT Họvaten, Ngaysinh
FROM CanBo_1
WHERE Luong = 400
2.2Các thành phần cơ bản .
Các từ khoá + các biểu thức -> các điều khoản
các điều khoản tạo thành câu lệnh SQL
SELECT điều khoản Select
FROM điều khoản From
WHERE điều khoản Where
+ Danh sách tên bảng
Các tên bảng cách nhau dấu phẩy. Một tên bảng có thể kèm tên biến bảng (biến phạm vi) đại diện cho bảng đó. Tên biến bảng đặc biệt có ích khi hai bảng có trung tên cột.
+ Danh sách tên cột
Các tên cột cách nhau dấu phẩy
Thứ tự giống như đã liệt kê, có thể khác với thứ tự vố có trong bảng.
Kí tự đại diện * = tất cả các cột theo thứ tự vốn có.
+ Điều kiện tìm kiếm
Điều kiện tìm kiếm là một biểu thức logic. một biểu thức điều kiện được dung với từ khoá Where để tạo thành điều khoản Where, ấn định tiêu chuẩn tìm kiếm thông tin xuất ra. Chỉ những dữ liệu thoả điều kiện đã nêu mới được đưa vào kết quả truy vấn.
Biểu thức điều kiện trong điều khoản Where là liên kết bằng các phép toán logic AND, OR, NOT có của các biểu thức so sánh dạng biểu thức op biểu thức
ở đây op là là một trong các phép toán ,>=,=, còn biểu thức là biểu thức số học hay xâu kí tự với các toán hạng là các tên cột trong các bảng hoặc giá trị hằng.
Có thể hình dung cách tính kết quả của câu lệnh Select như sau
Lấy tích đề các các bảng có trong điều khoản From.
Xoá những dòng trong quan hệ tích không thoả điều kiện.
Xoá những cột không có trong danh sách tên cột
Nếu có lựa chọn DISTINCT thì loại bỏ các dòng trùng nhau, chỉ giữ lại một.
2.3 Từ khóa DISTINCT/ALL
DISTINCT = chỉ lấy những dòng khác nhau
Nghĩa là nếu có nhiều dòng giống nhau chỉ lấy một đại diện.
ALL = tất cả các dòng, kể cả trùng nhau
Đây là mặc định, không cần gõ ALL
Cú pháp
Select DISTINCT …..
Select ALL …………..
Ví dụ:
SELECT DISTINCT Phongban
FROM CanBo_1
Vấn tin trên sẽ cho danh sách các phòng của cơ quan X
3.Biểu thức
Là một hợp các toán hạng và phép toán.
Các phép toán bao gồm phép toán số học, phép toán xâu kí tự, phép so sánh
Biểu thức có kết quả là một số, xâu kí tự hay giá trị logic.
Ví dụ:
Biểu thức số : (luong*1.05)
Biểu thức logic: (họvàtên Nguyễn văn A’,Lương <=500)
Biểu thức xâu: Họ và tên + điện thoại.
Các biểu thức được sử dụng trong câu lệnh SQL:
- Trong điều khoản Select để kết xuất thông tin trực tiếp: Trong danh sách tên cột có thể dùng không chỉ các tên cột mà cả một biểu thức mà cả các toán hạng là các tên cột.
- Làm điều kiện tìm kiếm trong điều khoản WHERE, HAVING…
Biểu thức số học.
Toán tử số học: Cộng, nhân , trừ , chia, modulo(a%b hoặc mod(a,b)).
Các biểu thức số học, biểu thức xâu có thể sử dụng trong điều khoản Select để kết xuất thông tin trực tiếp.
Ví dụ: Giả sử mọi người đều được phụ cấp thêm 5% lương. Có thể hiện thị mức thực lĩnh như sau:
Select hovaten, luong *1.05
From canbo_1
ALIAS – Tên hiệu
Trong các ví dụ trên tên cột sẽ được hiện thị là lương*1.05 hoặc giá bán buôn + 0,15.
SELECT hovaten, luong*1.05 sothuclinh
FROM canbo_1
SELECT tenhang, giabanbuon+0,15 giabanle
FROM banggia
Các tên mới thực lĩnh, giá bán le gọi là ALIAS-ten hiệu, tên thay thế
Biểu thức xâu
Phép nối xâu.
Toán tử || hoặc +
Dung để nối các xâu lại tạo thành xâu lớn hơn.
Ví dụ:
SELECT HoDem || Ten Hovaten
FROM canbo
LIKE
Khi không biết thật chính xác một phần của xâu hoặc chỉ quan tâm đến mnột phần nào đó của xâu có thể dùng LIKE với các ký tự đại diện %, _
Ký tự đại diện % thay cho một xâu con bất kỳ.
Ký tự đại diện _ thay cho một ký tự bất kỳ
Toán tử logic
AND, OR, NOT
Các phép toán logic có thể dùng để xây dựng các biểu thức điều kiện phức tạp hơn trong điều khoản Where.
Ví dụ:
SELECT *
FROM employee
WHERE phongban= “ kinh doanh”
OR phongban= “hanhchinh” Or phongban=” taivu”
Toán tử tập hợp
BEWEEN để xác định một đoạn con trong vùng giá trị có thể của một cột.
IN để xác định một danh sách các giá trị có thể.
Vi dụ:
SELECT column_name_1,. ..column_name_n
FROM table_name_1, . . ,table_name_n
WHERE column_name IN(value_1,. . .,value_n)
Các hàm thao tác dữ liệu
Các câu lệnh SQL thông thường kết xuất dữ liệu lần lượt theo từng dòng của bảng.
Các hàm xử lý nhóm Aggegate function – Xử lý dữ liệu toàn bộ các dòng của bảng hoặc một nhóm dòng thoả mãn điều kiện nào đó và cho ra chỉ một kết quả. Đôi khi cũng gọi là hàm nhóm – GROUP FUNCTION.
Dưới đay sẽ giới thiệu các hàm đó.,
COUNT: Đếm số dòng thảo mãn điều khoản WHERE
Ví dụ: Đếm số nhân viên của phòng kinh doanh.
SELECT COUNT(*)
FROM canbo_1
WHERE phongban=”kinhdoanh”
ở đâu không có điều khoản WHERE thì sẽ đếm toàn bộ nhân viên.
SUM: Tính tổng một cột.
Cột phải là kiểu số
Bị lỗi nếu không phải kiểu số
Ví dụ:
SELECT SUM(luong)
FROM canbo_1.
AVG: Tính trung bình cộng của cột
Cột phải là kiểu số
Bị lỗi nếu không phải kiểu số
Ví du:
SELECT AVG(luong)
FROM canbo_1
MAX: Cho giá trị cực đại trong cột.
Có thể áp dụng cho một kiểu số và cả cột kiểu xâu tự.
Vi dụ:
SELECT MAX(luong)
FROM canbo_1
MIN: Cho giá trị cực tiểu trong cột.
Có thể áp dụng cho cột kiểu số và cả cột kiểu xâu ký tự.
Ví du:
SELECT MIN(hovaten).
FROM canbo_1
Hàm VARIANCE:
Cho bình phương của độ lệch tiêu chuẩn.
Chí áp dụng cho cột kiểu số
Ví dụ:
SELECT VARIANCE(luong).
FROM canbo_1
STDDEV: Độ lệch tiêu chuẩn – Standard Deviation
Chỉ áp dụng cho các cột kiểu số.
Các hàm thời gian
SYSDATE: Thời gian hệ thống.
Dùng để so sánh: tìm các công việc chưa bắt đầu, đã kết thúc. . .
ADD_MONTHS:
Dịch lùi lại cộng thêm một số tháng từ một ngày cho trước.
Ví dụ:
Giả sử có bảng dự án về quản lý dự án gồm các trường ngay bắt đầu ngày kết thúc. .
Nếu có sự cố làm dự án chậm mất hai tháng để hiện thị các công việc còn chưa kết thúc được cần dùng hàm ADD_MONTH.
SELECT congviec,ngaybatdau,ngayketthuc, ADD_MONTH
(ngayketthúc,2)
FROM duan
MONTH_BEWEEN: đếm số tháng giữa hai mốc ngày.
Ví dụ:
SELECT congviec ngaybatdau, ngayketthúc,
MONTH_BEWEEN(ngaybatdau,ngayketthúc) thờigian
FROM duan
Các hàm số học.
ABS giá trị tuyệt đối
CELL : Số trần- số nguyên nhỏ nhất hay bằng đối số.
FLOOR: Số sàn - số nguyên bé nhất hay bằng đối số.
Và một số các hàm sử lý khác và các hàm xâu ký tự khác.
XỬ LÝ TẬP KẾT QUẢ.
Các phép toán tập hợp
Nêu hai câu lệnh SELECT trả về hai bảng kết quả cùng kiểu , nghĩa là có danh sách các cột giống nhau thì có thể dùng các phép toán tập hợp đối với hai tập kết quả đó.
UNION: Hợp hai kết quả SELECT có loại bó trùng nhau.
UNION ALL: Hợp hai kết quả SELECT , không loại bỏ trùng nhau.
INTERSECT: Giao hai kết quả SELECT
EXCEPT: Hiệu hai kết quả.
Điều khoản ORDER BY dùng để kết xuất thông tin theo thứ tự của một cột được chọn làm khoá xắp xếp.
Có thể xắp theo nhiều, trước hết xắp theo cột thứ nhất trong danh sách khoá, sau đó trong từng nhóm cùng cột thứ nhất lại xắp theo cột thứ hai.
Ví dụ:
SELECT *
FROM canbo_1
ORDER BY phongban,namsinh DESC
ASC: tăng dần ,là lựa chọn mặc định
DESC: giảm dần
Có thể thay tên cột bằng số thứ tự cột trong bảng
Điều khoản GROUP BY
Khác với ORDER BY là in ra mọi dòng sau đó không loại bỏ các giá trị trùng hợp, xử lý cả nhóm dòng cùng giá trị như một đơn vị.
SELECT phongban, COUNT(*) songuoi
FROM canbo_1
GROUP BY phongban
Điều khoản HAVING
WHERE không làm việc với điều khoản GROUP BY khi dùng các hàm xử lý như nhóm AVG, SUM.,. . phải dùng HAVING.
SELECT phongban, SUM(luong)
FROM canbo_1
GROUP BY phongban
HAVING SUM(luong)>. . .
Có thể phối hợp nhiều điều khoản để thực hiện các truy vấn tin tuỳ ý thóat thoả mãn nhu cầu của người dùng.
Ví dụ:
Có bảng chiséc (người nhận, số tiền). Câu lệnh sau sẽ xuất ra từng người nhận séc với tổng số tiền và số lần nhận nhưng loại bỏ những người mà có tổng số tiền rất nhỏ(<=50).
SELECT NgườiNhận,
SUM (SốTiền) Tổng,
COUT (NgườiNhận) SốLần
FROM ChiSéc
GROUP BY NgườiNhận
HAVING SUM (SốTiền) > 50
Truy vấn nhiều bảng.
+ nối tự nhiên hai bảng – Join.
SELECT *
FROM Bang_1, Bang_2
Đây là phép nối không có điều kiện gi. điều khoản WHERE không có mặt. kết quả sẽ xuất ra tích Đề các của hai bảng Bang_1. X Bang_2.
nếu bảng 1 có m dòng, bảng 2 có n dòng thì kết quả sẽ gồm m*n dòng.
+ Nối có điều kiện
Việc chuẩn hoá loại bỏ dư thừa dữ liệu làm cho bảng nhỏ hơn và cơ sở dữ liệu gồm nhiều bảng hơn. Các câu vấn tin, trái lại cần tổng hợp dữ liệu từ nhiều bảng. Điều khoản Where thể hiện mối liên kết giữa các bảng. Rất thông thường, điều kiện liên kết các bảng là bằng nhau ở các cột chung. Ta có phép nối tự nhiên.
nhập dữ liệu trực tiếp từ câu lệnh.
Câu lệnh INSERT ….. VALUES
INSERT INTO tên bảng
(cột _ 1, cột_2,….)
Trong đó, danh sách cột cho biết các gía trị tương ứng được chèn vào cột nào, cột nào bị bỏ qua…
Thành phần INTO có thể bỏ qua.
Ví dụ:
INSERT INTO KhachHang
(HoVaTen, DienThoai)
VALUES (“ Pham Thanh Dung” , “520 – 555 – 1212”)
Nhập dữ liệu của bảng khác.
Câu lệnh INSERT ….SELECT
INSERT INTO BảngNhận
(Cột_ 1, Cột_ 2,….)
SELECT c1, c2, ….
FROM DanhSáchBảng
WHERE BiểuThưcĐiềuKiện
Một số hệ quản trị CSDL cho phép tạo bảng tạm. bảng tạm sẽ tự động bị xoá khi kết nối kết thúc. Ta đã biết rằng các câu lệnh truy vấn thông tin thường phải nối nhiều bảng. Quá trình này mất thì giờ. nếu có nhiều câu truy vấn khác nhau cần nối nhiều bảng thì viếc tạo bảng thì việc tạo bảng tạm thời một lần sẽ làm tốc độ xử lí.
cập nhật dữ liệu – câu lệnh UPDATE
UPDATE TableName
SET col-1 = val_1, col_2 = val_2…..
WHERE Condition
Ví dụ:
UPDATE CanBo
SET phongBan = ‘kinh doanh’, luong = 6000
WHERE HoVaTen = ‘Pham Quang B’
Xoá dữ liệu – câu lệnh DELETE
Có thể xoá nhiều một dòng, nhiều dòng, mọi dòng
Không thể xoá chỉ một vài cột
DELETE FROM TênBảng
WHERE Biểuthứcđiềukiện
+ Tạo lập và quản lí CSDL
Những khái niệm chung.
Việc tạo lập CSDL phụ thuộc nhiều vào từng hệ quản trị CSDL cụ thể. cần tham khảo kĩ tài liệu hướng dẫn. dưới đây là một số khái niệm chính cần biết về hệ quản trị CSDL SQL Sever.
Devies
Devices là tệp vật lí trên đĩa để lưu dữ liệu và tập nhật kí. Nó phải được tạo lập trước khi tạo CSDL.
Một database device là để chứa dữ liệu, dump device để lưu nhật kí giao tác.
Có thể tạo device bằng công cụ quản trị với giao diện đồ hoạ. Cũng có thể dùng dòng lệnh.
Ví dụ:
DISK INIT
NAME = ‘logical_name’,
PHYSNAME = ‘physical_name’
VDEVNO = virtual_device_number,
SIZE = number_of_2k__blocks
+ tạo lập bảng:
câu lệnh – CREAT TABLE
create table tênbảng
Têncột_1 Kiểudữliệu [ not NULL],
Têncột_2 Kiểudữliệu [ not NULL],
……
[ constraint….]
ở đây constraint là các ràng buộc toàn vẹn dữ liệu.
Các tên trường, tên bảng phải theo đúng quy định
Ví dụ:
Dài không quá 30 kí tự
Không phân biệt chữ hoa chữ, thường
Không trùng với từ khoá
Kiểu dữ liệu, tuỳ quy định của từng hệ thống.
Giá trị NULL.
Null nghĩa là không chứa giá trị nào, khác với khoảng trắng, số không.
Lựa chọn NOTNULL bắt buộc phải cung cấp giá trị cho cột đó mỗi khi thêm một bản ghi mới.
Thêm cột, sửa đổi cột
Câu lệnh ALTER TABLE.
Thêm cột
ALTER TABLE tênbảng
ADD têncột_1 KiểuDữLiệu,
Têncột_2 KiểuDữLiệu,
…..
Sửa đổi bảng
ALTER TABLE TênBảng
MODIFY Têncột_1 KiểuDữLiệu,
Têncột_2 KiểuDữLiệu,….
[ constraint .. ]
Huỷ bảng và huỷ CSDL
+ Ràng buộc toàn vẹn dữ liệu
Các loại ràng buộc toàn vẹn dữ liệu
Một cơ sở dữ liệu chỉ hữu ích nếu dữ liệu lưu trong đó là phù hợp và đúng đắn.
Ràng buộc toàn vẹn dữ liệu ngăn không cho phép nhập và lưu trữ các thông tin không phù hợp vào cơ sở dữ liệu. một thể hiện cụ thể của cơ sở dữ liệu sẽ gọi là hợp lệ nếu thoả mãn tất cả các ràng buộc toàn vẹn dữ liệu đã thiết lập .
Các ràng buộc toàn vẹn được thiết lập khi thiết lập các cơ sở dữ liệu và kiểm tra khi một ứng dụng cập nhật CSDL, không cho phép tạo ra một thể hiện không hợp lệ.
+Ràng buộc miền xác định.
Mỗi trường thuộc tính chỉ có thể nhận gía trị trong một miền xác định. Đây là những ràng buộc tự nhiên, ví dụ Ngày sinh phải là một giá trị ngày tháng.
Ràng buộc này phải được thiết lập khi tạo bảng, bằng cách chỉ rõ miền xác định sau mỗi tên trường.
Ví dụ:
CREATE TABLE Canbo(
MãCB : CHAR(20)
HọVàTên : CHAR(32)
GiớiTính : BOOLEAN
Nămsinh : INTEGER
Lương : REAL)
+ Ràng buộc liên quan đến nhiều bảng.
Nếu ràng buộc phức tạp, điều kiện kiểm tra liên quan đến nhiều hơn một vấn bảng, thì nên tạo một điều khoản xác nhận – ASSERTION.
CREATE ASSERTION tên điều khoản xác nhận CHECK biểu thức điều kiện
Giải pháp này sẽ hợp lý hơn viết trực tiếp điều kiện kiểm tra vào cấu lệnh vào bảng bởi vì.
Chọn kèm điều kiện kiểm tra vào bảng nào trong số các bảng có dính líu.
Hơn nữa quan trọng hơn, nếu bảng chứa điều kiện kiểm tra là rỗng thì điều kiện được coi là luôn đúng.
Ràng buộc khoá.
Trong mỗi quan hệ phải chỉ rõ một trường là khoá. Ràng buộc chính đảm bảo rằng không thể có cùng giá trị trên khoá chính.
Ràng buộc này được thiết lập khi tạo bảng, dùng từ khoá PRYMARY KEY cho khoá chính, UNIQUE cho các khoá dự bị kèm tên trường tương ứng.
Ví dụ:
CREATE TABLE Canbo(
…
CONSTRAINT Khoachinh PRYMARY KEY (MaCB)
CREATE TABLE Bandoc(
…
PRYMARY KEY (Mabandoc)
Ràng buộc với khoá ngoài
Khi hai quan hệ có mối liên hệ với nhau thì dữ liệu trong một quan hệ biến đổi sẽ kéo theo việc cập nhật dữ liệu trong quan hệ kia để đảm bảo tính tương thích. một ràng buộc toàn vẹn dữ liệu liên quan đến hai quan hệ cần được thiết lập trong trường này. Thông thường đây là ràng buộc với khoá ngoài.
Ràng buộc khoá ngoài được thiết lập khi tạo bảng chứa khoá ngoài bằng từ khoá FOREIGN KEY kèm tên trường khoá ngoài và REFERENCES kèm tên bảng chứa khoá chính.
Ví dụ:
CREATE TABLE mượn Trả(
…
FOREIGN KEY (Mãbanđọc) REFERENCES Bạnđọc
FOREIGN KEY (Mãsách) REFERENCES Khosách)
Đảm bảo toàn vẹn dữ liệu
Ràng buộc khoá chính được đảm bảo đơn giản bằng cách từ chối không cho phép thêm vào hay cập nhật một bộ có các giá trị trên trường khoá chính trùng với một bộ đã có trong quan hệ.
Ràng buộc tham chiếu đối với khoá ngoài phải xử lý phức tạp hơn. hệ quản trị không đơn giản từ chối các thao tác vi phạm ràng buộc tham chiếu.
Khi thêm một bộ mà giá trị của trường khoá ngoài không có mặt trong quan hệ gốc : hệ quản trị từ chối.
Khi xoá bỏ một bộ trong quan hệ được tham chiếu(quan hệ gốc), hệ quản trị có thể lựa chọn một trong 3 cách xử lý sau:
1, Xoá bỏ tất cả các bộ thuộc quan hệ tham chiếu mà giá trị của trường khoá ngoài trùng với giá trị khoá gốc đã bị xoá .
2, Không cho phép xoá bỏ bộ này nếu còn các bộ trong quan hệ tham chiếu đang tham chiếu đến nó.
3, Sửa đổi giá trị của trường khoá ngoài của các bộ tham chiếu đến bộ bị xoá thành một giá trị mặc định nào đó quy định trước.
- Khi cập nhật lại trường khoá chính của một bộ trong quan hệ được tham chiếu: cũng có 3 lựa chọn tương tự như trên.
An toàn dữ liệu – View và quyền thâm nhập.
View
Khác với các bảng còn gọi là bảng cơ sở, được lưu trong tệp CSDL, View cũng là một bảng nhưng các dòng của nó được tính nhờ cấu lệnh SELECT trong định nghĩa View
CREATE VIEW Canbotre
AS SELECT HovaTen, Gioitinh, namsinh
FROM Canbo
WHERE Namsinh > 1980
Một khi được tạo ra, có thể sử dụng View hoàn toàn giống như một bảng thông thường.
View được sử dụng để đảm bảo tính độc lập logic của dữ liệu. Có thể thay đổi các bảng cơ sở nhưng vẫn giữ nguyên View, nghĩa là các ứng dụng không cần phải sửa đổi lại.
View cũng được dùng trong mục đích an toàn dữ liệu.
một số người dùng có thể cấp các quyền đối với View nhưng có không có quyền gì đối với các bảng cơ sở dùng để tạo lên View.
Phân cấp quyền truy cập CSDL.
Vấn đề an toàn dữ liệu được đảm bảo qua cơ chế thẩm định quyền ưu tiên – privileges. Một người sử dụng hay nhóm người sử dụng sẽ được cấp một tên đăng nhập sử dụng CSDL và mật khẩu tương ứng. Các mức độ quyền ưu tiên khác nhau sẽ được cấp cho từng người, từng nhóm người. phạm vi của các quyền ưu tiên được phân chia tới mức bảng cơ sở hay View.
Câu lệnh GRANT cấp phát quyền truy cập CSDL
Các quyền ưu tiên được chia thành các mức như sau.
SELECT : Quyền được đọc các dữ liệu trong bảng hay View
INSERT: Quyền thêm giá trị mới vào cột tương ứng. nếu không có phần tên cột thì hiểu là có quyền INSERT với mọi cột của bảng
UPDATE: Có ý nghĩa tương tự như trên
DELETE: Quyền xoá dòng
REFERENCES: Quyền định nghĩa khoá ngoài trong một bảng khác tham chiếu đến cột này. nếu không có phần tên cột thì hiểu là có quyền với một cột của bảng.
nếu người sử dụng được cấp quyền cùng với GRANT OPTION thì người đó cấp lại chính quyền đó cho người khác.
cấu lệnh REVOKE tước bỏ quyền đã cấp phát.
Khi tước bỏ quyền bằng lệnh REVOKE có thể kèm lựa chọn CASCADE nghĩa là tước bỏ truy theo dây chuyền các quyền được cấp do GRANT
chỉ có người chủ sở hữu tạo ra lược đồ dữ liệu mới có quyền thực hiện các cấu lệnh CREATE, ALTER, DROP đối với lược đồ. quyền thực hiện các lệnh này cũng không thể được cấp cho người khác và cũng không huỷ bỏ được.