mysql學習筆記 字段型別(一)

2021-06-01 10:32:13 字數 2845 閱讀 1912

mysql欄位型別研究,字段型別有下面幾個大類:數值型別、日期和時間型別、string型別

mysql支援所有標準sql數值資料型別。這些型別包括嚴格數值資料型別(integer、smallint、decimal和numeric),以及近似數值資料型別(float、real和double precision)。關鍵字int是integer的同義詞,關鍵字dec是decimal的同義詞。

整數型別所佔的位元組數以及能儲存的最大最小值:

型別位元組

最小值(帶符號的/無符號的)

最大值(帶符號的/無符號的)

tinyint

1-128/0

127 / 255

smallint

2-32768/0

32767 / 65535

mediumint

3-8388608 / 0

8388607 / 16777215

int4

-2147483648 / 0

2147483647 / 4294967295

bigint

8-9223372036854775808 / 0

9223372036854775807 /18446744073709551615

mysql還支援選擇在該型別關鍵字後面的括號內指定整數值的顯示寬度(例如,int(4))。該可選顯示寬度規定用於顯示寬度小於指定的列寬度的值時從左側填滿寬度。

int後面的4不表示該字段能儲存的只是4位的整數,而表示的是這個字段顯示的寬度為4位,不限於大於4位的數值的顯示。當結合可選擴充套件屬性zerofill使用時, 預設補充的空格用零代替。例如,對於宣告為int(5) zerofill的列,值4檢索為00004,而123456則正常顯示為123456。

mysql中的unsigned表示為該值為無符號數,zerofill為不足位數時用0來填充。

float和double為mysql中的浮點數的儲存方式,float為單精度占用4個位元組,double為雙精度占用8個位元組。mysql允許使用非標準語法:float(m,d)或real(m,d)或double precision(m,d)。這裡,「(m,d)」表示該值一共顯示m位整數,其中d位位於小數點後面。例如,定義為float(7,4)的乙個列可以顯示為-999.9999。mysql儲存值時進行四捨五入,因此如果在float(7,4)列內插入999.00009,近似結果是999.0001。

decimal和numeric型別在mysql中視為相同的型別。它們用於儲存必須為確切精度的值,例如貨幣資料。當宣告該型別的列時,可以(並且通常要)指定精度和標度;例如:

salary decimal(5,2)
在該例子中,5是精度,2是標度。精度表示儲存值的主要位數,標度表示小數點後面可以儲存的位數,如123.45,總位數為5位,小數點後有2位。

bit資料型別可用來儲存位字段值。bit(m)型別允許儲存m位值。m範圍為1到64。

要指定位值,可以使用b'value'符。value是乙個用0和1編寫的二進位制值。例如,b'111'和b'100000000'分別表示7和128。

如果為bit(m)列分配的值的長度小於m位,在值的左邊用0填充。例如,為bit(6)列分配乙個值b'101',其效果與分配b'000101'相同。

如果int列是unsigned,列範圍的大小相同,但其端點會變為到0和4294967295。如果你試圖儲存-9999999999和9999999999,以非嚴格模式儲存到列中的值是0和4294967296。

表示時間值的date和時間型別為datetime、date、timestamp、time和year。每個時間型別有乙個有效值範圍和乙個「零」值,當指定不合法的mysql不能表示的值時使用「零」值。

列型別

」值

datetime

'0000-00-00 00:00:00'

date

'0000-00-00'

timestamp

time

'00:00:00'

year

當你需要同時包含日期和時間資訊的值時則使用datetime型別。mysql以'yyyy-mm-dd hh:mm:ss'格式檢索和顯示datetime值。支援的範圍為'1000-01-01 00:00:00'到'9999-12-31 23:59:59'。

當你只需要日期值而不需要時間部分時應使用date型別。mysql用'yyyy-mm-dd'格式檢索和顯示date值。支援的範圍是'1000-01-01'到'9999-12-31'。

timestamp列的顯示格式與datetime列相同。換句話說,顯示寬度固定在19字元,並且格式為yyyy-mm-dd hh:mm:ss。記住儘管可以使用相同的格式指定datetime、date和timestamp值,不同型別的值的範圍卻不同。例如,timestamp值不能早於1970或晚於2037。這說明乙個日期,例如'1968-01-01',雖然對於datetime或date值是有效的,但對於timestamp值卻無效,如果分配給這樣乙個物件將被轉換為0。

mysql以'hh:mm:ss'格式檢索和顯示time值(或對於大的小時值採用'hhh:mm:ss'格式)。time值的範圍可以從'-838:59:59'到'838:59:59'。小時部分會因此大的原因是time型別不僅可以用於表示一天的時間(必須小於24小時),還可能為某個事件過去的時間或兩個事件之間的時間間隔(可以大於24小時,或者甚至為負)。

year型別是乙個單位元組型別用於表示年。mysql以yyyy格式檢索和顯示year值。範圍是1901到2155。字段值需要儲存年型別時,可以使用此型別,year型別儲存只佔乙個位元組。

MySQL 字段型別筆記

乙個完整的日期格式為 yyyy mm dd hh mm ss fraction 它可分為兩部分 date部分和time部分,其中,date部分對應格式中的 yyyy mm dd time部分對應格式中的 hh mm ss fraction 對於date欄位來說,它只支援date部分,如果插入了tim...

MySQL學習筆記(三) 資料與字段型別

回顧資料庫系統組成。資料表是乙個資料庫裡面用來儲存資料的基本單元,是由表結構 表資料組成。sql語句不區分大小寫,但是表就是乙個檔名,windows不區分大小寫,linux區分大小寫,所以在命名時候,需要注意 1 一定要有意義 英文或英文組合和多個單詞的縮寫 2 自己定義的名稱最好都是小寫 3 sq...

mysql欄位型別解析 MySQL欄位型別最全解析

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