Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 128 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
128
Dung lượng
2,15 MB
Nội dung
CƠ SỞ DỮ LIỆU GIÁO VIÊN: Đỗ Thị Mai Hường BỘ MƠN: Các Hệ thống thơng tin KHOA: Cơng nghệ thông tin Lý thuyết CSDL Email: dohuong@gmail.com Chương Ngôn ngữ T-SQL T Giới thiệu T-SQL Stored Procedure Function Trigger Lý thuyết CSDL Mục đích • • • • • • • • Nắm vững khái niệm lô (batch) xử lý theo lô Viết câu lệnh SQL thể logic ứng dụng Định nghĩa gán giá trị cho biến Nắm vững dùng lệnh điều khiển cấu trúc lập trình Nắm cách dùng biến trỏ Viết thủ tục đáp ứng yêu cầu qt csdl Viết Sử dụng hàm SQL truy vấn Tạo trigger Lý thuyết CSDL Giới Thiệu Transact SQL (T-SQL) (T • Transact-SQL SQL ngôn ngữ SQL mở rộng dựa SQL chuẩn ISO (International Organization for Standardization) ANSI (American National Standards Institute) sử dụng SQL Server T-SQL SQL chia làm nhóm: Data Definition Language (DDL):lệnh dùng để quản lý thuộc tính database định nghĩa hàng cột table, hay vị trí data file database thường có dạng Create object_Name Alter object_Name Drop object_Name Trong object_Name table, view, stored procedure, indexes Ví dụ: Lệnh Create sau tạo table tên Importers với cột CompanyID,CompanyName,Contact • USE Northwind CREATE TABLE Importers( CompanyID int NOT NULL, CompanyName varchar(40) NOT NULL, Contact varchar(40) NOT NULL ) Lý thuyết CSDL • Giới Thiệu Transact SQL (T (T-SQL) Data Control Language (DCL): Ðây lệnh quản lý quyền truy cập lên object (table, view, stored procedure ) Thường có dạng sau: Grant, Revoke, Deny Ví dụ: Lệnh sau cho phép user Public Role quyền Select table Customer database Northwind (Role khái niệm giống Windows Group bàn kỹ phần Security) USE Northwind GRANT SELECT ON Customers TO PUBLIC Lệnh sau từ chối quyền Select table Customer database Northwind user Public Role USE Northwind DENY SELECT ON Customers TO PUBLIC Lệnh sau xóa bỏ tác dụng quyền cho phép hay từ chối trước USE Northwind REVOKE SELECT thuyết CSDL ON Lý Customers TO PUBLIC Giới Thiệu Transact SQL (T-SQL) (T • Data Manipulation Language (DML): Ðây lệnh phổ biến dùng để xử lý data Select, Update, Insert, Delete Lý thuyết CSDL Giới Thiệu Transact SQL (T-SQL) (T • Vd: USE qlysv DECLARE @stt INT CREATE TABLE sv (stt INT, masv NVARCHAR(10) NOT NULL CONSTRAINT pk_sinhvien PRIMARY KEY, hoten NVARCHAR(50) NOT NULL , ngaysinh SMALLDATETIME NULL , gioitinh BIT NULL , noisinh NVARCHAR(100) NULL , malop NVARCHAR(10) NULL ) SELECT @stt = @@IDENTITY giá trị identity gần sinh ( có gt NULL lấy sau câu lệnh insert liệu bảng có chưa cột lấy giá trị identity INSERT INTO sv VALUES(@stt,’SV01CDT2K8’, 'Trần Thu Thuỷ', '11/10/1987',0,'Thái bình','CDT001K008') SELECT * FROM SV Lý thuyết CSDL Giới thiệu xử lý theo lô (SQL Batch Processing) Các lệnh SQL riêng rẽ Được nhóm lại thành lơ (batch) Lô (Batch) Được biên dịch thành kế hoạch thực thi Lý thuyết CSDL Định nghĩa Quá trình tập lệnh xử lý lúc gọi Lý thuyết CSDL Ví dụ lô (batch) Use QlSach Select * from tacgia Update tacgia set phone= ‘098890 4566‘ where tentg = ‘Trung' Go Lệnh báo hiệu kết thúc lô Lý thuyết CSDL 10 DML Triggers • Cú Pháp: -Tạo Tạo CREATE TRIGGER ON | [With encryption|EXECUTE AS { CALLER | SELF | 'user_name' } ] {[FOR| AFTER] | Instead of [insert],[update update],[delete] } AS Transact-SQL statements - Xoá Drop Trigger - DISABLE TRIGGER { trigger_name [ , n ] | ALL } ON object_name ON: Chỉ Trigger viết cho bảng view With encryption: nội dung trigger mã hóa Lý thuyết CSDL 114 Các dạng họat động DML trigger • AFTER (FOR): câu lệnh bên trigger thực sau kiện tạo nên trigger xảy • INSTEAD OF: bỏ qua kiện kích hoạt trigger mà thay vào thực dòng lệnh SQL bên Trigger • Ví dụ: ta có Update trigger table với câu INSTEAD OF: Khi ta thực việc update liệu bảng thay update liệu, SQL Server thực lệnh viết sẵn bên trigger Lý thuyết CSDL 115 Các kiểu Trigger - Trigger Insert: Trigger phát biểu For insert Trigger thực tiến hành thêm mẫu tin vào bảng Mẫu tin cần thêm lưu bảng tạm có tên Inserted - Trigger Delete: Trigger phát biểu For delete Trigger thực tiến hành xóa mẫu tin bảng Mẫu tin bị xóa lưu bảng tạm có tên deleted - Trigger Update: Trigger phát biểu For update Trigger thực tiến hành sửa mẫu tin bảng Mẫu tin bị thay đổi lưu bảng tạm có tên Inserted (chứa giá trị mới) Deleted (chứa giá trị cũ) Lý thuyết CSDL 116 Chú ý - Trigger tạo bảng tạm thời hay bảng hệ thống Trigger kích hoạt cách tự động event Insert, Update, Delete Có thể áp dụng trigger cho View - Inserted Deleted table tạm chứa nhớ có giá trị bên trigger mà (nghĩa nhìn thấy trigger mà thơi) Ta dùng thông tin table để so sánh liệu cũ kiểm tra xem liệu Lý thuyết CSDL 117 Trigger dạng For, Update Tạo trigger bảng nhanvien cho su kien insert, insert, trigger thuc hien thong bao manv vua them CREATE TRIGGER THEMNV ON NHANVIEN FOR INSERT AS DECLARE @MA NCHAR(10) BEGIN SELECT @MA=MANV FROM INSERTED PRINT 'Ma nhan vien vua them la '+@ma END Lý thuyết CSDL 118 Trigger dạng For, Update Ví dụ: Tạo trigger bảng Nhanvien cho kiện insert Để thêm nhân viên tự động cho nhân viên tham gia tất dự án Create TRIGGER DBO.ADDNV ON NHANVIEN FOR INSERT AS DECLARE @MANV NCHAR(10) BEGIN SELECT @MANV=MANV FROM INSERTED INSERT INTO PHANCONG(MADA,MANV) SELECT MADA,@MANV FROM DUAN END Bài tập: Thêm nhân viên mới, cho nhân viên tham gia tất đề án mà phòng ban nhân viên phụ trách Lý thuyết CSDL 119 Trigger dạng INSTEAD OF – Thay Dạng INSTEAD OF bỏ qua kiện kích hoạt trigger mà thay vào thực dòng lệnh SQL bên Trigger INSTEAD OF chia làm loại nhỏ: INSTEAD OF INSERT, INSTEAD OF UPDATE INSTEAD OF DELETE Lý thuyết CSDL 120 Trigger dạng FOR CREATE TRIGGER Ktra_DonGia1 ON [dbo].[Products] AFTER INSERT AS If exists( Select * from inserted i where i.dongiamua>i.dongiaban) Begin RollBack tran RaisError ('Khong hop le', 16,1) End Lý thuyết CSDL 121 Hàm Update() trigger CREATE TRIGGER Ktra_DonGia2 ON [dbo].[Products] FOR UPDATE AS If Update(dongiamua) or Update(dongiaban) Begin If exists( Select 'true' from inserted i where i.dongiamua>i.dongiaban) Begin RollBack tran RaisError ('Khong hop le', 16,1) End End Lý thuyết CSDL 122 Debug trigger Để gỡ rối trigger phải viết procedure có gọi thao tác làm phát sinh kiện để thực thi trigger Ví dụ để kiểm tra trigger Ktra_DonGia1 Ktra_DonGia2 viết thủ tục sau CREATE PROCEDURE dbo.DebugTrigger as insert into Products(Masp, Tensp, Mota, Donvitinh, Dongiamua, Dongiaban, VAT) Values ( 'SP-01', ‘San Pham-01 01 ' , '@Mota' ,'@donvi', 20,10 , ) GO Lý thuyết CSDL 123 Tổng kết Các trigger thủ tục lưu mà thực tự động để tương tác với tác vụ thêm, cập nhật xoá bảng Các trigger thường sử dụng để thực quy tắc nghiệp vụ đòi hỏi Lệnh CREATE TRIGGER sử dụng để tạo trigger Các trigger truy nhập tới bảng logic Inserted Deleted Các bảng chứa hình ảnh liệu trước đó, sau q trình cập nhật Lý thuyết CSDL 124 Tổng kết Các kiểu trigger: INSERT: Thực xuất việc thêm liệu vào bảng Các trigger đảm bảo liệu chèn vào bảng hợp lệ UPDATE: Thực tác t vụ cập nhật xảy bảng Các trigger y có c thể thi hành mức bảng mức cột DELETE: Thực liệu xoá xo khỏi bảng Lý thuyết CSDL 125 Thảo luận Câu hỏi: Cấu trúc lệnh T_SQL? Khi sử dụng từ khóa Go? Khi sử dụng trỏ? Khai báo, định nghĩa, sử dụng trỏ? Khi sử dụng thủ tục Store Procedure? Khai báo, định nghĩa, lời gọi? Khi sử dụng thủ tục hàm Function? Khai báo, định nghĩa, lời gọi? Khi sử dụng thủ tục Trigger? Khai báo, định nghĩa, kích hoạt trigger? Lý thuyết CSDL 126 Thảo luận • Thảo luận nhóm: Thảo luận phần lập trình T_SQL tập lớn nhóm Lý thuyết CSDL 127 Ôn tập Ôn tập nội dung chương 2, 3, 4, 5, 6, Lý thuyết CSDL 128