本篇文章為大家帶來了關於mysql字段類型的相關知識,做了個總結,希望對大家有幫助。
前言:
要了解一個資料庫,我們必須了解其支援的資料類型。 MySQL 支援大量的欄位類型,其中常用的也有很多。前面文章我們也講過 int 及 varchar 類型的用法,但一直沒有全面講過字段類型,本篇文章我們將把字段類型一網打盡,講一講常用字段類型的用法。
常用的欄位類型大致可以分為數值型別、字串型、日期時間型別三大類,以下我們依照分類依序來介紹下。
數值型別大類又可以分為整數、浮點型、定點型三小類。
整數型主要用來儲存整數值,主要有以下幾個欄位型別:
整數型常被用到,像是tinyint、int、 bigint 。預設是有符號的,若只需儲存無符號值,可增加 unsigned 屬性。
int(M)中的M 代表最大顯示寬度,並不是說int(1) 就不能儲存數值10了,不管設定了顯示寬度是多少個字符,int 都是佔用4個字節,即int(5)和int(10)可儲存的範圍一樣。
儲存位元組越小,佔用空間越小。所以本著最小化儲存的原則,我們要盡量選擇合適的整數類型,例如:儲存一些狀態值或人的年齡可以用tinyint ;主鍵列,無負數,建議使用int unsigned 或bigint unsigned,預估欄位數字取值會超過42 億,使用bigint 型。
浮點型主要有float,double 兩個,浮點型在資料庫中存放的是近似值,例如float(6,3),如果插入一個數123.45678,實際資料庫裡存的是123.457,但總個數也以實際為準,即6位,整數部分最大是3位。 float 和 double 平常用的不太多。
定點型欄位類型有 DECIMAL 一個,主要用於儲存有精度要求的小數。
DECIMAL 從 MySQL 5.1 引入,列的宣告語法是 DECIMAL(M,D) 。 NUMERIC 與 DECIMAL 同義,如果欄位類型定義為 NUMERIC ,則會自動轉成 DECIMAL 。
對於宣告語法 DECIMAL(M,D) ,自變數的值範圍如下:
例如欄位salary DECIMAL(5,2),能夠儲存具有五位數字和兩位小數的任何值,因此可以儲存在salary列中的值的範圍是從-999.99到999.99 。
字串型別也常用到,常用的幾個型別如下表:
##其中char和varchar 是最常使用的。 char 類型是定長的,MySQL 總是根據定義的字串長度分配足夠的空間。當儲存 char 值時,在它們的右邊填充空格以達到指定的長度,當檢索到 char 值時,尾部的空格被刪除掉。 varchar 類型用於儲存可變長字串,儲存時,如果字元沒有達到定義的位數,也不會在後面補空格。 char(M) 與 varchar(M) 中的 M 表示保存的最大字元數,單字母、數字、中文等都是佔用一個字元。 char 適合儲存很短的字串,或所有值都接近同一個長度。例如,char 非常適合儲存密碼的 MD5 值,因為這是一個定長的值。對於字串很長或所要儲存的字串長短不一的情況,varchar 更適合。 我們在定義欄位最大長度時應該按需分配,提前做好預估,能使用 varchar 類型就盡量不使用 text 類型。除非有儲存長文本資料需求時,請考慮使用 text 類型。 BLOB 類型主要用於儲存二進位大對象,例如可以儲存圖片,音訊視訊等檔案。日常很少用到,有儲存二進位字串時可以考慮使用。 3.日期時間類型MySQL支援的日期和時間類型有YEAR 、TIME 、DATE 、DATETIME 、TIMESTAMP,幾種型別比較如下:
涉及日期和時間欄位類型選擇時,根據儲存需求選擇合適的類型即可。
關於 DATETIME 與 TIMESTAMP 兩種類型如何選用,可以按照存儲需求來,例如要求存儲範圍更廣,則建議使用 DATETIME ,如果只是存儲當前時間戳,則可以使用 TIMESTAMP 類型。不過值得注意的是,TIMESTAMP 欄位資料會隨著系統時區而改變但 DATETIME 欄位資料不會。整體來說 DATETIME 使用範圍更廣。
總結:
這篇文章主要介紹了MySQL 中常用的欄位類型,平常用到的欄位類型基本上都在這裡了,以一張心智圖總結如下:
推薦學習:mysql影片教學
以上是最全解析:MySQL欄位類型的詳細內容。更多資訊請關注PHP中文網其他相關文章!