自己總結的mysql開發規範,夠用就行了。
1、表
1.1 表必須要有主鍵,主鍵使用自動遞增,型別為int。
1.2 表名使用有意義的英文單詞,可用下劃線分割。如需使用縮寫時,不可使用意義不明的縮寫。
1.3 需要多表join的字段,資料型別保持絕對一致。
1.4 字段命名時需要加上表名,確保所有表中的字段都是唯一的。如字段中有關聯其他表的字段,則欄位名和關聯表的字段一致即可。
1.5 所有字段必須寫有注釋。
1.6 用varchar型別儲存時間或日期。
1.7 盡可能把字段定義為非空。
1.8 欄位的字符集設定為utf8,排序規則設定為utf8_general_ci。
1.9 表名和欄位名統一使用小寫。
1.10 不要在字段上建立外來鍵約束,約束請從程式上進行控制。
1.11 建立合理的冗餘欄位會使查詢更高效。如:表中有單價和數量字段,總金額是字段算出來的,如果建立總金額字段,查詢時就避免了轉換的過程(用空間換時間)。
2、索引
2.1 索引以欄位名_ 索引型別方式命名,如:staff_status_normal
2.2 表中的num欄位必須建立索引。
2.3 頁面中的查詢選項,如下拉框、按編碼查詢,需要在這些欄位上建立索引,模糊查詢欄位不需要建立索引。
2.4 若a表的a欄位被b表關聯,則a表的a需要建立索引。
3、sql
3.1 給每張表都起乙個別名,這樣做可以增加可讀性、在客戶端中寫sql時可以很方面的點出來欄位還可以帶來效能的提公升。如:select a.id fromtable a
3.2 不需要在表名前增加資料庫字首,這樣做沒有任何意義。如:cmdb.sn_staff
3.3 使用now()而不使用sysdate()是個好習慣。如果系統中存在主從資料庫,使用sysdate()會導致主從資料庫的資料不一致。
3.4 不要寫select * 這樣的**,指定需要的欄位名。
3.5 避免在where子句中使用函式,這樣會讓使用函式欄位的索引失效。
如:select a.name from student awhere left(0,a.num)=』abc』
3.6不要使用count(列名)來替代count(*),count(常量)和count(*)的效能幾乎一致。即使列名加了索引count(column_name)也比count(*)慢,而且count(column_name)不計算為null的行數。
3.7 注意null與任何值邏輯運算子計算結果都為null,並不會返回true或者false,所以判斷字段是否為空是請使用is null或者is not null。
3.8 盡量使sql格式化,好的編碼風格會讓程式容易排錯和一目了然。
3.9 全模糊查詢無法使用索引,請盡可能避免。使用右模糊查詢可以走索引,
如:select a.num from student a where a.name like 『張%』。
3.10 使用not in時請確保子查詢列中沒有null值,否則請用not exists代替,否則會產生嚴重的bug。
如:表a
使用not exists可正確返回結果:select a_string from awhere not exists (select b_string from b where a.a_string=b.b_string)。
3.11 使用not in不會返回欄位為null的資料。select * from t1 where t1.name not in ('a'),假如有一條資料的name為null,那麼不會返回這條資料。
3.12 int佔4位元組,範圍是[-2147483648,2147483647],int(10)並不會影響這個範圍。
Mysql 資料庫開發規範
一 基礎規範 1 必須使用innodb儲存引擎 解讀 支援事務 行級鎖 併發效能更好 cpu及記憶體快取頁優化使得資源利用率更高 2 必須使用utf8字符集 解讀 萬國碼,無需轉碼,無亂碼風險,節省空間 3 資料表 資料字段必須加入中文注釋 解讀 n年後誰知道這個r1,r2,r3欄位是幹嘛的 4 禁...
MySQL 資料庫開發規範
一 表 單個表的字段數控制在 20個以下,最好不超過50個 單個表不超過20個char 或varchar 字段 單錶不超過50個純int欄位 拒絕大sql,大事務,批量操作 二 字段型別定義 字段型別選取原則 1 選取合適範圍的資料型別 2 只取正值的數值型別,新增 unsigned屬性 3 固定長...
MySQL資料庫開發規範
為了最大限度保證合生通mysql資料庫設計編碼規劃化,使開發可以寫出高質量查詢語句。制定本資料庫開發設計規範。適用的人員包括 使用mysql資料庫的研發人員 適用資料庫版本 mysql5.6及以後 適用於資料庫名 物件名如表 字段 索引 儲存過程,函式等的命名約定。3.1表名 3.1.1規則 命名規...