mysql文章字段 MySQL欄位型別最全解析

2021-10-18 20:33:07 字數 2344 閱讀 4712

前言:

要了解乙個資料庫,我們必須了解其支援的資料型別。mysql 支援大量的字段型別,其中常用的也有很多。前面文章我們也講過 int 及 varchar 型別的用法,但一直沒有全面講過字段型別,本篇文章我們將把字段型別一網打盡,講一講常用字段型別的用法。

常用的字段型別大致可以分為數值型別、字串型別、日期時間型別三大類,下面我們按照分類依次來介紹下。

1.數值型別

數值型別大類又可以分為整型、浮點型、定點型三小類。

整型主要用於儲存整數值,主要有以下幾個字段型別:

整型經常被用到,比如 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) ,自變數的值範圍如下:

m是最大位數(精度),範圍是1到65。可不指定,預設值是10。

d是小數點右邊的位數(小數字)。範圍是0到30,並且不能大於m,可不指定,預設值是0。

例如字段 salary decimal(5,2),能夠儲存具有五位數字和兩位小數的任何值,因此可以儲存在salary列中的值的範圍是從-999.99到999.99。

2.字串型別

字串型別也經常用到,常用的幾個型別如下表:

其中 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,幾種型別比較如下:

涉及到日期和時間字段型別選擇時,根據儲存需求選擇合適的型別即可。

關於 datetime 與 timestamp 兩種型別如何選用,可以按照儲存需求來,比如要求儲存範圍更廣,則推薦使用 datetime ,如果只是儲存當前時間戳,則可以使用 timestamp 型別。不過值得注意的是,timestamp 字段資料會隨著系統時區而改變但 datetime 字段資料不會。總體來說 datetime 使用範圍更廣。

總結:

mysql 字段位元組 MySql欄位型別及位元組

字段型別 tinyint 乙個很小的整數。有符號的範圍是 128到127,無符號的範圍是0到255。smallint 乙個小整數。有符號的範圍是 32768到32767,無符號的範圍是0到65535。mediumint 乙個中等大小整數。有符號的範圍是 8388608到8388607,無符號的範圍是...

mysql欄位公式 MySQL(四)欄位及常用函式

一 字段 資料庫表中的每一行叫做乙個 記錄 每乙個記錄包含這行中的所有資訊,但記錄在資料庫中並沒有專門的記錄名,常常用它所在的行數表示這是第幾個記錄。在資料庫中存放在表行列交叉處的資料叫做 值 它是資料庫中最基本的儲存單元,它的位置要由這個表中的記錄和字段來定義。1 字段 filed 與物件或類關聯...

mysql set欄位 MySQL的SET欄位型別

set是乙個字串物件,可以有零或多個值,其值來自表建立時規定的允許的一列值。指定包括多個set成員的set列值時各成員之間用逗號 間隔開。這樣set成員值本身不能包含逗號。例如,指定為set one two not null的列可以有下面的任何值 one two one,two set最多可以有64...