SQL--if、while、函数

1、if语句

1.1、在查询中使用

基本语法:if(条件,为真结果,为假结果)
在这里插入图片描述

select * ,if(Sage>=22,'年龄 > = 22','年龄< 22') as 判断 from student;

在这里插入图片描述

1.2、复杂语句中使用(函数/存储过程/触发器)

基本语法:

if  条件表达式  then
 	语句1
else
	语句2
end  if;

2、while语句

基本语法

while 条件 do
	要循环执行的代码;
end while;

当为某些特定结构进行命名时,为了可以在其他地方也能使用这个while时,加一个结构标识符,可以再次使用之

标识名字:While 条件 do
	循环体
End while [标识名字];

mysql中没有continue和break,用 iterate 和 leave 代替

3、内置函数

在mysql中,函数的使用是在select中使用的,格式是:select 函数名(参数表);

3.1、字符串函数

char_length():判断字符串的字符数
length():判断字符串的字节数(与字符集)
concat():连接字符串
instr():判断字符在目标字符串中是否存在,存在返回其位置,不存在返回0
lcase():全部小写
left():从左侧开始截取,直到指定位置(位置如果超过长度,截取所有)
ltrim():消除左边对应的空格
mid():从中间指定位置开始截取,如果不指定截取长度,直接到最后

--举例
select lcase('DOTA2') ;

在这里插入图片描述

3.2、时间函数

now():返回当前时间,日期 时间
curdate():返回当前日期
curtime():返回当前时间
datediff():判断两个日期之间的天数差距,参数日期必须使用字符串格式(用引号)
date_add(日期,interval 时间数字 type):进行时间的增加
unix_timestamp():获取时间戳
fom_unixtime():将指定时间戳转换成对应的日期时间格式

3.3、数学函数

abs():绝对值
ceiling():向上取整
floor():向下取整
pow():求指数,谁的多少次方
rand():获取一个随机数(0-1之间)
round():四舍五入函数

3.4、其他函数

md5():对数据进行md5加密(mysql中的md5与其他任何地方的md5加密出来的内容是完全相同的)
version():获取版本号
databse():显示当前所在数据库
UUID():生成一个唯一标识符(自增长):自增长是单表唯一,UUID是整库(数据唯一同时空间唯一)

4、自定义函数

4.1、创建函数(俺也不懂)

函数定义基本语法:
修改语句结束符
create function 函数名(形参) returns 返回值类型
begin
//函数体
Return 返回值数据; //数据必须与结构中定义的返回值类型一致
end
语句结束符
修改语句结束符(改回来)

主要是网上说得乱七八糟也没说某些字段是什么得,就直接举个例子

--创建一个a*b的函数
delimiter $$--这是啥?
create function functest(a int,b int) returns int 
begin 
return a*b;
end 
$$--啥玩意?
delimiter;--干嘛用的?
4.2、查看函数

查看函数的创建语句:show create function 函数名字;
在这里插入图片描述

4.3、删除函数

删除函数:drop function 函数名;

4.4、注意事项
  • 1、 自定义函数是属于用户级别的:只有当前客户端对应的数据库中可以使用
  • 2、 可以在不同的数据库下看到对应的函数,但是不可以调用
  • 3、 自定义函数:通常是为了将多行代码集合到一起解决一个重复性的问题
  • 4、 函数因为必须规范返回值:那么在函数内部不能使用select指令:select一旦执行就会得到一个结果(result set):select 字段 into @变量;(唯一可用)
4.5、综合案例

写出一个从1开始,直到用户传入的对应的值为止,自动求和的函数

delimiter $$--这是啥?
create function functest2(a int) returns int
begin --函数开始
	--声明变量名
	declare i int default 1;
	declare sum int default 0;--定义i=1,sum=0
	while i<=a--while(i<=a)
	do 
	set sum=sum+i;
	set i=i+1;--(sum=sum+i;i++;)
	end while;
	return sum;--返回值
end
$$
delimiter;
select functest2(20) ;

在这里插入图片描述

4.6、变量作用域

在这里插入图片描述
用@可以进行全局变量,其他库也能识别

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值