视图
视图是一个虚拟的表,是由查询的SQL语句的抽象。视图本身不存储数据,而是存储一个SQL的查询语句,所以视图可以简化复杂的查询,增强安全性和提供数据的抽象层
CREATE VIEW view_name as
SELECT column1,...
FROM table_name
WHERE condtion;
示例
CREATE VIEW active_users AS
SELECT username, email
FROM users
WHERE status = 'active';
//查询视图
SELECT * FROM view_name;
// 更新视图
UPDATE active_users SET email = '916691771@qq.com' WHERE username = 'jack';
// 删除视图
DROP VIEW view_name;
存储过程
存储过程是一组预编译的SQL语句,可以通过一个名称来调用这一组预编译的SQL语句,存储过程可以接受参数,并且可以返回结果,适合复杂的业务逻辑和多次重复使用的操作
CREATE PROCEDURE procedure_name (IN param1 datatype ,OUT param2 datatype)
BEGIN
-- 存储过程逻辑
END;
示例
CREATE PROCEDURE GetUserEmail(IN username VARCHAR(50), OUT email VARCHAR(100))
BEGIN
SELECT email INTO email FROM users WHERE username = username;
END;
-- 调用存储过程
call procedure_name(parameter1,@output_parameter);
SELECT @output_parameter;
CALL GetUserEmail('john_doe', @user_email);
SELECT @user_email;
触发器
触发器是在特定事件发生时自动执行的存储程序。他们可以用于强制执行业务规则,记录审计信息或进行复杂的数据验证
-- 创建触发器
CREATE TRIGGER trigger_name
BEFORE | AFTER INSERT|UPDATE|DELETE ON table_name
FOR EACH ROW
BEGIN
-- 执行触发器逻辑
END;
示例
CREATE TRIGGER before_insert_users
BEFORE INSERT ON users
FOR EACH ROW
BEGIN
SET NEW.created_at = NOW();
END;