一、视图

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. chrome浏览器控制台 console不打印信息问题解决办法。

    转自:https://blog.csdn.net/wang17866603359/article/details/79083776 最近换了安装chrome,想按F12调试下代码,发现控制台什么信息都 ...

  2. Mysql 索引优化 - 2

    永远小表驱动大表(小数据驱动大数据) in exists区别, SELECT * FROM A WHERE A.id in (SELECT id FORM B) 若A表数据大于B表数据用in SELE ...

  3. 10 python 封装----@property的用法

    1.基本概念 在python中用双下划线开头的方式将属性隐藏起来(设置成私有的) #其实这仅仅这是一种变形操作 #类中所有双下划线开头的名称如__x都会自动变形成:_类名__x的形式: class A ...

  4. 8 python 抽象类

    1.抽象类 --类似接口 接口的概念: 自己提供给使用者来调用自己功能的方式\方法\入口, 1.1.java中接口  interface =================第一部分:Java 语言中的 ...

  5. sysbench相关

    Sysbench工具是集系统测试和数据库测试一体的测试工具,但是传统的sysbench在数据库测试方面,没有遵循TPC-C测试模型,仅仅支持单个表的数据.而在实际的业务场景中,业务逻辑复杂的多.开源的 ...

  6. [图解tensorflow源码] 入门准备工作

     tensorflow使用了自动化构建工具bazel.脚本语言调用c或cpp的包裹工具swig.使用EIGEN作为矩阵处理工具.Nvidia-cuBLAS GPU加速计算库.结构化数据存储格式prot ...

  7. 数据库索引&数据页

    索引的好处 索引带来的益处可能很多读者会认为只是"能够提高数据检索的效率,降低数据库的IO成本". 确实,在数据库中表的某个字段创建索引,所带来的最大益处就是将该字段作为检索条件时 ...

  8. 解决:Invalid character found in method name. HTTP method names must be tokens

      阿里云上弄了一个tomcat,经常半夜发送崩溃,查看日志发现这个东西,查阅资料发现是Tomcat的header缓冲区大小不够,只需要在server.xml中增加maxHttpHeaderSize字 ...

  9. Hadoop slaves 没有nodeManager

    1../start-yarn.sh 后从服务器没有nodemanager 进程,并且这里没有报错 在从服务器上的日志上见: 从服务器查看日志: 查看2.8.4官方文档: https://hadoop. ...

  10. ionic 2,带着运气成分

    npm config set loglevel info   查看安装信息 npm cache clean                  清除缓存 cnpm sync ionic         ...