1、存储过程
1.1、概述
1)、临近的属:Sql指令集
2)、同属:函数
3)、种差
》执行一系列SQL语句
》创建时编译,调用执行
》可以有多个返回值
》功能强大,安全性高
4)、定义
存储过程是使数据库操作更高效安全完成特定功能的SQL指令集
1.2、创建存储过程
1.2.1、语法
create procedure 存储过程名称(参数类型1 参数名1,参数类型2 参数名2,......)
begin /*过程题开始,相当于{*/
....... /*过程体*/
end; /*过程题结束,相当于}*/
1.2.2、说明
》过程体由合法SQL语句构成
》过程体如果为复合结构则使用BEGIN...END语句
》复合语句内可以包含声明,控制、循环结构
1.2.3、调用存储过程
》CALL 存储过程名([参数1,参数2,......])
》CALL 存储过程名[()]
1.2.4.示例
略
1.2.5、查看存储过程
1)、查看所有存储过程
show procedure status;
2)、查看创建的存储过程
show create procedure 过程名;
3)、删除存储过程
drop procedure 过程名;
1.2.6、delimiter分界符
1)、问题
在begin和end之间编写语句后代码产生错误
2)、原因
mysql中是以 ; 表示该条语句结束,编译器会立刻执行相关语句。而带有过程体语句必须完整执行完过程体后
才能去做执行操作
3)、语法
delimiter 分界符;
4)、示例
略
1.2.7、变量
1)、分类
局部变量、用户变量
2)、局部变量
》定义语法
declare 变量名 类型 [DEFAULT 默认值];
》说明
# DECLARE关键字声明局部变量,且仅被用在BEGIN ... END复合语句中
# DECLARE变量声明必须在复合语句的开头,且在任何其它语句之前
# DECLARE变量提供一个默认值,使用DEFAULT子句。如果没有DEFAULT子句,初始值为NULL
# DECLARE变量除DEFAULT赋值外,还可以使用SET、SELECT ... INTO方式进行赋值
》set赋值
# SET var_name =expr [, var_name = expr] ...
》 select赋值
# select 字段名 INTO 变量名 from 表名
注意:SELECT后查询字段个数必须与INTO后变量个数相一致;
SELECT 查询结果只能是单组数据,因此一般带有WHERE条件。
2)、用户变量
》概述
用户连接数据库后,自定义变量可被当前用户使用,不能被其他用户访问操作。当退出数据库连接,
所有用户变量会被自动释放
》语法
set@变量名= 值[, @变量名 = 值] ...
》注意事项
# 用户变量随处可以定义,随处可以使用
# 用户变量的变量名形式:@var_name,要有@符号
》赋值方式
# set @变量名 = 值
# set @变量名 := 值
# select @变量名 :=值
注:使用select赋值时只能使用:=
1.2.8、参数类型
1)、定义语法
create procedure 存储过程名称([in| out | inout]参数类型1 参数名1,参数类型2 参数名2,......)
begin /*过程题开始,相当于{*/
....... /*过程体*/
end; /*过程题结束,相当于}*/
2)、说明
》IN 输入参数: 表示该参数的值必须在调用存储过程时指定值, 在存储过程中修改该参数的值不能被返回,
为默认值
》OUT 输出参数: 该值可在存储过程内部被改变, 并可返回
》INOUT输入输出参数: 调用时指定值, 并且可被改变和返回
3)、示例
略
1.2.9、存储过程的特点
》安全
》执行效率高
》复用性好
2、事务
2.1、概述
》临近的属:逻辑单元
》种差
# 保障数据操作可靠
# 独立执行的
》定义:事务是为保障数据操作可靠而独立执行的逻辑单元
2.2、事务的特性
》原子性(Atomicity):事务是不可分割的
》一致性(Consistency):事务处理前后数据保持一致
》隔离性(Isolation):事务处理必须是独立的彼此隔离
》持久性(Durability):事务对数据库的修改被永久保存
2.3、事务的提交方式
》手动提交
》自动提交
2.4、手动事务
2.4.1、提交过程
2.4.2、常用语句
》BEGIN:开启事务
》COMMIT:提交事务
》ROLLBACK:回滚事务
2.4.3、示例
略
2.5、查看事务
2.5.1、语句
show variables like ‘autocommit’;
2.5.2、作用
查看事务的状态
2.6、自动事务
》关闭事务
SET autocommit =off/0;
》开启事务
SET autocommit =on/1;
3、权限管理
3.1、用户分类
》root用户:root用户是超级用户,拥有所有权限
》普通用户:普通用户只拥有创建时赋予的权限
3.2、相关数据库
3.2.1、系统数据库
》安装Mysql时会自动安装一个名为mysql的数据库
3.2.2、权限表
》user、host 和 db 3个最重要的权限表
3.2.3、初始权限
用户登录后,系统会根据权限表中的内容为用户赋予权限
3.3、登录MySql服务器
MySql -h 主机地址 -u 用户名 -p 密码
3.4、退出连接
exit;
3.5、用户管理
3.5.1、添加用户
》语法:create user '用户名'@'主机名' IDENTIFIED BY '密码';
3.5.2、删除用户
》语法:drop user '用户名'@'主机名';
3.5.3、修改用户密码
》语法1:update user set password = password('新密码') where user = '用户名';
》语法2:set password for '用户名'@'主机名' = password('新密码');
3.5.4、查看用户信息
select * from user;
说明:表中通配符 % 表示可以在任意主机使用用户登录数据库
3.6、账户管理
3.6.1、查看权限
》语法:show grants from '用户名'@'主机名';
3.6.2、授予权限
》语法:grant 权限列表 on 数据库名.表名 to '用户名'@'主机名';
3.6.3、撤销权限
》语法:revoke 权限列表 on 数据库名.表名 from '用户名'@'主机名';
4、数据库备份与还原
4.1、为什么备份
》人为操作失误
》服务器感染病毒
》断电,无法保存数据
》数据量过大
4.2、概述
》临近的属:操作
》同属:数据恢复
》种差
# 防止数据库中数据丢失或损坏
# 在额外设备上进行存储
》定义:数据库备份是为防止数据丢失而在额外设备上进行存储的操作
4.3、数据库备份
4.3.1、文件备份
1)、文件后缀
》.frm:元数据文件,描述表的结构(列、列类型、索引,等等)
》.myd (MyISAM):包含表的数据─即它的行
》.myi(MyISAM):包含数据文件中任何索引的索引树。无论该表有无索引,索引文件都存在
2)、文件备份(数据文件复制到其他数据库下)
》表能查询但是没有结构和数据
3)、优缺点
》优势:不需要断掉业务,不需要重新连接服务器,就可以备份完成
》劣势:数据表占用磁盘空间,效率低
4)、说明
》数据存储形式:InnoDB表结构单独保存,数据集中保存到ibdata1文件中;
MyISAM表,数据,索引全部单独分开存储
》数据文件备份 :InnoDB不支持;MyISAM支持
4.3.2、单表备份
1)、定义
表中选出数据保存到外部的文件中(outfile)
2)、语法
select */字段列表 into outfile ‘文件所在路径’ from 数据源;
3)、示例
略
4.3.3、Sql备份
1)、定义
对表的数据和结构进行SQL语句备份
2)、前提
》mysql 没有提供备份的指令需要mysqldump.exe 进行备份
》Mysqldump .exe 也是一种客户端,操作服务器时必须连接认证
3)、应用环境
》常用于数据量比较小的时候
》可以备份单张表,也可以备份整个数据库
4)、语法 ---- 整库备份
mysqldump /mysqldump.exe -uroot -p[password]
数据库名字 > 外部文件路径( 建议使用.sql文件);
5)、示例
略
6)、语法---- 多表备份
mysqldump /mysqldump.exe -uroot -p123
数据库名字[数据表名字1] [数据表名字2] ... > 外部文件路径(建议使用.sql文件 );
4.4、数据库还原
4.4.1、概述
》临近的属:操作
》同属的其他属:数据库备份
》种差:将备份数据还原到原数据库中
》定义:数据库恢复是将备份数据还原到原数据库中的操作
4.4.2、单表还原
1)语法
load data infile 文件所在路径 into table 表名
4.4.3、Sql恢复
1)、方式1
》语法:mysql-hPup 数据库名字 < 备份文件路径
2)、方式2
》语法:source 备份文件路径