今天老师带着我们学习了:存储过程的一些知识还有内建函数这两块内容。
1,存储过程:
1)使用存储的原因:Mysql服务器在缓存机制做了改进,使用类似预处理的那种方式,由于没有编译器,因此mysql存储过程不会像外部语言(c)编写的程序运行的那么快。提升速度最主要的方法有两种:降低网络的信息流量,减少用户与服务器之间的交互;因为存储过程是在服务器端执行,所以使用存储过程就会减少客户与服务器之间的信息量。改变主机语言也可以,存储过程只是数据库逻辑而不是应用程序,可移植性好,和操作系统、主机型号等无关;
2)语法格式:Create procdure 存储过程名(参数)
特征描述
SQL语句体
例子:use test;
create procedure p1()
begin
/*this is my first procedure*/
end;
3)存储过程中应该注意的:
begin。。。end相当于{}的作用
如果SQL语句体只有一句可以省略begin。。end
名称不区分大小写,尽量避免与内建函数同名,假如同名则在名称() 之间加空格;
名称长度限制64字符;
()可以为空,不能省略
通常select不会出现在存储过程体内
大部分的DDL、DML都是合法语句
非法语句:
Create procedure db.p() drop database db;
含有use 库名等
4)存储过程的调用:
语法格式:Call 存储过程名(…);
5)带有描述信息的存储过程:
例子: Create procedure p3()
Language sql ----声明用什么语言来实现存储过程
( 目前只支持sql语句,将来可能会使用php
来代替sql)
Not deterministic---返回的结果不确定
Sql security definer----创建者
Comment ‘ a procedure’---给存储过程加注释
Select * 。。。------SQL 语句体;
2,内建函数:
1)字符串函数:AscII():返回char类型数据中第一个对应的整型;
Char():输入0-255之间的整数,返回char类型;
Left(字符,长度):可以对字段内容进行截取
Right(字符,长度)
Rpad(’填充对象’,最终的长度,填充内容):
Lpad :截取、填充
Replace(“被作用的对象”,被替换的内容,替换后的内容);
例:select replace('123ab123a123','a','f');
结果: 123fb123f123
C oncat:连接字符串,逗号作为分隔符
例: select concat ('a','b');
结果: ab
Substring(“被作用的对象”,开始截取位置,截取的长度);
例: select Substring('abcdef'tg,1,2);
结果:ab
(开始截取的位置从1开始,>=1…………………是负数,表示从后向前截取)
Strcmp(字符1,字符2);按照字节比较相等 0,大于 1,小于 -1
例: select strcmp('a','b');
结果:1
2)日期和时间函数:Now();Curtime()Curdate()Year()
3)控制流函数: Ifnull()Nullif() If()
4)格式化函数Format:针对浮点 Date_format:日期格式化Time_format:时间格式化
注意:字符和时间日期需要单引号
5) 类型转换
语法格式: Cast(要转换的对象 as 类型);
6)常量
例如:‘a’ 12 3.14
变量:保存运行过程中的临时结果
1)用户变量(和会话---连接服务器到退出服务器的一段时间)
@变量名一定要初始化
Set @a=2;
Select @a;
Select 返回结果分几类:表,列,行,值(标量)
2)系统变量 @@VERSION
结语:时间过的真快,转眼第三周了,我要加倍努力了!