读一读

declare continue handle for sqlstate 错误代码值 set 变量=值

声明遇到那个错误代码值的错误继续执行下去,不会因为错了下面语句就不执行了。然后可以根据变量的修改值来在代码中做出自己的处理。就像tryCatch那样。


IF 条件 THEN 为真语句
ELSEIF 条件  THEN 真
ELSE   假语句
END IF;

CASE 变量
WHEN 值   THEN   语句
WHEN ....
ELSE  全部不满足
END CASE;

WHILE 条件 DO
内容
END WHILE;

REPEAT
内容
UNTIL 条件
END REPEAT;

loop名字:LOOP
内容
if 条件 THEN
LEAVE LOOP loop名字;
END IF;
END LOOP;

参数种类 参数名 参数类型

种类有IN OUT INOUT

IN表示要调用的时候指定。修改的值不能返回,其实就是传值方式。

OUT传递直接算是空值,就是传进来要干干净净的,出去就不干净了。

INOUT应该是引用传递。


局部变量声明

declare 变量名 数据类型 default 默认值
select 变量名(取出变量)
set 变量名=值  (赋值)


单会话变量(在一个mysql连接被释放的时候才释放)

set @名字 = 值

直接用名字或@名字就行了


use database;#选中一个数据库
delimiter // #(;是一个结束的语句,要做为一个集合体,就改变他先)
create procedure p_hello(参数)
begin
#sql语句
end
delimiter ; #恢复分隔符

call p_hello(参数);#执行存储过程

是一个sql集合,它就像是编程的函数那样,传递参数,执行操作。存储过程是预编译的,快。不用传sql语句,传参数就行了,流量少。


The DEFAULT CURRENT_TIMESTAMP support for a DATETIME (datatype) was added in MySQL 5.6.

DATETIME数据类型的默认值为CURRENT_TIMESTAMP,被支持于mysql5.6之后


属性名 [AS] 别名


SELECT * FROM 表名 AS 别名# .....后面就可以用别名代替表名了

ANY关键字表示任何一个,这在内层查询中,只要满足任一条就执行外层查询

字段>ANY 大于里面的任意一条

select fid from manydate WHERE fid = ANY(SELECT fid from manydate)


ALL表示要满足所有的条件

select fid from manydate WHERE fid > ALL(SELECT fid from manydate)

ANY ALL前面接比较符号,后面接一个子查询