显示事务 (transaction)
创建
1、关闭自动提交
SET autocommit=0;
2、开启事务
START TRANSACTION;
3、事务语句
ALTER TABLE girls MODIFY gname VARCHAR(20) NOT NULL;
INSERT INTO girls VALUES(0,'张三123');
4、明显的结束标记
COMMIT; 提交事务
ROLLBACK; 回滚
SELECT * FROM girls; 查看
transaction(事务)
ACID:
原子性(atomicity)
事务是一个不可拆分的工作单位,事务中的操作,要么全部完成,要么全部失败
一致性(Consistency)
事务的前后数据的完整性必须保持一致
隔离性(Isolation )
一个事务的执行不能被其他的事务干扰
持久性(Durability )
一旦事务提交之后,他对数据库的操作数据改变是永久的,接下来的任何突发情况都不会放生影响。
视图 (view)
创建:
create view 视图名
as
sql查询语句
视图使用:
SELECT * FROM 视图名
修改视图:
1、create or replace view 视图名
as
查询语句
2、alter view 视图名
as 查询语句
#查看视图
DESC view1
# 查看创建视图的逻辑
SHOW CREATE VIEW v1
# 删除视图
DROP VIEW viewa,vuew3
存储过程(procedure)
创建格式:
CREATE PROCEDURE 存储过程名(参数列表)
BEGIN
存储过程体(合法有效的SQL语句)
END
参数列表 包含3个部分 参数模式 参数名 参数类型 ( IN username VARCHAR(20))
参数模式(作用):
IN 表示该参数作为输入,该参数调用的时候传入值
OUT 该参数作为输出,就是返回值
INOUT 既可以当做输入,又可以当做输出,表示的需要传入,也可以输出
调用:call 名(参数)
查看:show create procedure 存储名;
删除:drop procedure 存储名;
函数 (function)
函数:有且只有一个返回值!!!
创建格式:
CREATE FUNCTION 函数名(参数列表) RETURNS 返回值类型
BEGIN
函数体;
END
参数列表:参数名 参数类型
使用:select 函数名();
查看:show create function 函数名;
删除:drop function 函数名;
函数优点:
1、提高代码重用
2、简化操作
3、减少编译次数
4、减少与数据库服务器的连接次数提高效率
变量
系统变量
1、全局变量
(1)查看所有的全局变量
SHOW GLOBAL VARIABLES
(2)模糊查找全局变量
SHOW GLOBAL VARIABLES like '%变量%'
(3) 查看具体的某个全局变量
SELECT @@autocommit
SELECT @@global.autocommit
(4) 对于某个具体的全局变量进行赋值
SET @@global.autocommit=1
(5)查看全局变量自动提交状态
show global variables like 'autocommit';
(6)关闭全局变量的自动提交
set global autocommit = 0;
(7)打开全局变量的自动提交
set global autocommit = 1;
2、会话变量
(1)查看所有的会话变量
SHOW session VARIABLES
SHOW VARIABLES
(2)模糊查找会话变量
SHOW session VARIABLES like '%变量%'
SHOW VARIABLES like '%变量%'
(3) 查看具体的某个全局变量
SELECT @@autocommit
SELECT @@session.autocommit
(4) 对于某个具体的全局变量进行赋值
方法1:SET @@session.autocommit=1
方法2:set session autocommit=1
(5)查看会话自动提交的状态
show session variables like 'autocommit';
(6)关闭会话变量的自动提交
set session autocommit = 0;
(7)打开会话变量的自动提交
set session autocommit = 1;
自定义变量
1、用户变量
声明
SET @uname='张三'
SET @age:=18
SELECT @gender:='男'
# := 海象运算符
# 查看
SELECT @uname
SELECT @age
SELECT @gender
修改用户变量
SELECT userinfo.`name` INTO @uname FROM userinfo WHERE phone=10
SELECT @uname
注意点:
可以使用在当前会话中的任何地方
2、局部变量
仅仅定义在begin …end中,即可以在函数function、存储过程procedure中使用,大部分用在存储过程中。
DELIMITER $
CREATE PROCEDURE p6()
BEGIN
# 创建局部变量
DECLARE sname VARCHAR(20);
DECLARE sage INT DEFAULT 0;
DECLARE sgender VARCHAR(20);
# 赋值
SET sname='张一毛';
SET sage:=18;
-- select @sgender:='女生';
# 调用
SELECT sname;
-- select sage;
-- select sgender;
END
CALL p6()