1. Trang chủ
  2. » Giáo Dục - Đào Tạo

GIÁO TRÌNHMÔ ĐUN HỆ QUẢN TRỊ CSDL MS SQL SERVER 2

58 11 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

Thông tin cơ bản

Định dạng
Số trang 58
Dung lượng 851,89 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

THỦ TỤC LƯU TRỮ STORE PROCEDUCEGiới thiệu Để thuận lợi hơn trong việc sử dụng các câu lệnh có cấu trúc, và đáp ứng nhucầu khai thác dữ liệu của người dùng.. User-defined Stored Procedure

Trang 1

ỦY BAN NHÂN DÂN TỈNH BR – VTTRƯỜNG CAO ĐẲNG NGHỀ

GIÁO TRÌNH

MÔ ĐUN HỆ QUẢN TRỊ CSDL MS SQL SERVER 2

TRÌNH ĐỘ CAO ĐẲNG NGHỀ

Ban hành kèm theo Quyết định số: /QĐ-CĐN… ngày…….tháng….năm

………… của Hiệu trưởng trường Cao đẳng nghề tỉnh BR - VT

Trang 2

Bà Rịa – Vũng Tàu, năm 2015

Trang 3

LỜI GIỚI THIỆU

Công nghệ thông tin ngày càng phát triển và thậm nhập vào nhiều lĩnh vực trongcuộc sống Song song với sự phát triển đó, là nhu cầu quản lý dữ liệu ngày càng chặtchẽ Microsoft® SQL Server™ được ví như là trái tim của một nền tảng dữ liệu toàndiện, cho phép bạn có thể truy cập và gia công dữ liệu cho doanh nghiệp từ các thiết bịkhác nhau, các nền tảng và dịch vụ dữ liệu trong doanh nghiệp

Vì vậy tác giả đã biên soạn cuốn giáo trình Hệ quản trị CSDL MS SQL Server 2dùng cho học sinh cao đẳng nghề, ngoài ra nó còn là cuốn sách tham khảo của nhiềuđộc giả muốn tìm hiểu về SQL Server

Mục đích của giáo trình là trang bị cho học viên những kiến thức và kỹ năng vềxây dựngcác ứng dụng chuyên nghiệp theo mô hình Client/Server trên hệ quản trị cơ

sở dữ liệu MS SQL Server; quản trị được hệ quản trị cơ sở dữ liệu MS SQL Server từxa

Nội dung chính của giáo trình gồm các phần chính: Thủ tục lưu trữ (Store

Proceduce), Trigger, Hàm (Function), Bảo mật trong SQL Server và kết nối ứng dụngvới cơ sở dữ liệu

Mặc dù bản thân đã tham khảo các tài liệu và ý kiến tham gia của các đồng nghiệp,song cuốn giáo trình vẫn không tránh khỏi những thiếu sót Mong các bạn đóng góp ýkiến

Tôi xin cảm ơn các thầy cô khoa CNTT–Trường Cao đẳng nghề đã cho tôi các ýkiến đóng góp quý báu để tôi hoàn thiện giáo trình này

TÁC GIẢ

Trang 4

MỤC LỤC

BÀI 1: THỦ TỤC LƯU TRỮ (STORE PROCEDUCE) 9

1 Định nghĩa 9

2 Lợi ích khi quản lý dữ liệu bằng SPs 10

3 Các kiểu SPs 10

3.1 System stored procedures 10

3.2 User-defined Stored Procedure 12

a Cú pháp: 12

b Thực hiện User-defined Stored Procedures 12

c Sử dụng biến trong Stored Procedures 12

d Biên dịch lại - Re-compiling Stored Procedures 13

e Sửa cấu trúc của Stored Procedures 14

f Thông báo lỗi 14

BÀI 2 : TRIGGER 17

1 Giới thiệu Trigger 17

2 Tạo Insert trigger 18

3 Tạo Delete Trigger 18

4 Tạo Update trigger 19

4.1 Tạo Table Level Update Trigger 19

4.2 Tạo Column Level Update Trigger 20

5 Tạo Trigger có lựa chọn Encryption 20

6 Hiển thị danh sách các trigger trong DB 21

7 Sử dụng trigger để cài đặt Ràng buộc tham chiếu 22

8 Cascade Delete sử dụng Nested trigger 22

9 Instead of trigger 23

Câu hỏi và bài tập 25

BÀI 3: HÀM (FUNCTION) 26

1 Khái niệm 26

2 Hàm với giá trị trả về là "dữ liệu kiểu bảng" 28

BÀI 4 BẢO MẬT TRONG SQL SERVER 30

1 Các khái niệm 30

2 Cấp phát quyền 31

2.1 Cấp phát quyền cho người dùng trên các đối tượng CSDL 31

2.2 Cấp phát quyền thực thi các câu lệnh 33

3 Thu hồi quyền 33

3.1 Thu hồi quyền trên đối tượng cơ sở dữ liệu 34

3.2 Thu hồi quyền thực thi các câu lệnh 35

BÀI 5 KẾT NỐI ỨNG DỤNG VỚI CƠ SỞ DỮ LIỆU 36

1 Công nghệ Open Database Connectivity (ODBC) 36

1.1 Tạo nguồn dữ liệu ODBC 36

1.2 Tạo System DSN 37

2 Công nghệ OLE DB (Object Linking and Embedding Data Base) 38

Trang 5

3 Công nghệ DAO (Data Access Object) 39

4 Công nghệ Remote Data Access Object (RDO) 46

5 Thiết lập kết nối dùng đối tượng RDOConnection 49

6 Công nghệ ActiveX Data Object (ADO) 50

TÀI LIỆU THAM KHẢO 59

Trang 6

DANH MỤC HÌ

Hình 1.1: Các thành phần của SPs 9

Hình 1.2 Các loại của System stored procedures 11

Hình 1.3 Thực hiện User-defined Stored Procedures có biến 13

Y Hình 2.1:Kết quả thực hiện Delete trigger 19

Hình 2.2:Kết quả thực hiện Table level Update trigger 20

Hình 2.3:Kết quả thực hiện Column Level Update trigger 20

Hình 2.4:Kết quả thực hiện Encryption trigger 21

Hình 2.5:Hiển thị trigger trong DB 21

Hình 5.1: Mô hình lập trình CSDL Client Server dùng RDO và ADO 49

Hình 5.2: Truy cập CSDL từ trình ứng dụng và trình duyệt Web theo ADO 49

Hình 5.3: Mô hình ADO 50

Trang 7

CHƯƠNG TRÌNH MÔ ĐUN HỆ QUẢN TRỊ CSDL MS SQL SERVER 2

Mã số mô đun: MĐ 19

Thời gian mô đun: 75giờ (Lý thuyết: 30 giờ; Thực hành: 45 giờ)

I VỊ TRÍ, TÍNH CHẤT CỦA MÔ ĐUN

Vị trí :

Mô đun Hệ quản trị cơ sở dữ liệu Microsoft SQL Server 2 là mô đun nâng cao của

mô đun Hệ quản trị cơ sở dữ liệu Microsoft SQL Server 1 mà người học đã được họctrong giai đoạn 1

Tính chất :

Để học tốt mô đun này bắt buộc người học cần học qua mô đun Hệ quản trị cơ

sở dữ liệu Microsoft SQL Server 1

II MỤC TIÊU MÔ ĐUN

- Xây dựng được các ứng dụng chuyên nghiệp theo mô hình Client/Server trên hệquản trị cơ sở dữ liệu MS SQL Server

- Quản trị được hệ quản trị cơ sở dữ liệu MS SQL Server từ xa

- Thực hiện đựợc các biện pháp an toàn cho máy tính và vệ sinh công nghiệp

III NỘI DUNG MÔ ĐUN

1 Nội dung tổng quát và phân phối thời gian:

Số

Tên các bài trong mô đun

Thời gianT

Thựchành

Kiểmtra*

5 Kết nối ứng dụng với cơ sở dữ liệu 15 6 9

Trang 8

THỦ TỤC LƯU TRỮ (STORE PROCEDUCE)

Giới thiệu

Để thuận lợi hơn trong việc sử dụng các câu lệnh có cấu trúc, và đáp ứng nhucầu khai thác dữ liệu của người dùng SQL server cung cấp một số thủ tục lưu trữ vàcho phép người dùng tự định nghĩa thêm các thủ tục lưu trữ

Mục tiêu

Định nghĩa được thủ tục lưu trữ với các kiểu tham số.

Sửa đổi được thủ tục đã định nghĩa.

SQL Server cung cấp một số các thủ tục được lưu trữ sẵn trong hệ thống giúp thực hiện một số công việc thường xuyên Nó được gọi là thủ tục hệ thống – System stored procedures Còn những thủ tục do người sử dụng tự viết gọi là User stored procedures.

SPs trong SQL Server cũng tương tự như khái niệm về thủ tục trong các ngôn ngữ lập trình khác, bởi vì:

Chấp nhận biến đầu vào và trả lại kết quả khi thực hiện.

Chứa những câu lệnh dùng trong lập trình có thể thao tác với cơ sở dữ liệu và

có thể gọi đến các thủ tục khác.

 Trả lại giá trị trạng thái khi thủ tục được gọi để xác định việc thực hiện thủ tục thành công hay thất bại.

Hình 1.1: Các thành phần của SPs

Trang 9

2 Lợi ích khi quản lý dữ liệu bằng SPs

Tăng tốc độ thực hiện: Một trong những lợi ích lớn nhất khi sử dụng SPs là tốc

độ SPs được tối ưu hoá trong ngay ở lần biên dịch đầu tiên, điều này cho phépchúng có thể thực hiện nhanh hơn nhiều lần so với các câu lệnh T-SQL thôngthường

Tốc độ truy cập dữ liệu nhanh hơn: Khi thực thi một câu lệnh SQL thì SQLServer phải kiểm tra permission xem user gửi câu lệnh đó có được phép thực hiệncâu lệnh hay không đồng thời kiểm tra cú pháp rồi mới tạo ra một execute plan vàthực thi Nếu có nhiều câu lệnh như vậy gửi qua network có thể làm giảm đi tốc độlàm việc của server SQL Server sẽ làm việc hiệu quả hơn nếu dùng storedprocedure vì người gửi chỉ gửi một câu lệnh đơn và SQL Server chỉ kiểm tra mộtlần sau đó tạo ra một execute plan và thực thi Nếu stored procedure được gọinhiều lần thì execute plan có thể được sử dụng lại nên sẽ làm việc nhanh hơn.Ngoài ra cú pháp của các câu lệnh SQL đã được SQL Sever kiểm tra trước khi lưunên nó không cần kiểm lại khi thực thi

Chương trình được modul hoá: Một khi stored procedure được tạo ra nó có thểđược sử dụng lại Ðiều này sẽ làm cho việc bảo trì (maintainability) dễ dàng hơn

do việc tách rời giữa business rules (tức là những logic thể hiện bên trong storedprocedure) và cơ sở dữ liệu Ví dụ nếu có một sự thay đổi nào đó về mặt logic thì

ta chỉ việc thay đổi code bên trong stored procedure mà thôi Những ứng dụngdùng stored procedure này có thể sẽ không cần phải thay đổi mà vẫn tương thíchvới business rule mới

Nhất quán: Lợi ích nữa của SPs là thiết đặt được ràng buộc dữ liệu để đảm bảotính nhất quán Người sử dụng không thể thực hiện tuỳ tiện dữ liệu để làm mất tínhđúng đắn của dữ liệu

Nâng cao khả năng bảo mật dữ liệu: Giả sử chúng ta muốn giới hạn việc truyxuất dữ liệu trực tiếp của một user nào đó vào một số bảng, ta có thể viết mộtstored procedure để truy xuất dữ liệu và chỉ cho phép user đó được sử dụng storedprocedure đã viết sẵn mà thôi chứ không thể thao tác trực tiếp trên các bảng đó Ví

dụ, ta có thể tạo ra SPs để ta làm chủ và chỉ cung cấp quyền EXCUTE cho nhữngSPs này, vì thế những người sử dụng khác không được phép trực tiếp làm việc với

dữ liệu

Ngoài ra stored procedure có thể được encrypt (mã hóa) để tăng cường bảo mật

3 Các kiểu SPs

SPs chia làm 2 loại:

System stored procedures: Thủ tục m những người sử dụng chỉ có quyền thực

hiện, không được phép thay đổi

User stored procedures: Thủ tục do người sử dụng tạo và thực hiện

3.1 System stored procedures

Là những stored procedure chứa trong Master Database và thường bắt đầu bằngtiếp đầu ngữ sp_

Trang 10

Các stored procedure này thuộc loại built-in và chủ yếu dùng trong việc quản lý cơ

sở dữ liệu (administration) và bảo mật (security) Ví dụ bạn có thể kiểm tra tất cả cácprocesses đang được sử dụng bởi user DomainName\Administrators bạn có thể dùng :

sp_who @loginame='DomainName\Administrators'

Người ta có thể chia các System stored procedures thành các loại sau:

Hình 1.2 Các loại của System stored procedures

Có hàng trăm system stored procedure trong SQL Server Bạn có thể xem chi tiếtphân loại và nội dung của từng thủ tục trong SQL Server Books Online

Sau đây là một số thủ tục hệ thống thường sử dụng:

System stored procedureChức năngsp_Databases

Danh sách những Database có thể (avaiable) trên Server (Danh sách này sẽ là khácnhau tuỳ t

Trang 11

Thay đổi lựa ch

n cấu hình chung của SQL SERVER Khi người sử

ụng không lựa chọn thì hệ thống sẽ hiển th

Hiển thị nội dung (text) của các đối tượng

3.2 User-defined Stored Procedure

CREATE PROCEDURE London_Flights AS

PRINT 'This code displays the details of flights toLondon'

SELECT * FROM flight WHERE destination='Lon'

Ghi chú

- Tên thủ tục phải tuân theo quy tắc đặt tên

- Tất cả các đối tượng của cơ sở dữ liệu có thể được tạo trong SPs, trừ nhữngđối tượng: defaults, rules, triggers, procedures, và views

- Những đối tượng đã được tạo có thể được tham chiếu đến ngay khi nó đượctạo

- Stored procedures có thể tham chiếu tới những bảng phụ (temporary tables)

- Có thể có 2100 biến trong stored procedure

- Chúng ta có thể tạo nhiều biến địa phương trong stored procedure nếu bộnhớ cho phép

- Kích thước tối đa cho stored procedure là 128 MB

b Thực hiện User-defined Stored Procedures

Cú pháp: EXEC[UTE] procedure_name

Ví dụ: Thực hiện User-defined Stored Procedures có tên là London_Flights

EXEC[UTE] London_Flights

Trang 12

c Sử dụng biến trong Stored Procedures

Biến có thể được sử dụng để nhập dữ liệu vào (INPUT) hoặc xuất dữ liệu ra ngoài(OUTPUT)

d Biên dịch lại - Re-compiling Stored Procedures

Khi người sử dụng làm thay đổi tới những index của bảng Stored procedures phảiđược biên dịch lại (recompiled) để chấp nhận những thay đổi đó

Có 3 cách để biên dịch lại procedures:

Cách 1: Sử dụng sp_recompile system stored procedure: Bạn có thể sử dụng cách

này để biên dịch lại thủ tục ở lần chạy kế tiếp của nó

Cú pháp:

‘object’

Cách 2: Chỉ ra WITH RECOMPILE trong câu lệnh CREATE PROCEDURE: SQL

Server sẽ biên dịch lại thủ tục ở mỗi lần nó thực hiện

Trang 13

Cách 3: Chỉ ra WITH RECOMPILE trong câu lệnh EXECUTE:

Biên dịch lại ngay ở lần thực hiện này

Cú pháp: EXEC[UTE] procedure_name WITH RECOMPILE

e Sửa cấu trúc của Stored Procedures

Câu lệnh ALTER PROCEDURE được sử dụng để sửa SP

Cú pháp tương tự CREATE PROCEDURE chỉ thay từ CREATE bằng ALTER.Việc sửa chữa vẫn lưu lại quyền của người sử dụng (user permissions)

f Thông báo lỗi

Trả về mã lỗi (Code) hoặc câu lệnh RAISERROR có thể được sử dụng để nhắcngười sử dụng về lỗi

Mã lỗi trả về là số nguyên

Câu lệnh RAISERROR giải thích lỗi và chỉ ra mức độ lỗi.

Return codes là số nguyên, giá trị mặc định là 0

Giá trị của Return codes phải được trả về vào một biến

Vi dụ:

DECLARE @return_variable_name data_type

EXECUTE @return_variable_name = procedure_name

ALTER PROCEDURE Titles_Pub

Trang 14

Ngoài việc sử dụng câu lệnh RAISERROR, ta còn có thể dùng PRINT để hiển thịthông báo lỗi cho người sử dụng Tuy nhiên, những lời nhắc này chỉ là tạm thời và chỉhiển thị cho người sử dụng Chúng ta cần sử dụng câu lệnh RAISERROR để ghi lạinhững lỗi này và gán cho nó mức severity.

Cú pháp: RAISERROR ({msg_id | msg_str}{,severity, state}

Counter has fallen below 3

Câu hỏi, bài tập

1.Ký hiệu nào theo sau đứng trước tên biến trong câu lệnh EXECUTE?

A &

B #

C ?

Trang 15

A SP được biên dịch lại ở ngay lần tiếp theo nó thực hiện

B SP được biên dịch lại ở tất cả các lần nó thực hiện

C: SP được biên dịch lại khi SQL Server khởi động

C: SP được biên dịch lại khi có chỉ số được tạo trên các bảng mà nó tham chiếu tới

5 Chúng ta có thể sửa chữa được những thủ tục hệ thống (System storedprocedures)

Yêu cầu kiểm tra đánh giá kết quả học tập

- Định nghĩa được thủ tục lưu trữ với các kiểu tham số.

- Sửa đổi được thủ tục đã định nghĩa.

- Xóa được các thủ tục.

Trang 16

BÀI 2 : TRIGGER

Định nghĩa được Trigger

Áp dụng được mệnh đề IF UPDATE trong Trigger để đảm bảo tính toàn vẹn dữliệu cho các thao tác INSERT, UPDATE, DELETE

Thực hiện đựợc các biện pháp an toàn cho máy tính

Nội dung

1 Giới thiệu Trigger

Trigger là một loại stored procedure đặc biệt, và nó sẽ được tự động thực thi khi

có sự kiện tương ứng tác động Có 3 loại triggers: DML triggers, DDL triggers, vàlogon triggers

DDL triggers là các trigger sẽ được tự động thực thi khi xảy ra các sự kiện liênquan đến định nghĩa dữ liệu trên phạm vi server hoặc database DDL là viết tắt

của data definition language.

Logon triggers là trigger được kích hoạt tương ứng với sự kiện LOGON Sựkiện này được phát sinh khi user session được thiết lập đối với một instance củaSQL Server

DML triggers là các triggers sẽ được tự động thực thi khi các có sự kiện thaotác dữ liệu xảy tương ứng liên quan thao tác dữ liệu trên table hoặc view mà nó gắn

kết DML là viết tắt của data manipulation language Các sự kiện DML bao gồm

các lệnh INSERT, UPDATE, hoặc DELETE thao tác trên các đối tượng table hoặcview

DML trigger giống như một stored procedure, nghĩa là trigger cũng sẽ chứa tậphợp các câu lệnh T-SQL Tuy nhiên, ta không thể phát lời gọi trực tiếp đối vớitrigger Các câu lệnh bên trong trigger sẽ tự động thực thi khi có thao tác dữ liệutương ứng xảy ra trên đối tượng Table mà nó gắn Các thao tác dữ liệu bao gồmcác lệnh INSERT, UPDATE, hoặc DELETE

Các lệnh INSERT, UPDATE, và DELETE được hiểu như là các lệnh kích hoạttrigger và nó cũng là lệnh khởi đầu cho một giao tác (transaction), các lệnh trongtrigger cũng là một phần của giao tác này

Trang 17

Có hai loại DML trigger: AFTER triggers và INSTEAD OF triggers

2 Tạo Insert trigger

Insert trigger đảm bảo dữ liệu nhập vào bảng được đúng đắn

Xem xét ví dụ: Tạo INSERT trigger để đảm bảo không có vé nào được đặt vàomột ngày trong quá khứ

Các bước thực hiện:

Bước 1 Mở QA, chọn cơ sở dữ liệu FI

Bước 2 Thực hiện đoạn lệnh sau trong QA

CREATE TRIGGER insert_trigg

3 Tạo Delete Trigger

DELETE trigger ngăn cản việc xoá đi những dữ liệu quan trọng trong bảng

Xem xét ví dụ sau: Tạo trigger để tránh xoá 2 bản ghi trong bảng Passenger đồngthời

Các bước thực hiện:

Bước 1 Trong QA thực hiện như sau:

CREATE TRIGGER delete_trigg

Trang 18

Bước 2 Thực hiện câu lệnh xoá nhiều hơn 2 bản ghi từ bảng Passenger, giả sử Kết quả:

Hình 2.1:Kết quả thực hiện Delete trigger

4 Tạo Update trigger

4.1 Tạo Table Level Update Trigger

Trigger UPDATE được thực hiện bất cứ khi nào dữ liệu trong bảng được cập nhật.Xem xét ví dụ: Tạo UPDATE trigger đảm bảo rằng cột No_of_seats trong bảngReservation không được cập nhật giá trị lớn hơn 5 và journey_date không nhỏ hơnngày hiện tại

Các bước tiến hành

Bước 1 Thực hiện như sau trong QA

CREATE TRIGGER CheckingUpdate

ON Reservation

FOR UPDATE

AS

IF((Select no_of_seats From inserted)>5)

OR ((Select journey_date From Inserted)<getdate()) BEGIN

Trang 19

Hình 2.2:Kết quả thực hiện Table level Update trigger

4.2 Tạo Column Level Update Trigger

Loại Trigger được thực hiện khi dữ liệu trong cột nào đó được cập nhật

Bước 1 Thực hiện như sau trong QA:

CREATE TRIGGER Col_Update_trig

Bước 2 Bây giờ, chúng ta sẽ thử cập nhật cột Fare

Hình 2.3:Kết quả thực hiện Column Level Update trigger

5 Tạo Trigger có lựa chọn Encryption

Encryption (mã hoá) là phương pháp giữ bí mật cho Trigger Nội dung của Triggersau khi được mã hoá sẽ không đọc được

Các bước thực hiện

Trang 20

Bước 1 Thực hiện câu lệnh ALTER TRIGGER để sửa insert_trigg:

ALTER TRIGGER insert_trigg

Bước 2 Thực hiện câu lệnh sau:

Hình 2.4:Kết quả thực hiện Encryption trigger

6 Hiển thị danh sách các trigger trong DB

Sử dụng thủ tục hệ thông sp_helptrigger để hiển thị danh sách các trigger trong cơ

sở dữ liệu hiện tại

sp_helptrigger Flight_Details

Kết quả:

Hình 2.5:Hiển thị trigger trong DB

Trang 21

7 Sử dụng trigger để cài đặt Ràng buộc tham chiếu

Xem xét ví dụ sau: Tạo Trigger để kiểm tra dữ liệu nhập vào cột Meal Pref củabảng Passenger phải là dữ liệu đã tồn tại trong cột Meal codes của bảng Meal

Bước 1 Thực hiện như sau trong QA:

CREATE TRIGGER ins_trig

ON Passenger

FOR INSERT

AS

IF (Select [Meal Pref]FROM INSERTED)

NOT IN (Select meal_code FROM Meal)

BEGIN

Print 'Ban khong the insert gia tri nay'

ROLLBACK TRAN

END

Bước 2 Hãy thử kiểm tra hoạt động của Trigger trên

8 Cascade Delete sử dụng Nested trigger

Trong Nested trigger, một trigger có thể được thực hiện lồng trong trigger khác.Chúng ta có thể lồng trigger tối đa 32 mức Nested trigger cho phép cascade update vàcascade delete

Thực hiện câu lệnh để kích hoạt Nested trigger:

sp_configure ‘nested trigger’, 1

Ngược lại:

sp_configure ‘nested trigger’, 0

Tạo Cascade delete trigger để thực hiện công việc sau: Nếu xoá một chuyến baytrong bảng Flight, thì tất cả các thông tin liên quan trong bảng Flight_Details sẽ bị xoá.Bước 1.Thực hiện như sau trong QA:

CREATE TRIGGER Casc_del

Trang 22

CREATE TRIGGER del_aircraftcode

ON Flight_details

FOR DELETE

AS

SELECT * FROM Flight

SELECT * FROM Flight_Details

Bước 3.Thực hiện câu lệnh sau:

DELETE FROM Flight

WHERE aircraft_code= ‘9W01’

9 Instead of trigger

Cách thức hoạt động:

- Bước 1: Câu lệnh UPDATE, INSERT, hoặc DELETE được thực thi

- Bước 2: Câu lệnh được thực thi không xảy ra

- Bước 3: Các câu lệnh của INSTEAD OF trigger được thực thi

Dựa trên cách thức hoạt động của nó, ta có thể thấy thực chất các câu lệnhinsert, update , delete tác động trên table có gắn instead of trigger sẽ chỉ mang tínhphát sinh sự kiện kích hoạt cho các lệnh bên trong trigger thực thi

Trang 23

create trigger del_InsteadOf_tab1 on tab1

declare @a int,@b int

select @a=a,@b=b from inserted

insert tab1 values(@a+10,@b+5)

end

Chúng ta có thể thực hiện INSTEAD OF trigger trên bảng, nó thay thế cho câu lệnhINSERT, UPDATE, DELETE nguyên thuỷ

Bước 1.Thực hiện như sau bằng QA:

CREATE TRIGGER instead_trigg

Trang 24

Bước 2.Thực hiện câu lệnh sau:

INSERT INTO Service Values(‘FA’, ‘First Aid’)

Kết quả:

Câu hỏi và bài tập

Thực hiện những yêu cầu sau bằng QA:

1 Tạo INSERT trigger có tên ins_chkclass trên bảng Reservation Trigger đảmbảo rằng dữ liệu được nhập vàp trường class code tồn tại trong bảngClass_master và số ghế được đặt không quá 2

2 Tạo Cascading UPDATE trigger có tên upd_mealcode trong bảng Meal Khimeal code trong bảng Meal được cập nhật thì những dữ liệu liên quan trongbảng Airline_meal cũng được cập nhật tương ứng

3 Hiển thị mã lệnh (code) của trigger ins_chkclass trên bảng Reservation

4 Sửa trigger upd_mealcode để người sử dụng không nhìn thấy mã lệnh của nó

5 Tạo View có tên all_day chứa thông tin chi tiết sau: day code, day name, vàaircraft code trong bảng Day_master và Flight_days Tạo DELETE trigger tên

là del_day để xoá dữ liệu trong View Kiểm tra lại sự thực hiện của trigger

Yêu cầu kiểm tra đánh giá kết quả học tập

Phát biểu được khái niệm bảng dữ liệu;

Tạo lập được cấu trúc bảng;

Thiết lập được các trường, thuộc tính;

Thao tác được với dữ liệu trong Datasheet view

Trang 25

Mục tiêu

Khai báo và sử dụng được hàm với các kiểu dữ liệu cơ sở

Khai báo và sử dụng được hàm có kiểu dữ liệu trả về là bảng

Thực hiện đựợc các biện pháp an toàn cho máy tính

Nội dung

1 Khái niệm

Trong SQL có rất nhiều các hàm được định nghĩa sẵn (Được chia theo nhóm Trong 1 Database bạn chọn Programmability/Functions/System Functions) như cáchàm về chuỗi (String Functions), các hàm về ngày tháng (Date and Time Functions),Các hàm toán học (Mathematical Function),

-Ngoài những hàm do hệ quản trị cơ sở dữ liệu cung cấp sẵn, bạn có thể tự xây dựngcác hàm nhằm phục vụ cho mục đích riêng của mình - Các hàm do người dùng địnhnghĩa

Các hàm do người dùng định nghĩa thường có 2 loại: Loại 1 là Hàm với giá trị trả

về là "dữ liệu kiểu bảng" - Table-valued Functions; Loại 2 là Hàm với giá trị trả về làmột giá trị - Scalar-valued Functions và các hàm này cũng sẽ được Hệ quản trị phânthành 2 nhóm

Cú pháp của hàm như sau:

CREATE FUNCTION Ten_Ham ( [Danh_Sach_Cac_Tham_So] )

Trang 26

- Cac_Cau_Lenh_Cua_Ham: Tập hợp các câu lệnh sử dụng trong nội dung hàm đểthực hiện các yêu cầu của hàm.

Ví dụ 1: Hàm không có Danh_Sach_Cac_Tham_So - trả về giá trị là năm hiện hành(Theo giờ hệ thống trên máy Database server):

CREATE FUNCTION dbo.fuGetCurrYear ()

Ví dụ 2: Trong ví dụ này sẽ có 2 tham số trong Danh_Sach_Cac_Tham_So Hàm sẽ trả

về số ngày của tháng, năm do người dùng truyền vào

CREATE FUNCTION dbo.fuDaysInMonth (

Trang 27

Ví dụ 3: Xác định thứ trong tuần của một giá trị kiểu ngày

CREATE FUNCTION fuThu

DECLARE @KetQua NVARCHAR(10)

SELECT @KetQua=CASE DATEPART(DW,@ngay)

WHEN 1 THEN N'Chủ nhật'

WHEN 2 THEN N'Thứ hai'

WHEN 3 THEN N'Thứ ba'

WHEN 4 THEN N'Thứ tư'

WHEN 5 THEN N'Thứ năm'

WHEN 6 THEN N'Thứ sáu'

ELSE N'Thứ bảy'

END

RETURN (@KetQua) /* Trị trả về của hàm */

END

Một hàm khi đã được định nghĩa có thể được sử dụng như các hàm do hệ quản trị cơ

sở dữ liệu cung cấp (thông thường trước tên hàm ta phải chỉ định thêm tên của người

sở hữu hàm bằng dbo.) như ví dụ dưới đây:

SELECT e.FirstName, e.LastName,

dbo.fuThu(e.BirthDate) AS ThuOfBirth

FROM Employees e

2 Hàm với giá trị trả về là "dữ liệu kiểu bảng"

Nếu đã biết về SQL chắc hẳn bạn đã biết cách tạo View từ các bảng trong CSDL,Nhưng với View bạn không thể truyền các tham số được, điều này phần nào đó làmgiảm tính linh hoạt trong việc sử dụng View Vậy nên khi bạn cần sử dụng dữ liệudạng View mà có các tham số thì việc sử dụng hàm là một giải pháp hợp lý nhất

Ví dụ 4:

Giả sử tạo 1 View như sau:

CREATE VIEW vProducts

Trang 28

Categories INNER JOIN

Products ON Categories.CategoryID = Products.CategoryIDWHERE Categories.CategoryID=1

Trong ví dụ tạo ra 1 View vProducts có Categories.CategoryID=1 và truy vấn cáctrường của bảng Products ứng với CategoryID=1

Ta chỉ cần câu lệnh Select * from vProducts là bạn đã có kết quả như ý Nhưng vớinhững CategoryID khác thì View vProducts không làm được Vì vậy, ta sử dụng hàmtheo ví dụ 5

Ví dụ 5: Tạo một hàm trả về dữ liệu dạng bảng tùy theo giá trị của biến categoryID truyền vào:

CREATE FUNCTION fuGetProducts

Categories INNER JOIN

Products ON Categories.CategoryID = Products.CategoryIDWHERE Categories.CategoryID=@CategoryID)

Tiến hành chạy thử hàm trên (Chú ý là khi hàm trả về dạng bảng ta cũng coi đónhư một table hoặc một View và người dùng có thể truy vấn theo một hay nhiềutrường của hàm) như sau:

Sẽ tra về dữ liệu chính là Select * from vProducts ở trên

Nếu muốn lấy Theo CategoryID=2 bạn dùng câu lệnh

Select * from dbo.fuGetProducts(2)

Yêu cầu kiểm tra đánh giá kết quả

Khai báo và sử dụng được hàm với các kiểu dữ liệu cơ sở

Khai báo và sử dụng được hàm có kiểu dữ liệu trả về là bảng

Trang 29

BÀI 4BẢO MẬT TRONG SQL SERVER

Sử dụng được các lệnh tạo user

Sử dụng được các lệnh cấp phát, thu hồi và từ chối quyền đối với người sửdụng

Thực hiện đựợc các biện pháp an toàn cho máy tính

Nội dung

1 Các khái niệm

Bảo mật là một trong những yếu tố đóng vai trò quan trọng đối với sự sống còncủa CSDL Hầu hết các hệ quản trị CSDL thương mại hiện nay đều cung cấp khảnăng bảo mật CSDL với những chức năng như:

• Cấp phát quyền truy cập CSDL cho người dùng và các nhóm người dùng, pháthiện và ngăn chặn những thao tác trái phép của người sử dụng trên CSDL

• Cấp phát quyền sử dụng các câu lệnh, các đối tượng CSDL đối với ngườidùng

• Thu hồi (huỷ bỏ) quyền của người dùng

Bảo mật dữ liệu trong SQL được thực hiện dựa trên ba khái niệm chính sau đây:

• Người dùng CSDL (Database user): Là đối tượng sử dụng CSDL, thực thi cácthao tác trên CSDL như tạo bảng, truy xuất dữ liệu, Mỗi một người dùng trongCSDL được xác định thông qua tên người dùng (User ID) Một tập nhiều ngườidùng có thể được tổ chức trong một nhóm và được gọi là nhóm người dùng (UserGroup) Chính sách bảo mật CSDL có thể được áp dụng cho mỗi người dùng hoặccho các nhóm người dùng

• Các đối tượng CSDL (Database objects): Tập hợp các đối tượng, các cấu trúclưu trữ được sử dụng trong CSDL như bảng, khung nhìn, thủ tục, hàm được gọi làcác đối tượng CSDL Đây là những đối tượng cần được bảo vệ trong chính sáchbảo mật của CSDL

• Đặc quyền (Privileges): Là tập những thao tác được cấp phát cho người dùngtrên các đối tượng CSDL Chằng hạn một người dùng có thể truy xuất dữ liệu trênmột bảng bằng câu lệnh SELECT nhưng có thể không thể thực hiện các câu lệnhINSERT, UPDATE hay DELETE trên bảng đó

SQL cung cấp hai câu lệnh cho phép chúng ta thiết lập các chính sách bảo mật

Ngày đăng: 23/12/2021, 10:25

HÌNH ẢNH LIÊN QUAN

Hình 1.1:  Các thành phần của SPs - GIÁO TRÌNHMÔ ĐUN HỆ QUẢN TRỊ CSDL MS SQL SERVER 2
Hình 1.1 Các thành phần của SPs (Trang 8)
Hình 1.2 Các loại của System stored procedures - GIÁO TRÌNHMÔ ĐUN HỆ QUẢN TRỊ CSDL MS SQL SERVER 2
Hình 1.2 Các loại của System stored procedures (Trang 10)
Hình 1.3 Thực hiện User-defined Stored Procedures có biến - GIÁO TRÌNHMÔ ĐUN HỆ QUẢN TRỊ CSDL MS SQL SERVER 2
Hình 1.3 Thực hiện User-defined Stored Procedures có biến (Trang 12)
Hình 2.1:Kết quả thực hiện Delete trigger - GIÁO TRÌNHMÔ ĐUN HỆ QUẢN TRỊ CSDL MS SQL SERVER 2
Hình 2.1 Kết quả thực hiện Delete trigger (Trang 18)
Hình 2.3:Kết quả thực hiện Column Level Update trigger - GIÁO TRÌNHMÔ ĐUN HỆ QUẢN TRỊ CSDL MS SQL SERVER 2
Hình 2.3 Kết quả thực hiện Column Level Update trigger (Trang 19)
Hình 2.2:Kết quả thực hiện Table level Update trigger - GIÁO TRÌNHMÔ ĐUN HỆ QUẢN TRỊ CSDL MS SQL SERVER 2
Hình 2.2 Kết quả thực hiện Table level Update trigger (Trang 19)
Hình 2.5:Hiển thị trigger trong DB - GIÁO TRÌNHMÔ ĐUN HỆ QUẢN TRỊ CSDL MS SQL SERVER 2
Hình 2.5 Hiển thị trigger trong DB (Trang 20)
Hình 2.4:Kết quả thực hiện Encryption trigger - GIÁO TRÌNHMÔ ĐUN HỆ QUẢN TRỊ CSDL MS SQL SERVER 2
Hình 2.4 Kết quả thực hiện Encryption trigger (Trang 20)
Hình 1.2 Hộp thoại Quản trị nguồn dữ liệu ODBC - GIÁO TRÌNHMÔ ĐUN HỆ QUẢN TRỊ CSDL MS SQL SERVER 2
Hình 1.2 Hộp thoại Quản trị nguồn dữ liệu ODBC (Trang 46)
Hình 5.1: Mô hình lập trình CSDL Client - GIÁO TRÌNHMÔ ĐUN HỆ QUẢN TRỊ CSDL MS SQL SERVER 2
Hình 5.1 Mô hình lập trình CSDL Client (Trang 50)
Hình 5.3: Mô hình ADO - GIÁO TRÌNHMÔ ĐUN HỆ QUẢN TRỊ CSDL MS SQL SERVER 2
Hình 5.3 Mô hình ADO (Trang 51)
Hình 5.2: Truy cập CSDL từ trình ứng dụng và trình duyệt Web theo ADO - GIÁO TRÌNHMÔ ĐUN HỆ QUẢN TRỊ CSDL MS SQL SERVER 2
Hình 5.2 Truy cập CSDL từ trình ứng dụng và trình duyệt Web theo ADO (Trang 51)

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

w