回顾
数据备份:文件部分,数据表备份,SQL备份和增量备份(备份日志)
事务安全:默认自动提交,手动事务
变量:系统变量和自定义变量,作用域
触发器:自动触发,临时修改语句结束符(delimiter)
用户管理:创建用户,分配权限(grant),回收权限(revoke),删除用户
root用户密码找回
函数
1. 什么是函数?
一段可以被重复使用的代码,是为了针对性的解决某一个特定的问题。
2. 函数分类:系统函数和自定义函数
系统函数
系统已经定义好,直接调用即可。
函数的调用:函数都有返回值,select来调用函数
语法:
select 函数名(实参列表);
常用的系统函数有以下这些:
substring:字符串截取
char_length:字符长度
length:字符串长度,字节长度
instr:目标字符串中是否存在某个子字符串
lpad:左填充,如果字符串长度不够,那么使用指定的字符串从左边填充到指定长度
insert:替换,在目标字符串中找到指定的要替换的字符串,然后进行数据替换
中文操作
strcmp:字符串比较,结果有大,小和相等三种
自定义函数
函数组成:函数名,参数列表,函数体,返回值
定义函数
语法:
delimiter $$
create function 函数名(参数列表) returns 数据类型
begin
//函数体
//返回值:必须是函数结构里的数据类型
end
$$
delimiter ;
调用函数
自定义函数的调用与系统函数完全一样。
语法
select 函数名(实参列表);
查看函数
函数的查看,需要使用status关键字;
show function status\G
函数“作用域”
跨库调用函数
删除函数
drop function 函数名;
参数列表
SQL是一种强类型语言,参数必须指定数据类型。SQL函数的参数可以有多个。
create function 函数名(变量名 数据类型) returns 数据类型
begin //如果任何一个结构内部只有一条语句,begin和end可以省略
//函数体
end
执行结构
代码默认的执行结构是顺序结构,自上而下,逐行执行代码。
SQL中有多个结构:顺序结构,分支结构和循环结构。
分支结构
if分支
语法
if 条件 then
//满足if所要执行的代码,可以有多条
else
//不满足条件所要执行的代码
//if结束
end if;
循环结构
while循环
语法
while 条件 do
//循环体
//改变循环条件
end while;
循环控制:leave(break)和Iterate(continue)
语法:leave/iterate 循环名字;
循环名字:while 条件 do
//循环体
//循环条件变更
leave/iterate 循环名字;
end while;
调用结果
存储过程
存储过程本质与函数差不多,是一个没有返回值的函数。存储过程往往了是为了解决某个特定的问题,问题是跟数据的操作相关,操作往往是单一的。
存储过程也被简称为过程,关键字是procedure。
创建过程
语法
create procedure 过程名字(参数列表)
begin
//过程体
end
调用过程
存储过程没有返回值,select必须要有结果返回。
语法:
call 过程名(实参列表);
查看过程
show procedure status\G
删除过程
语法
drop procedure 过程名;
参数列表
存储过程的参数必须要有自己的类型(不是数据类型),对参数的应用。
过程的参数类型分为三种:in,out,inout
in:该参数只能过程的内部使用,过程用完之后,不能在外部使用(值传递)
out:参数数据不能够传入内部,是专门用于内部数据处理将结果给外部用的。引用传值
inout:可以在内部使用,也可以在用完之后外部使用,引用传值
语法:
create procedure 过程名(参数类型 参数名 数据类型)
作业:
1. 新建一个用户表,有id和姓名字段
利用存储过程,实现随机生成姓名,生成10个
姓:从天干取
名:从地支取
随即函数:rand
取整函数:round
字符串截取函数:substring
字符串连接函数:concat
不允许重复姓名