介绍: 一个或一组sql语句组成一个执行单元,这个执行单元要么全部执行,要么全部不执行 其中MySQL数据库中innodb支持数据库
隐式事务: 事务没有明显的开启和结束的标记 比如insert,update,delete 显式事务:事务具有明显的开启和结束的标记 前提:必须先设置自动提交功能为禁用 关闭事务语法:SET AUTOCOMMIT=0 步骤:
开启事务 SET AUTOCOMMIT=0;便是事务中的语句结束事务 COMMIT:提交事务 ROLLBACK:回滚事务对于同时运行多个事务,当这些事务访问数据库中相同的数据式,如果没有采用必要的隔离机制,就会导致各种并发问题,
脏读: 对于两个事务T1和T2,T1读取了已经倍T2更新但还没有被提交的字段,之后若T2回滚,T1读取的内容就是临时且无效的不可重复读:对于两个事务T1和T2,T1读取了一个字段,然后T2更新了该字段,T1再次读同一个字段,值就不同了幻读: 对于两个事务T1和T2,T1从一个表中读取了一个字段,然后T2在该表中插入了一些新的行,T1再次读同一个字段就会多出几行可以通过设置数据库的事务隔离级别 查询当前事务隔离级别:SELECT @@tx_isolation;
read uncommitted : 读取尚未提交的数据 :就是脏读read committed:读取已经提交的数据 :可以解决脏读repeatable read:重读读取:可以解决脏读 和 不可重复读 —mysql默认的serializable:串行化:可以解决 脏读 不可重复读 和 虚读—相当于锁表关键字 SAVEPINT 节点名; 搭配 ROLLBACK TO 节点名
含义:虚拟表,和普通表一样使用 MySQL5.1版本新特性
语法: CREATE VIEW 视图名 AS 查询语句 特点:
重用sql语句简化复杂的sql操作,不必知道它的查询细节保护数据,提高了安全性语法: DROP VIEW 试图名,试图名…;
DESC 视图名; SHOW CREATE VIEW 视图名(\G)
分类: 系统变量
全局变量会话变量自定义变量
用户变量局部变量使用语法:
查看所有系统变量 SHOW [GLOBAL|SESSION] VARIABLES: 默认查看会话变量查看满足条件的部分变量 SHOW [GLOBAL|SESSION] VARIABLES LIKE ‘%变量%’查看指定的某个系统变量 SELECT @@[GLOBAL|SESSION].变量名: 默认会话变量为某个系统变量赋值 SET [GLOBAL|SESSION].系统变量名 = 值: 默认会话变量 SET @@[GLOBAL|SESSION].变量名区别:
当服务器运行时很多的变量可以动态改变。客户端只能更改自己的会话变量,不能更改其他客户端的会话变量,退出客户端时变量复原,并且不会影响其他客户端,系统变量影响全局。服务器启动时,将全局变量初始化为默认值,这些默认值可以在配置文件或命令行中更改。想要更改全局变量,必须具有super权限。设置会话变量不需要特殊的权限。变量是用户自定义的 语法: 声明 赋值 使用(查看,比较,运算)
作用域:当前会话(链接)有效 1.声明并初始化 SET @变量名=值 SET @变量名:=值 SELECT @变量名:=值 2. 赋值(更新值) 重新声明 SELECT 字段 INTO 变量名 FROM 表 3. 查看变量 SELECT @变量名;
作用域:仅仅在定义它的BEGIN END 中有效,应用在BEGIN END中第一句话
声明 DECLARE 变量名 类型; DECLARE 变量名 类型 DEFAULT 值;赋值 与用户变量一致(除了SELECT 其他可以不加@ )使用局部与用户变量的区别
用户变量作用域当前会话,局部变量作用在BEGIN END用户变量可以定义在会话的任何位置,局部变量只能在BEGIN END中,且为第一局话存储过程的函数:类似与Java中的方法 特点:
提高代码的重用性简化操作减少了编译次数,别且减少了和数据库服务器的连接次数 存储过程一组预先编译好的SQL语句的集合,理解成批处理语句语法: CREATE PROCEDURE 存储过程(参数列表) BEGIN 方法体 END 注意:
如果存储过程只有一句, BEGIN END 可以省略存储过程体中每条语句需要加分号,在(CMD)存储过程中结尾使用 delimiter 结束名 重新设置参数列表包含了三部分( 参数模式 参数名 参数类型)
参数模式: IN: 该参数可以作为输入,也就是该参数需要调用传入值(默认) OUT: 该参数可以作为输出,也就是该参数可以作为返回值 INOUT: 该参数作为输入值又可以作为输出值,也就是说该参数既需要传入值,又可以返回值CALL 存储过程名(参数列表) 结束名 (部分工具可以不加结束名);
DROP PROCEDURE 存储名;
SHOW CREATE PROCEDURE 存储名;
函数:有且只有一个返回
语法: CREATE FUNCTION 函数名(参数列表) RETURNS 返回类型 BEGIN 函数体 END 注意:
参数列表包含两部分: 参数名,参数类型语句里面有return语句,如果没有也不会报错结构体与存储函数差不多SELECT 函数名(参数列表);
SHOW CREAT FUNCTION 函数名;
DROP FUNCTION 函数名;
分类
WHILE WHILE 循环条件 DO 循环体 END WHILE;
LOOP LOOP 循环体 END LOOP;
REPEAT REPEAT 循环体 UNTIL 结束条件 END REPEAT;
循环控制
ITERATE: 结束本次循环,继续下一次LEAVE: 跳出,结束当前所有循环需要在循环前面加标签 WHILE然后 ITERATE 标签