zoukankan      html  css  js  c++  java
  • Inception SQL审核注解

    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条件这个表达式做简单检查,具体包括什么不一一指定
    对更新列的值列表表达式做简单检查,具体不一一指定
    对更新列对象做简单检查,主要检查列是不是存在等
    多表更新、删除时,每个表必须要存在

  • 相关阅读:
    ELK初学搭建(logstash)
    认识基本的UI资源
    C# 枚举器
    NGUI---使用脚本控制聊天系统的内容显示,输入事件交互
    NGUI----简单聊天系统一
    C# 类型、存储和变量
    C# Execl表格文件转xml文件
    网易云音乐如何从0到亿级用户整理笔记
    如何成为一名完美的传道授业解惑者
    grouping sets,cube,rollup,grouping__id,group by
  • 原文地址:https://www.cnblogs.com/hankyoon/p/11125389.html
Copyright © 2011-2022 走看看