山山未迟

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

image

 

回顾

数据备份:文件部分,数据表备份,SQL备份和增量备份(备份日志)

事务安全:默认自动提交,手动事务

变量:系统变量和自定义变量,作用域

触发器:自动触发,临时修改语句结束符(delimiter)

用户管理:创建用户,分配权限(grant),回收权限(revoke),删除用户

root用户密码找回

函数

1. 什么是函数?

一段可以被重复使用的代码,是为了针对性的解决某一个特定的问题。

2. 函数分类:系统函数和自定义函数

系统函数

系统已经定义好,直接调用即可。

函数的调用:函数都有返回值,select来调用函数

语法:

select 函数名(实参列表);

常用的系统函数有以下这些:

substring:字符串截取

clip_image002

char_length:字符长度

clip_image004

length:字符串长度,字节长度

clip_image006

instr:目标字符串中是否存在某个子字符串

clip_image008

lpad:左填充,如果字符串长度不够,那么使用指定的字符串从左边填充到指定长度

clip_image010

insert:替换,在目标字符串中找到指定的要替换的字符串,然后进行数据替换

clip_image012

中文操作

clip_image014

strcmp:字符串比较,结果有大,小和相等三种

clip_image016

自定义函数

函数组成:函数名,参数列表,函数体,返回值

定义函数

语法:

delimiter $$

create function 函数名(参数列表) returns 数据类型

begin

//函数体

//返回值:必须是函数结构里的数据类型

end

$$

delimiter ;

clip_image018

调用函数

自定义函数的调用与系统函数完全一样。

语法

select 函数名(实参列表);

clip_image020

查看函数

函数的查看,需要使用status关键字;

show function status\G

clip_image022

函数“作用域”

clip_image024

跨库调用函数

clip_image026

删除函数

drop function 函数名;

clip_image028

参数列表

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;

clip_image030

调用结果

clip_image032

存储过程

存储过程本质与函数差不多,是一个没有返回值的函数。存储过程往往了是为了解决某个特定的问题,问题是跟数据的操作相关,操作往往是单一的。

存储过程也被简称为过程,关键字是procedure。

创建过程

语法

create procedure 过程名字(参数列表)

begin

//过程体

end

clip_image034

调用过程

存储过程没有返回值,select必须要有结果返回。

语法:

call 过程名(实参列表);

clip_image036

查看过程

show procedure status\G

clip_image038

删除过程

语法

drop procedure 过程名;

clip_image040

参数列表

存储过程的参数必须要有自己的类型(不是数据类型),对参数的应用。

过程的参数类型分为三种:in,out,inout

in:该参数只能过程的内部使用,过程用完之后,不能在外部使用(值传递)

out:参数数据不能够传入内部,是专门用于内部数据处理将结果给外部用的。引用传值

inout:可以在内部使用,也可以在用完之后外部使用,引用传值

语法:

create procedure 过程名(参数类型 参数名 数据类型)

clip_image042

作业:

1. 新建一个用户表,有id和姓名字段

利用存储过程,实现随机生成姓名,生成10个

姓:从天干取

名:从地支取

随即函数:rand

取整函数:round

字符串截取函数:substring

字符串连接函数:concat

不允许重复姓名

posted on 2016-04-20 22:37  山山未迟  阅读(218)  评论(0编辑  收藏  举报