mysql建表和使用規則

2021-09-24 22:51:57 字數 1191 閱讀 3219

特別注意:

【強制】建立表時必須顯式指定字符集為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建表和索引使用規範 tt lan2003 一 mysql建表,欄位需設定為非空,需設定字段預設值。二 mysql建表,欄位需null時,需設定字段預設值,預設值不為null。三 mysql建表,如果字段等價於外來鍵,應在該字段加索引。四 mysql建表,不同表之間的相同屬性值的字段,列型別...

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

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