SlideShare a Scribd company logo
1 of 42
NỘI DUNG
   KHUNG NHÌN (VIEW)
   THỦ TỤC LƯU TRÚ (STORED PROCEDURE - SP)
   TRIGGER
   HÀM CỦA NGƯỜI DÙNG (USER DEFINED
    FUNCTION - UDF)
NỘI DUNG
   Định nghĩa
   Câu lệnh
   Mục đích
   Cập nhật dữ liệu thông qua View
   Mã hóa View
Định nghĩa VIEW

 View là bảng không chứa dữ liệu, nó chỉ là truy
  vấn kết hợp dữ liệu từ 1 hay nhiều bảng có quan
  hệ với nhau và được lưu thành một đối tượng của
  SQL SV
 NSD có thể áp dụng ngôn ngữ thao tác dữ liệu

  trên các View giống như Table.
Định nghĩa VIEW


                                  SQL Server


SELECT   *
FROM         nv_kinhdoanh;
                                   USER_VIEWS
                                     nv_kinhdoanh
                             SELECT manv, hoten,luong
                             FROM   NHANVIEN
                             WHERE ma_phong = ‘KDA’;


                                  NHANVIEN
Câu lệnh tạo VIEW

CREATE VIEW <Tên_View>
                 [(<danh sách tên cột>) ]
[WITH ENCRYPTION]
AS
<Câu lệnh SELECT>
[with check option]
Câu lệnh tạo VIEW

Ví dụ 1: tạo View nv_kinh doanh

CREAT VIEW nv_kinhdoanh
AS
 SELECT Manv, Hoten, Luong
 FROM NHANVIEN

* Sử dụng View:
SELECT * FROM NV_KINHDOANH
Câu lệnh tạo VIEW

Ví dụ 2: tạo View nv_tre (nhân viên dưới 35 tuổi)

CREAT VIEW nv_tre (Manv, Hoten, Tuoi)
AS
 SELECT Manv, Hoten, Year(Getdate()) – Year(Ngaysinh)
 FROM NHANVIEN
 WHERE Year(Getdate()) – Year(Ngaysinh) <= 35

* Sử dụng View:
SELECT * FROM NV_TRE
 Nếu một thuộc tính trong View được xây dựng từ một
  biểu thức thì bắt buộc phải đặt tên cho thuộc tính đó.
Mục đích dùng VIEW

 Hạn chế tính phức tạp của dữ liệu đối với NSD
  đơn giản.
 Tạo ra bảng ảo có dữ liệu theo yêu cầu cho NSD

  và sử dụng trong thiết kế báo cáo.
 Hạn chế quyền truy cập dữ liệu của NSD.

 View dùng để trình bày các thông tin dẫn xuất.
Cập nhật dữ liệu thông qua View
  View định nghĩa dữ liệu trên một bảng thì
   có thể dùng Insert
  Nếu trong định nghĩa View có chứa mệnh

   đề Inner join thì không thể dùng các thao tác
   Insert hay Delete để thay đổi dữ liệu
  Nếu trong định nghĩa View có chứa mệnh

   đề With check option thì chỉ những bản ghi
   thỏa mãn điều kiện của View mới được
   Insert, Update
Xây dựng View dựa trên View khác
    Khi xóa 1 view, mọi view được xây dựng dựa
     trên view đó cũng bị xóa.
    Có thể dùng thủ tục sp_helptext để xem định
     nghĩaView
    Tạo View bằng EM
     Mã hoá View: dùng WITH ENCRYPTION
         Không thể xem được nội dung View

         Không thể thay đổi lại được
THỦ TỤC LƯU TRÚ
          (STORED PROCEDURE)
   SP được xây dựng từ các câu lệnh T-SQL và được lưu
    trú trên SQL server.
   Muốn thực hiện một SP, NSD chỉ cần thực hiện một
    lời gọi hàm.
   Khi SP được chạy lần đầu tiên nó sẽ được biên dịch
    qua 5 bước và sinh ra một mô hình truy vấn. Mô hình
    này sẽ được đặt trong một CSDL của SQL server, lần
    sau chạy lại thủ tục sẽ không phải dịch lại nữa.
THỦ TỤC LƯU TRÚ
           (STORED PROCEDURE)
   Năm bước biên dịch thủ tục:
     Thủ tục được phân tích ra thành nhiều phần
     Kiểm tra sự tồn tại của các đối tượng (view, table, …) mà thủ

      tục tham chiếu tới.
     Lưu trữ tên thủ tục vào bảng sysobject, lưu trữ các mã lệnh

      của thủ tục vào bảng syscomments.
     Sinh ra mô hình truy vấn của thủ tục và lưu vào bảng

      sysprocedure
     Khi SP được chạy lần đầu tiên, cây truy vấn sẽ được đọc và

      được tối ưu thành một kế hoạch thủ tục và chạy  tiết kiệm
      thời gian tái phân tích, biên dịch cây truy vấn mỗi khi chạy
      thủ tục.
THỦ TỤC LƯU TRÚ
           (STORED PROCEDURE)
   Trong một phiên làm việc, nếu SP được thực hiện, nó
    sẽ được lưu trữ vào vùng nhớ đệm. Những lần sau nếu
    SP được gọi thực hiện lại thì nó sẽ được đọc trực tiếp
    ra từ vùng nhớ đệm  nâng cao hiệu suất chạy truy
    vấn.
THỦ TỤC LƯU TRÚ
            (STORED PROCEDURE)
   Cú pháp lệnh tạo SP:
CREATE PROC[EDURE] <tên SP>
[@ <tên tham số 1> <kiểu DL>
    [= <giá trị>] [OUTPUT], . . .]
[WITH RECCOMPILE|ENCRYPTION|RECOMPILE, ENCRYPTION]
AS
    <các câu lệnh SQL, câu lệnh điều khiển, . . .>
Giải thích:
-   =<giá trị>: gán giá trị ban đầu cho tham số
-   OUTPUT: giá trị thay đổi của tham số ở trong thủ tục được đưa
    ra bên ngoài thủ tục.
Ví dụ
THỦ TỤC LƯU TRÚ
           (STORED PROCEDURE)
   Thực hiện thủ tục:
EXEC <tên SP>
  Thay đổi thủ tục
ALTER PRO[CEDURE] . . .
  Xóa thủ tục
DROP PRO[CEDURE] <tên SP>
   Bó thủ tục
THỦ TỤC LƯU TRÚ
              (STORED PROCEDURE)
   Sử dụng tùy chọn RECOMPILE trong câu lệnh CREATE
    PRO:
     Thủ tục sẽ được biên dịch lại từ đầu mỗi khi thực hiện
     Khi biên dịch lại các thông tin mới của SP được cập nhật và

      tối ưu lại.
   Sử dụng tùy chọn RECOMPILE trong câu lệnh EXEC
       Thủ tục sẽ được biên dịch lại trong lần thực thi đó và lưu lại
        kế hoạch thực thi mới của nó vào vùng nhớ đệm.
  Biên dịch lại tất cả các thủ tục của bảng:
EXEC sp_recompile <tên bảng>
THỦ TỤC LƯU TRÚ
                      (STORED PROCEDURE)

   Ví dụ:
USE qlnv;                      SP này như một view có tham số!
GO
CREATE PROC DS_Phong
@BienMaPhong CHAR (3)
AS
       SELECT Manv, HoTen, NgaySinh
       FROM NhanVien
       WHERE MaPhong=@BienMaPhong
GO

Exec DS_Phong 'KDA'
THỦ TỤC LƯU TRÚ
                             (STORED PROCEDURE)
   Ví dụ:
USE qlnv;
GO
CREATE PROC Soluong_Phong
@BienMaPhong CHAR (3),
@SL int OUTPUT
AS
          SELECT @SL = COUNT (*)
          FROM NhanVien
          WHERE MaPhong=@BienMaPhong
GO
-- Thuc hien thu tuc luu tru
DECLARE @dem INT; DECLARE @phong CHAR(3);
SET @phong='KDA';
EXEC Soluong_Phong @phong, @dem OUTPUT
--Hoac
EXEC Soluong_Phong @BienMaPhong=@phong, @SL=@dem OUTPUT
PRINT 'So luong nhan vien phong ' + @phong + ' la: ' + CAST (@dem AS CHAR(20))
--Xoa thu tuc luu tru
DROP PROC Soluong_Phong
THỦ TỤC LƯU TRÚ
                   (STORED PROCEDURE)

   Ví dụ: (Thu tuc luu tru voi tham so mac dinh)
CREATE PROC Soluong_Phong_Default
@BienMaPhong CHAR (3)='KDA',
@SL int OUTPUT
AS
        SELECT @SL = COUNT (*)
        FROM NhanVien
        WHERE MaPhong=@BienMaPhong
GO

DECLARE @dem INT;
EXEC Soluong_Phong_Default @SL=@dem
EXEC Soluong_Phong_Default 'QTA', @dem
Create proc XepLoaiSV @MaSV varchar(10),
                      THỦ TỤC LƯU TRÚ
                       @DTB float output, @XL nvarchar(20) output
As                  (STORE PROCEDURE)
Set @DTB = (Select avg(Diem) from KetQua Kq
Where MaSV = @MaSV and not exists (
                select * from KetQua Kq1
                where Kq1.MaSV = @MaSV and Kq1.MaMH=Kq.MaMH
                and Kq1.LanThi > Kq.LanThi
                                       )
              )
If @DTB >= 9
         Set @XL = N’Xuât sac’
Else if @DTB >= 8
         Set @XL = N’Gi~i’
Else if @DTB >= 7
         Set @XL = N’Khá’
Else if @DTB >= 5
         Set @XL = N’Trung bình’
Else
         Set @XL = N’Yêu’
Go
HÀM CỦA NSD
(USER DEFINED FUNCTIONS-UDFs)
  Cú pháp câu lệnh:
CREATE FUNCTION <tên hàm>
([@<tên tham số> <kiểu DL vô hướng> [= <giá trị>] [, . . .]])
RETURNS <kiểu vô hướng>|<table>
[WITH ENCRYPTION]
AS
   BEGIN
         [<các câu lệnh>]
         RETURN <giá trị vô hướng>| (<câu lệnh SELECT>)
HÀM CỦA NSD
           (USER DEFINED FUNCTIONS-UDFs)
--Ham vo huong
CREATE FUNCTION Ham_Soluong_Phong ( @BienMaPhong CHAR (3) )
RETURNS int
AS
BEGIN
            DECLARE @SL int;
            SELECT @SL = COUNT (*)
            FROM NhanVien
            WHERE MaPhong=@BienMaPhong ;
            RETURN (@SL);
END
--Su dung ham (Ham xuat hien trong bieu thuc)
SELECT dbo.Ham_Soluong_Phong('KDA');
SELECT MaPhong, count (*)
FROM NhanVien
GROUP BY MaPhong
HAVING count(*) > dbo.Ham_Soluong_Phong('QTA')
HÀM CỦA NSD
            (USER DEFINED FUNCTIONS-UDFs)

--Ham cho ket qua la mot bang
CREATE FUNCTION Ham_DS_Phong (@BienMaPhong CHAR (3))
RETURNS @kq TABLE (Manv CHAR(5), HoTen NCHAR(40), NgaySinh DATETIME)
BEGIN
          INSERT INTO @kq
          SELECT Manv, HoTen, NgaySinh
          FROM NhanVien
          WHERE MaPhong=@BienMaPhong
          RETURN
END
-- Su dung ham tra ket qua bang nhu la TABLE
SELECT *
FROM Ham_DS_Phong ('QTA')
HÀM CỦA NSD
         (USER DEFINED FUNCTIONS-UDFs)
     UDFs giống như SP nhưng khác ở các điểm sau:

                UDF                             SP


    - Giá trị các tham số không    - Có thể đưa giá trị của tham
       được truyền ra ngoài.          số ra ngoài bằng thuộc tính
    - Trả ra một giá trị bằng mệnh    OUTPUT
       đề RETURN
    - Có thể trả về một giá trị vô - Chỉ trả về kiểu DL giá trị
       hướng hoặc một bảng dữ         kiểu nguyên
       liệu.
Nội dung

   Khái niệm về trigger
   Câu lệnh tạo trigger
   Các loại trigger
   Ứng dụng của trigger
   Sửa, xóa trigger
Khái niệm về trigger

   Thủ tục lưu trú (Stored Procedure) đặc biệt
   Triger tự động được chạy mỗi khi có một
    hành động liên quan đến nó xảy ra
   Triger không có tham số, không trả ra giá
    trị như SP bình thường.
   Các loại trigger: Insert trigger, Delete
    trigger, Update trigger, trigger tổng hợp.
Cú pháp câu lệnh tạo trigger
CREATE TRIGGER <tên triger>
ON <tên bảng>|<tên view>
[WITH ENCRYPTION]
{
{FOR | AFTER| INSTEAD OF}
  <INSERT [, UPDATE] [, DELETE]>
}
AS
    <câu lệnh SQL>
Trigger chèn (Insert trigger): định nghĩa

    Tự động được thực hiện mỗi khi bản ghi
     mới được chèn vào bảng gắn với nó
    Một bảng tạm Inserted sẽ được sinh ra
    Bản ghi cần chèn sẽ được ghi vào bảng cơ
     sở và bảng Inserted
Trigger chèn: ví dụ

CREATE TRIGGER trInsNV
ON NHANVIEN
FOR INSERT
AS
RAISERROR('%d hang da duoc them vao bang
             NHANVIEN', 0, 1,@@rowcount)
Trigger này tự động được thực hiện mỗi khi có bản
   ghi mới được chèn vào bảng NHANVIEN
Trigger xóa: ví dụ

CREATE TRIGGER trDelNV
ON NHANVIEN
FOR DELETE
AS
RAISERROR('%d hàng bị xóa trong bảng
              NHANVIEN', 0, 1,@@rowcount)
Trigger này tự động được thực hiện mỗi khi có một
   hoặc nhiều bản ghi bị xóa ở bảng NHANVIEN
Trigger cập nhật (Update trigger): ví dụ

 CREATE TRIGGER trUpNV
 ON NHANVIEN
 FOR UPDATE
 AS
 RAISERROR('%d %d hàng đã được sửa ở bảng bảng
            NHANVIEN', 0, 1,@@rowcount)


 Trigger này tự động được thực hiện mỗi khi có một
   câu lệnh Update được thực hiện trên bảng
   NHANVIEN.
Trigger tổng hợp: ví dụ

CREATE TRIGGER trIns_UpNV
ON NHANVIEN
FOR INSERT, UPDATE
AS
RAISERROR('%d hàng đã được thêm hoặc sửa ở
   bảng NHANVIEN', 0, 1,@@rowcount)
Trigger Instead of

   cho phép cập nhật DL các bảng thông qua
    view có liên kết nhiều bảng
Ứng dụng: Đảm bảo ràng buộc toàn vẹn dữ liệu
  CREATE TRIGGER trDelNV
  ON NHANVIEN
  FOR DELETE
  AS
  RAISERROR('%d hang bi xoa trong bang NHANVIEN', 0,
       1,@@rowcount)
  ------------
  CREATE TRIGGER trDelPhong
  ON PHONG
  FOR DELETE
  AS
  DELETE NHANVIEN FROM DELETED WHERE
       DELETED.MAPHONG =NHANVIEN.MAPHONG
Ứng dụng: Đóng gói quy tắc nghiệp vụ

CREATE TRIGGER trInsNV_PHONG
ON NHANVIEN
FOR INSERT
AS
UPDATE PHONG SET SONV = SONV+1
  WHERE PHONG.MAPHONG = (SELECT
  MAPHONG FROM INSERTED)
Một số chú ý khi dùng trigger
   Một bảng có nhiều trigger
   Mỗi một trigger có tên duy nhất
   Trong trigger thường dùng mệnh đề IF
    EXISTS
Xóa, sửa trigger

   Xoá trigger
        DROP TRIGGER <tên trigger>
   Sửa trigger
        ALTER TRIGGER <tên trigger> . . .

   Xem lại định nghĩa của trigger: sp_helptext

   Tạo trigger bằng EM

More Related Content

What's hot

Bài 3: Làm việc với kiểu dữ liệu và mã kịch bản - Giáo trình FPT
Bài 3: Làm việc với kiểu dữ liệu và mã kịch bản - Giáo trình FPTBài 3: Làm việc với kiểu dữ liệu và mã kịch bản - Giáo trình FPT
Bài 3: Làm việc với kiểu dữ liệu và mã kịch bản - Giáo trình FPTMasterCode.vn
 
Android Nâng cao-Bài 8-JSON & XML Parsing
Android Nâng cao-Bài 8-JSON & XML ParsingAndroid Nâng cao-Bài 8-JSON & XML Parsing
Android Nâng cao-Bài 8-JSON & XML ParsingPhuoc Nguyen
 
Slide Hệ Quản Trị Cơ sở dữ liệu - CHƯƠNG 5
Slide Hệ Quản Trị Cơ sở dữ liệu - CHƯƠNG 5Slide Hệ Quản Trị Cơ sở dữ liệu - CHƯƠNG 5
Slide Hệ Quản Trị Cơ sở dữ liệu - CHƯƠNG 5pisu412
 
Android Nâng cao-Bài 4: Content Provider
Android Nâng cao-Bài 4: Content ProviderAndroid Nâng cao-Bài 4: Content Provider
Android Nâng cao-Bài 4: Content ProviderPhuoc Nguyen
 
Lap trinh giao dien nguoi dung voi Java
Lap trinh giao dien nguoi dung voi JavaLap trinh giao dien nguoi dung voi Java
Lap trinh giao dien nguoi dung voi JavaANHMATTROI
 
Bài 6: Bảo mật trong SQL SERVER 2008 - Giáo trình FPT
Bài 6: Bảo mật trong SQL SERVER 2008 - Giáo trình FPTBài 6: Bảo mật trong SQL SERVER 2008 - Giáo trình FPT
Bài 6: Bảo mật trong SQL SERVER 2008 - Giáo trình FPTMasterCode.vn
 
Bài 3: Cấu trúc điều khiển, hàm và xử lý sự kiện - Giáo trình FPT
Bài 3: Cấu trúc điều khiển, hàm và xử lý sự kiện - Giáo trình FPTBài 3: Cấu trúc điều khiển, hàm và xử lý sự kiện - Giáo trình FPT
Bài 3: Cấu trúc điều khiển, hàm và xử lý sự kiện - Giáo trình FPTMasterCode.vn
 
Bài 2: Biến và toán tử - Giáo trình FPT
Bài 2: Biến và toán tử - Giáo trình FPTBài 2: Biến và toán tử - Giáo trình FPT
Bài 2: Biến và toán tử - Giáo trình FPTMasterCode.vn
 
Cai tien trong lenh t sql cua sql server 2008 (2)
Cai tien trong lenh t sql cua sql server 2008 (2)Cai tien trong lenh t sql cua sql server 2008 (2)
Cai tien trong lenh t sql cua sql server 2008 (2)khanhtoankmz
 
Slide Hệ Quản Trị Cơ sở dữ liệu - CHƯƠNG 3 VIEW
Slide Hệ Quản Trị Cơ sở dữ liệu - CHƯƠNG 3 VIEWSlide Hệ Quản Trị Cơ sở dữ liệu - CHƯƠNG 3 VIEW
Slide Hệ Quản Trị Cơ sở dữ liệu - CHƯƠNG 3 VIEWpisu412
 
3. phan quyen trong sql server 01012010
3. phan quyen trong sql server 010120103. phan quyen trong sql server 01012010
3. phan quyen trong sql server 01012010Truong van Duoc
 
Lap trinhcosodulieuvoi c-sharp_phan-3
Lap trinhcosodulieuvoi c-sharp_phan-3Lap trinhcosodulieuvoi c-sharp_phan-3
Lap trinhcosodulieuvoi c-sharp_phan-3Hiển Phùng
 
Lớp kết nối csdl dùng jdbc trong java
Lớp kết nối csdl dùng jdbc trong javaLớp kết nối csdl dùng jdbc trong java
Lớp kết nối csdl dùng jdbc trong javaANHMATTROI
 

What's hot (19)

Bài 3: Làm việc với kiểu dữ liệu và mã kịch bản - Giáo trình FPT
Bài 3: Làm việc với kiểu dữ liệu và mã kịch bản - Giáo trình FPTBài 3: Làm việc với kiểu dữ liệu và mã kịch bản - Giáo trình FPT
Bài 3: Làm việc với kiểu dữ liệu và mã kịch bản - Giáo trình FPT
 
Android Nâng cao-Bài 8-JSON & XML Parsing
Android Nâng cao-Bài 8-JSON & XML ParsingAndroid Nâng cao-Bài 8-JSON & XML Parsing
Android Nâng cao-Bài 8-JSON & XML Parsing
 
Tip oracle
Tip oracleTip oracle
Tip oracle
 
9 bash
9 bash9 bash
9 bash
 
Slide Hệ Quản Trị Cơ sở dữ liệu - CHƯƠNG 5
Slide Hệ Quản Trị Cơ sở dữ liệu - CHƯƠNG 5Slide Hệ Quản Trị Cơ sở dữ liệu - CHƯƠNG 5
Slide Hệ Quản Trị Cơ sở dữ liệu - CHƯƠNG 5
 
Android Nâng cao-Bài 4: Content Provider
Android Nâng cao-Bài 4: Content ProviderAndroid Nâng cao-Bài 4: Content Provider
Android Nâng cao-Bài 4: Content Provider
 
Lap trinh giao dien nguoi dung voi Java
Lap trinh giao dien nguoi dung voi JavaLap trinh giao dien nguoi dung voi Java
Lap trinh giao dien nguoi dung voi Java
 
Bài 6: Bảo mật trong SQL SERVER 2008 - Giáo trình FPT
Bài 6: Bảo mật trong SQL SERVER 2008 - Giáo trình FPTBài 6: Bảo mật trong SQL SERVER 2008 - Giáo trình FPT
Bài 6: Bảo mật trong SQL SERVER 2008 - Giáo trình FPT
 
Bài 3: Cấu trúc điều khiển, hàm và xử lý sự kiện - Giáo trình FPT
Bài 3: Cấu trúc điều khiển, hàm và xử lý sự kiện - Giáo trình FPTBài 3: Cấu trúc điều khiển, hàm và xử lý sự kiện - Giáo trình FPT
Bài 3: Cấu trúc điều khiển, hàm và xử lý sự kiện - Giáo trình FPT
 
Bài 2: Biến và toán tử - Giáo trình FPT
Bài 2: Biến và toán tử - Giáo trình FPTBài 2: Biến và toán tử - Giáo trình FPT
Bài 2: Biến và toán tử - Giáo trình FPT
 
Cai tien trong lenh t sql cua sql server 2008 (2)
Cai tien trong lenh t sql cua sql server 2008 (2)Cai tien trong lenh t sql cua sql server 2008 (2)
Cai tien trong lenh t sql cua sql server 2008 (2)
 
Slide Hệ Quản Trị Cơ sở dữ liệu - CHƯƠNG 3 VIEW
Slide Hệ Quản Trị Cơ sở dữ liệu - CHƯƠNG 3 VIEWSlide Hệ Quản Trị Cơ sở dữ liệu - CHƯƠNG 3 VIEW
Slide Hệ Quản Trị Cơ sở dữ liệu - CHƯƠNG 3 VIEW
 
3. phan quyen trong sql server 01012010
3. phan quyen trong sql server 010120103. phan quyen trong sql server 01012010
3. phan quyen trong sql server 01012010
 
Sql understanding
Sql understandingSql understanding
Sql understanding
 
Lap trinhcosodulieuvoi c-sharp_phan-3
Lap trinhcosodulieuvoi c-sharp_phan-3Lap trinhcosodulieuvoi c-sharp_phan-3
Lap trinhcosodulieuvoi c-sharp_phan-3
 
Lớp kết nối csdl dùng jdbc trong java
Lớp kết nối csdl dùng jdbc trong javaLớp kết nối csdl dùng jdbc trong java
Lớp kết nối csdl dùng jdbc trong java
 
nngu sql
 nngu sql nngu sql
nngu sql
 
07 trigger view
07 trigger view07 trigger view
07 trigger view
 
Subcaption help
Subcaption helpSubcaption help
Subcaption help
 

Similar to View sp trigger_udf

HQCSDL_ThuTucaaaaaaaaaaaaaaaaaaaâdâdáwww
HQCSDL_ThuTucaaaaaaaaaaaaaaaaaaaâdâdáwwwHQCSDL_ThuTucaaaaaaaaaaaaaaaaaaaâdâdáwww
HQCSDL_ThuTucaaaaaaaaaaaaaaaaaaaâdâdáwwwDuyNguyn224958
 
New microsoft word document
New microsoft word documentNew microsoft word document
New microsoft word documentphamtuan1983
 
Tối ưu-cau-lệnh-oracle-sql
Tối ưu-cau-lệnh-oracle-sqlTối ưu-cau-lệnh-oracle-sql
Tối ưu-cau-lệnh-oracle-sqlViet Tran
 
Hdth07 ltudql02-linq-ep1
Hdth07 ltudql02-linq-ep1Hdth07 ltudql02-linq-ep1
Hdth07 ltudql02-linq-ep1Dũng Đinh
 
Storedprocedure 140411073406-phpapp02
Storedprocedure 140411073406-phpapp02Storedprocedure 140411073406-phpapp02
Storedprocedure 140411073406-phpapp02huynhtrong774129
 
bai in.docx
bai in.docxbai in.docx
bai in.docxtrantp
 
b6-190213084710.pdf
b6-190213084710.pdfb6-190213084710.pdf
b6-190213084710.pdfQuyVo27
 
Slide Hệ Quản Trị Cơ sở dữ liệu - CHƯƠNG 4
Slide Hệ Quản Trị Cơ sở dữ liệu - CHƯƠNG 4Slide Hệ Quản Trị Cơ sở dữ liệu - CHƯƠNG 4
Slide Hệ Quản Trị Cơ sở dữ liệu - CHƯƠNG 4pisu412
 
Thiet Ke Co So Du Lieu2
Thiet Ke Co So Du Lieu2Thiet Ke Co So Du Lieu2
Thiet Ke Co So Du Lieu2Vo Oanh
 
Giới thiệu hệ quản trị csdl oracle và thủ tục
Giới thiệu hệ quản trị csdl oracle và thủ tụcGiới thiệu hệ quản trị csdl oracle và thủ tục
Giới thiệu hệ quản trị csdl oracle và thủ tụcThoL718186
 
OVERVIEW ABOUT MS SQL SERVER FOR BEGINNING
OVERVIEW ABOUT MS SQL SERVER FOR BEGINNINGOVERVIEW ABOUT MS SQL SERVER FOR BEGINNING
OVERVIEW ABOUT MS SQL SERVER FOR BEGINNINGTonMnh13
 
Hướng dẫn lập trình với SCSF phần I (smart client software factory)
Hướng dẫn lập trình với SCSF phần I (smart client software factory)Hướng dẫn lập trình với SCSF phần I (smart client software factory)
Hướng dẫn lập trình với SCSF phần I (smart client software factory)Minh Tri Lam
 
Qtu.vn sql - chuong 5
Qtu.vn  sql - chuong 5Qtu.vn  sql - chuong 5
Qtu.vn sql - chuong 5Hoang le Minh
 

Similar to View sp trigger_udf (20)

slide_Chuong 3_ (1).ppt
slide_Chuong 3_ (1).pptslide_Chuong 3_ (1).ppt
slide_Chuong 3_ (1).ppt
 
ORACLE_ch2_SQL.pptx
ORACLE_ch2_SQL.pptxORACLE_ch2_SQL.pptx
ORACLE_ch2_SQL.pptx
 
HQCSDL_ThuTucaaaaaaaaaaaaaaaaaaaâdâdáwww
HQCSDL_ThuTucaaaaaaaaaaaaaaaaaaaâdâdáwwwHQCSDL_ThuTucaaaaaaaaaaaaaaaaaaaâdâdáwww
HQCSDL_ThuTucaaaaaaaaaaaaaaaaaaaâdâdáwww
 
New microsoft word document
New microsoft word documentNew microsoft word document
New microsoft word document
 
Tối ưu-cau-lệnh-oracle-sql
Tối ưu-cau-lệnh-oracle-sqlTối ưu-cau-lệnh-oracle-sql
Tối ưu-cau-lệnh-oracle-sql
 
Hdth07 ltudql02-linq-ep1
Hdth07 ltudql02-linq-ep1Hdth07 ltudql02-linq-ep1
Hdth07 ltudql02-linq-ep1
 
Storedprocedure 140411073406-phpapp02
Storedprocedure 140411073406-phpapp02Storedprocedure 140411073406-phpapp02
Storedprocedure 140411073406-phpapp02
 
bai in.docx
bai in.docxbai in.docx
bai in.docx
 
ôn tập dbms
ôn tập dbmsôn tập dbms
ôn tập dbms
 
b6-190213084710.pdf
b6-190213084710.pdfb6-190213084710.pdf
b6-190213084710.pdf
 
Slide Hệ Quản Trị Cơ sở dữ liệu - CHƯƠNG 4
Slide Hệ Quản Trị Cơ sở dữ liệu - CHƯƠNG 4Slide Hệ Quản Trị Cơ sở dữ liệu - CHƯƠNG 4
Slide Hệ Quản Trị Cơ sở dữ liệu - CHƯƠNG 4
 
Thiet Ke Co So Du Lieu2
Thiet Ke Co So Du Lieu2Thiet Ke Co So Du Lieu2
Thiet Ke Co So Du Lieu2
 
Giới thiệu hệ quản trị csdl oracle và thủ tục
Giới thiệu hệ quản trị csdl oracle và thủ tụcGiới thiệu hệ quản trị csdl oracle và thủ tục
Giới thiệu hệ quản trị csdl oracle và thủ tục
 
Phan3
Phan3Phan3
Phan3
 
OVERVIEW ABOUT MS SQL SERVER FOR BEGINNING
OVERVIEW ABOUT MS SQL SERVER FOR BEGINNINGOVERVIEW ABOUT MS SQL SERVER FOR BEGINNING
OVERVIEW ABOUT MS SQL SERVER FOR BEGINNING
 
SQL injection
SQL injectionSQL injection
SQL injection
 
Hướng dẫn lập trình với SCSF phần I (smart client software factory)
Hướng dẫn lập trình với SCSF phần I (smart client software factory)Hướng dẫn lập trình với SCSF phần I (smart client software factory)
Hướng dẫn lập trình với SCSF phần I (smart client software factory)
 
Qtu.vn sql - chuong 5
Qtu.vn  sql - chuong 5Qtu.vn  sql - chuong 5
Qtu.vn sql - chuong 5
 
Access vba 052009
Access vba 052009Access vba 052009
Access vba 052009
 
Yii
YiiYii
Yii
 

View sp trigger_udf

  • 1.
  • 2. NỘI DUNG  KHUNG NHÌN (VIEW)  THỦ TỤC LƯU TRÚ (STORED PROCEDURE - SP)  TRIGGER  HÀM CỦA NGƯỜI DÙNG (USER DEFINED FUNCTION - UDF)
  • 3.
  • 4. NỘI DUNG  Định nghĩa  Câu lệnh  Mục đích  Cập nhật dữ liệu thông qua View  Mã hóa View
  • 5. Định nghĩa VIEW  View là bảng không chứa dữ liệu, nó chỉ là truy vấn kết hợp dữ liệu từ 1 hay nhiều bảng có quan hệ với nhau và được lưu thành một đối tượng của SQL SV  NSD có thể áp dụng ngôn ngữ thao tác dữ liệu trên các View giống như Table.
  • 6. Định nghĩa VIEW SQL Server SELECT * FROM nv_kinhdoanh; USER_VIEWS nv_kinhdoanh SELECT manv, hoten,luong FROM NHANVIEN WHERE ma_phong = ‘KDA’; NHANVIEN
  • 7. Câu lệnh tạo VIEW CREATE VIEW <Tên_View> [(<danh sách tên cột>) ] [WITH ENCRYPTION] AS <Câu lệnh SELECT> [with check option]
  • 8. Câu lệnh tạo VIEW Ví dụ 1: tạo View nv_kinh doanh CREAT VIEW nv_kinhdoanh AS SELECT Manv, Hoten, Luong FROM NHANVIEN * Sử dụng View: SELECT * FROM NV_KINHDOANH
  • 9. Câu lệnh tạo VIEW Ví dụ 2: tạo View nv_tre (nhân viên dưới 35 tuổi) CREAT VIEW nv_tre (Manv, Hoten, Tuoi) AS SELECT Manv, Hoten, Year(Getdate()) – Year(Ngaysinh) FROM NHANVIEN WHERE Year(Getdate()) – Year(Ngaysinh) <= 35 * Sử dụng View: SELECT * FROM NV_TRE  Nếu một thuộc tính trong View được xây dựng từ một biểu thức thì bắt buộc phải đặt tên cho thuộc tính đó.
  • 10. Mục đích dùng VIEW  Hạn chế tính phức tạp của dữ liệu đối với NSD đơn giản.  Tạo ra bảng ảo có dữ liệu theo yêu cầu cho NSD và sử dụng trong thiết kế báo cáo.  Hạn chế quyền truy cập dữ liệu của NSD.  View dùng để trình bày các thông tin dẫn xuất.
  • 11. Cập nhật dữ liệu thông qua View  View định nghĩa dữ liệu trên một bảng thì có thể dùng Insert  Nếu trong định nghĩa View có chứa mệnh đề Inner join thì không thể dùng các thao tác Insert hay Delete để thay đổi dữ liệu  Nếu trong định nghĩa View có chứa mệnh đề With check option thì chỉ những bản ghi thỏa mãn điều kiện của View mới được Insert, Update
  • 12. Xây dựng View dựa trên View khác  Khi xóa 1 view, mọi view được xây dựng dựa trên view đó cũng bị xóa.  Có thể dùng thủ tục sp_helptext để xem định nghĩaView  Tạo View bằng EM  Mã hoá View: dùng WITH ENCRYPTION  Không thể xem được nội dung View  Không thể thay đổi lại được
  • 13.
  • 14. THỦ TỤC LƯU TRÚ (STORED PROCEDURE)  SP được xây dựng từ các câu lệnh T-SQL và được lưu trú trên SQL server.  Muốn thực hiện một SP, NSD chỉ cần thực hiện một lời gọi hàm.  Khi SP được chạy lần đầu tiên nó sẽ được biên dịch qua 5 bước và sinh ra một mô hình truy vấn. Mô hình này sẽ được đặt trong một CSDL của SQL server, lần sau chạy lại thủ tục sẽ không phải dịch lại nữa.
  • 15. THỦ TỤC LƯU TRÚ (STORED PROCEDURE)  Năm bước biên dịch thủ tục:  Thủ tục được phân tích ra thành nhiều phần  Kiểm tra sự tồn tại của các đối tượng (view, table, …) mà thủ tục tham chiếu tới.  Lưu trữ tên thủ tục vào bảng sysobject, lưu trữ các mã lệnh của thủ tục vào bảng syscomments.  Sinh ra mô hình truy vấn của thủ tục và lưu vào bảng sysprocedure  Khi SP được chạy lần đầu tiên, cây truy vấn sẽ được đọc và được tối ưu thành một kế hoạch thủ tục và chạy  tiết kiệm thời gian tái phân tích, biên dịch cây truy vấn mỗi khi chạy thủ tục.
  • 16. THỦ TỤC LƯU TRÚ (STORED PROCEDURE)  Trong một phiên làm việc, nếu SP được thực hiện, nó sẽ được lưu trữ vào vùng nhớ đệm. Những lần sau nếu SP được gọi thực hiện lại thì nó sẽ được đọc trực tiếp ra từ vùng nhớ đệm  nâng cao hiệu suất chạy truy vấn.
  • 17. THỦ TỤC LƯU TRÚ (STORED PROCEDURE)  Cú pháp lệnh tạo SP: CREATE PROC[EDURE] <tên SP> [@ <tên tham số 1> <kiểu DL> [= <giá trị>] [OUTPUT], . . .] [WITH RECCOMPILE|ENCRYPTION|RECOMPILE, ENCRYPTION] AS <các câu lệnh SQL, câu lệnh điều khiển, . . .> Giải thích: - =<giá trị>: gán giá trị ban đầu cho tham số - OUTPUT: giá trị thay đổi của tham số ở trong thủ tục được đưa ra bên ngoài thủ tục. Ví dụ
  • 18. THỦ TỤC LƯU TRÚ (STORED PROCEDURE)  Thực hiện thủ tục: EXEC <tên SP>  Thay đổi thủ tục ALTER PRO[CEDURE] . . .  Xóa thủ tục DROP PRO[CEDURE] <tên SP>  Bó thủ tục
  • 19. THỦ TỤC LƯU TRÚ (STORED PROCEDURE)  Sử dụng tùy chọn RECOMPILE trong câu lệnh CREATE PRO:  Thủ tục sẽ được biên dịch lại từ đầu mỗi khi thực hiện  Khi biên dịch lại các thông tin mới của SP được cập nhật và tối ưu lại.  Sử dụng tùy chọn RECOMPILE trong câu lệnh EXEC  Thủ tục sẽ được biên dịch lại trong lần thực thi đó và lưu lại kế hoạch thực thi mới của nó vào vùng nhớ đệm.  Biên dịch lại tất cả các thủ tục của bảng: EXEC sp_recompile <tên bảng>
  • 20. THỦ TỤC LƯU TRÚ (STORED PROCEDURE)  Ví dụ: USE qlnv; SP này như một view có tham số! GO CREATE PROC DS_Phong @BienMaPhong CHAR (3) AS SELECT Manv, HoTen, NgaySinh FROM NhanVien WHERE MaPhong=@BienMaPhong GO Exec DS_Phong 'KDA'
  • 21. THỦ TỤC LƯU TRÚ (STORED PROCEDURE)  Ví dụ: USE qlnv; GO CREATE PROC Soluong_Phong @BienMaPhong CHAR (3), @SL int OUTPUT AS SELECT @SL = COUNT (*) FROM NhanVien WHERE MaPhong=@BienMaPhong GO -- Thuc hien thu tuc luu tru DECLARE @dem INT; DECLARE @phong CHAR(3); SET @phong='KDA'; EXEC Soluong_Phong @phong, @dem OUTPUT --Hoac EXEC Soluong_Phong @BienMaPhong=@phong, @SL=@dem OUTPUT PRINT 'So luong nhan vien phong ' + @phong + ' la: ' + CAST (@dem AS CHAR(20)) --Xoa thu tuc luu tru DROP PROC Soluong_Phong
  • 22. THỦ TỤC LƯU TRÚ (STORED PROCEDURE)  Ví dụ: (Thu tuc luu tru voi tham so mac dinh) CREATE PROC Soluong_Phong_Default @BienMaPhong CHAR (3)='KDA', @SL int OUTPUT AS SELECT @SL = COUNT (*) FROM NhanVien WHERE MaPhong=@BienMaPhong GO DECLARE @dem INT; EXEC Soluong_Phong_Default @SL=@dem EXEC Soluong_Phong_Default 'QTA', @dem
  • 23. Create proc XepLoaiSV @MaSV varchar(10), THỦ TỤC LƯU TRÚ @DTB float output, @XL nvarchar(20) output As (STORE PROCEDURE) Set @DTB = (Select avg(Diem) from KetQua Kq Where MaSV = @MaSV and not exists ( select * from KetQua Kq1 where Kq1.MaSV = @MaSV and Kq1.MaMH=Kq.MaMH and Kq1.LanThi > Kq.LanThi ) ) If @DTB >= 9 Set @XL = N’Xuât sac’ Else if @DTB >= 8 Set @XL = N’Gi~i’ Else if @DTB >= 7 Set @XL = N’Khá’ Else if @DTB >= 5 Set @XL = N’Trung bình’ Else Set @XL = N’Yêu’ Go
  • 24.
  • 25. HÀM CỦA NSD (USER DEFINED FUNCTIONS-UDFs)  Cú pháp câu lệnh: CREATE FUNCTION <tên hàm> ([@<tên tham số> <kiểu DL vô hướng> [= <giá trị>] [, . . .]]) RETURNS <kiểu vô hướng>|<table> [WITH ENCRYPTION] AS BEGIN [<các câu lệnh>] RETURN <giá trị vô hướng>| (<câu lệnh SELECT>)
  • 26. HÀM CỦA NSD (USER DEFINED FUNCTIONS-UDFs) --Ham vo huong CREATE FUNCTION Ham_Soluong_Phong ( @BienMaPhong CHAR (3) ) RETURNS int AS BEGIN DECLARE @SL int; SELECT @SL = COUNT (*) FROM NhanVien WHERE MaPhong=@BienMaPhong ; RETURN (@SL); END --Su dung ham (Ham xuat hien trong bieu thuc) SELECT dbo.Ham_Soluong_Phong('KDA'); SELECT MaPhong, count (*) FROM NhanVien GROUP BY MaPhong HAVING count(*) > dbo.Ham_Soluong_Phong('QTA')
  • 27. HÀM CỦA NSD (USER DEFINED FUNCTIONS-UDFs) --Ham cho ket qua la mot bang CREATE FUNCTION Ham_DS_Phong (@BienMaPhong CHAR (3)) RETURNS @kq TABLE (Manv CHAR(5), HoTen NCHAR(40), NgaySinh DATETIME) BEGIN INSERT INTO @kq SELECT Manv, HoTen, NgaySinh FROM NhanVien WHERE MaPhong=@BienMaPhong RETURN END -- Su dung ham tra ket qua bang nhu la TABLE SELECT * FROM Ham_DS_Phong ('QTA')
  • 28. HÀM CỦA NSD (USER DEFINED FUNCTIONS-UDFs)  UDFs giống như SP nhưng khác ở các điểm sau: UDF SP - Giá trị các tham số không - Có thể đưa giá trị của tham được truyền ra ngoài. số ra ngoài bằng thuộc tính - Trả ra một giá trị bằng mệnh OUTPUT đề RETURN - Có thể trả về một giá trị vô - Chỉ trả về kiểu DL giá trị hướng hoặc một bảng dữ kiểu nguyên liệu.
  • 29.
  • 30. Nội dung  Khái niệm về trigger  Câu lệnh tạo trigger  Các loại trigger  Ứng dụng của trigger  Sửa, xóa trigger
  • 31. Khái niệm về trigger  Thủ tục lưu trú (Stored Procedure) đặc biệt  Triger tự động được chạy mỗi khi có một hành động liên quan đến nó xảy ra  Triger không có tham số, không trả ra giá trị như SP bình thường.  Các loại trigger: Insert trigger, Delete trigger, Update trigger, trigger tổng hợp.
  • 32. Cú pháp câu lệnh tạo trigger CREATE TRIGGER <tên triger> ON <tên bảng>|<tên view> [WITH ENCRYPTION] { {FOR | AFTER| INSTEAD OF} <INSERT [, UPDATE] [, DELETE]> } AS <câu lệnh SQL>
  • 33. Trigger chèn (Insert trigger): định nghĩa  Tự động được thực hiện mỗi khi bản ghi mới được chèn vào bảng gắn với nó  Một bảng tạm Inserted sẽ được sinh ra  Bản ghi cần chèn sẽ được ghi vào bảng cơ sở và bảng Inserted
  • 34. Trigger chèn: ví dụ CREATE TRIGGER trInsNV ON NHANVIEN FOR INSERT AS RAISERROR('%d hang da duoc them vao bang NHANVIEN', 0, 1,@@rowcount) Trigger này tự động được thực hiện mỗi khi có bản ghi mới được chèn vào bảng NHANVIEN
  • 35. Trigger xóa: ví dụ CREATE TRIGGER trDelNV ON NHANVIEN FOR DELETE AS RAISERROR('%d hàng bị xóa trong bảng NHANVIEN', 0, 1,@@rowcount) Trigger này tự động được thực hiện mỗi khi có một hoặc nhiều bản ghi bị xóa ở bảng NHANVIEN
  • 36. Trigger cập nhật (Update trigger): ví dụ CREATE TRIGGER trUpNV ON NHANVIEN FOR UPDATE AS RAISERROR('%d %d hàng đã được sửa ở bảng bảng NHANVIEN', 0, 1,@@rowcount) Trigger này tự động được thực hiện mỗi khi có một câu lệnh Update được thực hiện trên bảng NHANVIEN.
  • 37. Trigger tổng hợp: ví dụ CREATE TRIGGER trIns_UpNV ON NHANVIEN FOR INSERT, UPDATE AS RAISERROR('%d hàng đã được thêm hoặc sửa ở bảng NHANVIEN', 0, 1,@@rowcount)
  • 38. Trigger Instead of  cho phép cập nhật DL các bảng thông qua view có liên kết nhiều bảng
  • 39. Ứng dụng: Đảm bảo ràng buộc toàn vẹn dữ liệu CREATE TRIGGER trDelNV ON NHANVIEN FOR DELETE AS RAISERROR('%d hang bi xoa trong bang NHANVIEN', 0, 1,@@rowcount) ------------ CREATE TRIGGER trDelPhong ON PHONG FOR DELETE AS DELETE NHANVIEN FROM DELETED WHERE DELETED.MAPHONG =NHANVIEN.MAPHONG
  • 40. Ứng dụng: Đóng gói quy tắc nghiệp vụ CREATE TRIGGER trInsNV_PHONG ON NHANVIEN FOR INSERT AS UPDATE PHONG SET SONV = SONV+1 WHERE PHONG.MAPHONG = (SELECT MAPHONG FROM INSERTED)
  • 41. Một số chú ý khi dùng trigger  Một bảng có nhiều trigger  Mỗi một trigger có tên duy nhất  Trong trigger thường dùng mệnh đề IF EXISTS
  • 42. Xóa, sửa trigger  Xoá trigger DROP TRIGGER <tên trigger>  Sửa trigger ALTER TRIGGER <tên trigger> . . .  Xem lại định nghĩa của trigger: sp_helptext  Tạo trigger bằng EM

Editor's Notes

  1. Views in the Data Dictionary Once your view has been created, you can query the data dictionary view called USER_VIEWS to see the name of the view and the view definition. The text of the SELECT statement that constitutes your view is stored in a LONG column. Data Access Using Views When you access data using a view, the Oracle server performs the following operations: 1. It retrieves the view definition from the data dictionary table USER_VIEWS . 2. It checks access privileges for the view base table. 3. It converts the view query into an equivalent operation on the underlying base table or tables. In other words, data is retrieved from, or an update is made to, the base tables. Instructor Note The view text is stored in a column of LONG data type. You may need to set ARRAYSIZE to a smaller value or increase the value of LONG to view the text. Views in the Data Dictionary