Giáo trình CSDL - Phần 2: SQL Server
MỤC LỤC
BÀI 1: GIỚI THIỆU MICROSOFT SQL SERVER 2000.4
1.1 Tổng quan vềSQL Server 2000. .4
1.2 Các thành phần của SQL Server 2000.7
1.3 Kiến trúc của CSDL quan hệ(relational Database Architecture) .7
1.4 Giới thiệu vềTransact-Sql.11
BÀI 2: CÀI ĐẶT SQL SERVER 2000 .12
2.1 Lập kếhoạch cài đặt SQL SERVER 2000 .12
2.2 Quyết định những chọn lựa cấu hình cài đặt SQL SERVER 2000 .12
2.2.1 Xác định tài khoản người dùng (User account) thích hợp cho SQL Server
Sevice và SQL Server Agent Service.12
2.2.2 Chọn một chế độxác thực (Authentication Mode) .13
2.2.3 Xác định Collation .13
2.2.4 Chọn Network Libraries.13
2.2.5 Xác định client Licensing Mode .13
2.3 Các bước cài đặt SQL Server 2000. .13
2.4 Tạo tập tin cài đặt không tham dự(unattended) và cài đặt từxa (Remote) SQL
Server 2000.20
2.5 Kết quảcủa việc cài đặt SQL SERVER 2000 .21
BÀI 3: CÁC CÔNG CỤCỦA SQL SERVER.22
3.1 SQL ENTERPRISE MANAGER.22
3.2 SQL SERVER SERVICES MANAGER .22
3.2.1 Các dịch vụcủa SQL Server .23
3.2.2 Khởi động, tạm ngưng, dừng các dịch vụcủa SQL Server.24
3.3 OSQL.24
3.4 SQL QUERY ANALYZER .25
3.4.1 Giới thiệu.25
3.4.2 Khởi động Query Analyzer .26
3.4.3 Thành phần chính của Query Analyzer.26
3.4.4 Một vài phím nóng dùng trong Query Analyzer .28
BÀI 4: LÀM VIỆC VỚI CỞSỞDỮLIỆU SQL SERVER .29
4.1 Thiết kếmột cơsởdữliệu. .29
4.2 Cơsởdữliệu của SQL SERVER 2000 .31
4.3 Tạo, hiệu chỉnh cởsởdữliệu SQL SERVER.34
4.3.1 Giới thiệu.34
4.3.2 Tạo cơsởdữliệu .34
4.3.3 Thao tác trên cơsởdữliệu của SQL Server .37
BÀI 5: KIỂU DỮLIỆU – LÀM VIỆC VỚI BẢNG.41
5.1 Kiểu dữliệu (data type) .41
5.1.1 System-Supplied Datatype. .41
5.1.2 User-defined datatype. .42
5.2 Làm việc với bảng của SQL Server.43
5.2.1 Tạo một bảng mới .43
5.2.2 Hiệu chỉnh bảng .45
5.2.3 Xóa bảng khỏi cơsởdữliệu.46
5.3 Bảng tạm (Temporary Tables).46
BÀI 6: TOÀN VẸN DỮLIỆU.48
6.1 Giới thiệu toàn vẹn dữliệu (data Integrity) .48
6.2 Tìm hiểu các toàn vẹn dữliệu. .48
6.2.1 Định nghĩa NULL/NOT NULL .48
6.2.2 Giá trịmặc định (Default Values) .49
6.2.3 Thuộc tính Identity:.52
6.2.4 Check.53
6.2.5 Primary key Constraint.54
6.2.6 Unique Constraints.57
6.2.7 Foreign Key Constraint .58
BÀI 7: TRUY XUẤT CƠSỞDỮLIỆU CỦA SQL SERVER.61
7.1 Câu lệnh SELECT .61
7.2 Sửdụng JOINS đểtruy xuất dữliệu.66
7.3 Dùng Sub-Queries .68
7.4 Hiệu chỉnh dữliệu trong cơsởdữliệu của SQL SERVER.69
7.4.1 Chèn (INSERT) dữliệu vào CSDL.69
7.4.2 Cập nhật (UPDATE) dữliệu vào CSDL.71
7.4.3 Xóa dữliệu trong cơsởdữliệu.71
BÀI 8: KHUNG NHÌN - VIEW.73
8.1 Giới thiệu vềView.73
8.2 Tạo, hiệu chỉnh, xóa View.73
8.3 Tạo Partition view .74
8.4 Truy xuất dữliệu thông qua View.75
8.4.1 Xem dữliệu thông qua view. .75
8.4.2 Hiệu chỉnh dữliệu thông qua View. .75
BÀI 9: CHUYỂN ĐỔI DỮLIỆU .77
9.1 Khái niệm chuyển đổi và biến đổi dữliệu.77
9.1.1 Import/Export dữliệu.77
9.1.2 Biến đổi dữliệu (Data Transformations) .77
9.1.3 Các công cụchuyễn đổi dữliệu (Data transfer tools) .77
9.2 Dịch vụchuyển đổi dữliệu DTS (Data Transformation Services - DTS) .78
9.2.1 DTS Package.78
9.2.2 DTS Connections. .78
9.2.3 DTS Tasks.78
9.2.4 DTS Package Workflow.80
9.2.5 DTS Package Storage.80
9.3 Thực hiện việc biến đổi và chuyển đổi dữliệu bằng công cụ đồhọa DTS.80
9.3.1 DTS Import/Export Wizard.80
9.3.2 DTS Designer .81
9.4 Dùng BULK COPY (BCP) và BULK INSERT.88
BÀI 10: CƠBẢN VỀLẬP TRÌNH BẰNG TRANSACT- SQL.91
10.1 Khái niệm cơbản.91
10.1.1 Định danh -IDENTIFIERS. .91
10.1.2 Tham chiếu đến các đối tượng trong SQL Server. .91
10.1.3 Kiểu dữliệu (DATA TYPE).92
10.1.4 Batch .92
10.1.5 Kịch bản - SCRIPT .92
10.2 Biến (VARIABLES).92
10.3 Cấu trúc điều khiển.97
10.3.1 Khối BEGIN END .97
10.3.2 Phát biểu PRINT.97
10.3.3 Cấu trúc điều khiển IF ELSE.97
Giáo trình SQL Server2000 Trang 3
Trung Tâm CNTT - Trường ĐHCN Tp.HCM
10.3.4 Biểu thức CASE.99
10.3.5 Cấu trúc vòng lập WHILE .100
10.3.6 Lệnh RETURN .101
10.3.7 Lệnh WAITFOR .101
10.3.8 Lệnh RAISERROR.101
BÀI 11: PROCEDURES, FUNCTIONS.104
11.1 STORED PROCEDURES.104
11.1.1 Giới thiệu Stored proccedures.104
11.1.2 Tạo, thực thi, hiệu chỉnh, xóa stored procedures. .104
11.1.3 Tham sốvà biến trong Stored procedures.106
11.2 FUNCTIONS.110
11.2.1 Scalar Functions.111
11.2.2 Table-valued Functons.111
BÀI 12: TRANSACTIONS – LOCK.114
12.1 TRANSACTIONS.114
12.2 LOCK .116
BÀI 13: SỬDỤNG CURSORS ĐỂTRUY XUẤT DỮLIỆU.118
13.1 Khái niệm .118
13.2 Làm việc với T-SQL server cursors .119
13.3 Ví dụ. .121
BÀI 14: BẨY LỖI - TRIGGER .123
14.1 Giới thiệu vềtrigger.123
14.2 Tạo và quản lý các trigger .124
14.2.1 Tạo trigger.124
14.2.2 Quản lý trigger .125
14.3 Vài ví dụvềtrigger.125
BÀI 15: BẢO MẬT TRONG SQL SERVER .128
15.1 Khái niệm vềbảo mật.128
15.1.1 Mô hình truy cập bảo mật của SQL Server.128
15.1.2 Các chế độbảo mật.128
15.1.3 Tìm hiểu các Server-Wide Permission. .130
15.1.4 Tìm hiểu các quyền (Permission) chỉ định trên cởsởdữliệu. .131
15.1.5 Fixed Database Roles.132
15.2 Tạo tài khoản đăng nhập (Login). .133
15.2.1 Dùng Create Login Wizard.133
15.2.2 Dùng Enterprise Manager đểtạo một Login.137
15.2.3 Tạo Login bằng T-SQL.141
Ví dụ: Sp_grantlogin 'CDCN4\Bill' SQL Server Logins Các thủ tục hệ thống sau cho phép cấp, hũy, từ chối, hiệu chỉnh một login kết với một tài khoản người dùng SQL Server. Chỉ có các thành viên của sysadmin hoặc securityadmin server roles mới có thể thực thi các thủ tục hệ thống này Thủ tục hệ thống Mô Tả Sp_addlogin 'login', ['password', 'database', 'language', 'sid', encryption_option'] Tạo một login SQL Server mới. Password là NULL nếu không chỉ định. CSDL mặc định là master nếu không chỉ định. Ngôn ngữ mặc định là ngôn ngữ của server hiện hành nếu không chỉ định. Mặc định, password ở trong csdl master. Sp_droplogin 'login' Xóa một SQL Server login. Sp_password 'old_password', 'new_password', 'login' Thêm hoặc thay đổi password cho SQL Server login. Sp_defaultdb 'login', 'database' Thay đổi CSDL mặc định Sp_defaultlanguage 'login', 'language' Thay đổi ngôn ngữ mặc định. Ví dụ: Sp_addlogin 'Joe', 'Joe123', 'Northwind' Tạo một SQL Server login mới có tên là Joe, với password là Joe123 và CSDL mặc định Northwind. Server Roles Các thủ tục hệ thống sau được dùng để thêm hay xóa một login vào một server role. Chỉ có thành viên của sysadmin server role mới có thể thêm các login vào bất kỳ server role. Các thành viên của server role cũng có thể thêm các login vào server role đó. Thủ tục hệ thống Mô tả Sp_ addsrvrolemember 'login', 'role' Thêm login như là tàhnh viên của server role. Sp_dropsrvrolemember 'login', 'role' Xoá login không là thành viên của một server role. Ví dụ: Sp_addsrvrolemember 'Joe', 'securityadmin' Thêm login có tên là Joe vào server role Security Administrator. Database Access Các thủ tục sau đây được dùng để thêm hay xóa một login (Windows hoặc SQL Server) hiện hữu được quyền truy xuất trong CSDL hiện hành. Không giống như SQL Server Enterprise Manager, bạn có thể cấp một nhóm của Windows 2000 (hoặc Windows NT 4.0) group truy xuất đến CSDL mà không cần tạo login trước một cách tường minh trong Giáo trình SQL Server2000 Trang 143 Trung Tâm CNTT - Trường ĐHCN Tp.HCM bảng sysxlogins. Chỉ có các thành viên của sysadmin server role, và db_accessadmin và db_owner fixed database role mới có thể thực thi các thủ tục hệ thống này. Thủ tục hệ thống Mô tả Sp_grantdbaccess 'login', 'name_in_db' Thêm một login như là một user trong CSDL hiện hành. Mặc dù tên user name trong CSDL có thể khác với tên login, điều này không khuyến cáo. Sp_revokedbaccess 'name' Bỏ một login như là một user trong CSDL hiện hành. Ví dụ: USE Northwind EXEC Sp_grantdbaccess 'Joe' Cho phép login tên là Joe truy xuất đến CSDL hiện hành, dùng user name là Joe trong CSDL Northwind. Database Roles Các thủ tục hệ thống sau đây được dùng để thay đổi database owner, thêm hoặc xóa một tài khoản bảo mật vào một database role có sẳn, hoặc tạo hoặc xóa một user-defined database role. Use Northwind EXEC Sp_addrolemember 'db_securityadmin', ' CDCN4\KeToan' Thêm tài khoản CDCN4\KeToanvào db_securityadmin database role trogn CSDL Northwind. Thủ tục hệ thống Mô tả Sp_changedbowner 'login', remap_alias_flag Thay đổi owner của một CSDL người dùng. Chỉ có những thành viên của sysadmin server role hoặc owner database hiện hành mới có thể thau đổi owner của CSDL. Sp_addrolemember 'role', 'security_account' Thêm một tài khoản vào một database role trong CSDL hiện hành. Bạn có thể thêm một user-defined database role vào fixed hoặc user-defined database role. Chỉ có những thành viên của sysadmin server role và db_owner and db_security fixed database roles mới có thể thêm thành viên vào database role. Thành viên của database role có thể thành viên vào cho database role đó. Sp_droprolemember 'role', 'security_account' Xóa một tài khoản từ một CSDL vào CSDL hiện hành. Chỉ có những thành viên của sysadmin server role và db_owner và db_security fixed dababase roles mới có thể xóa các thành viên ra khỏi database role. Các thành viên của database role mới có thể xóa các thành viên ra khỏi database role. Sp_addrole 'role', 'owner' Thêm một user-defined database role mới trong CSDL hiện hành. Mặc dù bạn có thể chỉ định một owner của role, sử dụng mặc định là dbo là không được khuyến cáo. Các thành viên của sysadmin server role và db_securityadmin và db_owner fixed database roles mới có thể tạo user-defined database roles. Sp_droprole 'role' Xóa một user-defined database role ở CSDL hiện hành. Các tàhnh Giáo trình SQL Server2000 Trang 144 Trung Tâm CNTT - Trường ĐHCN Tp.HCM Thủ tục hệ thống Mô tả viên của sysadmin server role, db_securityadmin và db_owner fixed database roles mới có thể xóa user-defined database roles. Để xem các thông tin về login, dùng các thủ tục hệ thống sau: Thủ tục hệ thống Mô tả Sp_helplogins [ 'login' ] Trả về các thông tin của tất cả các login hoặc một login được chỉ định, kể cả các CSDL mà login có truy xuất đến và các database roles mà login là thành viên. Sp_helpsrvrolemember [ 'role' ] Trả về thông tin về tất cả các server roles và những thành viên của chúng hoặc tất cả các thành viên trong một server role chỉ định. Sp_helpuser [ 'security_account' ] Trả về thông tin về tất cả các user hoặc user chỉ định trong CSDL hiện hành, kể cả tất cả các hội thành viên của database role. Sp_helprolemember [ 'role' ] Trả về các thông tin của tất cả các database role hoặc tất cả các thành viên trong database role chỉ định trong CSDL hiện hành. Sp_helpntgroup [ 'name' ] Trả về các thông tin về các nhóm hoặc 1 nhóm chỉ định của Windows 2000 (hoặc Windows NT 4.0) trong CSDL hiện hành. Gán các quyền Database Các view và các stored procedure có thể được tạo trên các table. Khi một user cố gắng lấy thông tin thông qua view hoặc procedure, thì SQL Server 2000 phải kiểm tra user có được phép lấy dữ liệu hay không. Nếu view hoặc procedure được làm chủ bởi một user và của các bảng cơ sở lại là của một user khác thì SQL Server 2000 phải kiểm tra các quyền trên mỗi object trong dây chuyền đó. Khi một chuỗi các ownership kéo dài thì điều này sẽ ảnh hưởng đến việc thực hiện. Nhưng có lẽ quan trọng hơn là nó có thể bị gắt gối cho nhà quản trị vạch ra và gỡ lỗi các từ việc đưa ra bảo mật Các quyền về lệnh Câu lệnh Transact- SQL Quyền để thực thi câu lệnh Transact-SQL CREATE DATABASE Thừa kế bởi thành viên của sysadmin và dbcreator server roles. Mặc dù sysadmin và securityadmin server roles có thể cấp quyền một cách trực tiếp cho các tài khoản để thực hiện câu lệnh này, Tóm lại các tài khoản bảo mật sử dụng dbcreator server role nếu system administrator đại diện quyền. Quyền này chỉ tồn tại trong CSDL master. BACKUP DATABASE BACKUP LOG Kế thừa bởi các thành viên của sysadmin server role và db_owner và db_backupoperator fixed database roles. Mặc dù bạn có thể cấp quyền để chạy những câu lệnh này một cách trực tiếp đến các tài khoản bảo mật, một cách tổng quát bạn sẽ sử dụng db_backupoperator fixed database role. Giáo trình SQL Server2000 Trang 145 Trung Tâm CNTT - Trường ĐHCN Tp.HCM Câu lệnh Transact- SQL Quyền để thực thi câu lệnh Transact-SQL CREATE TABLE CREATE VIEW CREATE PROCEDURE CREATE DEFAULT CREATE RULE CREATE FUNCTION Kế thừa các thành viên của sysadmin server role và db_owner và db_ddladmin fixed database roles. Quyền cho phép tạo những đối tượng thì được cấp trực tiếp đến nhà lập trình trong suốt thời gian triển khai. Theo mặc định các object được làm chủ bởi người tạo ra đối tượng (mặc dù các đối tượng tạo bởi các thành viên của sysadmin server role thì chủ sẽ là dbo role). Các thành viên của db_owner hoặc db_ddladmin fixed database roles có thể được chỉ định dbo role như là owner của đối tượng đựơc tạo. Ngoài ra, các thành viên của sysadmin server role hoặc db_owner hoặc db_ddladmin fixed database role có thể chỉ định bất kỳ user như là chủ của object mà chúng tạo ra. Tuy nhiên, các user mà không là thành viên của một trong các role này thì không thể chỉ định user khác hoặc dbo role làm chủ của object chúng tạo ra. CREATE TRIGGER Kế thừa bởi chủ của table mà của sysadmin server role, và db_owner and db_ddladmin fixed database roles. Những thành viên này không thể cấp quyền để chạy câu lệnh này cho những tài khoản bảo mật khác.. Ví dụ: CREATE TABLE Northwind.dbo.CustomerTable (CustID nchar (5), CustomerName nvarchar (40)) Cho phép tạo một bảng, cấp ownership cho dbo role. Chỉ có những thành viên sysadmin server role và db_owner hoặc db_ddladmin fixed database roles có thể thực hiện một cách thành công câu lệnh này. Thay đổi Ownership của Object Một thành viên của db_owner, db_ddladmin, hoặc db_securityadmin fixed database role, hoặc a member of the sysadmin server role có thể thay đổi ownership của bất kỳ object trong bằng cách chạy thủ tục sp_changeobjectowner. sp_changeobjectowner 'CDCN4\KeToan.Customer', 'dbo' Đổi ownership của table Customer từ CDCN4\KeToanBill cho dbo role. Lưu ý Thay đổi owner của một object thì sẽ xó tất cả các quyền hiện có trên đối tượng. Nếu bạn cần giữ lại các quyền thì nên tạo Scrip trước khi đổi owner. Dùng Enterprise Manager đề Grant, Deny, or Revoke quyền lệnh Nhắp nút phải chuột tại CSDL cần thực hiện cấp/xoá/từ chối/xem các quyền Giáo trình SQL Server2000 Trang 146 Trung Tâm CNTT - Trường ĐHCN Tp.HCM Hình 52: Trang Permission của hộp thoại thuộc tính của CSDL Dùng Transact-SQL để Grant, Deny, or Revoke các quyền Dùng câu lệnh GRANT CREATE TABLE TO …. GRANT CREATE TABLE TO Joe, SalesManagers, [CDCN4\SQLServerAdmins] Cấp quyền lệnh CREATE TABLE cho Joe (một SQL Server login), SalesManagers (a user-defined database role), và CDCN4\SQLServerAdmins (một Windows group). Xem các quyền bằng Transact-SQL : Dùng sp_helprotect EXEC sp_helprotect NULL, NULL, NULL, 's' Xem tất cả các quyền câu lệnh trong CSDL hiện hành.
File đính kèm:
- Giáo trình CSDL - Phần 2_SQL Server.pdf