成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

MySQL-關于數據庫建表的一些觀點和建議

數據庫 MySQL
MySQL作為關系型數據庫,被用來存儲持久化的數據,避免不了需要創建表。如果沒有利用ORM(對象關系模型)來自動創建表,則需要開發者通過圖形界面(Navicat)或者手寫MySQL語句。

MySQL-關于數據庫建表的一些關點和建議

MySQL作為關系型數據庫,被用來存儲持久化的數據,避免不了需要創建表。如果沒有利用ORM(對象關系模型)來自動創建表,則需要開發者通過圖形界面(Navicat)或者手寫MySQL語句。

由于在生產環境下,我們對MySQL數據庫的操作通常是通過命令行進行操作,因此,建議建表的時候也手寫MySQL語句(不建議用圖形界面建表)。

1、添加注釋的格式

在編寫MySQL語句時,我們通常會被要求加上注釋,推薦的注釋格式為:

MySQL-關于數據庫建表的一些關點和建議

理由:這種注釋格式MySQL解析器也會認為是注釋的,然后,會正確執行你的create table相關語句。我們通常將要更改的sql語句整理到一個1.0.0.sql文件中,然后,你只需要登錄MySQL客戶端,輸入:source /文件目錄/1.0.0.sql。因此,這樣的注釋可以達到一舉兩得的目的。

2、指定表的引擎和缺省的編碼格式以及該表的說明

示例語句如下:

MySQL-關于數據庫建表的一些關點和建議

理由:上述顯示的指定使用的引擎為innodb,在5.6之前默認的引擎是MyISAM,而現在主流推薦性能較好的是innodb,具體參考:高性能MySQL 這本書。上述也指定了缺省字符集為utf8,還有不要漏掉使用comment來注釋下這張表的用途,便于其他開發人員了解這張表的意圖。

3、一個經典的建表語句示例并分析

示例語句如下:

MySQL-關于數據庫建表的一些關點和建議

需要注意的點如下:

1)所有的字段要加commet注釋

由于我們創建的表也可能被其他人所用,因此加上comment注釋,其他人或者我們自己可以通過命令show create tabletb_example來查看表的結果信息。

2)、int 符號確定

如果確定整形為非負數,就將int設置為無符號型的,即int unsigned,可以多一半的值范圍,又能避免插入負數。int設置為無符號的場景在很多場合都使用。

3)、不定長varchar的長度設置

對于不定長字符串varchar如果不確定字符串長度(且知道字符串長度小于255)可以設置為vachar(255),此時,存儲空間只比正常的多一個字節(與設置varcahr(10)額外存儲的空間是一樣的),又能夠最大限度的利用varchar的特定。注意:超過255則用于存儲該長度的空間會多于一個字節。具體參考:高性能MySQL。

4)、有限狀態的類型設置

對于表示狀態數值的數據類型建議設置為tinyint unsigned(只占用一個字節的空間) 可以表示0到255的范圍。注意:無需用int,占用四個字節的空間。

5)字段創建時間ctime和修改時間mtime

每個表中盡量加上字段創建時間ctime和字段修改時間mtime,便于后期排查問題,知道該條記錄是何時插入,何時修改。

6)、日期時間設置為int時的查詢

這里的ctime表示創建時間,用的是unix時間戳來存儲,但是不能設置缺省值unix_timestamp(),我們在實際查詢的時候,可以使用from_unixtime(ctime)來將unix時間戳轉為date日期格式

示例如下:

MySQL-關于數據庫建表的一些關點和建議

效果如下:

MySQL-關于數據庫建表的一些關點和建議

7)所有的字段盡量設置為not null。

8)盡可能的設置default的值

比如:app_name 中通過設置default ‘’,click_cnt設置default ‘0’。

9)將有可能要進行查詢的字段設置為索引

比如:key idx_date(“date”),這里因為可能會查詢一段時間內的數據,因此添加字段“date”的索引。注意:一般索引的命名規則是idx_字段名

10)設置唯一索引

根據業務確定哪些字段或者字段組合的值是唯一的,則將該字段或字段組合設置為唯一索引。

比如:unique keyunique_date_appid(“date”, “app_id”) 這里因為根據業務我們只要對于具體的某一天具體的某個應用的記錄一定只能有一條,因此,設置聯合唯一索引可以防止改天對應的該應用的數據重復插入。注意:唯一索引的命名規則為:unique_字段1_字段2。

11)SQL PRIMARY KEY 約束

PRIMARY KEY 約束唯一標識數據庫表中的每條記錄。

主鍵必須包含唯一的值。

主鍵列不能包含 NULL 值。

每個表都應該有一個主鍵,并且每個表只能有一個主鍵。

一個小知識點:

由于我們添加了唯一索引unique_date_appid,如果插入重復的date 和 app_id組合,則會報聯合索引重復錯誤,比如,再次執行:

MySQL-關于數據庫建表的一些關點和建議

提示:

MySQL-關于數據庫建表的一些關點和建議

我們可以通過返回結果result進行判斷,如果result為0,則表示重復插入。 

責任編輯:龐桂玉 來源: 今日頭條
相關推薦

2013-04-07 10:40:55

前端框架前端

2011-07-27 15:01:48

MySQL數據庫內存表

2020-08-07 08:04:03

數據庫MySQL技術

2021-09-07 10:12:25

分布式數據庫集群

2011-09-01 15:39:43

QT數據庫

2021-09-15 09:51:36

數據庫架構技術

2012-11-09 10:46:24

Canonical

2021-09-27 10:04:03

Go程序處理

2021-09-27 15:33:48

Go 開發技術

2018-11-20 14:24:46

數據分析數據庫統計

2015-01-23 16:48:44

王巍Swift學習AppleWatch開

2011-07-29 15:58:53

SGAOracle

2010-05-21 13:34:53

MySQL數據庫

2011-08-15 14:52:07

數據庫登錄名數據庫用戶名

2022-03-24 20:44:53

數據庫索引SQL

2018-07-30 08:41:48

VueReact區別

2018-06-21 14:50:00

2011-03-10 13:19:47

Oracle數據庫

2019-10-08 10:25:00

MySQL數據庫DNS

2011-07-13 09:13:56

Android設計
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 日韩精品一区二区三区中文在线 | 国产精品成人国产乱一区 | 国产人成精品一区二区三 | 中文字幕在线视频网站 | 99精品国产一区二区三区 | 欧美精品成人 | 91麻豆精品国产91久久久更新资源速度超快 | 久色激情 | 国产成人午夜精品影院游乐网 | 亚洲国产精久久久久久久 | 国产精品污www一区二区三区 | 小草久久久久久久久爱六 | 日韩av在线中文字幕 | 浮生影院免费观看中文版 | 亚洲精品日韩在线 | 国内精品久久久久久久影视简单 | 久久精品电影 | 国产激情在线播放 | 亚洲首页 | a级黄色网 | 亚洲第一网站 | 国产高清免费 | 一区二区三区欧美在线 | 亚洲三区在线观看 | 久久久久久中文字幕 | www.888www看片 | 中文字幕第二十页 | 黄色日本视频 | 国产视频91在线 | 美女福利视频一区 | 99热这里只有精品8 激情毛片 | 亚洲国产成人精品女人久久久 | 国产精品久久久久永久免费观看 | 婷婷福利 | 精品一区二区三区不卡 | 久久久91精品国产一区二区精品 | 伊人激情网 | 中文字幕不卡在线观看 | 久久九九影视 | 综合国产第二页 | 亚洲一区自拍 |