今天老师继续上周的内置函数,讲了其中的一种函数---字符串函数。
字符串参数都可以替换成字段名
AscII():返回char类型数据中第一个对应的整型;
Char():输入0-255之间的整数,返回char类型;
Left(字符,长度):可以对字段内容进行截取
Right(字符,长度)
Rpad(’被填充对象’,最终的长度,填充内容):
Lpad :截取、填充
Replace(“被作用的对象”,被替换的内容,替换后的内容);
Concat:连接字符串,逗号作为分隔符
Substring(“被作用的对象”,开始截取位置,截取的长度);
开始截取的位置从1开始,>=1
……………………是负数,表示从后向前截取
Strcmp(字符1,字符2);按照字节比较
相等 0,大于 1,小于 -1
1、 日期和时间函数
Now();
Curtime()
Curdate()
Year() year(now()-出生日期)
练习:其他函数
2、 加密函数(自行练习)
3、 控制流函数
Ifnull()
Nullif()
If()
4、 格式化函数
Format:针对浮点
Date_format:日期格式化
Time_format:时间格式化
字符和时间日期需要单引号
5、 类型转换
Cast(要转换的对象 as 类型);
6、 系统信息函数
见表6.11
P114-129 记准确
二、语言结构
DDL:create alter drop
DML:insert delete update select(查询语言)
DCL:grant revoke等
三、常量
‘a’ 12 3.14
变量:保存运行过程中的临时结果
1)用户变量(和会话---连接服务器到退出服务器的一段时间)
@变量名
一定要初始化
Set @a=2;
Select @a;
Select 返回结果分几类:表,列,行,值(标量)
2)系统变量
@@VERSION
Select
四、存储过程
这是一个比较大的知识点。
1、在mysql中。可以定义一段程序放在数据库中,这样的程序成为存储过程。存储过程是数据库对象之一。存储过程实际上就是一段代码,它可以有声明SQL语句(如CREATE/UPDATE/SEKECT)和过程式语句(if-then-else)组成。存储过程可以由程序、触发器或者另一个存储过程来调用激活它,实现代码段中SQL的语句。
2、创建存储过程
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 * 。。。------SQL 语句体;
4) 当语句体内容两条以上,结束符号
Sql;
Create procedure p4()
Begin
Select * from tb1;--会给出错误提示,直接结束存储过程的声明
Select * from tb2;
End;
Delemiter---声明结束符
Delemiter //
Select * from tb1//
参数 : [in|out|inout] 参变量 数据类型
Declare :声明存储过程的局部变量
1)第一种方法:分两步实现
Declare 变量名 数据类型;声明
定义的变量不进行初始化,默认为null,该值进行的所有操作
结果都为空;
Set 变量=值 (也可以是表达式); 赋值
2)第二种方法:
也可用同一条语句完成变量的声明和初始化
Declare 变量名 数据类型 default 值;
Mysql服务器在缓存机制做了改进,使用类似预处理的那种方式,由于没有编译器,
因此mysql存储过程不会像外部语言(c)编写的程序运行的那么快。提升速度最主要的方法有两种:降低网络的信息流量,减少用户与服务器之间的交互;
因为存储过程是在服务器端执行,所以使用存储过程就会减少客户与服务器之间的信息量。
所以说,存储过程是一个全新的知识点。