MySQL資料庫資料型別概述

2021-10-21 18:01:26 字數 3947 閱讀 8172

mysql資料型別官方文件  ,在此選擇常用的簡要總結介紹。

1. 整數型別

型別名稱

儲存需求

取值範圍(有符號)

tinyint(m)

1個位元組

-128~127

smallint(m)

2個位元組

-32768~32767

mediumint(m)

3個位元組

-8388608~8388607

int(m)

4個位元組

-2147483648~2147483647

bigint(m)

8個位元組

-9223372036854775808~9223372036854775807

m表示該資料型別指定的顯示寬度,指定能夠顯示的數值中數字的個數。比如說,定義:year int(4),宣告乙個只顯示4位數字寬度表示年的字段。

顯示寬度和資料型別的取值範圍是無關的。

2. 浮點資料型別和定點數型別

mysql中使用浮點數和定點數來表示小數。它們都可以用(m,n)來表示,其中m稱為精度,表示總共的位數;n稱為標度,是表示小數的位數。

型別名稱

儲存需求

取值範圍(有符號)

float(m,d)

單精度浮點型,4位元組

-3.402823466e+38~-1.175494351e-38

double(m,d)

雙精度浮點型,8位元組

-1.7976931348623157e+308~-2.2250738585072014e-308

decimal(m,d)

定點數。如果m>d,為m+2否則為d+2 依賴於m和d的值 依賴於m和d的值 小數值

可能最大取值範圍與double一致

浮點型在資料庫中存放的是近似值,而定點型別在資料庫中存放的是精確值。不論是定點還是浮點型別,如果使用者指定的精度超出精度範圍,則會四捨五入進行處理。

3. 日期時間型別

當只記錄年資訊的時候,可以只使用year型別,而沒必要使用date型別。當指定確實不合法的值時系統將「零」值插入到資料庫中。

型別名稱

日期格式

取值範圍

儲存需求

year

yyyy

1901~2155

1位元組time

hh:mm:ss

-838:59:59~838:59:59

3位元組date

yyyy-mm-dd

1000-01-01~9999-12-31

3位元組datetime

yyyy-mm-dd hh:mm:ss 

1000-01-01 00:00:00~9999-12-31 23:59:59

8位元組 

timestamp

yyyy-mm-dd hh:mm:ss

1970-01-01 00:00:01~2038-01-19 03:14:07

4位元組time型別的取值範圍如此大的原因是time不僅可以表示一天的時間,還可以是乙個大的時間段。

timestamp值的儲存是以utc(世界標準時時間)格式儲存的,儲存時對當前時區進行轉換,檢索時再轉換為當前時區。即查詢時,根據當前時區的不同,顯示的時間值不不同的。

4. 字串

型別名稱

說明

儲存需求

char(m)

固定長度的字串

m位元組,1<=m<=255

varchar(m) 

變長字串

l+1位元組,在此l<=m和1<=m<=255

tinytext 

非常小的字串

l+1位元組,在此l<2^8

text 

小的字串

l+2位元組,在此l<2^16

mediumtext 

中等大小的字串

l+3位元組,在此l<2^24

longtext 

大的字串 

l+4位元組,在此l<2^32

enum

列舉型別,只能有乙個列舉字串值

1或2個位元組,取決於列舉值的數目(最大值65535)

set 

乙個集合,字串物件可以有零個或多個set成員 

1,2,3,4或8個位元組,取決於集合成員的數量(最多64個成員) 

enum列總有乙個預設值。如果將enum列宣告為null,null值則為該列的乙個有效值,並且預設值為null。如果enum列被宣告為not null,其預設值為允許的值列表的第1個元素。

例:enum(「member1″, 「member2″, … 「member65535″)

enum資料型別就是定義了一種列舉,最多包含65535個不同的成員。當定義了乙個enum的列時,該列的值限制為列定義中宣告的值。如果列宣告包含null屬性,則null將被認為是乙個有效值,並且是預設值。如果宣告了not null,則列表的第乙個成員是預設值。

set(「member」, 「member2″, … 「member64″)

set資料型別為指定一組預定義值中的零個或多個值提供了一種方法,這組值最多包括64個成員。值的選擇限制為列定義中宣告的值。

5. 二進位制型別

型別名稱

說明

儲存需求

bit(m)

位欄位型別

大約(m+7)/8個位元組

binary(m) 

固定長度二進位制字串

m個位元組

varbinary(m)

可變長度二進位制字串

m+1個位元組

tinyblob(m)

非常小的blob

l+1位元組,在此l<2^8

blob(m)

小blob

l+2位元組,在此l<2^16

mediumblob(m)

中等大小的blob

l+3位元組,在此l<2^24

longblob(m)

非常大的blob

l+3位元組,在此l<2^32

blob列儲存的是二進位製大物件(位元組字串);text列儲存的是非二進位制字串(字元字串)。blob列沒有字符集,並且排序和比較基於值位元組的數值;text列有乙個字符集,並且根據字符集對值進行排序和比較。

關於auto_increment屬性的說明

auto_increment 可以通過此屬性為新的行產生唯一的標識

auto_increment能為新插入的行賦乙個唯一的整數識別符號。為列賦此屬性將為每個新插入的行賦值為上一次插入的id+1。

mysql要求將auto_increment屬性用於作為主鍵的列。此外,每個表只允許有乙個auto_increment列。例如:

id smallint not null auto_increment primary key

你可以使用last_insert_id()sql函式來查詢最新的auto_increment值。

如何選擇合適的mysql資料型別

資料型別的合理選擇,有利於我們在檢索時,更快的獲取資料,或者更精確的進行計算。這個問題不簡單,牽扯很大,如:使用適合儲存引擎、具體儲存的特點、實現的意圖等,需要綜合考慮和實踐經驗,在此就不多介紹了,可參見: 

mysql資料庫資料型別

1 數值型別 類 型大 小 範圍 有符號 範圍 無符號 用 途tinyint 1 位元組 128 127 0 255 微小整數 smallint 2 位元組 32768 32767 0 65535 小整數mediumint 3 位元組 223 223 1 0 2 24 1 中整數int 4 位元組 ...

MySQL資料型別概述

toc 資料表的基本操作等 一 mysql資料型別 一般常用的資料型別有 數值型別 日期和時間型別 字元型別 數值型別 數值型別 整形型別 mysql的整形型別有 tinyint smallint mediumint int bigint。型別名稱 說明儲存需求 tinyint 很小的整數 1個位元...

mysql資料庫資料項型別 資料庫資料型別有哪些

mysql中定義資料欄位的型別對你資料庫的優化是非常重要的。mysql支援多種型別,大致可以分為三類 數值 日期 時間和字串 字元 型別。一 數值型別 mysql支援所有標準sql數值資料型別。這些型別包括嚴格數值資料型別 integer smallint decimal和numeric 以及近似數...