MySQL資料庫建表注意事項

2021-08-20 11:43:35 字數 2280 閱讀 7263

1.庫名、表名、欄位名必須使用小寫字母,「_」分割。

原因:

mysql在linux下資料庫名、表名、列名、別名大小寫規則是這樣的:

1、資料庫名與表名是嚴格區分大小寫的;

2、表的別名是嚴格區分大小寫的;

3、列名與列的別名在所有的情況下均是忽略大小寫的;

4、變數名也是嚴格區分大小寫的;

mysql在windows下都不區分大小寫。

所以在不同作業系統中為了能使程式和資料庫都能正常執行,最好的辦法是在設計的時候都轉為小寫,但是如果在設計的時候已經規範化大小寫了,那麼在windows環境下只要對資料庫的配置做下改動就行了,具體操作如下:

在mysql的配置檔案中my.ini [mysqld]中增加一行 lower_case_table_names = 1

引數解釋:

0:區分大小寫

1:不區分大小寫

在 mysql中,資料庫和表對就於那些目錄下的目錄和檔案。因而,作業系統的敏感性決定資料庫和表命名的大小寫敏感。這就意味著資料庫和表名在windows 中是大小寫不敏感的,而在大多數型別的 unix系統中是大小寫敏感的。奇怪的是列名與列的別名在所有的情況下均是忽略大小寫的,而表的別名又是區分大小寫的。

要避免這個問題,你最好在定義資料庫命名規則的時候就全部採用小寫字母加下劃線的組合,而不使用任何的大寫字母。

或者也可以強制以 -o lower_case_table_names=1 引數啟動mysqld(如果使用 --defaults-file=...\my.cnf引數來讀取指定的配置檔案啟動 mysqld的話,你需要在配置檔案的 [mysqld] 區段下增加一行lower_case_table_names=1)。這樣mysql

將在建立與查詢時將所有的表名自動轉換為小寫字元(這個選項預設地在windows 中為 1 ,在 unix 中為 0。從 mysql 4.0.2開始,這個選項同樣適用於資料庫名)。

2.建議使用innodb儲存引擎(如果乙個表極少更新可以考慮myisam)。

原因:1.myisam

myisam是mysql5.1及之前版本的預設引擎,很久未被更新。

使用表級鎖, 如果資料量大,乙個插入操作鎖定表後,其他請求都將阻塞。

支援全文索引

支援查詢快取

儲存表的總行數,使用count(*) 並且無where子句的時候可以很快返回結果,但是實際使用時基本不會無where子句

簡要:不支援事務安全 

沒有事務日誌和分類,因此它只將資料寫入linux檔案快取並希望能最終寫入磁碟。如果系統在這個過程中崩潰或者丟失一些資料,myisam表會經常出現無法啟動或者警告你需要修復表;它恢復資料的方法有限並且經常會丟失資料。另外,myisam也很難正確的備份,備份的時候通常需要鎖住整個系統的資料,這就意味著每天**都要死機或者無法使用一段時間。

myisam表允許在定期列中進行全文檢索,而innodb不支援(這個沒搞懂)

2.innodb

支援事務

支援行級鎖和表級鎖,能支援更多的併發量

mysql5.6版本開始支援 全文索引

查詢不加鎖,完全不影響查詢

innodb會對每個表設定乙個事務計數器,裡面儲存當前最大的事務id.當乙個事務提交時,innodb會使用mvcc中系統事務id最大的事務id跟新當前表的計數器.只有比這個最大id大的事務能使用查詢快取,其他比這個id小的事務則不能使用查詢快取.另外,在innodb中,所有有加鎖操作的事務都不使用任何查詢快取

簡要:支援事務安全   

事務日誌記錄真正的資料庫事務,但更重要的是資料崩潰恢復和回滾。基於 inoodb方式的io,能給予更安全資料保護和更好效能表現

3.儲存精確浮點數必須使用decimal替代float和double。

4.建議使用unsigned儲存非負數值。

5.建議使用int unsigned儲存ipv4。

原因:使用intunsigned而不是char(15)來儲存ipv4位址,通過mysql函式inet_ntoa和inet_aton來進行轉化;ipv6位址目前沒有轉化函式,需要使用decimal或者兩個bigint來儲存。例如:

create table t (

ip int unsigned

);insert into t select inet_aton('209.207.224.40');

select inet_ntoa(ip) from t;

資料庫建表注意事項

為了以後維護,擴充套件方便,一般來說建立資料表的時候有幾個欄位都是需要的。1 序列號 主鍵 一般來說還是推薦需要主鍵的。在sql server和oracle中有序號字段,但是mysql中卻沒有,只能用自增整數來代替。2 creator欄位,一般此字段是用於記錄這條資料的建立者,維護資料時可以責任到人...

資料庫表設計注意事項

1.使用英文單詞,避免使用拼音 2.使用單詞單數,採用大寫,方便不同資料庫移植 3.單詞間使用下劃線分隔 4.表的字首建議表名前加上對應的簡寫的模組名 5.列名採用大寫,單詞採用單數 6.對於同樣含義的字段,採用同樣的列名,同時,字段型別也應一樣 7.命名時避免保留字衝突,如names,key,ty...

mysql設定資料庫注意事項

建立資料庫 create database ifnot exists permission default character set utf8 default collate utf8 bin 建立表 create by varchar 30 not null comment 建立人 create...