Inception SQL审核注解

1、建表语句

建表语句检查项

表属性的检查项
这个表不存在
对于create table like,会检查like的老表是不是存在。
对于create table db.table,会检查db这个数据库是不是存在
表名、列名、索引名的长度不大于64个字节
如果建立的是临时表,则必须要以tmp为前缀
必须要指定建立innodb的存储引擎(可配置)
必须要指定utf8的字符集(字符串可配置,指定支持哪些字符集)
表必须要有注释(可配置)
表不能建立为分区表(可配置)
只能有一个自增列
索引名字不能是Primay
不支持Foreign key(可配置)
建表时,如果指定auto_increment的值不为1,报错(可配置)
如果自增列的名字不为id,说明有可能是有意义的,MySQL这样使用比较危险,所以报警(可配置)
列属性的检查项
不能设置列的字符集(可配置)
列的类型不能使用集合、枚举、位图类型。(可配置)
列必须要有注释(可配置)
char长度大于20的时候需要改为varchar(长度可配置)
列的类型不能是BLOB/TEXT。(可配置)
每个列都使用not null(可配置)
如果列为BLOB/TEXT类型的,则这个列不能设置为NOT NULL。
如何是自增列,则使用无符号类型(可配置)
如果自增列,则长度必须要大于等于4个字节(可配置)
如果是timestamp类型的,则要必须指定默认值。
对于MySQL5.5版本(包含)以下的数据库,不能同时有两个TIMESTAMP类型的列,如果是DATETIME类型,则不能定义成DATETIME DEFAULT CURRENT_TIMESTAMP及ON UPDATE CURRENT_TIMESTAMP等语句。
每个列都需要定义默认值,除了自增列、主键列及大字段列之外(可配置)
不能有重复的列名
索引属性检查项
索引必须要有名字
不能有外键(可配置)
Unique索引必须要以uniq_为前缀(可配置)
普通索引必须要以idx_为前缀(可配置)
索引的列数不能超过5个(数目可以配置)
表必须要有一个主键(可配置)
最多有5个索引(数目可配置)
建索引时,指定的列必须存在。
索引中的列,不能重复
BLOB列不能建做KEY
索引长度不能超过766
不能有重复的索引,名字及内容
默认值检查项
BLOB/TEXT类型的列,不能有非NULL的默认值
MySQL5.5以下(含)的版本,对于DATETIME类型的列,不能有函数NOW()的默认值。
如果设置默认值为函数,则只能是NOW()。
如果默认值为NULL,但列类型为NOT NULL,或者是主键列,或者定义为自增列,则报错。
自增列不能设置默认值。

2、插入语句

插入语句检查项

表是否存在
必须指定插入列表,也就是要对哪几个列指定插入值,如insert into t (id,id2) values(...),(可配置)
必须指定值列表,与上面对应的列,插入的值是什么,必须要指定。
插入列列表与值列表个数相同,上面二者的个数需要相同,如果没有指定列列表(因为可配置),则值列表长度要与表列数相同。
不为null的列,如果插入的值是null,报错(可配置)
插入指定的列名对应的列必须是存在的。
插入指定的列列表中,同一个列不能出现多次。
插入值列表中的简单表达式会做检查,但具体包括什么不一一指定

3、更新、删除语句

更新、删除语句检查项

表是否存在
必须有where条件(可配置)
delete语句不能有limit条件(可配置)
不能有order by语句(可配置)
影响行数大于10000条,则报警(数目可配置)
对WHERE条件这个表达式做简单检查,具体包括什么不一一指定
对更新列的值列表表达式做简单检查,具体不一一指定
对更新列对象做简单检查,主要检查列是不是存在等
多表更新、删除时,每个表必须要存在

Inception SQL审核注解的更多相关文章

  1. Yearning + Inception SQL审核平台搭建

    Yearning 安装: 安装Nginxyum install nginx -y 按照顺序安装MySQLmysql-community-common-5.7.22-1.el6.x86_64.rpmmy ...

  2. Docker Yearning + Inception SQL审核平台搭建

    [一]安装[1.1]系统环境系统环境:CentOS Linux release 7.6.1708 (Core)系统内存:4G系统内核:1Python:3.6.4关闭iptables and selin ...

  3. centos 7 安装sql 审核工具 inception + archer

    系统环境: Centos7 + python2.7 + python3 .... 下载 源码地址:https://github.com/mysql-inception/inception Incept ...

  4. 基于Inception搭建MySQL SQL审核平台Yearing

    基于Inception搭建MySQL SQL审核平台Yearing Inception 1. Inceptionj简介 2. Inception安装 2.1 下载和编译 2.2 启动配置 Yearni ...

  5. SQL审核 Inception 中小团队快速构建SQL自动审核系统

    SQL审核与执行,作为DBA日常工作中相当重要的一环,一直以来我们都是通过人工的方式来处理,效率低且质量没办法保证.为了规范操作,提高效率,我们决定引入目前市面上非常流行的SQL自动审核工具Incep ...

  6. SQL审核平台Yearning部署

    SQL审核平台Yearning部署  Yearning优势: Yearning SQL 审计平台 基于Vue.js与Django的整套mysql-sql审核平台解决方案.提供基于Inception的S ...

  7. 【原创】SQL审核系统

    前言 应公司dba的需求,做了一个sql审核并可以执行.记录的系统,整个系统有三种角色: DBA(需要管理员手动登记) 运维人员(需要管理员手动登记) 开发人员(默认注册后用户) 权限分配如下: 一些 ...

  8. Yearning v1.3.0 发布,Web 端 SQL 审核平台

    企业级MYSQL web端 SQL审核平台. Website 官网 www.yearning.io Feature 功能 数据库字典自动生成 SQL查询 查询工单 导出 自动补全,智能提示 查询语句审 ...

  9. sql审核工具调研安装-sqlAdvisor和soar

    sql审核工具调研  基于soar的sql审核查询平台: https://github.com/beiketianzhuang/data-platform-soar 1.美团工具sqlAdvisor工 ...

随机推荐

  1. 「luogu1613」跑路

    传送门 Luogu 解题思路 对于所有可以用 \(2^k\) 形式表示的 \(dis(i,j)\),将\(i,j\)之间的 \(dis\) 置为 \(1\),可以用倍增 \(\text{Floyd}\ ...

  2. 自学java难不难 搞定这十三步就够了

    自学java难不难,对不同的人来说可能不一样,有着编程基础的来说,相对容易.如果是完全小白,就会稍微困难点,下面总结了十三步来自学java的步骤. 第1步:自学JAVA的开发环境配置.开发首个Java ...

  3. 设计模式课程 设计模式精讲 8-8 单例设计模式-Enum枚举单例、原理源码解析以及反编译实战

    1 课堂解析 2 代码演练 2.1 枚举类单例解决序列化破坏demo 2.2 枚举类单例解决序列化破坏原理 2.3 枚举类单例解决反射攻击demo 2.4 枚举类单例解决反射攻击原理 3 jad的使用 ...

  4. 还在用逆向工程?太Low了,试试通用Mapper吧!

    什么是通用Mapper? 通用mapper 可以极大的方便开发人员进行ORM,提供极其方便的单表增删改查. 什么是通用mapper,一句话简单说,它就是个辅助mybatis极简单表开发的组件.它不是为 ...

  5. natapp 内网穿透服务

    参考文章:https://www.jianshu.com/p/91a321e584b8 参考文章:https://www.jianshu.com/p/c4cb8666c96a 一.什么是内网穿透 通过 ...

  6. 分布估计算法解决TSP问题

    分布估计算法解决旅行商问题(TSP) TSP问题(Traveling Salesman Problem,旅行商问题),由威廉哈密顿爵士和英国数学家克克曼T.P.Kirkman于19世纪初提出.问题描述 ...

  7. 侧边栏下拉时箭头的旋转动画(treeView控件)

    //点击菜单时箭头旋转 let treeView = document.getElementsByClassName("treeview");//let解决闭包问题 let las ...

  8. 免费的 Linux 分区管理器使用介绍

    下面的列表没有特定的排名顺序.大多数分区工具应该存在于 Linux 发行版的仓库中. GParted 这可能是 Linux 发行版中最流行的基于 GUI 的分区管理器.你可能已在某些发行版中预装它.如 ...

  9. 第1课 VMware的NSX全面落地软件定义网络SDN

    SDN的定义: 即软件定义网络(Software Defined Network)的缩写,它是一种基于网络架构的创新,一种在已存在物理传输网络之上的抽象形态,它是一种体系结构,它是众多网络虚拟化技术中 ...

  10. 5G大潮下卖点越来越少的苹果,会成为下一个诺基亚吗?

    当下,5G显然成为手机厂商继全面屏.AI等之后,又一个重要的风口.为了赶上这个风口,很多厂商不惜寻找各种噱头去吸引大众的关注.比如小米在发布MIX 3之前疯狂造势称要发布5G版,但在10月25日的发布 ...