mysql 建表規則

2021-08-19 23:36:37 字數 1191 閱讀 1900

特別注意:

【強制】建立表時必須顯式指定字符集為utf8或utf8mb4。

【強制】建立表時必須顯式指定表儲存引擎型別,如無特殊需求,一律為innodb。

【強制】建表必須有comment。

【建議】建表時關於主鍵:強制要求主鍵為id,型別為int或bigint,且為auto_increment。

【建議】表中所有字段必須都是not null屬性,業務可以根據需要定義default值。 因為使用null值會存在每一行都會占用額外儲存空間、資料遷移容易出錯、聚合函式計算結果偏差等問題。

【強制】對於超過100w行的大表進行alter table,必須經過dba審核,並在業務低峰期執行。

【強制】資料庫本身庫、表、列所有字符集必須保持一致,為utf8或utf8mb4。

【強制】insert語句指定具體欄位名稱,不要寫成insert into t1 values(…),道理同上。

【強制】除靜態表或小表(100行以內),dml語句必須有where條件,且使用索引查詢。

【強制】禁止在業務的更新類sql語句中使用join,比如update t1 join t2…

線上禁止使用的sql語句

【高危】禁用update|delete t1 … where a=xx limit xx; 這種帶limit的更新語句。

因為會導致主從不一致,導致資料錯亂。建議加上order by pk

【高危】禁止使用關聯子查詢,如update t1 set … where name in(select name from user where…);效率極其低下。

【強制】禁用procedure、function、trigger、views、event、外來鍵約束。

因為他們消耗資料庫資源,降低資料庫集群可擴充套件性。推薦都在程式端實現。

【強制】禁用insert into …on duplicate key update…

在高併發環境下,會造成主從不一致。

【強制】禁止聯表更新語句,如update t1,t2 where t1.id=t2.id…

【強制】禁止單獨使用負向查詢not、!=、<>、!<、!>、not in、not like等,會導致全表掃瞄。如select oid from t_order where status != 1 不行,select oid from t_order where uid=123 and status != 1 兩個以上的where條件可以有負向查詢

mysql建表和使用規則

特別注意 強制 建立表時必須顯式指定字符集為utf8或utf8mb4。強制 建立表時必須顯式指定表儲存引擎型別,如無特殊需求,一律為innodb。強制 建表必須有comment。建議 建表時關於主鍵 強制要求主鍵為id,型別為int或bigint,且為auto increment。建議 表中所有字段...

mysql建立使用者表 mysql 建庫建表建使用者

1.建立資料庫 create database school 2.使用資料庫 use school 3.建立使用者 create user jame localhost identified by jame 4.授權使用者 注意這裡是用了 哦,可以自己講school也替換成 號 grant sele...

mysql建表思路 MySQL 建表思路

思想 硬碟如倉庫,表如倉庫中貨架 常用與不常用等分類 欄位如貨物 尺寸是固定或變動 訪問貨物涉及到貨架的佔位 效率。資料型別選用,建表思路,正規化 資料型別特點 資料型別的速度關係 最快 整形 date,time char,enum varchar text blob 最慢 char 與 varch...