博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MySQL视图、事务与存储过程
阅读量:5278 次
发布时间:2019-06-14

本文共 2620 字,大约阅读时间需要 8 分钟。

一、可视化工具的使用方法

简述:首先我们使用数据库可视化工具是为了让我们在建立数据库的时候能够减少代码的书写从而提升我们编写程序的效率,而我使用的是Navicat工具是因为使用它基本为无脑操作我就不过多的介绍。

二、注入mysql攻击

1、什么是注入mysql攻击?

简述:注入mysql攻击指的是用户可以某种方式无需用户名或密码就可以登入你的数据库。

2、注入mysql攻击的两种方式:

  1:用户在登录时在其输入的用户名后写入了如__等字符,在pymysql中__代表的是注释所以跟在其后的输入密码的功能就无效了,这样可以通过在输入界面写上限制条件就可以避免

  2、中间人攻击,是由黑客通过编写一个假的用户端来给服务端发消息从而上面那种解决方式就不行了,所以必须通过给服务端也加上限制条件就能够避免,当然pymysql也帮我们想到了这一点我们可以将要执行的数据放在其execute括号里的args里就可以就解决以上问题。

三、视图

1、什么是视图?

简述:视图指的就是将一个表的得到的结果当作条件给另一个表使用。

2、使用视图有什么好处呢?

简述:使用视图能够限制用户的查且这种方式比直接限制其权限好在视图查询符合某一条件的一行数据而限制权限并不能起到这种作用。

2.1怎么使用视图其步骤如下:

  create view 视图名 as select* from表名(所需数据的表);

特点:1、视图是永久存储而且存储的并不是数据而是一条as sql 语句.

   2、视图被修改或删除时其所引用的原表也会跟着变

   3、视图的每一次执行其实都是在调 as 后的sql语句

四、事务

1、什么是事务?

简述:在生活中事务可以理解为做某一事可以分为一个一个步骤从而完成事情的方法,而在mysql中其就是由一组SQL语句组成。

2、事务的四大特性

原子性:

  事务是一个整体不可分割

隔离性:

  事务之间隔离是为了数据的完整性,由并发执行引发的问题有:

 1.脏读    一个事务 读到了 另一个事务未提交的数据  查询 之前要保证 所                                有的更新都已经完成

    2.幻读    一个查询事务没有结束时 数据被另一个事务 执行insert delete
    3.不可重复读   一个事物在查询 另一个事务在 update

四种隔离级别:

读未提交:

读已提交:

可重复读:

串行化:

一致性:

  当事务执行后所有的数据都是完整的

持久性:

    一旦事务提交就会被永久存储

注意:事务就是一组SQL语句组成的,它们的原子性要变就一起变,不变就都不变。

mysql是默认执行事务的而pymysql需要我们手动写commit提交事务,在提交前我们可以通过start  transaction启动事务,当执行事务出错是可以通过 rollback回滚事务(从而使时务能够恢复原来的状态).

五、存储过程

1、什么是存储过程?

简述:存储过程可以理解为mysql的编程语言.

2、存储过程的三种类型

  对于同样一个业务  你可以放到python也可以放到mysql 有什么区别?

       1. 应用程序  处理逻辑           

    需要手动编写 sql语句

            优点:执行效率高            

            缺点: 开发效率低

  mysql

       2.           应用程序

          mysql 处理逻辑

            特点: 应用程序开发者不需要需要手动编写 sql语句

                  mysql开发者来编写

            优点: 应用程序开发效率高

            缺点: 执行效率略低,沟通成本增高

        3.使用 ORM(object relation map) 对象关系映射

            自动帮你生成对应的sql语句 比如你要注册用户 本来要写insert 语句  现在使用orm调用save(用户对象)

            优点:开发效率高            

    缺点:执行效率降低

        存储过程相当于python中的一个函数

        简单地说 学习存储过程就是学习 如何使用mysql编写一个函数

        语法:

            create procedure 过程的名称 ({in,out,inout}  数据类型 参数名称)

            begin

                具体的sql代码

            end            

参数前面需要指定参数的作用

            in 表示该参数用于传入数据            

    out 用于返回数据            

            inout 即可传入 也可返回

            参数类型是 mysql中的数据类型

         案例:创建一个存储过程 作用是将两个整数相加

            create procedure add_p (in a int,in b int)

            begin

                select a + b;

            end

            //    调用 call add_p(1,2)

         案例:创建一个存储过程 作用是将两个整数相加 将结果保存在变量中

     定义一个变量      set @su = 100;

            create procedure add_p2 (in a int,in b int,out su int)

            begin

                set su = a + b;

            end

            //  

 定义变量 set @su = 100;

 调用过程 call  add_p2(10,20,@su);

          注意  在存储过程中 需要使用分号来结束一行 但是分号有特殊含义,得将原始的结束符 修改为其他符号,delimiter // 结束符更换为//            

          mysql中的if语句结构

          if 条件 then

            代码

          elseif 条件 then

            代码

          else then

            代码

          end if;

     end

           \\

  案例:          使用存储过程 完成  输入 一个 数字 1或2   显示 壹 或 贰

            create procedure show_p (in a int)

            begin

            if a = 1 then

                select "壹";

            elseif a = 2 then

                select "贰";

            else

                select "other";

            end if;

            end //  

   调用存储过程 使用 call 过程名称  call add_p(10,20);

        其他的流程控制

        switch

        case

        while

        repeat ==  do while

       总结: 实际上一个mysql中的类似函数的东西  我们可以用它实现一些逻辑处理

             特点:里面可以包含流程控制语句 和 普通的sql语句

             使用存储过程的优势:1、提高应用程序开发效率2、降低网络访问次数

 

转载于:https://www.cnblogs.com/ageliu/p/9670979.html

你可能感兴趣的文章
CSS中隐藏内容的3种方法及属性值
查看>>
每天一个linux命令(1):ls命令
查看>>
根据xml生成相应的对象类
查看>>
查看ASP.NET : ViewState
查看>>
Android StageFrightMediaScanner源码解析
查看>>
vue项目中开启Eslint碰到的一些问题及其规范
查看>>
循环队列实现
查看>>
CSS层模型
查看>>
springBoot 项目 jar/war打包 并运行
查看>>
HDU 1501 Zipper
查看>>
打包java程序生成exe
查看>>
八叉树
查看>>
poj 1129 搜索
查看>>
Git 远程仓库
查看>>
HttpClient的巨坑
查看>>
关于静态文本框透明度的问题
查看>>
海量数据、高并发的优化方案
查看>>
javascript的发展及个人笔记
查看>>
全选,反全选,反选,获取选中的值,根据子选择控制全选按钮
查看>>
梦断代码读后感01
查看>>