MySQL视图、事务与存储过程

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

简述:首先我们使用数据库可视化工具是为了让我们在建立数据库的时候能够减少代码的书写从而提升我们编写程序的效率,而我使用的是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

时间: 2024-10-09 08:48:31

MySQL视图、事务与存储过程的相关文章

MySQL视图view/存储过程和函数的使用

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px "Helvetica Neue"; color: #454545 } p.p2 { margin: 0.0px 0.0px 0.0px 0.0px; font: 17.0px ".PingFang SC Semibold"; color: #454545 } p.p3 { margin: 0.0px 0.0px 2.0px 0.0px; font: 14.0px

MySQL之事务以及存储过程

今日内容 视图 触发器 事务 存储过程 内置函数 流程控制 索引 视图 1.什么是视图 视图就是通过查询得到一张虚拟表,然后保存下来,下次直接使用即可 2.为什么要用视图 如果要频繁使用一张虚拟表,可以不用重复查询 3.如何用视图 create view teacher2course asselect * from teacher inner join course on teacher.tid = course.teacher_id; 强调1.在硬盘中,视图只有表结构文件,没有表数据文件2.视

mysql 视图 事务 索引

为什么需要有视图 * 对于复杂的查询,往往是有多个数据表进行关联查询而得到,而这种语句往往比较复杂,也可能非常频繁的使用. 比如这样的SQL语句 select goods.name,goods_cates.name,goods_brands.name from goods join goods_cates on goods.cate_id = goods_cates.id join goods_brands on goods.brand_id = goods_brands.id; 为了简化用户复

mysql七:视图、触发器、事务、存储过程、函数

阅读目录 一 视图 二 触发器 三 事务 四 存储过程 五 函数 六 流程控制 一 视图 视图是一个虚拟表(非真实存在),其本质是[根据SQL语句获取动态的数据集,并为其命名],用户使用时只需使用[名称]即可获取结果集,可以将该结果集当做表来使用. 使用视图我们可以把查询过程中的临时表摘出来,用视图去实现,这样以后再想操作该临时表的数据时就无需重写复杂的sql了,直接去视图中查找即可,但视图有明显地效率问题,并且视图是存放在数据库中的,如果我们程序中使用的sql过分依赖数据库中的视图,即强耦合,

MySQL之视图、触发器、事务、存储过程、函数 流程控制

阅读目录 一 视图 二 触发器 三 事务 四 存储过程 五 函数 六 流程控制 MySQL这个软件想将数据处理的所有事情,能够在mysql这个层面上全部都做了,也就是说它想要完成一件事,以后想开发的人,例如想写python程序的人,你就专门的写你自己的python程序,以后凡是关于数据的增删改查,全部都在MySQL里面完成,也就是说它想实现一个数据处理与应用程序的一个完全的解耦和状态,比如说,如果我是个应用程序员,我想要查询数据,我不需要自己写sql语句,只需要调用mysql封装好的一些功能,直

视图、触发器、事务、存储过程、函数

阅读目录 视图  view 触发器  trigger 事务  transaction 存储过程   procedure 函数 流程控制 一: 视图  view 视图是一个虚拟表(非真实存在),其本质是[根据SQL语句获取动态的数据集,并为其命名],用户使用时只需使用[名称]即可获取结果集,可以将该结果集当做表来使用. 使用视图我们可以把查询过程中的临时表摘出来,用视图去实现,这样以后再想操作该临时表的数据时就无需重写复杂的sql了,直接去视图中查找即可,但视图有明显地效率问题,并且视图是存放在数

视图,触发器,事务,存储过程,函数,流程控制,

一,视图1,什么是视图? 视图就是通过查询得到一张虚拟表,然后保存下来,下次用的话直接使用即可2,为什么要用视图 如果要频繁使用一张虚拟表,可以不用重复查询3,怎么用? 在查询前面加 create view 视图名称 as sql语句 create view teacher_view as select tid from teacher where tname='李平老师': 强调:在硬盘中,视图只有表结构文件,没有数据文件 视图开发尽量不用 因为是在mysql里面 ,视图通常用于插叙,尽量不要

Mysql-自带的一些功能,基本用法(视图,触发器,事务,存储过程,函数,流程控制)

一. 视图 二. 触发器 三. 事务 四. 存储过程 五. 函数 六. 流程控制 一 .视图 视图是一个虚拟表(非真实存在),其本质是[根据SQL语句获取动态的数据集,并为其命名],用户使用时只需使用[名称]即可获取结果集,可以将该结果集当做表来使用. 使用视图我们可以把查询过程中的临时表摘出来,用视图去实现,这样以后再想操作该临时表的数据时就无需重写复杂的sql了,直接去视图中查找即可,但视图有明显地效率问题,并且视图是存放在数据库中的,如果我们程序中使用的sql过分依赖数据库中的视图,即强耦

视图,触发器,事务与存储过程

视图 什么是视图 视图就是通过查询得到一张虚拟表,然后保存下来,下次用的直接使用即可1.什么是视图 视图就是通过查询得到一张虚拟表,然后保存下来,下次用的直接使用即可 为什么要用视图 如果要频繁使用一张虚拟表,可以不用重复查询 如何创建视图 create view teacher2course as select * from teacher inner join course on teacher.tid = course.teacher_id; 强调 1.在硬盘中,视图只有表结构文件,没有表

MySQL之试图、触发器、事务、存储过程、函数

阅读目录 一.视图 二.触发器 三.事务 四.存储过程 五.函数 六.流程控制 一.视图 视图是一个虚拟表(非真实存在),是跑到内存中的表,真实表是硬盘上的表,怎么就得到了虚拟表,就是你查询的结果,只不过之前我们查询出来的虚拟表,从内存中取出来显示在屏幕上,内存中就没有了这些表的数据,但是下次我要是想用这个虚拟表呢,没办法,只能重新查一次,每次都要重新查.其本质是[根据SQL语句获取动态的数据集,并为其命名],用户使用时只需使用[名称]即可获取结果集,可以将该结果集当做表来使用.如果我们想查询一