My SQL 高级

事务

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

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

My SQL 高级

My SQL 高级

索引

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

My SQL 高级

创建索引

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

删除索引

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

查看索引

SHOW INDEX(或KEY) FROM table_name

索引准则

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

视图

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

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

My SQL 高级

触发器

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

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

命令: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 (新命令标识符)
My SQL 高级

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

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

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

My SQL 高级

存储过程

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

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

创建存储过程

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

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

示例:创建不带参数的存储过程
My SQL 高级

创建带参数的存储过程
IN 和 OUT 参数示例
My SQL 高级

调用存储过程

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

查看存储过程

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

删除存储过程

命令是:DROP PROCEDURE sp_name;