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
MySQL视图、事务与存储过程相关推荐
- mysql 视图操作和存储过程
1.mysql 视图的操作是在新版本数据库才支持的,视图操作的好处是可以简化数据库的查询,特别是一些经常查询的数据表我们可以先创建一个视图,以后要在查询这个类式 的数据表时候,就可以直接查询该视图.这 ...
- mysql 视图 事务 存储过程 触发器 __ 邓治安
视图 View 逻辑上的虚拟表 #创建视图 CREATE VIEW s_t(编号,姓名,性别,出生日期) AS SELECT * FROM student WITH CHECK OPTION#查询视图 ...
- mysql 视图 事务 存储过程 触发器——龙腾
视图 View 逻辑上的虚拟表 #创建视图 CREATE VIEW s_t(编号,姓名,性别,出生日期) AS SELECT * FROM student WITH CHECK OPTION#查询视图 ...
- mysql视图管理和存储过程
视图 虚拟表 视图限制: 1.不能创建索引 不能使用子查询 包含聚合函数的视图是不可更新的 create view 视图名称 as sql查询 create view 视图名称(字段名列表) as s ...
- MySQL 之 事务、存储过程、索引
文章目录 事务 事务基本原理 事务ACID特性 存储过程 存储过程优点 存储过程语法 使用存储过程 删除存储过程 索引与慢查询优化 b+树 聚集索引(primary key) 辅助索引(unique, ...
- mysql七:视图、触发器、事务、存储过程、函数
阅读目录 一 视图 二 触发器 三 事务 四 存储过程 五 函数 六 流程控制 一 视图 视图是一个虚拟表(非真实存在),其本质是[根据SQL语句获取动态的数据集,并为其命名],用户使用时只需使用[名 ...
- MySQL关于事务控制、视图、存储过程和函数
TCL语言:事务控制语言 MySQL不同的存储引擎对事务的支持不同,MySQL默认的存储引擎InnoDB支持事务. 事务的ACID属性: 原子性:事务是不可分割的工作单位,要么都发生,要么都不发生. ...
- MySQL基础(二):视图、触发器、函数、事务、存储过程
一.视图 视图是一个虚拟表(非真实存在),其本质是[根据SQL语句获取动态的数据集,并为其命名],用户使用时只需使用[名称]即可获取结果集,并可以将其当作表来使用. 视图和上一篇学到的临时表搜索类似. ...
- MySQL 之视图、 触发器、事务、存储过程、内置函数、流程控制、索引(一)
阅读目录 本文内容: 视图 触发器 事务 存储过程 内置函数 流程控制 索引 一.视图 视图就是通过查询得到一张虚拟表,然后保存下来,下次直接使用即可. 如果要频繁使用一张虚拟表,可以不用重复查询 视 ...
- day29 | 黑马程序员Java全程笔记 | 第二阶段MySQL高级事务-索引-视图-触发器-存储过程
目录 01.反馈 02.回顾 03.并发访问MySQL-问题概述 并发访问的问题 04.并发访问MySQL-问题演示 05.并发访问MySQL-read-committed解决脏读问题 06.并发访问 ...
最新文章
- List集合与Array数组之间的互相转换
- 网络推广策略带你了解网站地图Sitemap的作用是什么?
- MCtalk教育创业者说:学吧课堂K12领域转型突围之路
- VTK:Rendering之MotionBlur
- 天池 在线编程 输入流
- 如何在SQL Server数据库中加密数据
- 多闪实名举报河南法院;ofo 内部发反腐文件;库克访华点赞故宫 App | 极客头条...
- 游戏开发筑基之输出中设置颜色(C语言)
- 基于PHP+小程序(MINA框架)+Mysql数据库的汽车维修保养小程序系统设计与实现
- Excel求和公式的几种用法
- TI的单芯片毫米波雷达传感器配置命令是如何传递到DSP和ARM核的?(串口程序代码走读)
- V2新品来袭 | 简约之选 无限可能
- .podSpec文件相关知识整理
- 再见c罗再见梅西_再见眼镜你好smartglasses
- 1. 什么是元组(tuple).md day07
- ZZULIOJ 1135: 算菜价,Java
- 关键字和关键字优化(转)
- appium java 虫师_如何在Appium中使用AI定位
- 电脑的任务栏卡,但是桌面可以正常使用
- 基于采样的路径规划算法总结:RRT-Matlab实现
热门文章
- linux iptables 如何设置允许几个 ip访问,Linux防火墙iptables限制几个特定ip才能访问服务器。...
- Java绘图模式概述
- Android客户端内置内存工具进行崩溃定位的实践经验
- dos系统 关闭服务器,如何开启或关闭服务程序?巧用DOS命令全攻略
- python jupyter安装_python之jupyter的安装
- bme280 环境传感器开发板_盘一盘那些年我们常用的物联网开发板!
- catkin_make: command not found
- python元编程_Python 元编程
- 广西计算机一级考试是机考吗,广西计算机一级考试机考模式探索及应用.doc
- JAVA经过两轮面试还能被刷吗_云从科技JAVA开发工程师面试:视频进行面试,前两轮技术面试 - 职朋职业圈...