MySQL MySQL資料庫支援的資料型別

2021-06-22 13:16:17 字數 3201 閱讀 2932

在資料庫中,資料型別對於設計資料庫者來說十分重要,記得在一次資料庫大會上,某前輩說了這麼一句話:「如果是我面試dba,我第乙個問題就是關於tinyint、smallint、mediumint、int、bigint的區別,如果這些不能詳細解釋,後面不管他表現的多好,我不會考慮」,從這裡可以理解掉mysql的資料型別是多麼重要,很多人特別是開發人員往往不會關注這方面,從理解上大家會任務資料庫對記憶體等方面要求很高,這些資料型別並不是很重要,其實他忽略了乙個關鍵的因素,磁碟io,如果資料型別設定的不合理,會占用很大的磁碟空間,會給資料帶來io上得瓶頸,下面我們就詳細的學習下mysql支援的資料型別

1:數值型別

整數型別

位元組最小值

最大值tinyint

1有符號-128

無符號0

有符號127

無符號255

smllint

2有符號-32768

無符號0

有符號32767

無符號65535

mediumint

3有符號-8388608

無符號0

有符號8388607

無符號16777215

int、integer

4有符號-2147483748

無符號0

有符號2147483747

無符號4294967295

bigint

8有符號-9223372036854775808

無符號0

有符號9223372036854775807

無符號18446744073709551615

浮點數型別

位元組最小值

最大值float

4+_1.17549435-38

+_3.402823466e+38

double

8+_2.225073858507204e-308

+_1.7976931348623157e+308

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

所有的整數型別都有乙個可選屬性unsigned(無符號),如果需要在字段裡面儲存非負數或者需要較大的上限值時,可以用此選項,他的取值範圍是正常值的下限取0,上限取原值的2倍

另外,整數型別還有乙個屬性,auto_imcrement。在需要產生唯一標示符或順序值時,可利用此屬性,這個屬性只用於整數型別,auto_increment值一般從1開始,每行加1

2:日期時間型別

mysql中友很多種資料型別可以用於日期和時間的表示,不同的版本可能有所差異,下表列出5.0所支援的日期和時間型別

日期和時間型別

位元組最小值

最大值date

41000-01-01

9999-12-31

datetime

81000-01-01 00:00:00

9999-12-31 23:59:59

timestamp

419700101080001

2023年的某個時刻

time

3-838:59:59

838:59:59

year

11901

2155

上述型別,除了timestamp外都容易理解,下面我們就timestamp和datetime進行對比

1:timestamp支援的時間範圍小,其取值範圍從19700101080001到2023年的某個時刻,而datetime是從1000-01-01 00:00:00到9999-12-31 23:59:59,範圍更大

2:表中的第乙個timestamp列自動設定為系統時間,如果在乙個timestamp中插入null,則該列賦值將自動設定為當前的日期和時間,再插入或者更新一行但不明確給timestamp列賦值時也會子偶那個設定該列的當前的時間和日期,當插入的值超出取值範圍,mysql認為該值溢位,使用「0000-00-00 00:00:00」進行填補

3:timestamp的插入和查詢都受當地時區的影響,更能反應出實際的日期。而datetime則只能反應出插入時當地的時區,其他時區的人檢視資料必然會受到影響

4:timestamp的屬性受mysql版本和伺服器sqlmode的影響很大

3:字串型別

mysql提供了很多種對字元資料的儲存型別,下表就詳細進行了對比

字串型別

位元組描述及儲存需求

char(m)

mm為0~255之間的整數

varchar(m)

m為0~65535之間的整數,值的長度+1個位元組

tinyblob

允許長度0~255位元組,值的長度+1個位元組

blob

允許長度0~65535位元組,值的長度+2個位元組

mediumblob

允許長度0~167772150,值的長度+3個位元組

longblob

允許長度0~4294967395,值的長度+4個位元組

tinytext

允許長度0~255,值的長度+2個位元組

text

允許長度0~65535位元組,值的長度+2個位元組

mediumtext

允許長度0~167772150,值的長度+3個位元組

longtext

允許長度0~4294967395,值的長度+4個位元組

varbinary( m)

允許長度0~m個位元組的變長字串,值的長度+1個位元組

binary(m)

m允許長度0~m個位元組的變長字串

char和varchar型別

char和varchar很類似,都用來儲存mysql中較短的字串,二者的主要區別在於儲存方式的不同,char列的長度固定為建立表時的長度,長度可以為從0~255任何值。而varchar列中的值為可變長字串,長度可以為指定的0~255或者65535之間的值。在檢索的時候,char列刪除了尾部的空格,而varchar保留了這些空格。會造成索引儲存大小上的變化,所以在設定這個型別的時候一定要慎重,充分分析現有業務

binary和varbinary型別

binary和varbinary類似於char和varchar,不同的是它們包含二進位制串而不包含非二進位制字串。

text和bolb型別

這2種主要用於儲存一些大字段類似於等,慎用……

資料庫 MYSQL MySql資料庫使用者密碼的修改

環境 作業系統 win2003 mysql mysql ver 12.22 distrib 4.0.18,for win95 win98 i32 思想 為了安全加密需要設定mysql資料庫相關使用者的密碼 mysql資料庫的密碼都是儲存在mysql資料庫例項的user表中的password欄位裡,通...

資料庫mysql MySQL軟體安裝

軟體名稱及版本 mysql installer community 5.7.20.0 是可以同時支援32位和64位系統的 軟體名稱及版本 mysql installer community 5.7.20.0 a 雙擊開啟安裝程式 勾選 i accept the license terms 選擇 cu...

資料庫系統mysql MySQL資料庫系統

1 mysql的特點 1 多執行緒 多使用者 2 基於c s 客戶端 伺服器 架構 3 簡單易用 查詢速度快 4 安全可靠 2 mysql編譯安裝 代表鍵盤上tab鍵 1 準備工作 解除安裝使用rpm方式安裝的mysql rpm e mysql nodeps 安裝cmake包 cd media ta...