06 数据库入门学习-视图、sql注入、事务、存储过程
一、视图
1.什么是视图
视图本质是一张虚拟的表
2.为什么要用
为了原表的安全
只要有两大功能
1.隐藏部分数据,开放指定数据
2.视图可以将查询结果保存,减少sql语句的次数
特点:
1.视图使用永久保存的,而且保存的仅仅是一条 as sql语句
2.每次对视图的查询,都是再次执行了保存的sql语句
3.对于视图的任何修改都会同步到原表
3.如何使用
语法:
create view 视图名 as select * from 原表名;
验证:对视图的任何修改会改变原表
二、sql注入
1.什么是sql注入攻击
一些了解sql语法的用户,可以输入一些关键字或合法sql,来导致原始的sql逻辑发生变化 从而跳过登录验证或者删除数据库
2.如何使用sql注入
案例一
案例二
3.如何预防sql注入漏洞
从客户端入手,接受用户输入的数据时,可以加上限制,比如不能输:-- ' ; where 等等
但是这样只能避免,黑客从你的客户端软件注入 sql,无法避免间人攻击(在你的客户端和服务器中间加一个中转服务器)
中间人攻击可以绕过了客户端的输入限制
可以将验证放到服务端
三、事务
1.什么是事务
是一组sql语句集合
事务的特性:
1.原子性:
事务是一个整体,要么都执行完毕,要么一个都没执行
2.隔离性:
多个事务之间一定是并发的,那么并发一定会出现问题
1.脏读 读取到另一个事务未提交的数据
2.不可重复读 两次对同一记录的查询结果不一致
一个事务在查询 另一个事务在更新
3.幻读 对同一表中的查询结果数量不一致
一个事务在查询 另一个事务在添加或删除
3.一致性:
在这个事物执行完成后,事务中所进行的修改也都完成了,这样一来就保证了数据的完整性
4.持久性
当事务执行完毕后,事务对数据的修改都是持久性的、不可恢复的
2.如何使用

#语法
#1.开启一个事务
start transaction #2.sql语句
........
#3.事务执行完毕后 使用commit来提交 一旦提交就不可恢复了
commit #4.在事务还未提交时我们可以使用rollback来回滚 默认回滚到事务开始前的状态
rollback

四、存储过程
1.什么是存储过程
你可以理解为mysql的编程语言
他的作用, 可以将你的程序业务逻辑放到mysql中来处理
这样可以降低网络访问次数 从而提高你的程序效率
既然如此,你不能把所有与数据存储相关的业务逻辑全都放mysql中?
能,但是对于公司而言,需要再请一个mysql开发者
对于你个人来说,提高沟通成本
2.三种开发的模型
方案一
应用程序: 处理逻辑,需要手动编写 sql语句
mysql:
优点:执行效率高
缺点: 开发效率低
方案二
应用程序:
mysql :处理逻辑,mysql开发者来编写,应用程序开发者不需要需要手动编写 sql语句
优点: 应用程序开发效率高
缺点: 执行效率略低,沟通成本增高
方案三
使用 ORM(object relation map) 对象关系映射
自动帮你生成对应的sql语句,比如你要注册用户,本来要写insert语句,现在使用orm调用save(用户对象)
优点:开发效率高
缺点:执行效率降低
3.语法

delimiter //#更换mysql的换行符
create procedure 过程的名称 ({in,out,inout} 参数名称 数据类型)
begin
#具体的sql代码
end//
delimiter ;
#参数前面需要指定参数的作用
#in 表示该参数用于传入数据
#out 用于返回数据
#inout 即可传入 也可返回

4.流程控制
if语句

if 条件 then
语句1;
elseif 条件 then
语句2;
else
语句3;
end if;

case语句
你给我一个值 我对它进行选择 然后执行匹配上的语句

case 变量名
when 值1 then
语句1;
when 值2 then
语句2;
when 值3 then
语句3;
else
语句4;
end case;

while语句
WHILE 条件 DO
语句.....
end WHILE;
06 数据库入门学习-视图、sql注入、事务、存储过程的更多相关文章
- 数据库MySQL之 视图、触发器、存储过程、函数、事务、数据库锁、数据库备份、事件
数据库MySQL之 视图.触发器.存储过程.函数.事务.数据库锁.数据库备份.事件 浏览目录 视图 触发器 存储过程 函数 事务 数据库锁 数据库备份 事件 一.视图 1.视图概念 视图是一个虚拟表, ...
- DVWA学习之SQL注入
DVWA学习之SQL注入 环境工具 dvwa 1.9 phpstudy firefox burpsuite 实验步骤 一.设置安全级别为LOW 1. 登录DVWA,并将安全级别设置为LOW 2. 进入 ...
- Web安全学习笔记 SQL注入下
Web安全学习笔记 SQL注入下 繁枝插云欣 --ICML8 SQL注入小技巧 CheatSheet 预编译 参考文章 一点心得 一.SQL注入小技巧 1. 宽字节注入 一般程序员用gbk编码做开发的 ...
- Web安全学习笔记 SQL注入上
Web安全学习笔记 SQL注入上 繁枝插云欣 --ICML8 SQL注入分类 SQL注入检测 一.注入分类 1.简介 SQL注入是一种代码注入技术用于攻击数据驱动的应用程序在应用程序中,如果没有做恰当 ...
- Web安全学习笔记 SQL注入中
Web安全学习笔记 SQL注入中 繁枝插云欣 --ICML8 权限提升 数据库检测 绕过技巧 一.权限提升 1. UDF提权 UDF User Defined Function,用户自定义函数 是My ...
- 数据库防火墙如何防范SQL注入行为
SQL注入是当前针对数据库安全进行外部攻击的一种常见手段.现有主流应用大多基于B/S架构开发,SQL注入的攻击方式正是利用web层和通讯层的缺陷对数据库进行外部恶意攻击.将SQL命令巧妙的插入通讯的交 ...
- python之MySQL学习——防止SQL注入
python之MySQL学习——防止SQL注入 学习了:https://www.cnblogs.com/xiaomingzaixian/p/7126840.html https://www.cnblo ...
- MySQL数据库(六)-- SQL注入攻击、视图、事物、存储过程、流程控制
一.SQL注入攻击 1.什么是SQL注入攻击 一些了解sql语法的用户,可以输入一些关键字 或合法sql,来导致原始的sql逻辑发生变化,从而跳过登录验证 或者 删除数据库 import pymysq ...
- MySQL数据库(六) —— SQL注入攻击、视图、事物、存储过程、流程控制
SQL注入攻击.视图.事物.存储过程.流程控制 一.SQL注入攻击 1.什么是SQL注入攻击 import pymysql conn = pymysql.Connect( user="roo ...
随机推荐
- 2. 修改myeclipse默认用户和时间
方法一:将 @author 属性写死 . 通过菜单 Window->Preference 打开参数设置面板,然后选择: 1.Java -> Code Style -> Code Te ...
- eclipse运行程序时报java.lang.OutOfMemoryError: Java heap space内存不足问题
System.setProperty("webdriver.firefox.bin", "D:\\Mozilla Firefox\\firefox.exe"); ...
- leetcode127
class Solution { public int ladderLength(String beginWord, String endWord, List<String> wordLi ...
- Oracle+Mybatis批量插入,更新和删除
1.插入 (1)第一种方式:利用<foreach>标签,将入参的list集合通过UNION ALL生成虚拟数据,从而实现批量插入(验证过) <insert id="inse ...
- vim-git for window 默认编辑器
vim其实是linux的一个文本编辑器,所以 vi+文件名 后,其实是进入vi程序了.vi有两种模式,编辑模式和命令模式 在命令模式下,我们可以直接按 i ,此时就会切换到编辑模式,如上图,下方有个i ...
- VULKAN学习笔记-inter教学四篇
--交换链相关函数:实例层vkCreateWin32SurfaceKHRvkDestroySurfaceKHRvkGetPhysicalDeviceSurfaceSurportKHRvkGetPhys ...
- Supervisor 进程管理工具
简介: Supervisor 进程管理工具 一.安装 shell > yum -y install python-pip shell > pip install supervisor # ...
- 查询sql执行速度
with QS as( select cp.objtype as object_type ,db_name(st.dbid)as [database] ...
- How to Pronounce WH Words — what, why, which
How to Pronounce WH Words — what, why, which Share Tweet Share Have you noticed that there are two d ...
- 3.3 JSP内置对象概述
1.request 1.1 request获取页面传来的参数,参数通过浏览器网址和后面添加?的方式传达. 传参:”show.jsp?id=001” 获取参数:request.getParameter( ...