VIEW, FUNCTION & STORE PROCEDURE VÀ TRIGGER TRONG ...
Có thể bạn quan tâm
Bài đăng này đã không được cập nhật trong 3 năm
database sử dụng trong ví dụ
View
View là gì
- View là các truy vấn SELECT được lưu lại như là một table và sau đó ta có thể truy vấn dữ liệu từ view như thực hiện với table.
- Một số lưu ý đối với câu lệnh SELECT trong view:
- Không sử dụng biến local, user hay session
- Những lệnh dịch sẵn cũng không thể sử dụng
- Bảng tạm hay các view khác cũng không được sử dụng làm nguồn dữ liệu cho câu truy vấn này.
- Không thể tạo trigger cho view.
Cú pháp
CREATE VIEW view_name AS SELECT statementVí dụ:
CREATE VIEW address_people AS SELECT a.name AS name, a.age AS age, c.name AS province_name FROM people a JOIN district b ON a.district_id = b.id JOIN province c ON b.id_province = c.idƯu nhược điểm
-
Ưu điểm
- An ninh – Cho phép người quản trị CSDL (DBA) cung cấp cho người sử dụng chỉ những dữ liệu cần thiết
- Đơn giản hóa – Các view cũng có thể sử dụng để ẩn và sử dụng lại các truy vấn phức tạp => rất tiện với những câu truy vấn còng kềnh dài hàng trang A4
-
Nhược điểm:
- Tốn thêm tài nguyên trên Server (memory, process)
Function và Store Procedure (hàm/thủ tục)
Function và Store Procedure là gì
- Là đoạn chương trình kịch bản (programming scripts) với các câu lệnh SQL nhúng (embedded SQL) được lưu dưới dạng đã được biên dịch và thi hành thực tiếp bởi MySQL server.
- SP cho phép lưu trữ các logic ứng dụng trên CSDL.
Cú pháp
- Tạo hàm/thủ tục
Ví dụ:
DELIMITER $$ CREATE PROCEDURE count_people_with_age(IN age_in INT, OUT quantity INT) BEGIN SELECT * FROM people WHERE age >= age_in; SELECT FOUND_ROWS() INTO quantity; END- DELIMITER $$: Giải phóng để cho phép sử dụng ‘;’ trong thủ tục
- Gán giá trị cho biến
- Sử dụng SET hoặc SELECT INTO.
- Gọi thủ tục:
- Xóa Hàm/Thủ tục:
- Hiện thị thông tin
Một số cấu trúc điều khiển dùng trong Hàm, thủ tục:
- Mệnh đề IF THEN
- Mệnh đề REPEAT UNTIL
- Mệnh đề CASE
- Mệnh đề WHILE
Con trỏ (cursor) trong hàm/thủ tục
- MySQL hỗ trợ con trỏ trong hàm/thủ tục, trigger
- Con trỏ được sử dụng để duyệt các dòng kết quả trả lại bởi truy vấn, và xử lý từng dòng riêng lẻ
- Cú pháp Con trỏ:
- Lấy ra từng dòng và chuyển tới dòng kết quả tiếp theo sử dụng lệnh FETCH
Xử lý lỗi thông qua Handlers
- Luôn có khả năng hàm/thủ tục gặp lỗi trong khi thi hành các lệnh SQL. MySQL cung cấp kỹ thuật xử lý lỗi thông qua handler
- Một handler cần định nghĩa sau khai báo các biến, con trỏ và điều kiện, nhưng trước các lệnh SQL
- Cú pháp Handler:
- type: CONTINUE hoặc EXIT
- condition(s): Các điều kiện mà handler sẽ được gọi : Not found, SqlException,..
- statement: Câu lệnh sẽ thi hành khi có điều kiện xảy ra
Ưu nhược điểm
- Ưu điểm
- Giảm dư thừa mã chương trình: Các đoạn mã tương tự trong các ứng dụng như thêm, cập nhật có thể lưu ở phía CSDL
- Bảo trì: Nếu có sự thay đổi trong CSDL, mã lệnh cần thay đổi có thể xác định trong các SP
- An ninh CSDL tốt hơn: Trong các ứng dụng an ninh cao, với hàm/thủ tục có thể kiểm soát truy cập dữ liệu và đưa ra các qui định an ninh tập trung
- Nhược điểm
- Thiếu tính khả chuyển (Lack of Portability) SP khó chuyển từ một DBMS sang một DBMS khác. Yêu cầu lập trình và kiểm thử lại đáng kể
- Tải DB Server Sử dụng hàm/thủ tục nhiều có thể gây quá tải MySQL server
- Hạn chế ngôn ngữ lập trình Lập trình SP không phong phú như các nền tảng phát triển khác như Java hay PHP Lưu ý: Các phiên bản tương lai của MySQL có thể cung cấp các giao diện cho phép tạo các hàm/thủ tục sử dụng các ngôn ngữ bên ngoài, ví dụ Java
Trigger
Trigger là gì
- Triggers là quá trình tự động thi hành các lệnhSQL hoặc hàm/thủ tục sau hoặc trước các lệnh INSERT, UPDATE, hoặc DELETE.
- Các ứng dụng có thể bao gồm: lưu lại thay đổi hoặc cập nhật dữ liệu các bảng khác.
- Trigger chạy sau mỗi câu lệnh cập nhật bảng do đó có thể thêm tải với CSDL
Cú pháp
- Tạo trigger:
- Xóa trigger:
- Sửa, xem thông tin trigger:
- Để hiển thị các trigger gắn với 1 bảng dữ liệu:
- Cú pháp lệnh bên trong tương tự hàm/thủ tục
- Trong trigger, mã lệnh có thể truy cập các cột của bản ghi hiện tại
- OLD.columnname trả lại nội dung của bản ghi trước khi bị thay đổi hoặc xóa (UPDATE, DELETE)
- NEW.columnname trả lại nội dung của bản ghi mới hoặc bản ghi thay thế (INSERT, UPDATE)
All rights reserved
Từ khóa » Sử Dụng If Trong Mysql
-
Câu Lệnh If Else Trong MYSQL - Freetuts
-
Hàm IF Trong MySQL - Freetuts
-
Hàm IF Trong MySQL - Vi
-
Bài 3 – If Else, Case, While Do Trong Mysql - Nongdanit
-
MySQL: Case Vs. If Vs. If Function | TopDev
-
Cách Sử Dụng Câu Lệnh IF Của MySQL - Morioh
-
IF… ELSE Trong Mệnh đề WHERE Trong MySQL - HelpEx
-
Làm Thế Nào để Viết Câu Lệnh IF ELSE Trong Truy Vấn MySQL? - HelpEx
-
Cách Truy Vấn Dữ Liệu Theo điều Kiện Trong MySQL - Web Cơ Bản
-
Hàm IF Trong MySQL - Freetuts
-
Sử Dụng View, Trigger Và Procedure Trong Mysql - Viblo
-
Top 15 Cách Dùng If Trong Mysql 2022
-
Lệnh EXISTS Trong MySQL - Web Cơ Bản