mysql总结

1,事务的属性(ACID)

    1.1,原子性(A):事务是一个不可分割的单位,事务中的操作要么全部执行,要么全部不执行.

    1.2,一致性(C):事务必须使数据库从一个一致性状态变换到另一个一致性状态

    1.3,隔离性(I):多个事务之间互不干扰

    1.4,持久性(D):事务一旦提交,就会永久性的改变数据库的数据

2,事务例子

SET autocommit = 0;#关闭自动提交
START TRANSACTION;#开启事务
SELECT 1;#语句1
SELECT 2;#语句2
COMMIT;#提交事务
ROLLBACK;#回滚事务

3,事务隔离级别

    3.1,读未提交:允许事务读取未被提交的事务,会出现脏读,不可重复读,幻读

    3.2,读已提交:只允许读取提交的事务,可以避免脏读,但会出现不可重复读和幻读

    3.3,可重复读:确保事务多次从一个字段中读取相同的值,但事务期间不允许修改,避免脏读和不可重复读,但依然会幻读

    3.4,串行化:确保事务从一个表中读取相同的行,在这个事务之间,禁止其他事务对这个表进行更新操作,没有并发问题,但性能较低

4,视图

    4.1,创建或修改

create or replace view 视图名
as
查询语句;

    4.2,操作和表大致相同,增删改会更新原始表的数据

    4.3,不能更新的视图

        4.3.1,分组函数:distinct,group,by,having,union,union all

        4.3.2,常量视图

        4.3.3,select中包含子查询

        4.3.4,包含join或者from后面有多个表

        4.3.5,from加上一个不可更新的视图

        4.3.6,where子查询引用了from子句中的表

5,变量

    全局变量对所有连接有效,重启之后恢复默认;

    会话变量只对本次连接有效;

    用户变量是对当前连接有效的自定义变量;

    局部变量仅仅在定义它的begin end块中有效(放在第一句)

    5.1,查看所有系统变量:SHOW GLOBAL(SESSION) VARIABLES;

    5.2,查看满足条件系统变量:SHOW GLOBAL(SESSION) VARIABLES LIKE '%char%'

    5.3,精确查看系统变量:select @@GLOBAL(SESSION)系统变量名

    5.4,为系统变量赋值:set GLOBAL(SESSION) 系统变量名 = 值;或set @@GLOBAL(SESSION).系统变量名 = 值

    5.5,自定义变量[用户变量]:

        5.5.1,申明:set @变量名=值|set @变量名:=值|select @变量名:=值

        5.5.2,赋值:select 字段 into @变量名 from 表

        5.5.3,查看:select @变量名

    5.6,自定义变量[局部变量]:

        5.6.1,申明:DECLARE 变量名 类型 | DECLARE 变量名 类型 DEFAULT 值

        5.6.2,赋值:set 变量名=值 | set 变量名 := 值 | select @变量名:=值 | select 字段 into 变量名 from 表

        5.6.3,查看:select 变量名

6.存储过程:一组预先编译好的sql语句的集合,类似于java中的方法

    6.1,好处:代码重用;简化操作;减少连接数据库;提高效率

    6.2,创建:

DELIMITER $
CREATE PROCEDURE 存储过程名(参数列表)
BEGIN
	存储过程体
END $

参数列表(参数模式 参数名 参数类型)
    参数模式
        in:入参
        out:出参
        inout:入出参数

结束符:DELIMITER 符号

调用
    call 存储过程名(参数列表)

    6.3,删除:drop PROCEDURE 存储过程名;

    6.4,查看:show create procedure 存储过程名

 

7,函数

    7.1,创建:

DELIMITER $
CREATE FUNCTION 函数名(参数列表) RETURNS 返回类型
BEGIN
	函数体
END $
DELIMITER ;

参数列表(参数名 参数类型)

函数体包含return语句

调用select 函数名(参数列表)

 

8,case结构

case 字段|变量|表达式
  when 值1 then 返回值1(语句)
  when 值2 then 返回值2(语句)
  else 默认值(语句)
end [case]

case
  when 条件1 then 返回值1(语句)
  when 条件2 then 返回值2(语句)
  else 默认值(语句)
end [case]

语句只能放在函数或存储过程中

 

9,if结构

if 条件1 then 语句1;
elseif 条件2 then 语句2;
else 语句n;
end if;

10,循环结构

分类:while, loop, repeat

循环控制:
    iterate:类似continue
    leave:类似break

while循环:
    [标签:]while 循环条件 do
        循环体;
    end while [标签]

loop循环:(搭配leave使用)
    [标签:]loop
        循环体;
    end loop [标签]

repeat循环:
    [标签:]repeat
        循环体;
    until 条件
    end repeat[标签]

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章