一、视图

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注入、事务、存储过程的更多相关文章

  1. 数据库MySQL之 视图、触发器、存储过程、函数、事务、数据库锁、数据库备份、事件

    数据库MySQL之 视图.触发器.存储过程.函数.事务.数据库锁.数据库备份.事件 浏览目录 视图 触发器 存储过程 函数 事务 数据库锁 数据库备份 事件 一.视图 1.视图概念 视图是一个虚拟表, ...

  2. DVWA学习之SQL注入

    DVWA学习之SQL注入 环境工具 dvwa 1.9 phpstudy firefox burpsuite 实验步骤 一.设置安全级别为LOW 1. 登录DVWA,并将安全级别设置为LOW 2. 进入 ...

  3. Web安全学习笔记 SQL注入下

    Web安全学习笔记 SQL注入下 繁枝插云欣 --ICML8 SQL注入小技巧 CheatSheet 预编译 参考文章 一点心得 一.SQL注入小技巧 1. 宽字节注入 一般程序员用gbk编码做开发的 ...

  4. Web安全学习笔记 SQL注入上

    Web安全学习笔记 SQL注入上 繁枝插云欣 --ICML8 SQL注入分类 SQL注入检测 一.注入分类 1.简介 SQL注入是一种代码注入技术用于攻击数据驱动的应用程序在应用程序中,如果没有做恰当 ...

  5. Web安全学习笔记 SQL注入中

    Web安全学习笔记 SQL注入中 繁枝插云欣 --ICML8 权限提升 数据库检测 绕过技巧 一.权限提升 1. UDF提权 UDF User Defined Function,用户自定义函数 是My ...

  6. 数据库防火墙如何防范SQL注入行为

    SQL注入是当前针对数据库安全进行外部攻击的一种常见手段.现有主流应用大多基于B/S架构开发,SQL注入的攻击方式正是利用web层和通讯层的缺陷对数据库进行外部恶意攻击.将SQL命令巧妙的插入通讯的交 ...

  7. python之MySQL学习——防止SQL注入

    python之MySQL学习——防止SQL注入 学习了:https://www.cnblogs.com/xiaomingzaixian/p/7126840.html https://www.cnblo ...

  8. MySQL数据库(六)-- SQL注入攻击、视图、事物、存储过程、流程控制

    一.SQL注入攻击 1.什么是SQL注入攻击 一些了解sql语法的用户,可以输入一些关键字 或合法sql,来导致原始的sql逻辑发生变化,从而跳过登录验证 或者 删除数据库 import pymysq ...

  9. MySQL数据库(六) —— SQL注入攻击、视图、事物、存储过程、流程控制

    SQL注入攻击.视图.事物.存储过程.流程控制 一.SQL注入攻击 1.什么是SQL注入攻击 import pymysql conn = pymysql.Connect( user="roo ...

随机推荐

  1. 楼层验证B1~1F等

    $("#mapManagerEditForm").bootstrapValidator("addField","floors",{ vali ...

  2. spring security 配置xml 参考

    https://blog.csdn.net/zsq520520/article/details/77880491

  3. TDictionary 是delphi用的,c++builder用起来太吃力。

    TDictionary 是delphi用的,c++builder用起来太吃力.c++还是用std::map代替.c++d map很好用啊.https://blog.csdn.net/ddkxddkx/ ...

  4. style css

    Title 语文 用户名 用户名 数学 英语 <!DOCTYPE html><html lang="en"><head> <meta ch ...

  5. js实现UTC时间转为北京时间,时间戳转为时间

    用了阿里云的接口,发现其穿的日期是UTC格式的.需要转换. var utc_datetime = "2017-03-31T08:02:06Z"; function utc2beij ...

  6. eclipse从svn导入maven项目变成普通项目解决办法

    右击项目-->configure-->Convert to Maven Project

  7. 跨越数据库操作时注意要加dbo

    跨越数据库操作时注意要加dbo insert into hrdb.dbo.TB_B_PROJECTS  :这样是正确的 insert into hrdb.TB_B_PROJECTS  :这样是错误的

  8. mysql 变量名称不能与表字段一致

    my sql的变量名称不能与表字段名称相同不然会有各种异常问题 啃爹

  9. L2tp协议简单解析

    1.L2TP简介 L2TP(Layer 2 Tunneling Protocol,二层隧道协议)是VPDN(Virtual PrivateDial-up Network,虚拟私有拨号网)隧道协议的一种 ...

  10. 吴裕雄 实战PYTHON编程(5)

    text = '中华'print(type(text))#<class 'str'>text1 = text.encode('gbk')print(type(text1))#<cla ...