1.视图
简单一句:将需要重复使用的mysql语句放到视图中去
视图优点:1.简化查询 2.减少数据库改动的成本 3.限制访问
-- 创建视图
CREATE VIEW view_name AS
SELECT column1, column2, ...
FROM table_name
WHERE condition;
-- 使用视图
SELECT * FROM view_name;
2.存储过程
简单一句:将sql代码与后端代码分开
在这里我们会正式接触sql变量,参数这个概念
SQL 变量
SQL 变量是在 SQL 语句中使用的一个命名存储位置,用于存储一个值。变量的值可以在执行期间更改。
在 MySQL 中,可以使用 SET
语句来声明和设置变量,也可以在存储过程、函数和触发器中声明和使用变量。以下是一个简单的示例:
-- 声明并赋值给变量
SET @variable_name = value;
-- 使用变量
SELECT * FROM table_name WHERE column_name = @variable_name;
mysql的变量包括了用户变量与本地变量,上面的是用户变量的设置与声明方法,下面是本地变量
-- 定义并初始化本地变量
DECLARE local_variable INT;
SET local_variable = 10;
-- 使用本地变量
SELECT * FROM table_name WHERE column_name = local_variable;
在这个例子中,local_variable
是一个整数类型的本地变量,它被赋予了值 10,并在查询中使用。
本地变量的作用域仅限于定义它们的存储过程、函数或触发器内部。这意味着你可以在同一数据库中使用相同的变量名来定义不同的本地变量,而不会发生冲突。
使用本地变量可以使代码更加模块化和可维护,因为它们将相关逻辑组织在一起,并将变量的作用范围限制在必要的范围内,从而减少了命名冲突和意外修改的风险。
SQL 参数
SQL 参数是在 SQL 查询或存储过程、函数、触发器定义中声明的特殊变量,用于接收外部传递的值。参数可以在查询或存储过程、函数、触发器调用时提供。
在存储过程、函数和触发器中,参数可以作为输入参数(IN)、输出参数(OUT)或者输入输出参数(INOUT)。
以下是一个简单的存储过程示例,其中包含输入参数:
-- 创建存储过程
DELIMITER $$
CREATE PROCEDURE procedure_name(IN parameter_name datatype)
BEGIN
-- 使用参数
SELECT * FROM table_name WHERE column_name = parameter_name;
END$$
DELIMITER ;
-- 调用存储过程并传递参数值
CALL procedure_name('parameter_value');
-- 创建存储过程
DELIMITER $$
CREATE PROCEDURE procedure_name()
BEGIN
-- SQL代码
END$$
DELIMITER ;
-- 调用存储过程
CALL procedure_name();
3.函数
简单一句:创建类似于max,min这些mysql自带的函数
-- 创建函数
CREATE FUNCTION function_name(parameter1 datatype, parameter2 datatype, ...)
RETURNS datatype
BEGIN
-- 函数逻辑
END;
-- 调用函数
SELECT function_name(argument1, argument2, ...);
可以通过return返回处理后的数据
4.触发器
简单一句:在mysql进行插入、更新、删除语句前后执行的一堆mysql代码
-- 创建触发器
CREATE TRIGGER trigger_name
BEFORE/AFTER INSERT/UPDATE/DELETE ON table_name
FOR EACH ROW
BEGIN
-- 触发器逻辑
END;
-- 触发器自动执行,无需手动调用
5.事件
简单一句:根据计划执行的任务或一堆sql代码,可以设定什么时候执行,执行的频率
-- 创建事件
CREATE EVENT event_name
ON SCHEDULE EVERY 1 HOUR
DO
BEGIN
-- 事件逻辑
END;
-- 启用事件调度器
SET GLOBAL event_scheduler = ON;
6.事务
简单一句:代表单个工作单元的一组sql语句
例如:一个转账操作,在sql中就是先减去你的数额,再加到你想要转的账户上,相当于是两个sql update构成了一个转账操作,这个转账操作就是一个工作单元
-- 开始事务
START TRANSACTION;
-- SQL语句
INSERT INTO table_name (column1, column2, ...) VALUES (value1, value2, ...);
UPDATE table_name SET column1 = value1 WHERE condition;
DELETE FROM table_name WHERE condition;
-- 提交事务
COMMIT;
-- 或者回滚事务
ROLLBACK;