SQL编程
- --// 局部变量 ----------
- -- 变量声明
- declare var_name[,...] type [default value]
- 这个语句被用来声明局部变量。要给变量提供一个默认值,请包括一个default子句。值可以被指定为一个表达式,不必要为一个常数。假如没有default子句,初始值为null。
- -- 赋值
- 行使 set 和 select into 语句为变量赋值。
- - 留意:在函数内是可以行使全局变量(用户自界说的变量)
-
-
- --// 全局变量 ----------
- -- 界说、赋值
- set 语句可以界说并为变量赋值。
- set @var = value;
- 也可以行使select into语句为变量初始化并赋值。这样要求select语句只能返回一行,可是可所以多个字段,就意味着同时为多个变量举办赋值,变量的数目必要与查询的列数同等。
- 还可以把赋值语句看作一个表达式,通过select执行完成。此时为了停止=被看成相关运算符对待,行使:=取代。(set语句可以行使= 和 :=)。
- select @var:=20;
- select @v1:=id, @v2=name from t1 limit 1;
- select * from tbl_name where @var:=30;
- select into 可以将表中查询得到的数据赋给变量。
- -| select max(height) into @max_height from tb;
- -- 自界说变量名
- 为了停止select语句中,用户自界说的变量与体系标识符(凡是是字段名)斗嘴,用户自界说变量在变量名前行使@作为开始标记。
- @var=10;
- - 变量被界说后,在整个会话周期都有用(登录到退出)
-
-
-
- --// 节制布局 ----------
- -- if语句
- if search_condition then
- statement_list
- [elseif search_condition then
- statement_list]
- ...
- [else
- statement_list]
- end if;
- -- case语句
- CASE value WHEN [compare-value] THEN result
- [WHEN [compare-value] THEN result ...]
- [ELSE result]
- END
- -- while轮回
- [begin_label:] while search_condition do
- statement_list
- end while [end_label];
- - 假如必要在轮回内提前终止 while轮回,则必要行使标签;标签必要成对呈现。
- -- 退出轮回
- 退出整个轮回 leave
- 退出当前轮回 iterate
- 通过退出的标签抉择退出哪个轮回
-
-
-
- --// 内置函数 ----------
- -- 数值函数
- abs(x) -- 绝对值 abs(-10.9) = 10
- format(x, d) -- 名目化千分位数值 format(1234567.456, 2) = 1,234,567.46
- ceil(x) -- 向上取整 ceil(10.1) = 11
- floor(x) -- 向下取整 floor (10.1) = 10
- round(x) -- 四舍五入去整
- mod(m, n) -- m%n m mod n 求余 10%3=1
- pi() -- 得到圆周率
- pow(m, n) -- m^n
- sqrt(x) -- 算术平方根
- rand() -- 随机数
- truncate(x, d) -- 截取d位小数
- -- 时刻日期函数
- now(), current_timestamp(); -- 当前日期时刻
- current_date(); -- 当前日期
- current_time(); -- 当前时刻
- date( yyyy-mm-dd hh:ii:ss ); -- 获取日期部门
- time( yyyy-mm-dd hh:ii:ss ); -- 获取时刻部门
- date_format( yyyy-mm-dd hh:ii:ss , %d %y %a %d %m %b %j ); -- 名目化时刻
- unix_timestamp(); -- 得到unix时刻戳
- from_unixtime(); -- 从时刻戳得到时刻
- -- 字符串函数
- length(string) -- string长度,字节
- char_length(string) -- string的字符个数
- substring(str, position [,length]) -- 从str的position开始,取length个字符
- replace(str ,search_str ,replace_str) -- 在str顶用replace_str替代search_str
- instr(string ,substring) -- 返回substring初次在string中呈现的位置
- concat(string [,...]) -- 毗连字串
- charset(str) -- 返回字串字符集
- lcase(string) -- 转换成小写
- left(string, length) -- 从string2中的左边起取length个字符
- load_file(file_name) -- 从文件读取内容
- locate(substring, string [,start_position]) -- 同instr,但可指定开始位置
- lpad(string, length, pad) -- 一再用pad加在string开头,直到字串长度为length
- ltrim(string) -- 去除前端空格
- repeat(string, count) -- 一再count次
- rpad(string, length, pad) --在str后用pad增补,直到长度为length
- rtrim(string) -- 去除后端空格
- strcmp(string1 ,string2) -- 逐字符较量两字串巨细
- -- 流程函数
- case when [condition] then result [when [condition] then result ...] [else result] end 多分支
- if(expr1,expr2,expr3) 双分支。
- -- 聚合函数
- count()
- sum();
- max();
- min();
- avg();
- group_concat()
- -- 其他常用函数
- md5();
- default();
-
- --// 存储函数,自界说函数 ----------
- -- 新建
- CREATE FUNCTION function_name (参数列表) RETURNS 返回值范例
- 函数体
- - 函数名,应该正当的标识符,而且不该该与已有的要害字斗嘴。
- - 一个函数应该属于某个数据库,可以行使db_name.funciton_name的情势执行当前函数所属数据库,不然为当前数据库。
- - 参数部门,由"参数名"和"参数范例"构成。多个参数用逗号离隔。
- - 函数体由多条可用的mysql语句,流程节制,变量声明等语句组成。
- - 多条语句应该行使 begin...end 语句块包括。
- - 必然要有 return 返回值语句。
- -- 删除
- DROP FUNCTION [IF EXISTS] function_name;
- -- 查察
- SHOW FUNCTION STATUS LIKE partten
- SHOW CREATE FUNCTION function_name;
- -- 修改
- ALTER FUNCTION function_name 函数选项
-
- --// 存储进程,自界说成果 ----------
- -- 界说
- 存储存储进程 是一段代码(进程),存储在数据库中的sql构成。
- 一个存储进程凡是用于完成一段营业逻辑,譬喻报名,接班费,订单入库等。
- 而一个函数凡是专注与某个成果,视为其他措施处事的,必要在其他语句中挪用函数才可以,而存储进程不能被其他挪用,是本身执行 通过call执行。
- -- 建设
- CREATE PROCEDURE sp_name (参数列表)
- 进程体
- 参数列表:差异于函数的参数列表,必要指明参数范例
- IN,暗示输入型
- OUT,暗示输出型
- INOUT,暗示殽杂型
- 留意,没有返回值。
-
-
- /* 存储进程 */ ------------------
- 存储进程是一段可执行性代码的荟萃。对比函数,更方向于营业逻辑。
- 挪用:CALL 进程名
- -- 留意
- - 没有返回值。
- - 只能单独挪用,不行混合在其他语句中
- -- 参数
- IN|OUT|INOUT 参数名 数据范例
- IN 输入:在挪用进程中,将数据输入到进程体内部的参数
- OUT 输出:在挪用进程中,将进程体处理赏罚完的功效返回到客户端
- INOUT 输入输出:既可输入,也可输出
- -- 语法
- CREATE PROCEDURE 进程名 (参数列表)
- BEGIN
- 进程体
(编辑:湖南网)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|