在MySQL中有许多内置函数,也可以自定义函数。函数可以传参数,也可以接收返回值。但是函数没有办法得到执行语句得到结果,储存过程可以。
1.内置函数:
char_length(str) 返回值为字符串str的长度,长度的单位为字符,一个多字节字符算一个单字符。对于一个包含5个二字节的字符集,length返回值为10,而char_length()的返回值为5.
concat(str1,str2...) 字符串拼接,如有任何一个参数为null,则返回null
concat_ws(separator,str1,str2...) 字符串拼接(自定义连接符)
concat_ws 不会忽略所有的空字符串(然而会忽略所有的null)
conv(n,from_base,to_base) 进制转换 (a,16,2) 将a从16进制转换为2进制
format(x,d) 将数字X的格式写为“#,###,###.###”,以四舍五入的方式保留小数点后d位,并将结果以字符串的形式返回。若d为0,则返回结果不带有小数点,或不含小数部分。
insert(str,pos,len,newstr) 在str指定的位置插入字符串(pos要替换的位置 ,len要替换的长度, newstr新字符串)
注意:如果pos超过原字符串的长度,则返回原字符串
如果len 超过原字符串的长度,则由新字符串完全替换
inser(str,substr) 返回字符串str中子字符串的第一个出现的位置。
left(str,len) 返回字符串str从开始的len位置的子序列字符
lower(str) 变小写 upper(str) 变大写
ltrim(str) 返回字符串str起引导空格字符串被删除
rtrim(str) 返回字符串str结尾空字符串被删除
substring(str,pos,len) 获取子序列索引位置
repeat(str,count) 返回一个由重复的字符串str组成的字符串,字符串str的数目等于count,若count<=0,则返回一个空字符串;若str或count为null,则返回null
replace(str,from_str,to_str) 返回字符串str以及所有被字符串to_str代替的字符串from_str。
reverse(str) 返回字符串str,顺序和字符顺序相反
right(str,len) 从字符串str开始,返回从后边开始len个字符组成的子序列
space(n) 返回一个由n个空格组成的字符串
substring(str,pos),substring(str from pos) substring(str,pos,len),substring(str from pos for len)
不带有len参数的格式从字符串str返回一个子字符串,起始于位置pos。带有len参数的格式从字符串str返回一个长度同len字符相同的子字符串,起始于位置pos。使用from的格式为标准的SQL语法。
也可能对pos使用一个负值,若这样。则子字符串的位置起始于字符串结尾的pos字符,而不是字符串的开始位置。
2.自定义函数
3.删除函数:
drop function f1;
4.执行函数:
获取返回值 declare @i varchar(31);
selecet upper (‘李’) into @i;
select @i;
在查询中使用
select f1(11,nid),name from tb2;
事务:事务用于将某些操作的多个SQL语句作为原子性操作,一旦有某个出现失误,则返回原来的状态,从而保证数据库中数据的完整性。
触发器:简单来说就是在执行这条语句之前或之后触发一次增删改查,触发器用于定制用户对表的行进行【增,删,改】前后的行为。
nwe表示即将插入的数据行,old表示即将删除的数据行
删除触发器
drop trigger sri_after_insert_tb1;
使用触发器
触发器无法由用户直接调用,而由对于表的【增,删、改】操作被动引发的
insert into tb1(name) values(‘李’)