« Home « Kết quả tìm kiếm

SQL


Tóm tắt Xem thử

- CHƢƠNG 5: LẬP TRÌNH, THỦ TỤC LƢU TRỮ, HÀM VÀ TRIGGER Mục đích Nắm vững các khái niệm lô (batch) và xử lý theo lô Viết các câu lệnh SQL thể hiện logic của ứng dụng Định nghĩa và gán giá trị cho các biến.
- Nắm cách dùng biến con trỏ Viết đƣợc các thủ tục cơ bản đáp ứng yêu cầu qt csdl Viết đƣợc và Sử dụng đƣợc hàm SQL trong truy vấn Tạo đƣợc các trigger cơ bản Lập trình trên SQL server Các phát biểu SQL đƣợc ghi thành một tập tingọi là kịch bản (script).Mỗi script đƣợc tạo theo một mục đích nhấtđịnh.
- Vd: USE qlysvDECLARE @tt INTCREATE TABLE sv(stt INT,masv NVARCHAR(10) NOT NULLCONSTRAINT 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 = @@IDENTITYINSERT INTO sv VALUES(@stt,‟SV01CDT2K8‟, 'Trần Thu Thuỷ Thái bình','CDT001K008')SELECT * FROM SV Giới thiệu về xử lý theo lô (SQL Batch Processing) Lô (Batch) Các lệnh SQL riêngrẽ Được nhóm lại thành lô (batch) Được biêndịch thànhmột kếhoạch thực thi Định nghĩa Quá trình trong đó một tập lệnhđƣợc xử lý cùng lúc đƣợc gọi là Ví dụ về một lô (batch) Use QlSach Select * from tacgiaUpdate tacgia set phone where tentg = „Trung' Go Lệnh báo hiệu kết thúc lô Mục đích: Hay dùng phân tách nhómđể thực hiện độc lập VDụ: Xét kịch bản CREATE DaTaBASE qlbanhang USE qlbanhangCREATE TABLE ktra ( A INT,B INT ) SELECT * FROM ktra-- Sẽ bị báo lỗi Cần sửa lại CREATE DaTaBASE qlbanhangGO USE qlbanhang CREATE TABLE ktra( A INT, B INT) GO SELECT * FROM ktraGO Ví du: Để gán giá trị là ngày vào biến ngày xuất hàng ta sử.
- dụng theo định dạng yyyy-mm-dd để gán giá trị vào biến hoặc vào trong cơ.
- lệnh SELECT như sau: DECLARE @MaxSldat INTSELECT @MaxSldat= MAX(SLDAT) FROM CTDONDHWHERE MAVTU="DD01" Xem giá trị hiện hành của biến PRINT @Tên_biến | Biểu_thức_chuỗi Để tính đồng.
- thời giá trị.
- Ta có thể truy xuất giá trị của các biến này bằng truy vấn SELECT đơn giản Danh sách các biến toàn cục Các biến Ý nghĩa @@CONNECTIONS Số các kết nối đên máy chủ từ lần khởi độngcuối.
- @@DATEFIRST Giá trị hiện tại của tham số trong lệnh SETDATEFIRSTquyết định ngày đầu tiên của tuần.
- Cú pháp:BEGIN | END IF..ELSE I F...ELSE: Chúng ta có thể thực thi các tập lệnh SQL khác nhau dựa vào các điều kiện khác nhau.Cú pháp: IF < lệnh sql1.
- IF statementTRUEFALSE Ví dụ về IF IF có kết hợp từ khóa EXISTS Để kiểm tra sự tồn tại của các dòng dữ liệu bên trong bảng IF EXISTS (Câu_lệnh_SELECT) Câu_lệnh 1 | Khối_lệnh 1[ ELSECâu _lệnh 2 | Khối_lệnh 2 ] Cấu trúc WHILE WHILE: C ó thể thực thi một lệnh SQLhay một tập lệnh dựa vào điều kiện nàođó.
- Các câu lệnh đƣợc thực thi nhiều lầnkhi nào điều kiện vẫn còn đúng.
- $50BREAKELSECONTINUEENDPRINT 'Too much for the market to bear' Chúng ta có thể dùng từ khóa CONTINUE và BREAK trong vòng lặp while để điều khiển phần thực thi của các câu lệnh.
- Sửa c á c thủ tục lưu trữ.
- Câu lệnh ALTER PROCEDURE đƣợc sử dụng để sửa chữamột thủ tục lƣu trữ  C ú ph á p giống nhƣ lệnh CREATE PROCEDURE  Sự thay đổi n à y vẫn giữ lại c á c quyền ngƣời d ù ng  Cp:ALTER PROCEDURE tên_thủ_tục.
- danh_s á ch_tham_số )][WITH RECOMPILE|ENCRYPTION|RECOMPILE , ENCRYPTION] AS C á c thông b á o lỗi  Trả về các mã hoặc lệnh RAISERROR có thể đƣợc dùng để đƣa ra các lỗi của ngƣời dùng  Trả về mã trong thủ tục lƣu trữ là các giá trị nguyên  Lệnh RAISERROR statement ghi các lỗi và gán các cấp độ nghiêm trọng của lỗi Xoá thủ tục Sử dụng câu lệnh DROP PROCEDURE với cú pháp nhƣ sau: DROP PROCEDURE T ó m tắt  Một thủ tục lƣu trữ l à một nh ó m c á c câu lệnh SQL đƣợc biên dịch lại.
- Ngƣời ph á t triển CSDL hoặc ngƣời quản trị hệ thống viết thủ tục để chạy c á c nhiệm vụ quản trị thông thƣờng, hoặc để ứng dụng c á c luật giao dịch.
- Thủ tục lƣu trữ chứa c á c thaot á c hoặc c á c câu lệnh truy vấn dữ liệu.
- C á c thủ tục lƣu trữ tăng tốc độ thực thi của truy vấn, hỗ trợ truy cập dữ liệu nhanh, hỗ trợ.
- T ó m tắt  C ó hai kiểu thủ tục lƣu trữ.
- C á c thủ tục lƣu trữ yêu cầu c á c cơ.
- chế đối với CSDL quản trị , v à cập nhật c á c bảng.
- C á c thủ tục ngƣời d ù ng định nghĩa.
- Câu lệnh CREATE PROCEDURE đƣợc sử dụng để tạo lập một thủ tục lƣu trữ ngƣời d ù ng dịnh nghĩa.
- Câu lệnh EXECUTE đƣợc sử dụng để chạy thủ tục lƣu trữ.
- C á c tham số c ó thể đƣợc sử dụng để truyền c á c gi á trị v à o v à ra từ thủ tục lƣu trữ .
- T ó m tắt  C ó ba c á ch để biên dịch lại c á c thủ tục lƣu trữ.
- S ử dụng thủ tục hệ thống sp_recompile  Chỉ rõ WITH RECOMPILE với lệnh CREATE PROCEDURE  Ch ỉ rõ WITH RECOMPILE v ới lện EXECUTE  Câu lệnh ALTER PROCEDURE đƣợc sử dụng để sửa chữa một thủ tục lƣu trữ.
- Trả về c á c mã hoặc lệnh RAISERROR đƣợc sử dụng để đƣa rac á c lỗi của ngƣời sử dụng .
- Sử dụng hàm sử dụng nhƣ hàm do hqt csdl cung cấp: SELECTmasv,hodem,ten,dbo.thu(ngaysinh),ngaysinh FROM sinhvien WHERE malop=’C24102’ Hàm với giá trị trả về là “dữ liệu kiểu bảng” CREATE FUNCTION tên_hàm([danh_sách_tham_s ố.
- Trong phần thân của hàm chỉ có duy nhấtmột câu lệnh RETURN xác định giá trị trảvề của hàm thông qua duy nhất một câulệnh SELECT (không sử dụng bất kỳ câulệnh nào khác trong phần thân của hàm).
- VD: Dịnh nghĩa hàm func_XemSV CREATE FUNCTION func_XemSV(@khoa SMALLINT) RETURNS TABLEAS RETURN(SELECT masv,hodem,ten,ngaysinh FROM sinhvien INNER JOIN lopON sinhvien.malop=lop.malop WHERE khoa=@khoa) Sử dụng bảng Inserted v à Deleted  C á c Trigger truy nhập tới hai bảng logic c ó tên l à Insertedv à Deleted.
- Bảng Inserted v à Deleted chứa ảnh của dữ liệu trƣớc v à sau qu á tr ì nh cập nhật.
- bảng đã đƣợc cập nhật.
- Dữ liệu trong bảng không bị t á c động.
- bởi thao t á c cập nhật sẽ không nằm trong bảng Inserted v à Deleted .
- C á c kiểu Trigger C á c Trigger INSERT  Một trigger INSERT đƣợc thực thi bất cứ khi n à o c ó thaot á c ch è n thêm dữ liệu v à o một.
- trigger INSERT thực thi c á c thao t á c dƣới đây.
- Kiểm tra h à ng mới trong bảng Inserted , để x á c định xem dữ liệu đƣợc ch è n v à o c ó hợp lệ hay không.
- 30BEGINPRINT ‘ RoyaltyTrigger: Royalty cannot exceed 30 ’ PRINT ‘ Change the royalty to a value less than 30 ’ ROLLBACK TRANSACTIONEND C á c Trigger INSERT C á c Trigger UPDATE  Một trigger UPDATE đƣợc thực hiện khi một t á c vụ cập nhật thực thi trên bảng.
- N ó thực thi c á c t á c vụ dƣới đây.
- Di chuyển h à ng dữ liệu gốc v à o bảng logic Deleted.
- T í nh to á n c á c gi á trị trong c á c bảng Deleted v à Inserted để x á c định can thiệp cần thiết.
- C á c Trigger UPDATE mức bảng C á c Trigger DELETE  Một trigger DELETE đƣợc thực hiện mỗi khi xo á c á c h à ng từ một.
- trigger DELETE thực hiện c á c công việc sau.
- Kiểm tra c á c h à ng trong bảng Deleted để x á c định c á ct á c vụ trigger sẽ đƣợc thực hiện nhƣ thế n à o.
- INSERT: Thực hiện mỗi khi xuất hiện việc thêm mới dữ liệu v à o bảng .
- bảo rằng dữ liệu đƣợc ch è nv à o bảng l à hợp lệ.
- UPDATE: Thực hiện khi một t á c vụ cập nhật xảy ra trênmột bảng.
- DELETE: Thực hiện khi dữ liệu đƣợc xo á khỏi một bảng.
- C á c trigger dây chuyền sửa đổi dữ liệu trong c á c bảng liênquan, nếu một thay đổi xuất hiện trong một.
- Tổng kết  C á c trigger lồng nhau khi một t á c vụ trong một trigger n à y khởi tạo một trigger kh á c, v à tới lƣợt n ó c ó thể lại khởi tạo một trigger kh á c nữa v à cứ nhƣ vậy.
- Thủ tục lƣu hệ thống sp_configure đƣợc sử dụng để cho ph é p hoặc không cho ph é p lồng c á c trigger.
- trigger INSTEAD OF chứa đoạn mã thay thế c á c lệnh thao t á c với dữ liệu gốc.
- C á c trigger INSTEAD OF hữu dụng khi việc sửa đổi dữ liệu đƣợc thực hiện trên view m à ch ú ng không thể cập nhật theoc á ch thông thƣờng.
- Thời gian đòi hỏi để thực thi một trigger chủ yếu d à nh nhiều cho việc tham chiếu đến c á c bảng kh á c hơn l à d à nh cho c á c bảng logic

Xem thử không khả dụng, vui lòng xem tại trang nguồn
hoặc xem Tóm tắt