Đề cương SQL Server

Mục lục

Mục lục . . . . . . . . . 1

1 Giới thiệu về SQL Server 2005 . . . . . 5

1.1 Cài đặt SQL Server 2005 Express Edition . . . 5

1.1.1 Các yêu cầu cho hệ thống 32bit . . . . . 5

1.1.2 Các bước cài đặt SQL Server 2005 Express Edition . . . 7

1.2 Một số thao tác cơ bản trên SQL Server 2005 Express Edition. . 16

1.2.1 Tạo một CSDL mới . . . . . 16

1.2.2 Tạo bảng mới . . . . . . . 17

1.2.3 Xóa bảng, xóa CSDL . . . . . 19

1.2.4 Mở một query editor để viết câu lệnh SQL . . . 19

2 Structured Query Language (SQL) . . . . . 20

2.1 SQL là ngôn ngữ của cơ sở dữ liệu quan hệ . . . 20

2.2 Vai trò của SQL . . . . . . . 20

2.3 Giới thiệu sơ lược về Transact SQL (T-SQL) . . . 21

2.3.1 Ngôn ngữ định nghĩa dữ liệu ( Data Definition Language – DDL) . 22

2.3.2 Ngôn ngữ điều khiển dữ liệu (Data control language – DCL) . 22

2.3.3 Ngôn ngữ thao tác dữ liệu (Data manipulation language – DML) . 23

2.3.4 Cú pháp của T-SQL . . . . . 24

2.3.5 Các kiểu dữ liệu . . . . . 25

2.3.6 Biến (Variables) . . . . . 26

2.3.7 Hàm (Function) . . . . . 27

2.3.8 Các toán tử (Operators) . . . . . 27

2.3.9 Các thành phần điều khiển (Control of flow) . . . 28

2.3.10 Chú thích (Comment) . . . . . 28

2.3.11 Giá trị NULL . . . . . 28

3 Ngôn ngữ thao tác dữ liệu – DML . . . . . 29

3.1 Câu lệnh SELECT . . . . . . . 29

3.1.1 Danh sách chọn trong câu lệnh SELECT . . . 30

3.1.2 Mệnh đề FROM . . . . . 34

3.1.3 Mệnh đề WHERE - điều kiện truy vấn dữ liệu . . . 34

3.1.4 Phép hợp (UNION) . . . . . 38

3.1.5 Phép nối . . . . . . . 41

3.1.6 Các loại phép nối . . . . . 43

2

3.1.7 Phép nối theo chuẩn SQL-92 . . . . . 45

3.1.8 Mệnh đề GROUP BY . . . . . 47

3.1.9 Truy vấn con (Subquery) . . . . . 50

3.2 Thêm, cập nhật và xóa dữ liệu . . . . . 51

3.2.1 Thêm dữ liệu . . . . . . . 52

3.2.2 Cập nhật dữ liệu . . . . . 53

3.2.3 Xóa dữ liệu. . . . . . . 54

3.3 Các hàm trong T-SQL

3.3.1 Các hàm làm việc với kiểu dữ liệu số

3.3.2 Các hàm làm việc với kiểu dữ liệu chuỗi

3.3.3 Các hàm làm việc với kiểu dữ liệu Ngày tháng/ Thời gian

3.3.4 Hàm Cast và hàm Converter

4 Ngôn ngữ định nghĩa dữ liệu – DDL. . . . . 56

4.1 Tạo bảng . . . . . . . 56

4.2 Các loại ràng buộc. . . . . . . 58

4.2.1 Ràng buộc CHECK. . . . . 58

4.2.2 Ràng buộc PRIMARY KEY. . . . . 59

4.2.3 Ràng buộc FOREIGN KEY . . . . . 60

4.3 Sửa đổi định nghĩa bảng . . . . . 61

4.4 Xóa bảng . . . . . . . 63

4.5 Khung nhìn - VIEW . . . . . 63

4.6 Thêm, cập nhật, xóa dữ liệu trong VIEW . . . 65

4.7 Thay đổi định nghĩa khung nhìn . . . . . 65

4.8 Xóa khung nhìn . . . . . . . 66

5 Thủ tục lưu trữ, hàm và trigger. . . . . 67

5.1 Thủ tục lưu trữ (Stored procedure) . . . . . 67

5.1.1 Tạo thủ tục lưu trữ . . . . . 68

5.1.2 Lời gọi thủ tục. . . . . 69

5.1.3 Biến trong thủ tục lưu trữ . . . . . 69

5.1.4 Giá trị trả về trong thủ tục lưu trữ. . . . . 70

5.1.5 Tham số với giá trị mặc định . . . . . 71

5.1.6 Sửa đổi thủ tục . . . . . 72

5.1.7 Xóa thủ tục . . . . . . . 72

5.2 Hàm do người dùng định nghĩa (User Defined Function-UDF) . 72

5.2.1 Hàm vô hướng - Scalar UDF . . . . . 73

3

5.2.2 Hàm nội tuyến - Inline UDF . . . . . 74

5.2.3 Hàm bao gồm nhiều câu lệnh bên trong – Multi statement UDF . 75

5.2.4 Thay đổi hàm . . . . . . . 76

5.2.5 Xóa hàm . . . . . . . 77

5.3 Trigger . . . . . . . 77

5.3.1 Các đặc điểm của trigger . . . . . 77

5.3.2 Các trường hợp sử dụng trigger . . . . . 77

5.3.3 Khả năng sau của trigger . . . . . 78

5.3.4 Định nghĩa trigger . . . . . 78

5.3.5 Kích hoạt trigger dựa tr ên sự thay đổi dữ liệu trên cột . . . 82

5.3.6 Sử dụng trigger và Giao tác (TRANSACTION) . . . 83

5.4 DDL TRIGGER . . . . . . . 84

5.5 Enable/ Disable TRIGGER . . . . . 85

6 Sao lưu và phục hồi dữ liệu (Backup and Restore) . . . 87

6.1 Các lý do phải thực hiện Backup . . . . . 87

6.2 Các loại Backup . . . . . . . 87

6.2.1 Full backup và Differential backup . . . 87

6.2.2 Transaction log backup . . . . . 88

6.3 Các thao tác thực hiện quá trình Backup và Restore trong SQL Server 2005

Express Edition. . . . . . . 89

6.3.1 Sao lưu (Backup) . . . . . 89

6.3.2 Phục hồi (Restore) . . . . . 91

7 Kết nối vào SQL Server 2005 từ các ngôn ngữ lập trình để xây dựng các ứng dụng liên

quan đến CSDL . . . . . . . 101

7.1 Cấu hình Microsoft SQL Server 2005 . . . 101

7.1.1 Cho phép tiếp nhận các kết nối từ xa tr ên thể hiện của SQL Server . 102

7.1.2 Kích hoạt dịch vụ SQL Server Browser . . . 102

7.1.3 Tạo các ngoại lệ trên Windows Firewall . . . 103

7.2 Kết nối vào SQL Server trong các ngôn ngữ lập trình. . . 104

7.2.1 C# và VB.NET. . . . . 104

7.2.2 VB 6 . . . . . . . 106

7.3 Quản lý người dùng (user) và bảo mật (sercurity)

Tài liệu tham khảo . . . . . . . 108

pdf121 trang | Chuyên mục: SQL Server | Chia sẻ: dkS00TYs | Lượt xem: 1945 | Lượt tải: 1download
Tóm tắt nội dung Đề cương SQL Server, để xem tài liệu hoàn chỉnh bạn click vào nút "TẢI VỀ" ở trên
để thu hồi quyền đối với người sử dụng.
7.3.2 Cấp phát quyền
Câu lệnh GRANT được sử dụng để cấp phát quyền cho người dùng hay nhóm 
người dùng trên các đối tượng cơ sở dữ liệu. Câu lệnh này thường được sử dụng trong
các trường hợp sau:
• Người sở hữu đối tượng cơ sở dữ liệu muốn cho phép người dùng khác 
quyền sử dụng những đối tượng mà anh ta đang sở hữu.
• Người sở hữu cơ sở dữ liệu cấp phát quyền thực thi các câu lệnh (như
CREATE TABLE, CREATE VIEW,...) cho những người dùng khác.
7.3.2.1 Cấp phát quyền cho người dùng trên các đối tượng cơ sở dữ liệu
Chỉ có người sở hữu cơ sở dữ liệu hoặc người sở hữu đối tượng cơ sở dữ liệu 
mới có thể cấp phát quyền cho người dùng trên các đối tượng cơ sở dữ liệu. Câu lệnh 
GRANT trong trường hợp này có cú pháp như sau:
GRANT ALL [PRIVILEGES]| các_quyền_cấp_phát
[(danh_sách_cột)] ON tên_bảng | tên_khung_nhìn
|ON tên_bảng | tên_khung_nhìn [(danh_sách_cột)]
|ON tên_thủ_tục
|ON tên_hàm
TO danh_sách_người_dùng | nhóm_người_dùng
[WITH GRANT OPTION ]
Trong đó:
ALL [PRIVILEGES] Cấp phát tất cả các quyền cho người dùng trên 
đối tượng cơ sở dữ liệu được chỉ định. Các quyền có 
thể cấp phát cho người dùng bao gồm:
• Đối với bảng, khung nhìn, và hàm trả về dữ 
liệu kiểu bảng: SELECT, INSERT, DELETE, 
UPDATE và REFERENCES.
• Đối với cột trong bảng, khung nhìn: 
SELECT và UPDATE.
• Đối với thủ tục lưu trữ và hàm vô 
hướng:
EXECUTE.
Trong các quyền được đề cập đến ở trên, quyền
REFERENCES được sử dụng nhằm cho phép tạo 
khóa ngoài tham chiếu đến bảng cấp phát.
các_quyền_cấp_phát Danh sách các quyền cần cấp phát cho người 
dùng trên đối tượng cơ sở dữ liệu được chỉ định. Các 
quyền được phân cách nhau bởi dấu phẩy
tên_bảng|tên_khung_nhìn Tên của bảng hoặc khung nhìn cần cấp phát quyền.
danh_sách_cột Danh sách các cột của bảng hoặc khung nhìn cần cấp 
phát quyền.
tên_thủ_tục Tên của thủ tục được cấp phát cho người dùng.
tên_hàm Tên hàm (do người dùng định nghĩa) được cấp 
phát quyền.
danh_sách_người_dùng Danh sách tên người dùng nhận quyền được cấp phát. 
Tên của các người dùng được phân cách nhau bởi dấu 
phẩy.
WITH GRANT OPTION Cho phép người dùng chuyển tiếp quyền cho ngườ
dùng khác.
Các ví dụ dưới đây sẽ minh hoạ cho ta cách sử dụng câu lệnh GRANT để cấp phát
quyền cho người dùng trên các đối tượng cơ sở dữ liệu.
Ví dụ 4.1: Cấp phát cho người dùng có tên thuchanh quyền thực thi các câu lệnh
SELECT, INSERT và UPDATE trên bảng LOP
GRANT SELECT,INSERT,UPDATE 
ON lop
TO thuchanh
Cho phép người dùng thuchanh quyền xem họ tên và ngày sinh của các sinh viên (cột
HODEM,TEN và NGAYSINH của bảng SINHVIEN)
GRANT SELECT
(hodem,ten,ngaysinh) ON sinhvien
TO thuchanh
hoặc:
GRANT SELECT
ON sinhvien(hodem,ten,ngaysinh) 
TO thuchanh
Với quyền được cấp phát như trên, người dùng thuchanh có thể thực hiện câu lệnh sau
trên bảng SINHVIEN
SELECT hoden,ten,ngaysinh
FROM sinhvien
Nhưng câu lệnh dưới đây lại không thể thực hiện được
SELECT * FROM sinhvien
Trong trường hợp cần cấp phát tất cả các quyền có thể thực hiện được trên đối tượng
cơ sở dữ liệu cho người dùng, thay vì liệt kê các câu lệnh, ta chỉ cần sử dụng từ khoá 
ALL PRIVILEGES (từ khóa PRIVILEGES có thể không cần chỉ định). Câu lệnh dưới 
đây cấp phát cho người dùng thuchanh các quyền SELECT, INSERT, 
UPDATE, DELETE VÀ REFERENCES trên bảng DIEMTHI
GRANT ALL 
ON DIEMTHI
TO thuchanh
Khi ta cấp phát quyền nào đó cho một người dùng trên một đối tượng cơ sở dữ 
liệu, người dùng đó có thể thực thi câu lệnh được cho phép trên đối tượng đã cấp phát. 
Tuy nhiên, người dùng đó không có quyền cấp phát những quyền mà mình được phép 
cho những người sử dụng khác.Trong một số trường hợp, khi ta cấp phát quyền cho 
một người dùng nào đó, ta có thể cho phép người đó chuyển tiếp quyền cho 
người dùng khác bằng cách chỉ định tuỳ chọn WITH GRANT OPTION trong 
câu lệnh GRANT.
Ví dụ 4.2: Cho phép người dùng thuchanh quyền xem dữ liệu trên bảng SINHVIEN
đồng thời có thể chuyển tiếp quyền này cho người dùng khác
GRANT SELECT 
ON sinhvien 
TO thuchanh
WITH GRANT OPTION
7.3.2.2 Cấp phát quyền thực thi các câu lệnh
Ngoài chức năng cấp phát quyền cho người sử dụng trên các đối tượng cơ sở dữ 
liệu, câu lệnh GRANT còn có thể sử dụng để cấp phát cho người sử dụng một số quyền 
trên hệ quản trị cơ sở dữ liệu hoặc cơ sở dữ liệu. Những quyền có thể cấp phát trong 
trường hợp này bao gồm:
• Tạo cơ sở dữ liệu: CREATE DATABASE.
• Tạo bảng: CREATE RULE
• Tạo khung nhìn: CREATE VIEW
• Tạo thủ tục lưu trữ: CREATE PROCEDURE
• Tạo hàm: CREATE FUNCTION
• Sao lưu cơ sở dữ liệu: BACKUP DATABASE
Câu lệnh GRANT sử dụng trong trường hợp này có cú pháp như sau:
GRANT ALL | danh_sách_câu_lênh
TO danh_sách_người_dùng
Ví dụ 4.3: Để cấp phát quyền tạo bảng và khung nhìn cho người dùng có tên là
thuchanh, ta sử dụng câu lệnh như sau:
GRANT CREATE TABLE,CREATE VIEW 
TO thuchanh
Với câu lệnh GRANT, ta có thể cho phép người sử dụng tạo các đối tượng cơ sở
dữ liệu trong cơ sở dữ liệu. Đối tượng cơ sở dữ liệu do người dùng nào tạo ra sẽ do 
người đó sở hữu và do đó người này có quyền cho người dùng khác sử dụng đối tượng
và cũng có thể xóa bỏ (DROP) đối tượng do mình tạo ra.
Khác với trường hợp sử dụng câu lệnh GRANT để cấp phát quyền trên 
đối tượng cơ sở dữ liệu, câu lệnh GRANT trong trường hợp này không thể sử dụng 
tuỳ chọn WITH GRANT OPTION, tức là người dùng không thể chuyển tiếp 
được các quyền thực thi các câu lệnh đã được cấp phát.
7.3.3 Thu hồi quyền
Câu lệnh REVOKE được sử dụng để thu hồi quyền đã được cấp phát cho người 
dùng. Tương ứng với câu lệnh GRANT, câu lệnh REVOKE được sử dụng trong hai 
trường hợp:
• Thu hồi quyền đã cấp phát cho người dùng trên các đối tượng cơ sở dữ liệu.
• Thu hồi quyền thực thi các câu lệnh trên cơ sở dữ liệu đã cấp phát cho người 
dùng.
7.3.3.1 Thu hồi quyền trên đối tượng cơ sở dữ liệu:
Cú pháp câu lệnh REVOKE sử dụng để thu hồi quyền đã cấp phát trên 
đối tượng cơ sở dữ liệu có cú pháp như sau:
REVOKE [GRANT OPTION FOR]
ALL [PRIVILEGES]| các_quyền_cần_thu_hồi
[(danh_sách_cột)] ON tên_bảng | tên_khung_nhìn
|ON tên_bảng | tên_khung_nhìn [(danh_sách_cột)]
|ON tên_thủ_tục
|ON tên_hàm
FROM danh_sách_người_dùng
[CASCADE]
Câu lệnh REVOKE có thể sử dụng để thu hồi một số quyền đã cấp phát cho 
người dùng hoặc là thu hồi tất cả các quyền (ALL PRIVILEGES).
Ví dụ 4.4: Thu hồi quyền thực thi lệnh INSERT trên bảng LOP đối với người dùng
thuchanh.
REVOKE INSERT 
ON lop
FROM thuchanh
Giả sử người dùng thuchanh đã được cấp phát quyền xem dữ liệu trên các 
cột HODEM, TEN và NGAYSINH của bảng SINHVIEN, câu lệnh dưới đây sẽ 
thu hồi quyền đã cấp phát trên cột NGAYSINH (chỉ cho phép xem dữ liệu trên cột 
HODEM
và TEN)
REVOKE SELECT
ON sinhvien(ngaysinh) 
FROM thuchanh
Khi ta sử dụng câu lệnh REVOKE để thu hồi quyền trên một đối tượng cơ sở dữ
liêu từ một người dùng náo đó, chỉ những quyền mà ta đã cấp phát trước đó mới được
thu hồi, những quyền mà người dùng này được cho phép bởi những người dùng khác 
vẫn còn có hiệu lực. Nói cách khác, nếu hai người dùng khác nhau cấp phát cùng các 
quyền trên cùng một đối tượng cơ sở dữ liệu cho một người dùng khác, sau đó người
thu nhất thu hồi lại quyền đã cấp phát thì những quyền mà người dùng thứ hai cấp phát 
vẫn có hiệu lực.
Ví dụ 4.5: Giả sử trong cơ sở dữ liệu ta có 3 người dùng là A, B và C. A và B đều có 
quyền sử dụng và cấp phát quyền trên bảng R. A thực hiện lệnh sau để cấp phát quyền 
xem dữ liệu trên bảng R cho C:
GRANT SELECT 
ON R TO C
và B cấp phát quyền xem và bổ sung dữ liệu trên bảng R cho C bằng câu lệnh:
GRANT SELECT, INSERT 
ON R TO C
Như vậy, C có quyền xem và bổ sung dữ liệu trên bảng R. Bây giờ, nếu B thực hiện 
lệnh:
REVOKE SELECT, INSERT
ON R FROM C
Người dùng C sẽ không còn quyền bổ sung dữ liệu trên bảng R nhưng vẫn có thể xem
được dữ liệu của bảng này (quyền này do A cấp cho C và vẫn còn hiệu lực).
Nếu ta đã cấp phát quyền cho người dùng nào đó bằng câu lệnh GRANT với tuỳ 
chọn WITH GRANT OPTION thì khi thu hồi quyền bằng câu lệnh REVOKE phải chỉ 
định tuỳ chọn CASCADE. Trong trường hợp này, các quyền được chuyển tiếp 
cho những người dùng khác cũng đồng thời được thu hồi.
Ví dụ 4.6: Ta cấp phát cho người dùng A trên bảng R với câu lệnh GRANT như sau:
GRANT SELECT 
ON R TO A
WITH GRANT OPTION
sau đó người dùng A lại cấp phát cho người dùng B quyền xem dữ liệu trên R với câu 
lệnh:
GRANT SELECT 
ON R TO B
Nếu muốn thu hồi quyền đã cấp phát cho người dùng A, ta sử dụng câu lệnh REVOKE
như sau:
REVOKE SELECT 
ON NHANVIEN 
FROM A CASCADE
Câu lệnh trên sẽ đồng thời thu hồi quyền mà A đã cấp cho B và như vậy cả A và B đều 
không thể xem được dữ liệu trên bảng R.
Trong trường hợp cần thu hồi các quyền đã được chuyển tiếp và khả 
năng chuyển tiếp các quyền đối với những người đã được cấp phát quyền với 
tuỳ chọn WITH GRANT OPTION, trong câu lệnh REVOKE ta chỉ định mệnh 
đề GRANT OPTION FOR.
Ví dụ 4.7: Trong ví dụ trên, nếu ta thay câu lệnh:
REVOKE SELECT 
ON NHANVIEN 
FROM A CASCADE
bởi câu lệnh:
REVOKE GRANT OPTION FOR SELECT 
ON NHANVIEN
FROM A CASCADE
Thì B sẽ không còn quyền xem dữ liệu trên bảng R đồng thời A không thể chuyển tiếp
quyền mà ta đã cấp phát cho những người dùng khác (tuy nhiên A vẫn còn quyền xem
dữ liệu trên bảng R).
7.3.3.2 Thu hồi quyền thực thi các câu lênh:
Việc thu hồi quyền thực thi các câu lệnh trên cơ sở dữ liệu (CREATE 
DATABASE, CREATE TABLE, CREATE VIEW,...) được thực hiện đơn giản với câu 
lệnh REVOKE có cú pháp:
REVOKE ALL | các_câu_lệnh_cần_thu_hồi
FROM danh_sách_người_dùng
Ví dụ 4.8: Để không cho phép người dùng thuchanh thực hiện lệnh CREATE TABLE
trên cơ sở dữ liệu, ta sử dụng câu lệnh:
REVOKE CREATE TABLE 
FROM thuchanh
Tài liệu tham khảo
1. Giáo trình hệ quản trị cơ sở dữ liệu SQL Server, Khoa CNTT, Đại học Huế.
2. SQL Server 2005, T-SQL Recipes: Problem, Solution, Approach – Appress Publisher.
3. Sams Teach yourself Microsoft SQL Server 2005 Express in 24 hours.

File đính kèm:

  • pdfĐề cương SQL Server.pdf
Tài liệu liên quan