Inception SQL审核注解

发布时间:2020-08-14 08:03:18

来源:ITPUB博客

阅读:91

作者:haoge0205

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条件这个表达式做简单检查,具体包括什么不一一指定

对更新列的值列表表达式做简单检查,具体不一一指定

对更新列对象做简单检查,主要检查列是不是存在等

多表更新、删除时,每个表必须要存在

mysql数据库sql审核_Inception SQL审核注解相关推荐

  1. linux将mysql导出表数据导入另一台服务器_远程linux服务器mysql数据库导入和导出.sql文件...

    今天对需要将服务器上的数据库放到本地环境,之前没怎么这么操作过,ORZ,弱鸡,这篇帖子不错,收藏了!!! 远程linux服务器mysql数据库导入和导出.sql文件 大部分情况本地开发环境为windo ...

  2. MySQL 数据库性能优化之SQL优化

    2019独角兽企业重金招聘Python工程师标准>>> MySQL 数据库性能优化之SQL优化 发布时间: 2012 年 3 月 21 日  发布者: OurMySQL 来源:简朝阳 ...

  3. mysql数据库会同时执行sql吗_mysql 一次执行多条sql语句

    最近要做一个软件升级,其中涉及到数据库表字段的变动(新增或删除或修改),所有的关于数据库的变动的sql语句都是存放在Sqlupdate.sql文件中,每次升级的时候都需要执行一次Sqlupdate.s ...

  4. 远程linux服务器mysql数据库导入和导出.sql文件

    大部分情况本地开发环境为windows,部署的服务器为Linux,本地数据库导出.sql文件后需要远程导入服务器,具体如下. 首先连接服务器,即服务器ip,协议,端口,用户名及密码,可以通过ftp客户 ...

  5. Java中使用mysqldump实现mysql数据库备份并将sql文件打成zip压缩包

    场景 在Java代码中调用mysqldump命令实现对指定的mysql数据库和指定的表导出为sql文件. 并将sql文件进行压缩成zip存储备份. mysqldump 简介 mysqldump 是 M ...

  6. [CentOS Python系列] 三.阿里云MySQL数据库开启配置及SQL语句基础知识

    从2014年开始,作者主要写了三个Python系列文章,分别是基础知识.网络爬虫和数据分析. Python基础知识系列:Pythonj基础知识学习与提升 Python网络爬虫系列:Python爬虫之S ...

  7. 如何找出MySQL数据库中的低效SQL语句

    面对业务的迅猛发展,DBA的一项重要工作就是及时发现数据库中的低效SQL语句,有的可以立刻着手解决(比如缺少合适的索引),有的需要尽快反馈给开发人员进行修改. MySQL数据库有几个配置选项可以帮助我 ...

  8. django使用mysql原始语句,Django中使用mysql数据库并使用原生sql语句操作

    Django自身默认使用sqlite3这个轻量级的数据库,但是当我们开发网站时,sqlite3就没有mysql好,sqlite3适合一些手机上开发使用的数据库. 准备的软件 mysql数据库,版本5. ...

  9. mysql数据库中 pri_MySQL数据库管理——SQL指令集

    1.查看数据库列表信息 show databases; 2.进入数据库 use mysql(数据库名mysql): 3.查看数据表 show table info(表名info); 4.显示表结构信息 ...

  10. django mysql sql语句_Django中使用mysql数据库并使用原生sql语句操作

    Django自身默认使用sqlite3这个轻量级的数据库,但是当我们开发网站时,sqlite3就没有mysql好,sqlite3适合一些手机上开发使用的数据库. 准备的软件 mysql数据库,版本5. ...

最新文章

  1. pytorch多标签分类交叉熵loss
  2. spring boot 2.0 java8 下 foundError: javax/xml/bind/JAXBException 解决方法
  3. 开源图神经网络框架DGL升级:GCMC训练时间从1天缩到1小时,RGCN实现速度提升291倍...
  4. 使用 flex 实现 5 种常用布局
  5. CentOs7中安装sonarQube服务系列------1.CentOS7中Docker的安装
  6. linux lw3m多行文本使用,linux常用命令以及一些常见问题和解决方法教程.docx
  7. 多线程与高并发(九):单机压测工具JMH,单机最快MQ - Disruptor原理解析
  8. FreeSWITCH 总体架构
  9. React jsx 中写更优雅、直观的条件运算符
  10. BurpSuite插件 -- FastjsonScan(反序列化检测)
  11. 服务器可否替代手机芯片,基于ARM的处理器能取代桌面处理器吗?
  12. java判断两个日期相差天数
  13. rxtx串口事件不触发_STM32F0单片机快速入门七 串口(UART)操作从轮询到中断
  14. PostgreSQL初学
  15. C++ Primer 第二章 学习笔记及习题答案
  16. 切换账号_微软 Edge 更新:自动切换工作 / 生活账号,移动端上线集锦功能
  17. MAC系统XAMPP 中 MySQL命令行client配置使用
  18. 图片求导锐化 与模糊检测
  19. Kali Linux无线网络渗透测试教程(大学霸内部资料)
  20. php 导出 设置多表头,PHP Excel 导出文件,自定义表头

热门文章

  1. 如何在调用Marketing Cloud contact创建API时增加对扩展字段的支持
  2. document builder how is document url being generated
  3. Enter Further Contact Person error message
  4. 如何处理错误消息Please install the Linux kernel header files
  5. Hybris Enterprise Commerce Platform 服务层的设计与实现
  6. SAP Fiori里的List是如何做到懒加载Lazy load的
  7. cap理论具体含义_分布式事务的CAP理论
  8. gpu处理信号_GPU中的并行运算,加速你的Matlab程序
  9. c++ 共享内存_关于Linux共享内存的实验 [二] - 原因
  10. python展示文件_python 文件操作实力显示