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前面接比较符号,后面接一个子查询