查看: 113|回复: 0

MySQL笔记(四)-存储、游标、触发器

[复制链接]

3

主题

11

帖子

19

积分

新手上路

Rank: 1

积分
19
发表于 2023-5-26 20:40:51 | 显示全部楼层 |阅读模式
一、存储与存储过程

1、首先我们什么是存储

MySQL 存储内容主要包括以下几个方面:

  • 数据类型:MySQL 支持多种数据类型,包括整型、浮点型、日期时间型、字符串型等。不同的数据类型适用于不同的数据存储需求。
  • 表格设计:表格是 MySQL 中最常见的数据存储方式,设计好表格结构可以提高查询和操作的效率。在设计表格时需要考虑列的命名、数据类型、约束条件(例如主键、唯一性约束、外键等)以及索引等因素。
  • 索引:索引是一种加速数据查询的方法,可以提高数据检索效率。MySQL 支持多种索引类型,包括 B-Tree 索引、哈希索引等。
  • 存储引擎:MySQL 支持多种存储引擎,每种存储引擎都有自己的特点和优缺点。选择合适的存储引擎可以提高数据库的性能和可靠性。
  • 数据库备份和恢复:备份数据库是一项非常重要的工作,可以保证数据不会因为意外情况损失。MySQL 提供了多种备份和恢复数据的方法,包括物理备份和逻辑备份等。
2、什么是存储过程

存储过程是一种在数据库中存储的可执行的程序,由一组 SQL 语句和控制结构组成。存储过程通常用于实现复杂的操作或业务逻辑,可以简化应用程序代码,并提高数据库性能和安全性。
存储过程可以在 MySQL 数据库中创建和使用。通过使用存储过程,可以将一些复杂的数据操作封装到一个单独的可执行单元中,这样可以减轻客户端的负担并提高执行效率。存储过程还可以实现数据访问限制,防止非法用户恶意操作数据库。
运用存储过程的步骤如下:

  • 创建存储过程:使用 CREATE PROCEDURE 语句创建存储过程,并编写存储过程的 SQL 语句和控制结构。
2、执行存储过程:使用 CALL 语句来调用存储过程,并传入参数。例如:
CALL procedure_name(parameter1, parameter2, ...);
其中,parameter1、parameter2 等表示传入的参数。
3、修改存储过程:可以使用 ALTER PROCEDURE 语句来修改已经创建的存储过程。例如:
ALTER PROCEDURE procedure_name (IN parameter1 datatype1, IN parameter2 datatype2, ... ) BEGIN     -- 存储过程的新 SQL 语句 END;
4、删除存储过程:使用 DROP PROCEDURE 语句来删除已经创建的存储过程。例如:
DROP PROCEDURE procedure_name;  
总之,存储过程是 MySQL 中一种非常有用的功能,可以提高数据库性能和安全性,减轻客户端的负担,并简化应用程序代码。
3、区别

存储是指在数据库中存储数据,而存储过程是一种可执行程序,它包含一组 SQL 语句和控制结构,可以在数据库中存储并重复使用。
具体来说,存储通常是指将数据保存在数据库表格中,这些数据可以是用户信息、订单记录、产品信息等。通过对这些数据进行增删改查等操作,可以使应用程序能够访问和处理这些数据。
而存储过程则是一种在数据库中存储的可执行程序,它通常由多条 SQL 语句组成,并且可以使用流程控制语句(如 IF、WHILE 等)实现复杂的业务逻辑。存储过程可以接收参数、返回结果集,并且可以在应用程序中直接调用,从而简化应用程序的开发和维护工作。
因此,存储和存储过程是两个不同的概念。存储是指将数据保存在数据库表格中,而存储过程是一种可执行程序,它可以在数据库中存储并重复使用以实现特定的业务逻辑。
二、游标

MySQL 中的游标(Cursor)是一种在数据库操作中用于遍历结果集的机制。游标是一个指向结果集的指针,可以用来逐行读取结果集并进行相关操作。
使用游标时,需要通过以下步骤来实现:

  • 声明游标:使用 DECLARE CURSOR 语句声明游标,并指定要查询的 SQL 语句和参数。例如:
    DECLARE cursor_name CURSOR FOR SELECT column1, column2 FROM table WHERE condition;
    其中,cursor_name 是游标名称,SELECT column1, column2 FROM table WHERE condition 是要查询的 SQL 语句。
  • 打开游标:使用 OPEN CURSOR 语句打开游标。例如:
    OPEN cursor_name;
  • 读取结果集:使用 FETCH CURSOR 语句读取游标中的一行数据,并将其存储到变量中。例如:
    FETCH cursor_name INTO variable1, variable2;
    其中,variable1、variable2 等表示要存储数据的变量。
  • 关闭游标:使用 CLOSE CURSOR 语句关闭游标。例如:
    CLOSE cursor_name;
  • 销毁游标:使用 DROP CURSOR 语句销毁游标。例如:
    DROP CURSOR cursor_name;
使用游标可以实现对结果集的逐行处理,常用于编写存储过程和触发器等需要遍历结果集的场景。需要注意的是,使用游标可能会降低数据库性能,应该谨慎使用。
三、触发器

MySQL 中的触发器(Trigger)是一种特殊的存储过程,它可以在数据库中自动执行,通常用于实现某些特定的业务逻辑或数据约束。当符合特定条件时,触发器会自动触发并执行相应的操作。
MySQL 中的触发器可以分为三类:BEFORE 触发器、AFTER 触发器和 INSTEAD OF 触发器。其中,BEFORE 触发器在执行操作之前触发,可用于数据校验和防止非法修改等操作;AFTER 触发器在执行操作之后触发,可用于记录日志、更新状态等操作;INSTEAD OF 触发器则可用于修改视图中的数据,而不影响底层表格的数据。
使用触发器时,需要通过以下步骤来实现:
1、创建触发器:使用 CREATE TRIGGER 语句创建触发器,并指定触发时间、触发事件、触发表格和触发操作等参数。例如:
CREATE TRIGGER trigger_name
BEFORE/AFTER/INSTEAD OF INSERT/UPDATE/DELETE ON table_name
FOR EACH ROW
BEGIN
    -- 触发器的 SQL 语句
END;其中,trigger_name 是触发器名称,BEFORE/AFTER/INSTEAD OF 指定触发时间,INSERT/UPDATE/DELETE 指定触发事件,table_name 指定触发表格,FOR EACH ROW 表示每行触发。
2、修改触发器:使用 ALTER TRIGGER 语句修改已经创建的触发器。例如:
ALTER TRIGGER trigger_name
BEFORE/AFTER/INSTEAD OF INSERT/UPDATE/DELETE ON table_name
FOR EACH ROW
BEGIN
    -- 触发器的新 SQL 语句
END;3、删除触发器:使用 DROP TRIGGER 语句删除已经创建的触发器。例如:
DROP TRIGGER trigger_name;使用触发器可以实现数据库中的自动化操作和数据约束,常用于记录日志、限制用户权限、保证数据完整性等方面。需要注意的是,使用触发器可能会对数据库性能产生一定的影响,应该谨慎使用。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表