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