字符串参数都可以替换成字段名
AscII:返回char类型数据中第一个对应的整型;
char():输入0-255之间的整数,返回char类型;
left(字符,长度):可以对字段内容进行截取;
right(字符,长度):可以对字段内容进行截取;
trim:删除两侧空格
ltrim:删除左边空格
rtrim:删除右边空格
rpad(‘被填充对象’,最终的长度,填充的内容):
lpad():截取、填充
select lpad('abcdddddddddgagsda',10,'*');
replace(“被作用的对象”,被替换的内容,替换后的内容):
select replace('a23abc153asdf123','a','f');
concat:连接字符串,逗号作为分隔符
select concat('a','b'); 输出 ab
substring(“被作用的对象”,开始截取的位置,截取的长度)
开始截取的位置从1开始,>=1
开始截取的位置是负数,表示从后向前截取
select substring('adfadfasf',1,2); ab
strcmp(字符1,字符2):按照字节比较
相等 0,大于1,小于-1
select strcmp('a','b'); -1
select strcmp('c','b'); 1
select strcmp('c','c'); 0
2、 日期和时间函数
now():当前日期和时间
curdate():当前日期
year(): year(now()-出生日期)
curtime():当前时间
3、 加密函数
4、 控制流函数
ifnull()
nullif()
if()
5、 格式化函数
format:针对浮点
select format(3.1415826,2); 3.14
date_format:日期格式化
select date_format(now(),'%H'); 09
select date_format(now(),'%P'); P
select date_format(now(),'%Y’); 2011
time_format:时间格式化
字符和时间日期需要单引号
6、 类型转换
cast(要转换的对象 as 类型);
select 1+cast('a' as signed); 输出1
7、 系统信息函数
select database() select connection_id()
select user() select version();
二、语言结构
DDL:create alter drop
DML:insert delete update select(查询语言)
DCL:grant revoke commit rollback
三、常量
‘a’ 12 3.14
变量:保存运行过程中的临时结果
1) 用户变量(和会话有关---连接服务器到退出服务器)
@变量名 一定要初始化
set @a=2; //定义用户变量
select @a; //显示用户变量
select 返回的结果分几类:表,列,行,值(标量子查询)
2) 系统变量
@@VERSION;
select @@VERSION;
存储过程:
类似函数:批量处理;
1、为什么使用
mysql服务器在缓存机制上做了改进,使用了类似预处理的那种方式,由于没有编译器,因此mysql存储过程不会真正的像外部语言(C)编写的程序运行的那么快。提升的方法有两种:降低网络的信息流量,减少用户与服务器之间的交互;
因为存储过程是在服务器端执行,所以使用存储过程就会减少客户与服务器之间的信息量。
改变主机语言也可以,存储过程只是数据库逻辑而不是应用程序,可移植性 系统、主机型号等无关;
2、要求:
Ø proc 表
Ø create routine(例程) 权限
Ø 返回标量值
Ø 隐含调用use库名,删除数据库,存储过程也被删除
3、语法格式
create procedure 存储过程名(参数)
特征描述
SQL语句体
4、例如
1)use test;
2)create procedure p1()
begin
/*this is my first procedure*/
end;
注意:
Ø begin···end相当于{}的作用
Ø 如果SQL语句体只有一句可以省略begin···end
Ø 名称不区分大小写,尽量避免与内建函数同名,假如同名则在名称和()之间加空格
Ø 名称的长度限制为64个字符
Ø ()可以为空,但不能省略
Ø 通常select不会出现在存储过程体内
Ø 大部分的DDL、DML都是合法语句
非法语句:
create procedure db.p() drop database db;
含有use 库名等
3)调用存储过程
call 存储过程名(···);
4)带有描述信息的存储过程
create procedure p3()
language sql //声明用什么语言来实现存储过程
目前只支持sql语句,将来可能会使用php来代替sql语句
not deterministic //返回的结果不确定
sql security definer //创建者
comment ’a procedure’ //给存储过程加注释
select * from tb1; //---select * ····· //sql语句体;
5)当语句体内容两条以上,结束符号
sql;
create procedure p4()
begin
select * from tb1; //会给出错误提示,直接结束存储过程的声明
select * from tb2;
end;
delimiter -----声明结束符
delimiter //
select * from tb1 //
create procedure p4()
begin
select * from tb3//
参数:[in|out|inout] 参变量 数据类型
declare:声明存储过程的局部变量
1)第一种方法用两种
declare 变量名 变量数据类型
定义的变量不进行初始化,默认为null,该值进行的所有操作,结果都为空
set 变量=值(也可以是表达式);赋值
2)第二种方法
也可用同一条语句完成变量的声明和初始化
declare 变量名 数据类型 default 值;