前言:
要了解乙個資料庫,我們必須了解其支援的資料型別。mysql 支援大量的字段型別,其中常用的也有很多。前面文章我們也講過 int 及 varchar 型別的用法,但一直沒有全面講過字段型別,本篇文章我們將把字段型別一網打盡,講一講常用字段型別的用法。
常用的字段型別大致可以分為數值型別、字串型別、日期時間型別三大類,下面我們按照分類依次來介紹下。
1.數值型別
數值型別大類又可以分為整型、浮點型、定點型三小類。
整型主要用於儲存整數值,主要有以下幾個字段型別:
image.png
整型經常被用到,比如 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 平時用的不太多。
image.png
定點型字段型別有 decimal 乙個,主要用於儲存有精度要求的小數。
image.png
decimal 從 mysql 5.1 引入,列的宣告語法是 decimal(m,d) 。 numeric 與 decimal 同義,如果字段型別定義為 numeric ,則將自動轉成 decimal 。
對於宣告語法 decimal(m,d) ,自變數的值範圍如下:
m是最大位數(精度),範圍是1到65。可不指定,預設值是10。
d是小數點右邊的位數(小數字)。範圍是0到30,並且不能大於m,可不指定,預設值是0。
例如字段 salary decimal(5,2),能夠儲存具有五位數字和兩位小數的任何值,因此可以儲存在salary列中的值的範圍是從-999.99到999.99。
2.字串型別
字串型別也經常用到,常用的幾個型別如下表:
image.png
其中 char 和 varchar 是最常用到的。char 型別是定長的,mysql 總是根據定義的字串長度分配足夠的空間。當儲存 char 值時,在它們的右邊填充空格以達到指定的長度,當檢索到 char 值時,尾部的空格被刪除掉。varchar 型別用於儲存可變長字串,儲存時,如果字元沒有達到定義的位數,也不會在後面補空格。
char(m) 與 varchar(m) 中的的 m 表示儲存的最大字元數,單個字母、數字、中文等都是占用乙個字元。char 適合儲存很短的字串,或者所有值都接近同乙個長度。例如,char 非常適合儲存密碼的 md5 值,因為這是乙個定長的值。對於字串很長或者所要儲存的字串長短不一的情況,varchar 更加合適。
我們在定義字段最大長度時應該按需分配,提前做好預估,能使用 varchar 型別就盡量不使用 text 型別。除非有儲存長文字資料需求時,再考慮使用 text 型別。
3.日期時間型別
mysql支援的日期和時間型別有 year 、time 、date 、datetime 、timestamp,幾種型別比較如下:
image.png
涉及到日期和時間字段型別選擇時,根據儲存需求選擇合適的型別即可。
關於 datetime 與 timestamp 兩種型別如何選用,可以按照儲存需求來,比如要求儲存範圍更廣,則推薦使用 datetime ,如果只是儲存當前時間戳,則可以使用 timestamp 型別。不過值得注意的是,timestamp 字段資料會隨著系統時區而改變但 datetime 字段資料不會。總體來說 datetime 使用範圍更廣。
總結:image.png
mysql密碼字段型別 MySQL欄位型別最全解析
前言 要了解乙個資料庫,我們必須了解其支援的資料型別。mysql 支援大量的字段型別,其中常用的也有很多。前面文章我們也講過 int 及 varchar 型別的用法,但一直沒有全面講過字段型別,本篇文章我們將把字段型別一網打盡,講一講常用字段型別的用法。常用的字段型別大致可以分為 數值型別 字串型別...
mysql 字段 MySQL欄位型別詳解
mysql支援大量的列型別,它可以被分為3類 數字型別 日期和時間型別以及字串 字元 型別。本節首先給出可用型別的乙個概述,並且總結每個列型別的儲存需求,然後提供每個類中的型別性質的更詳細的描述。概述有意簡化,更詳細的說明應該考慮到有關特定列型別的附加資訊,例如你能為其指定值的允許格式。由mysql...
mysql表示字段 MySQL欄位型別
1 字段型別 字段型別分別為 數值型別 字串型別 日期時間型別。1.1 數值型別 數值型別分為整數型別和小數型別。整數型別為tinyint smallint mediumint int bigint。小數型別分為浮點型和定點型,有float double decimal。1.1.1 tinyint ...