四、第四单元

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    备份文件路径

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,542评论 6 504
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,822评论 3 394
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,912评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,449评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,500评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,370评论 1 302
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,193评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,074评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,505评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,722评论 3 335
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,841评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,569评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,168评论 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,783评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,918评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,962评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,781评论 2 354

推荐阅读更多精彩内容