溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

Inception SQL審核注解

發(fā)布時(shí)間:2020-08-14 08:03:18 來(lái)源:ITPUB博客 閱讀:161 作者:haoge0205 欄目:MySQL數(shù)據(jù)庫(kù)

Inception SQL審核注解


1、建表語(yǔ)句

建表語(yǔ)句檢查項(xiàng)


表屬性的檢查項(xiàng)

 這個(gè)表不存在

 對(duì)于create table like,會(huì)檢查like的老表是不是存在。

 對(duì)于create table db.table,會(huì)檢查db這個(gè)數(shù)據(jù)庫(kù)是不是存在

 表名、列名、索引名的長(zhǎng)度不大于64個(gè)字節(jié)

 如果建立的是臨時(shí)表,則必須要以tmp為前綴

 必須要指定建立innodb的存儲(chǔ)引擎(可配置)

 必須要指定utf8的字符集(字符串可配置,指定支持哪些字符集)

 表必須要有注釋?zhuān)膳渲茫?

 表不能建立為分區(qū)表(可配置)

 只能有一個(gè)自增列

 索引名字不能是Primay

 不支持Foreign key(可配置)

 建表時(shí),如果指定auto_increment的值不為1,報(bào)錯(cuò)(可配置)

 如果自增列的名字不為id,說(shuō)明有可能是有意義的,MySQL這樣使用比較危險(xiǎn),所以報(bào)警(可配置)

 列屬性的檢查項(xiàng)

 不能設(shè)置列的字符集(可配置)

 列的類(lèi)型不能使用集合、枚舉、位圖類(lèi)型。(可配置)

 列必須要有注釋?zhuān)膳渲茫?

 char長(zhǎng)度大于20的時(shí)候需要改為varchar(長(zhǎng)度可配置)

 列的類(lèi)型不能是BLOB/TEXT。(可配置)

 每個(gè)列都使用not null(可配置)

 如果列為BLOB/TEXT類(lèi)型的,則這個(gè)列不能設(shè)置為NOT NULL。

 如何是自增列,則使用無(wú)符號(hào)類(lèi)型(可配置)

 如果自增列,則長(zhǎng)度必須要大于等于4個(gè)字節(jié)(可配置)

 如果是timestamp類(lèi)型的,則要必須指定默認(rèn)值。

 對(duì)于MySQL5.5版本(包含)以下的數(shù)據(jù)庫(kù),不能同時(shí)有兩個(gè)TIMESTAMP類(lèi)型的列,如果是DATETIME類(lèi)型,則不能定義成DATETIME DEFAULT CURRENT_TIMESTAMP及ON UPDATE CURRENT_TIMESTAMP等語(yǔ)句。

 每個(gè)列都需要定義默認(rèn)值,除了自增列、主鍵列及大字段列之外(可配置)

 不能有重復(fù)的列名

 索引屬性檢查項(xiàng)

 索引必須要有名字

 不能有外鍵(可配置)

 Unique索引必須要以u(píng)niq_為前綴(可配置)

 普通索引必須要以idx_為前綴(可配置)

 索引的列數(shù)不能超過(guò)5個(gè)(數(shù)目可以配置)

 表必須要有一個(gè)主鍵(可配置)

 最多有5個(gè)索引(數(shù)目可配置)

 建索引時(shí),指定的列必須存在。

 索引中的列,不能重復(fù)

 BLOB列不能建做KEY

 索引長(zhǎng)度不能超過(guò)766

 不能有重復(fù)的索引,名字及內(nèi)容

 默認(rèn)值檢查項(xiàng)

 BLOB/TEXT類(lèi)型的列,不能有非NULL的默認(rèn)值

 MySQL5.5以下(含)的版本,對(duì)于DATETIME類(lèi)型的列,不能有函數(shù)NOW()的默認(rèn)值。

 如果設(shè)置默認(rèn)值為函數(shù),則只能是NOW()。

 如果默認(rèn)值為NULL,但列類(lèi)型為NOT NULL,或者是主鍵列,或者定義為自增列,則報(bào)錯(cuò)。

 自增列不能設(shè)置默認(rèn)值。

 


2、插入語(yǔ)句

插入語(yǔ)句檢查項(xiàng)


 表是否存在

 必須指定插入列表,也就是要對(duì)哪幾個(gè)列指定插入值,如insert into t (id,id2) values(...),(可配置)

 必須指定值列表,與上面對(duì)應(yīng)的列,插入的值是什么,必須要指定。

 插入列列表與值列表個(gè)數(shù)相同,上面二者的個(gè)數(shù)需要相同,如果沒(méi)有指定列列表(因?yàn)榭膳渲茫?,則值列表長(zhǎng)度要與表列數(shù)相同。

 不為null的列,如果插入的值是null,報(bào)錯(cuò)(可配置)

 插入指定的列名對(duì)應(yīng)的列必須是存在的。

 插入指定的列列表中,同一個(gè)列不能出現(xiàn)多次。

 插入值列表中的簡(jiǎn)單表達(dá)式會(huì)做檢查,但具體包括什么不一一指定


3、更新、刪除語(yǔ)句


 更新、刪除語(yǔ)句檢查項(xiàng)

 

 表是否存在

 必須有where條件(可配置)

 delete語(yǔ)句不能有l(wèi)imit條件(可配置)

 不能有order by語(yǔ)句(可配置)

 影響行數(shù)大于10000條,則報(bào)警(數(shù)目可配置)

 對(duì)WHERE條件這個(gè)表達(dá)式做簡(jiǎn)單檢查,具體包括什么不一一指定

 對(duì)更新列的值列表表達(dá)式做簡(jiǎn)單檢查,具體不一一指定

 對(duì)更新列對(duì)象做簡(jiǎn)單檢查,主要檢查列是不是存在等

 多表更新、刪除時(shí),每個(gè)表必須要存在



向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI