MySQL 高级(事务+索引+视图+触发器+存储过程)

本文深入探讨了MySQL的高级特性,包括事务的使用确保数据一致性,创建、删除和查看索引以优化查询速度,理解视图带来的虚拟表优势,触发器的设置实现自动响应数据变化,以及存储过程的创建、调用、查看和删除,以提升数据库操作效率和代码复用性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

事务

索引

1.创建索引

2.删除索引

3.查看索引

4.索引准则

视图

触发器

存储过程

1.创建存储过程

2.调用存储过程

3.查看存储过程

4.删除存储过程 


事务

事务就是将一组SQL语句捆绑放在同一批次内去执行,如果一个SQL语句出错,那么该批次的所有SQL语句都将被取消执行;

*MySQL事务只支持InnDB和BDB的数据表类型

image_1crmoi1ksr6lcbhgjvmhb1m9i9.png-54.6kB

image_1crkl6inv1mdk9651pka6un1vue9.png-357.8kB

事务2.png-282.6kB

索引

索引的作用:提高查询速度

image_1crmr2lmn1a5all511qci7cl11i.png-189.3kB

1.创建索引

① 创建数据表时添加
② 建表后追加:语法: ALTER TABLE table_name ADD 索引类型 (数据列名)

2.删除索引

① DROP INDEX 索引名 ON table_name
② ALTER TABLE table_name DROP INDEX 索引名
③ ALTER TABLE table_name DROP PRIMARY KWY

3.查看索引

SHOW INDEX(或KEY) FROM table_name

4.索引准则

①索引不是越多越好
②不要对经常变动的数据加索引
③小数据量的表建议不要加索引
④索引一般应加在查找条件的字段

视图

释义:视图是一个从数据库中的一个或者多个表中导出来的虚拟表。也可以从已经存在的视图的基础上定义。

作用:简单、安全、具有逻辑数据独立性

image_1crmskim61mjmv7g1kd7a4f1g8v2r.png-73.7kB

触发器

当一个命令提交执行后触发另一个提交执行

MySQL中默认;是自动提交的标识,键入触发器的命令前需要修改命令标识符,避免命令尚未写完自动提交
**修改命令标识符的命令: DELIMITER (任意字符);
image_1crn49nhdbcf1rf6rua11hu1uj9.png-20kB

命令:CREATE TRIGGER tri_name AFTER/BEFORE insert/update/delete ON table_name1
FOR EACH ROW
BEGIN
UPDATE table_name2 SET num=num-new.field WHERE field=new.字段名;
END (新命令标识符)
image_1crn56e7d11jq1banqj1qqu1st79.png-16.5kB

写完触发器后一定务必记得将命令标识符还原

  *触发器创建语法四要素:
  1.监视地点(table)
  2.监视事件(insert/update/delete)
  3.触发事件(after/before)
  4.触发事件(insert/update/delete)

  触发器的new和old 用法
  insert 语句,只有new是合法的
  delete 语句,只有old是合法的
  update 语句,new 和 old 可以同时使用

11111.png-141.7kB

存储过程

概念:存储过程能完成一定操作的一组SQL语句

作用:大大提高效率(存储过程本身执行速度非常快,调用存储过程大大减少数据库交换次数);
提高代码重用性

1.创建存储过程

命令是
CREATE PROCEDURE sp_name (proc_parameter [……])
BEGIN
[characteristic ……] routine_body
END;

sp_name: 存储过程名称
proc_parameter:存储过程的参数列表
characteristic:存储过程的特性
routine_body:SQL语句的内容,可以用begin……end 来标示SQL语句的开始和结束

示例:创建不带参数的存储过程
image_1crn621a0a2s14ejpe4uilc7j1i.png-35.2kB

创建带参数的存储过程
IN 和 OUT 参数示例
image_1crn6e7181kh91q4q13ja1cvnitu1v.png-34.8kB

2.调用存储过程

命令是CALL sp_name([parameter[……]])
sp_name: 存储过程名称
proc_parameter:存储过程的参数列表

3.查看存储过程

①通过show procedure status 查看存储过程和函数状态
②通过show create procedure 查看存储过程和函数定义
③通过information_schema.Routines 查看存储过程和函数信息

4.删除存储过程

命令是:DROP PROCEDURE sp_name;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值