Giáo trình hệ quản trị cơ sở dữ liệu MS SQL Server 2000

MỤC LỤC

CHƯƠNG I. GIỚI THIỆU SQL SERVER 2000 7

I.1 GIỚI THIỆU: 7

I.2 LƯU TRỮ DỮ LIỆU TRONG MS SQL SERVER 2000 7

I.3 CÁC CÔNG CỤ TƯƠNG TÁC VỚI SQL SERVER 8

I.3.1 Enterprise Manager (EM): 8

I.3.2 Query Analyzer (QA): 9

CHƯƠNG II. THÀNH PHẦN CỦA SQL SERVER 2000 11

II.1 CÁC THÀNH PHẦN CỦA SQL SERVER 2000 11

II.2 CƠ SỞ DỮ LIỆU (CSDL) 12

II.2.1 Master: 12

II.2.2 Model: 12

II.2.3 MSDB: 12

II.2.4 TempDB: 12

II.2.5 Pubs: 12

II.2.6 Northwind: 13

II.3 CÁC ĐỐI TƯỢNG BÊN TRONG MỘT CSDL 13

II.3.1 Bảng (Table): 13

II.3.2 Khung nhìn (View): 13

II.3.3 Lược đồ quan hệ (Diagram): 13

II.3.4 Chỉ mục (Index): 13

II.3.5 Trigger: 14

II.3.6 Ràng buộc (Constraint): 14

II.3.7 Thủ tục thường trú (Stored Procedure): 14

II.4 KIỂU DỮ LIỆU (DATATYPE) 14

CHƯƠNG III. THAO TÁC CĂN BẢN TRÊN SQL SERVER 16

III.1 TẠO CSDL 16

III.1.1 Tạo bằng dòng lệnh với QA 16

III.1.2 Tạo CSDL bằng giao diện Enterprise Manager: 17

III.2 TẠO BẢNG (TABLE) 18

III.2.1 Tạo bằng dòng lệnh với QA 18

III.2.2 Tạo bằng giao diện EM: 19

III.3 THAY ĐỔI CẤU TRÚC BẢNG: 20

III.3.1 Thay đổi bằng dòng lệnh với QA 20

III.3.2 Thay đổi bằng giao diện EM: 20

III.4 XOÁ : 20

III.4.1 Xoá CSDL: 20

III.4.2 Xoá bảng: 20

III.5 TẠO SCRIPT: 20

CHƯƠNG IV. CHUẨN HOÁ VÀ QUAN HỆ 22

IV.1 LƯỢC ĐỒ QUAN HỆ (DIAGRAM) 22

CHƯƠNG V. KHUNG NHÌN (VIEWS) 25

V.1 KHÁI NIỆM CƠ BẢN 25

V.2 TẠO VIEW: 25

V.2.1 Tạo bằng dòng lệnh với QA 25

V.2.2 Tạo bằng giao diện EM: 25

CHƯƠNG VI. QUẢN TRỊ CSDL. CÁC THAO TÁC BACKUP, RESTORE, IMPORT, EXPORT 28

VI.1 CĂN BẢN VỀ QUẢN TRỊ CSDL 28

VI.2 SAO LƯU (BACKUP)VÀ PHỤC HỒI (RESTORE) 28

VI.2.1 Backup 28

VI.2.2 Restore 30

VI.3 IMPORT – EXPORT 31

VI.3.1 IMPORT 31

VI.3.2 EXPORT 32

CHƯƠNG VII. SCRIPT VÀ BATCH 34

VII.1 KHÁI NIỆM VỀ SCRIPT 34

VII.2 BATCH 34

VII.3 SCRIPT ĐƠN GIẢN 34

VII.3.1 USE: 35

VII.3.2 Khai báo biến trong SQL Server: 35

VII.3.3 OSQL: 35

VII.3.4 SQL động: 35

CHƯƠNG VIII. CÁC HÀM VÀ BIỂU THỨC HỖ TRỢ TRUY VẤN. 36

VIII.1 CÁC HÀM VÀ BIỂU THỨC HỖ TRỢ TRUY VẤN 36

VIII.1.1 AVG: 36

VIII.1.2 Min : 36

VIII.1.3 Max : 36

VIII.1.4 Count 36

VIII.1.5 Sum: 36

VIII.2 CÁC HÀM XỬ LÝ CHUỖI 36

VIII.2.1 ASCII: 36

VIII.2.2 Char: 37

VIII.2.3 Upper: 37

VIII.2.4 Lower: 37

VIII.2.5 Len: 37

VIII.2.6 Ltrim: 37

VIII.2.7 Rtrim: 37

VIII.2.8 Left: 37

VIII.2.9 Right: 37

VIII.2.10 CharIndex: 37

VIII.3 CÁC HÀM THỜI GIAN 37

VIII.3.1 GetDate(): 37

VIII.3.2 DatePart(): 38

VIII.3.3 DateDiff(): 38

VIII.3.4 Day(): 38

VIII.3.5 Month(): 38

VIII.3.6 Year(): 38

VIII.4 CÁC HÀM TOÁN HỌC 38

VIII.4.1 Square: 38

VIII.4.2 Sqrt: 38

VIII.4.3 Round: 38

VIII.5 CÁC HÀM CHUYỂN ĐỔI 38

VIII.5.1 Cast: 38

VIII.5.2 Convert: 38

CHƯƠNG IX. THỦ TỤC THƯỜNG TRÚ STORED PROCEDURE 39

IX.1 GIỚI THIỆU CHUNG 39

IX.2 TẠO MỘT SP 39

IX.3 XOÁ MỘT SP 40

IX.4 THAM SỐ TRONG SP 41

IX.4.1 Khai báo tham số: 41

IX.4.2 Cung cấp giá trị mặc định: 41

IX.4.3 Tham số output: 41

IX.5 CÁC LỆNH ĐIỀU KHIỂN 42

IX.5.1 Lệnh điều khiển IF ELSE 42

IX.5.2 Lệnh điều khiển CASE 42

IX.5.3 Lệnh điều khiển WHILE 43

IX.5.4 Lệnh điều khiển WAITFOR: 43

CHƯƠNG X. HÀM NGƯỜI DÙNG VÀ HÀM HỆ THỐNG 44

X.1 KHÁI NIỆM HÀM NGƯỜI DÙNG 44

X.2 TẠO VÀ XOÁ HÀM NGƯỜI DÙNG 44

X.2.1 Tạo hàm người dùng 44

X.2.2 Xoá hàm người dùng 44

X.3 HÀM HỆ THỐNG 44

X.3.1 Tạo hàm hệ thống từ hàm người dùng: 44

CHƯƠNG XI. TRIGGER 45

XI.1 KHÁI NIỆM: 45

XI.2 PHÂN LOẠI 45

XI.3 TẠO TRIGGER 45

XI.3.1 Cú pháp 45

XI.3.2 Tạo Trigger bằng EM. 46

CHƯƠNG XII. CHUYỂN TÁC (TRANSACTION) VÀ KHOÁ (LOCK) 48

XII.1 KHÁI NIỆM CHUYỂN TÁC 48

XII.2 KHOÁ (LOCK) VÀ ĐỒNG HÀNH (CONCURRENCY) 48

CHƯƠNG XIII. SỬ DỤNG NGÔN NGỮ LẬP TRÌNH TƯƠNG TÁC VỚI SQL SERVER 49

XIII.1 LẬP TRÌNH BẰNG ASP 49

XIII.1.1 Kết nối đến CSDL SQL Server: 49

XIII.1.2 Thực thi câu lệnh SQL: 49

XIII.1.3 Thao tác với các bản ghi của một bảng: 49

XIII.1.4 Cập nhật vào CSDL bằng Recordset: 50

XIII.1.5 Thực thi một SP của SQL Server 51

XIII.2 LẬP TRÌNH BẰNG VISUAL BASIC 51

XIII.2.1 Kết nối đến CSDL: 51

XIII.2.2 Thực hiện câu lệnh SQL: 52

XIII.2.3 Thực thi SP 52

XIII.2.4 Thao tác với bản ghi 52

CHƯƠNG XIV. MỘT SỐ VẤN ĐỀ NÂNG CAO. 53

XIV.1 SECURITY 53

XIV.2 CHUYỂN TÁC VÀ TRUY VẤN PHÂN TÁN 53

XIV.3 XML 53

XIV.4 TÌM KIẾM FULL TEXT SEARCH 53

XIV.5 DỊCH VỤ PHÂN TÍCH ANALYSIS SERVICES 53

XIV.6 DATABASE REPLICATE 53

XIV.7 ENGLISH QUERY 53

 

 

doc56 trang | Chuyên mục: SQL Server | Chia sẻ: dkS00TYs | Lượt xem: 2055 | Lượt tải: 3download
Tóm tắt nội dung Giáo trình hệ quản trị cơ sở dữ liệu MS SQL Server 2000, để xem tài liệu hoàn chỉnh bạn click vào nút "TẢI VỀ" ở trên
nếu cần ta có thể khởi tạo giá trị mặc định cho tham số:
CREATE PROCEDURE Doanhthu
@dauthang smalldatetime =’1/1/2004’,
@cuoithang smalldatetime
 AS
…
 Tham số output:
Nếu cần xuất giá trị ra ngoài khi SP thực thi xong, hoặc sử dụng kết quả của SP làm tham số đầu vào cho SP khác thì khai báo thuộc tính Output. 
CREATE PROCEDURE test
@X OUTPUT
 AS
…
CÁC LỆNH ĐIỀU KHIỂN 
Cũng giống như các ngôn ngữ lập trình, ta có thể viết các lệnh điều khiển trong SP nói riêng và trong các Script của SQL Server nói chung. 
 Lệnh điều khiển IF … ELSE
Cú pháp: 
IF 
	Begin
	End
ELSE
	Begin
	End
 Lệnh điều khiển CASE
Cũng giống như Select Case trong Visual Basic hoặc ASP
Cú pháp: 
CASE
When …………then …………
When ……….. then ……….
[ELSE ………………………..]
END
VD: 
CASE DatePart(d,NgayBatdau)
	When 1 then ‘SUN’
	When 2 then ‘MON’
	When 3 then ‘TUE’
	When 4 then ‘WED’
	When 5 then ‘THU’
	When 6 then ‘FRI’
	When 7 then ‘SUN’
END
 Lệnh điều khiển WHILE
Cú pháp: 
WHILE
	Begin
	End
 Lệnh điều khiển WAITFOR:
SQL Server tạm dừng một thời gian trước khi xử lý các lệnh tiếp theo.
Cú pháp: 
WAITFOR
DELAY 
hoặc
WAITFOR
	TIME 
HÀM NGƯỜI DÙNG VÀ HÀM HỆ THỐNG 
KHÁI NIỆM HÀM NGƯỜI DÙNG 
SQL Server cho phép người dùng tạo ra các hàm theo những tiêu chuẩn riêng, phù hợp với yêu cầu sử dụng. User Defined Function giống như Stored Procedure. Nó bao gồm các lệnh T-SQL kết hợp tạo nên hàm và có thể được gọi thực thi như là một đơn vị độc lập. 
Một số hạn chế của Hàm người dùng so với SP là tham số không được mang thuộc tính output, nghĩa là giá trị tham số không được truyền ra ngoài hàm. Thay vào đó muốn trả về giá trị ta phải dùng return. 
TẠO VÀ XOÁ HÀM NGƯỜI DÙNG 
Tạo hàm người dùng
CREATE FUNCTION [OWNER].[FUNCTION NAME] (PARAMETER LIST) 
RETURNS (return_type_spec) AS 
BEGIN 
(FUNCTION BODY) 
END
Xoá hàm người dùng
DROP FUNCTION 
HÀM HỆ THỐNG 
Hàm người dùng được tạo ra trong một CSDL và chỉ có hiệu lực trong CSDL đó. Nếu hàm có tính phổ biến sử dụng chung trong nhiều CSDL thì ta nên tạo nó như là hàm hệ thống. 
Khi đã là hàm hệ thống thì ta có thể gọi hàm như các hàm của SQL Server thông thường, ví dụ: hàm GetDate(), DatePart()
Tạo hàm hệ thống từ hàm người dùng: 
Tạo hàm trong CSDL Master (là 1 trong 6 CSDL sẵn có của SQL Server ngay từ lúc cài đặt) thay vì tạo hàm trong CSDL đang dùng (nhu CSDL Quanlynha)
Dùng tiền tố fn_TenHam
Thay đổi Owner của hàm (sử dụng SP sp_changeobjectowner hoặc dùng EM)
TRIGGER
KHÁI NIỆM: 
Trigger là một dạng SP đặc biệt dùng để đáp ứng một sự kiện cụ thể (Insert, Update, Delete). Nó bao gồm một đoạn Script được gắn vào bảng dữ liệu và tự động thực thi khi có một sự kiện xảy ra tương ứng với Trigger được gán cho sự kiện đó (trong khi SP chỉ thực thi khi được gọi ra) . 
Trigger không có tham số và giá trị trả về. 
Chỉ nên sử dụng Trigger trong trường hợp cần thiết, chẳng hạn trong những trường hợp sau: 
- Referential Integrity: ràng buộc toàn vẹn dữ liệu cho phù hợp với mô hình quan hệ cơ sở dữ liệu.
- Audit Trails: kiểm soát dữ liệu hiện tại khi có thay đổi đến giá trị trong bản ghi của bảng. 
- Check: kiểm tra dữ liệu nhập vào có phù hợp với mối liên hệ giữa các bảng với nhau.
- Kiểm chứng khi xoá bản ghi 
PHÂN LOẠI 
Có thể chia Trigger thành 3 loại theo sự kiện mà nó đáp ứng: 
- Insert Trigger.
- Update Trigger.
- Delete Trigger.
- Tổng hợp cả 3.
TẠO TRIGGER
 Cú pháp
Tạo Trigger giống như SP, và nó phải được tạo ra cho bảng cụ thể
Ví dụ: Tạo một Trigger cho bảng Hopdong để kiểm tra ràng buộc dữ liệu với bảng Nha (không thể tạo hợp đồng cho một nhà chưa nhập vào CSDL)
CREATE TRIGGER Ins ON [dbo].[Hopdong] 
FOR INSERT 
AS
if not exists 
( select 'true' from inserted where inserted.nhaid in (select nhaid from nha)
)
begin 
raiserror ('Không thể tạo Hợp đồng này vì Nhà chưa được nhập trong table Nhà',16,1)
rollback Tran
end 
Diễn giải: 
On: chỉ ra Trigger đang viết cho bảng hay khung nhìn nào. Nếu có từ khoá after thì không hỗ trợ view. 
For Insert /For Update / For Delete: dùng khai báo đối với Insert Trigger/Update Trigger, Delete Trigger. 
AS: giống như SP, nó chỉ định cho SQL Server biết điểm bắt đầu, sau AS là Script
 Tạo Trigger bằng EM. 
	Sau khi một bảng đã được gắn Trigger,nó sẽ tự động thực thi với sự kiện tương ứng. Chẳng hạn như ví dụ dưới đây, Trigger Ins được thực thi khi người dùng Insert một bản ghi mới vào bảng Hopdong. Nó đưa ra thông báo lỗi vì Nhà có NhaID =100 chưa tồn tại trong bảng Nha. 
CHUYỂN TÁC (TRANSACTION) VÀ KHOÁ (LOCK)
KHÁI NIỆM CHUYỂN TÁC 
Xuất phát từ nhu cầu khi giao tiếp với dữ liệu có những trường hợp chúng ta mong muốn hoặc đồng thời nhiều sự kiện diễn ra, hoặc không sự kiện nào. Ví dụ: thao tác chuyển tiền bao gồm 2 sự kiện: rút tiền từ tài khoản A và cộng vào tài khoản B, yêu cầu hoặc cả 2 thao tác đều phải hoàn thành, hoặc không thao tác nào hoàn thành. Đó chính là một Chuyển tác. 
Các lệnh: 
Begin: bắt đầu một chuyển tác; Commit: xác nhận chuyển tác đã hoàn thành.
Rollback: quay ngược chuyển tác. (Huỷ toàn bộ các sự kiện của chuyển tác)
Save : đánh dấu một điểm cho phép Rollback chỉ một phần chuyển tác.
Một ví dụ là chúng ta đã thực hiện chuyển tác ngầm Rollback TRAN trong Trigger Ins ở chương Trigger, khi nhận thấy có lỗi trong ràng buộc dữ liệu thì huỷ toàn bộ quá trình Insert dữ liệu:
if not exists 
( select 'true' from inserted where inserted.nhaid in (select nhaid from nha)
)
begin 
raiserror ('Không thể tạo Hợp đồng này vì Nhà chưa được nhập trong table Nhà',16,1)
rollback Tran
end 
KHOÁ (LOCK) VÀ ĐỒNG HÀNH (CONCURRENCY)
Khi có nhiều chuyển tác cùng thực hiện trên một đối tượng, người ta gọi là đồng hành. Dễ hiểu hơn, đồng hành là hiện tượng tại một thời điểm có nhiều người cùng kết nối và truy cập một đối tượng của CSDL. Trong nhiều trường hợp điều này sẽ xảy ra xung đột, ví dụ nhiều người đồng thời cố gắng sửa dữ liệu trong một bảng. 
Để kiểm soát người dùng thực hiện những chuyển tác đồng hành, ngăn ngừa xung đột, đụng độ, người ta dùng khoá. Có nghĩa là một người không thể làm gì để sửa đổi một đối tượng khi có một người khác đang truy cập nó trước người đó. Shared lock: Thực tế có nhiều kiểu khoá. Khoá căn bản nhất là khoá chia sẻ (Shared lock). Nó cho phép đọc dữ liệu và không cho phép thay đổi bất kỳ thuộc tính nào của dữ liệu. 
SỬ DỤNG NGÔN NGỮ LẬP TRÌNH TƯƠNG TÁC VỚI SQL SERVER
SQL Server thuần tuý chứa CSDL. Để cho phép người sử dụng khai thác được CSDL SQL Server, cần xây dựng những ứng dụng được phát triển bằng ngôn ngữ lập trình. 
LẬP TRÌNH BẰNG ASP
Sử dụng ASP để thao tác với CSDL nói chung và SQL Server nói riêng được đề cập kỹ trong giáo trình môn “Lập trình Web bằng ASP”. Ở đây chúng ta đề cập đến một số khía cạnh thực hành. 
Kết nối đến CSDL SQL Server: 
Dùng đối tượng Connection
‘tạo một Connection
Set Conn = Server.CreateObject("ADODB.Connection")
‘ Khởi tạo chuỗi kết nối
 strConn = "driver={SQL Server}; server=127.0.0.1; uid=iitm; pwd=test; database=quanlynha"
‘ Kết nối đến CSDL 
Conn.Open strConn
Thực thi câu lệnh SQL: 
conn.execute "update hopdong set giatien=10000000 where hopdongid=1"
Thao tác với các bản ghi của một bảng: 
Dùng đối tượng Recordset
<% 
‘ câu lệnh SQL
sqlString= “select * from Hopdong”
‘ Tạo đối tượng Recordset
Set RS = Server.CreateObject("ADODB.Recordset")
‘ thực thi câu lệnh SQL thông qua đối tượng kết nối Conn, kết quả trả về cho đối tượng Recordset.
Rs.Open sqlString,Conn
‘ duyệt từng bản ghi trong bảng Hopdong bằng Recordset, hiện thi dạng bảng trên ‘giao diện Web. 
<%
‘ vòng lặp do while để duyệt tất cả các bản ghi
do while not Rs.EOF
%>
<%
	‘ dịch chuyển đến bản ghi kế tiếp
	RS.MoveNext 	
 Loop
RS.close
%>
Cập nhật vào CSDL bằng Recordset: 
sqlString =”select * from hopdong”
Set RS1 = Server.CreateObject("ADODB.Recordset")
'de co the update 
adOpenDynamic=2
adLockPessimistic=2
Rs1.Open sqlString,Conn,adOpenDynamic,adLockPessimistic
do while not Rs1.EOF
‘ lấy giá tiền thuê nhà từ trường Giatien
tempGiatien=rs1(“giatien”)
‘ tăng giá tiền thuê nhà lên gấp đôi rồi cập nhật vào trường Giatien
rs1("giatien")=tempGiatien*2 
‘ xác nhận việc cập nhật
rs1.Update
rs1.MoveNext
loop
Rs1.Close
Thực thi một SP của SQL Server 
Trong ví dụ ở chương Stored Procedure ta đã tạo một SP tên “Doanhthu” trong CSDL Quanlynha
CREATE PROCEDURE Doanhthu
@dauthang smalldatetime,
@cuoithang smalldatetime
 AS
…
Gọi thực hiện SP đó từ ASP: 
‘ gán giá trị cho các biến
dauthang=”1/1/2004” ‘month/date/year
cuoithang=”1/31/2004”
‘câu lệnh sql gọi SP có tham số 
 sql="execute doanhthu " + dauthang + "," + cuoithang
 Set RS = Server.CreateObject("ADODB.Recordset")
 RS.Open sql,Conn
LẬP TRÌNH BẰNG VISUAL BASIC 
Sử dụng Visual Basic để thao tác với CSDL nói chung và SQL Server nói riêng được đề cập kỹ trong giáo trình môn “Lập trình VISUAL BASIC”. Về căn bản cũng tương đối giống ASP. 
Kết nối đến CSDL: 
‘Khai báo biến Connection
Dim Conn as New ADO
‘ chuỗi kết nối CSDL 
Dim StrConn as String
StrConn=”Provider=SQLOLEDB.1;Persist Security = False; uid=iitm; pwd=test; Initial Catalog=Quanlynha;server=127.0.0.1 ;”
‘ Tạo kết nối: 
Set Conn=CreateObject (“ADODB.Connection”)
Conn.Open StrConn
Thực hiện câu lệnh SQL:
Conn.Execute “Delete from hopdong where hopdongid=2”
Thực thi SP
Conn.Execute “Doanhthu ‘”&”1/1/2004”&” ‘,’ ”&”1/31/2004”&”’”
Thao tác với bản ghi
‘ Khai báo biến Recordset
Dim RS
‘ Tạo đối tượng Recordset
Set RS=CreateObject (“ADODB.Recordset”)
‘ Thực thi câu lệnh SQL cho kết quả trả về Recordset: 
Rs.open “Select * from Hopdong”, Conn, 2, 2
‘ Insert dữ liệu
RS.Addnew
RS(“NhaID”)=”2”
RS(“NhaCoquanID”)=”3”
RS(“NgayBatdau”)=”1/1/2004”
RS(“NgayKetthuc”)=”1/1/2006”
RS(“Giatien”)=”5000000”
RS.Update
‘ Đóng kết nối
RS.Close
Conn.Close
Set RS=nothing
Set Conn= nothing
MỘT SỐ VẤN ĐỀ NÂNG CAO. 
SECURITY
CHUYỂN TÁC VÀ TRUY VẤN PHÂN TÁN 
 XML
TÌM KIẾM FULL TEXT SEARCH
DỊCH VỤ PHÂN TÍCH ANALYSIS SERVICES
DATABASE REPLICATE
ENGLISH QUERY

File đính kèm:

  • docGiáo trình hệ quản trị cơ sở dữ liệu MS SQL Server 2000.doc
Tài liệu liên quan