Hướng dẫn select function mysql - chọn chức năng mysql

Hướng dẫn select function mysql - chọn chức năng mysql

Đã đă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ụ

Hướng dẫn select function mysql - chọn chức năng mysql

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 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.
Cú pháp
  • Ví dụ:
Ưu nhược điểm

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
0
CREATE 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
2
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
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 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)
      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

SP cho phép lưu trữ các logic ứng dụng trên CSDL.

Tạo hàm/thủ tục
  • CREATE 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
Cú pháp
  • 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ì