Đã đăng vào thg 3 19, 2015 12:14 CH 5 phút đọc 5 phút đọc
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.
CREATE VIEW view_name AS
SELECT statement
Ví 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.
- Ví dụ:
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
- Ư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
Call count_people_with_age [18,@people_count];
Select @ people _count;
- Nhược điểm:
DROP FUNCTION [IF EXISTS] name
DROP PROCEDURE [IF EXISTS] name
- Tốn thêm tài nguyên trên Server [memory, process]
SHOW FUNCTION STATUS;
SHOW PROCEDURE STATUS;
SHOW FUNCTION STATUS LIKE 'repeat%';
SHOW PROCEDURE STATUS LIKE 'film%';
SHOW CREATE PROCEDURE 'name';
Function và Store Procedure [hàm/thủ tục]- Function và Store Procedure là gì
IF condition THEN
commands;
[ELSE IF condition THEN
commands;]
[ELSE
commands;]
END IF;
- 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.
[loopname:]
REPEAT commands;
UNTIL condition
END REPEAT
[loopname];
- SP cho phép lưu trữ các logic ứng dụng trên CSDL.
CASE expression
WHEN value1 THEN commands;
[WHEN value2 THEN commands;]
[ELSE commands;]
END CASE;
- Tạo hàm/thủ tục
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
0CREATE FUNCTION name [[parameterlist]] RETURNS datatype [options] sqlcode
CREATE PROCEDURE name [[parameterlist]] [options] sqlcode
- 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.
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
1- Gọi thủ tục:
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
2Xó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
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
3- Mệnh đề REPEAT UNTIL
- Mệnh đề CASE
- Mệnh đề WHILE
- Ư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]
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ể - Function và Store Procedure là gì
Sử dụng hàm/thủ tục nhiều có thể gây quá tải MySQL server - 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.
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
- Function và Store Procedure [hàm/thủ tục]
SP cho phép lưu trữ các logic ứng dụng trên CSDL.
Tạo hàm/thủ tụcCREATE FUNCTION name [[parameterlist]] RETURNS datatype [options] sqlcode CREATE PROCEDURE name [[parameterlist]] [options] sqlcode
- DELIMITER $$: Giải phóng để cho phép sử dụng ‘;’ trong thủ tục
- Gán giá trị cho biến
- Ví 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
4- Ưu nhược điểm
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
5- Ưu điểm
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
6- 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
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
7- Đơ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ì