MySQL的資料型別(一)

2021-10-06 21:04:15 字數 2402 閱讀 4103

每乙個常量、變數和引數都有資料型別、它用來指定一定的儲存格式、約束和有效範圍。mysql提供了多種資料型別、主要有數值型、字串型別、日期和時間型別。不同的mysql版本支援的資料型別可能會稍有不同。

數值型別:

mysql支援所有標準sql 中的數值型別、其中包括了嚴格數值型別、近似數值資料型別、並在此基礎上做了一些擴充套件、增加了三種不同長度的整型。

在整數型別中、按照取值範圍和儲存方式不同、分為tinyint、smallint、mediumint、int和bigint這五種型別,如果超出型別範圍的操作,會發生「out of range」 錯誤提示。為了避免此類問題的發生,在選擇資料型別的時候要根據應用的實際情況確定其取值範圍,最後根據確定的結果去選擇資料型別。

對於整型資料,mysql還支援在型別名稱後面的小括號能指定顯示寬度,例如 int(5) 表示當數值寬度小於5位的時候在數字前面填滿寬度,如果不顯示指定寬度則預設為int(11)。一般配合zerofill使用,zerofill就是用「0」填充的意思,也就是在數字位數不夠的空間用字元「0」填滿。

所有的整數型別都有乙個可選屬性unsigned(無符號),如果需要在字段裡面儲存非負數或者需要較大的上限值時,可以用此選項,他的取值範圍時正常值得下限取0,上限取原值的2倍,例如tinyint有符號範圍是-128~+127,而無符號範圍是0~255。如果乙個列指定為zreofill,則mysql自動為該列新增unsigned屬性。

整數型別還有乙個屬性,auto_increment。在需要產生唯一識別符號或順序值時,可以使用此屬性,這個屬性只能用於整數。atuo_increment值一般從1開始,每行增加1。在插入null到乙個auto_increment列時,mysql插入乙個比該列中當前最大值大1的值。乙個表中最多只能有乙個auto_increment列。對於任何想要使用auto_increment的列,應該定義為not null,並定義為primary key 或者為 unique鍵。

小數型別,mysql分為兩種方式:浮點數和定點數。浮點數包括float(單精度)和double(雙精度),而定點數則只有decimal一種表示。定點數在mysql中以字串的形式存放,比浮點數更準確,適合用來表示貨幣等精度高的資料。

浮點數和定點數都可以在型別名稱後加(m,d)的方式來表示「(m,d)」表示該值一共顯示m位數字(整數字+小數字)其中d位位於小數點後面,m和d又稱為精度和標度。需要注意的是浮點數後面跟「(m,d)」的用法是非標準用法,如果要用於資料庫的遷移,則最好不要這麼使用。float和double在不指定精度時,缺省會按照實際的精度(由實際的硬體和作業系統來決定)來顯示,而decimal在不指定精度時,預設的整數字為10,預設小數字為0。

浮點數如果不寫精度和標度,則會按照實際精度值來顯示,如果有精度和標度,則會自動將四捨五入的結果插入,系統不會報錯;定點數如果不寫精度和標度,則按照預設值decimal(10,0)來進行操作,並且如果資料超越了精度和標度值,系統則會報錯。

bit(位)型別,用於存放字段值,bit(m)可以用來存放多位二進位制數,m範圍從1~64,如果不寫則預設為1位。對於位欄位,直接使用select命令將不會看到結果,可以用bin()

(顯示為二進位制格式)或者hex()(顯示為十六進製制格式)函式來進行讀取。

日期時間型別:

mysql中有多種資料型別可以用於日期和時間的表示,不同的版本可能有所差異,這些資料型別主要區別如下:

1.如果用來表示年月日,通常使用date來表示。位元組:4,最小值:1000-01-01,最大值:9999-12-31

2.如果用來表示年月日時分秒,通常使用datetime來表示。位元組:8,最小值:1000-01-01 00:00:00,最大值:9999-12-31 23:59:59

3.如果用來表示時分秒,通常使用time來表示。位元組:4,最小值:-838:59:59,最大值:838:59:59

4.如果需要經常插入或者更新時間為當前系統時間,則通常是用timestamp來表示。timestamp值返回後顯示為「yyy-mm-dd hh:mm:ss」格式的字串,顯示寬度固定位19個字元,如果想要獲得數字值,應在timestamp列新增「+0」。位元組:4,最小值:19700101080001,最大值:2023年的某個時刻

5.如果中表示年份,可以使用year來表示,它比date占用更少的空間,year有2位或4位格式的年,預設為4位格式。在4位格式中,允許的值:1901-2155和0000.在2位中,允許的值:70-69,表示1970-2023年。mysql以yyyy格式顯示年year值(從5.5.27開始,2位格式的year已不被支援)。位元組:1,最小值:1901,最大值:2155

每個日期時間型別都有乙個有效值範圍,如果超出這個範圍,在預設的sqlmode下,系統會進行錯誤提示,並將以零值來進行儲存。

timestamp還有乙個重要特點,就是和時區相關。當插入日期時,會先轉換為本地時區後存放;而從資料庫取出時,也同樣需要將日期轉換為本地時區後顯示。這樣,兩個不同時區的使用者看到的同乙個日期可能不一樣。

mysql資料型別用法 mysql資料型別和用法

歡迎進入linux社群論壇,與200萬技術人員互動交流 進入 mysql支援多種列型別 數值型別 日期 時間型別和字串 字元 型別。本章首先對這些列型別進行了概述,然後更加詳細地描述了各種列的型別,以及列型別儲存需求的總結。概述很簡單。關於具體列型別 歡迎進入linux社群論壇,與200萬技術人員互...

mysql 資料型別 真假 MySQL 資料型別

mysql基礎 資料型別 整型型別 根據所儲存的整數數值取值範圍不同,可分為以下五類 1 tinyint佔1個位元組 2 smallint佔2個位元組 3 mediumint 佔3個位元組 4 int佔4個位元組 5 bigint佔8個位元組 根據每種型別所佔的位元組數可確定其無符號整數和有符號整數...

mysql 郵箱 資料型別 mysql 資料型別

1 整型mysql資料型別含義 有符號 tinyint m 1個位元組 範圍 128 127 smallint m 2個位元組 範圍 32768 32767 mediumint m 3個位元組 範圍 8388608 8388607 int m 4個位元組 範圍 2147483648 21474836...