1. Trang chủ
  2. » Công Nghệ Thông Tin

Bài giảng Cơ sở dữ liệu: Chương 7 - Đỗ Thị Mai Hường

114 16 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 114
Dung lượng 2,89 MB

Nội dung

Bài giảng Cơ sở dữ liệu - Chương 7: Ngôn ngữ T-SQL thông tin đến người học các nội dung kiến thức về các khái niệm lô (batch) và xử lý theo lô, câu lệnh SQL thể hiện logic của ứng dụng, gán giá trị cho các biến, các lệnh điều khiển cấu trúc lập trình...

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 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) • Transact-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 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-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) • 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) • 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 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 Q 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 Hàm với giá trị trả “dữ liệu kiểu bảng” • SELECT * FROM dbo.func_TongSV(25) Sẽ cho kết thống kê tổng số sinh viên khoá 25 khoa: • Cịn câu lệnh: SELECT * FROM dbo.func_TongSV(0) Cho ta biết tổng số sinh viên có (tất khoá) khoa Lý thuyết CSDL 100 Các trigger Lý thuyết CSDL 101 Sử dụng Trigger So sánh kiểu liệu  Đọc liệu từ bảng nằm sở liệu khác  Thay đổi theo tầng xoá liên tục bảng liên quan sở liệu  Huỷ bỏ thay đổi không  Tuân theo giới hạn,các giới hạn phức tạp việc bắt lỗi ràng buộc CHECK  Thực thi thủ tục lưu cục thủ tục lưu từ xa  Lý thuyết CSDL 102 Khái niệm trigger - Trigger kiểu thủ tục kích họat tự động theo kiện (events) - Có 02 lọai triggers: + Data Modification Language –DML (For | After triggers, Instead-of triggers) + DDL triggers (For | After triggers) Lý thuyết CSDL 103 103 Data Definition Language (DDL) Trigger Cú pháp: CREATE TRIGGER trigger_name ON { ALL SERVER | DATABASE } [ WITH [ ENCRYPTION ] | [ EXECUTE AS CALLER | SELF | 'user_login' ] { FOR | AFTER } { event_type | event_group } [ , n ] AS { sql_statement [ ; ] [ n ] } Execute As Caller option mặc định Execute As User = 'user' Cú pháp: DROP TRIGGER trigger_name [ , n ] ON { DATABASE | ALL SERVER } DISABLE TRIGGER { [ schema ] trigger_name [ , n ] | ALL } ON {DATABASE | ALL SERVER } [ ; ] DDL triggers triggers tự động gọi sau máy thực lệnh sau: Create Table, Drop Table, Alter Procedure, Drop Schema, Create Login, … (Xem BOL: DDL triggers, events used for firing) Lý thuyết CSDL 104 104 DML Triggers • Cú Pháp: -Tạo CREATE TRIGGER ON | [With encryption|EXECUTE AS { CALLER | SELF | 'user_name' } ] {[FOR| AFTER] [insert],[update],[delete] | Instead of} 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 105 105 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 106 106 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 107 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 mà khơng thể chạy manually Có thể áp dụng trigger cho View - Inserted Deleted table tạm chứa nhớ có giá trị bên trigger mà thơi (nghĩa nhìn thấy trigger mà thơi) Ta dùng thơng tin table để so sánh data cũ kiểm tra xem data Lý thuyết CSDL 108 108 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 Ví dụ:create database Test1 go use Test1 go create table HangHoa(MaHD int, NgayHD Datetime, GhiChu ntext, MaSP NVarchar(10), Soluong int, DonGia float) go create Table NhapHangHoa(MaHD int, NgayHD Datetime, GhiChu ntext) go create Table NhapHangHoaCT(MaHD int,MaSP NVarchar(10), Soluong int, DonGia float) go CREATE TRIGGER dbo.Trig_Instead ON HangHoa instead of INSERT AS Begin insert into NhapHangHoa select MaHD , NgayHD , GhiChu from inserted insert into NhapHangHoaCT select MaHD ,MaSP , Soluong , DonGia from inserted End go insert into HangHoa values(1,getdate() , 'GhiChu ntext','MaSP', 101, 12.1) select * from hanghoa select * from NhapHangHoa select * from NhapHangHoaCT Drop database Test1 Lý thuyết CSDL 109 109 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 110 110 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 111 111 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 ' , '@Mota' ,'@donvi', 20,10 , ) GO Lý thuyết CSDL 112 112 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 113 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 vụ cập nhật xảy bảng Các trigger thi hành mức bảng mức cột DELETE: Thực liệu xoá khỏi bảng Lý thuyết CSDL 114 ... @Ngayxh DATETIME SET @Ngayxh='200 2-0 3-2 5' • Chú ý:Đối với kiểu liệu dạng ngày Microsoft SQL Server thường sử dụng theo định dạng yyyy-mm-dd để gán giá trị vào biến vào sở liệu Lý thuyết CSDL 20 Ví... Transact SQL (T-SQL) • Transact-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 chia... chương trình (cịn gọi thích) khơng xử lý trình biên dịch Dùng để giải thích cho mã lệnh hay vơ hiệu hóa tạm thời thành phần câu lệnh T-SQL xử lý Giúp việc bảo trì mã lệnh dễ dàng Chú thích thường

Ngày đăng: 10/03/2021, 09:20