内置函数
1、数学函数
2、聚合函数
3、字符串函数
4、日期和时间函数
5、加密函数
6、控制流函数
7、格式化函数
8、类型转换函数
9、系统信息函数
下面主要对字符串函数进行细说:
ASCII():返回字符类型对应的整形(只返回char类型中的第一个字母)
select ASCII('abc');----------其中只返回a的整形。
char():输入0-255之间的整数,返回字符型
select char(65,66,67);----------返回值为ABC。
left()|right():分别返回从字符串左边和右边开始指定X字符。
select left|right(字符串,长度)------可对字符串内容进行截取。
trim():删除字符串首部和尾部的所有空格,返回值为字符串
select trim(‘ a ’);
ltrim()|rtrim():分别删除字符串中前面的空格和尾部的空格,返回值为字符串
rpad()|lpad():左|右填充
eg:rpad(被填充对象,最终的长度,填充的内容);-------可对字符串内容进行截取
select rpad(‘abc’,10,‘*’);--------返回结果为 abc*******
replace():替换
select replace(‘被作用的对象’,被替换的内容,替换后的内容);
select replace(‘abcdsfsdsdfsdfs’,‘f’,‘#’);----返回结果为 abcds#sds#sd#s
concat():连接字符串,逗号作为分隔符
select concat(‘abc’,‘def’);----返回结果为 abcdef
substring():截取
select substring(‘被作用的对象’,开始截取的位置,截取的长度);
注:开始截取的位置从1开始,>=1
若开始截取的位置为负数,则表示从后向前截取。
strcmp():比较两个字符串的大小,按字节比较
select strcmp(字符串1,字符串2);
字符串1=字符串2 返回值为0
字符串1>字符串2 返回值为1
字符串1<字符串2 返回值为-1
存储过程
为什么使用存储过程?
Mysql服务器在缓存机制做了改进,使用类似预处理的那种方式,由于没有编译器,因此Mysql存储过程不会像外部语言(C)编写的程序运行的那么快。提升速度的方法有两种:降低网络的信息流量,减少用户与服务器之间的交互;因为存储过程是在服务器端进行,所以使用存储过程就会减少用户与服务器的信息量;改变主机语言也可以,存储过程只是数据库的逻辑而不是应用程序,可移植性好,与系统主机型号等无关。
语法格式:create procedure 存储过程名(参数)
特征描述
SQL语句体
eg:use test;
create procedure p1()
begin
/*this is my first procedure*/
end;
注:begin.....end相当于“{}”的作用。如果sql语句只有一句时可省略“begin....end”。
▪名称不区分大小写,尽量避免与内置函数同名,假如同名,在“()”前加空格;
▪名称长度限制为64个字符;
▪“()”可为空,但不能省略
▪通常select不会出现在存储过程体内
▪大部分DDL、DML都是合法语句
含有use库名等非法语句:create procedure db p() drop database db
调用存储过程
call 存储过程名(....)
带有描述信息的存储过程
create procedure p3()
-> language sql----接下来begin....end之间的语句是由sql语言实现存储过程(目前只支持sql语句,将来可能会使用PHP代替sql语句)
->not deterministic----返回结果不确定,deterministic返回结果确定,默认为不确定
->SQL security definer----创建者有权限调用存储过程
->comment 'a procedure'-----给存储过程加注释
->select * from tb1;------SQL语句体