mysql 整數型別 MySQL的資料型別

2021-10-25 14:31:02 字數 2258 閱讀 1436

1.整數

tinyint: 8 bit 儲存空間

smallint: 16 bit 儲存空間

mediumint: 24 bit 儲存空間

int: 32 bit 儲存空間

bigint: 64 bit 儲存空間

分為signen: 有符整數,可儲存正數和負數,如 tinyint signed 表示的範圍是 -127 ~ 128

unsigned: 無符整數,只能儲存正數,但是表示的值是有符整數的兩倍, 如 tinyint unsigned 表示的範圍是 0 ~ 255

有符整數和無符整數只有表示的值大小上的區別,儲存空間和效率上都是一樣的

2.實數

decimal: 可表示比 bigint 還大的正數,儲存時可以指定整數長度和小數字數,如 decimal(18, 9) 表示總長18位,小數點後9位,一共占用9 byte,小數點前4 byte,小數點1 byte, 小數點後4 byte, 一般用於儲存精確資料,如銀行賬目

float: 32 bit, 0~23精度

double: 64 bit,  24~53精度

double和float比起decimal,占用的儲存更少,但是精度沒有decimal高

3.字串

3.1 char和varchar

char:

定長字串,最大長度為255,mysql會分配固定的儲存空間來儲存char,一般來講用在需要經常首席執行官度經變化的update,但最大長度和平均長度相近的列上

char在獲取值時,會將末尾空格刪除,但是在比較值時,末尾的空格則會儲存,效果參見下圖

varchar:

變長字串,最大長度為65535,mysql會分配字串實際長度的空間來儲存varchar,一般來講用在不需要經常執行列值長度變化的update,但是最大長度又遠大於平均長度的列上,因為當列值的長度變化時(例如某列從"jack" => "i want to gank"),需要重新分配需要的儲存空間,會造成額外的效能開銷.

char和varchar總是會使用字元編碼的最大長度來作為單位儲存空間,這是為了保證快取中有足夠的空間來儲存字串,例如使用utf8,雖然utf8是變長字符集(英文1byte,中文3byte),但是varchar(10)仍然會占用30bytes空間,即使裡面乙個中文字也沒有.

另外,varchar會比原長度額外占用1~2個位元組,用來表示字串的長度,當字串長度小於255時占用1 byte, 否則占用 2 byte

查詢時,char去除末尾空格

where字句比較字串時,char保留末尾空格

關於二者的效率:

update時,char的效率會高於varchar的效率,因為varchar是不定長的,當資料長度改變時,需要重新分配儲存空間

3.2 blob和text

blob和text的唯一區別是blob儲存二進位制型別而且沒有字符集好排序規則,而text儲存字元文字,且有字符集和排序規則

它們的排序規則按照 max_short_length 規定長度的前若干個字元進行排序

4.日期和時間型別

datetime: 將日期儲存為yyyymmddhhmmss格式,範圍從1001 ~ 2023年,占用空間 8 byte

timestamp: 將日期儲存為unix時間戳,範圍從1970 ~ 2023年, 占用空間 4byte,並且和時區相關,它的特性是當插入沒有定義timestamp的列時,mysql會自動將時間戳儲存為當前時間,所以一般可用於記錄最後登入時間等.

5.位集資料型別

bit: 最大 64 bit,一般用於儲存乙個true/false值,如bit(1),占用 1 bit,遠小於使用字元表示

set: 用於儲存多個true/false值,可用於許可權管理,效果見下圖

6.列舉

enum: 類似於set,但是只能插入1個值,一般可用來表示性別等唯一且範圍固定的屬性(男,女..)

mysql中整數型別 MySQL中整數型別使用

mysql中整數型別使用 bigint 從 2 63 9223372036854775808 到 2 63 1 9223372036854775807 的整型資料 所有數字 儲存大 mysql中整數型別使用 bigint 從 2 63 9223372036854775808 到 2 63 1 922...

mysql 整數型別

最近使用mysql資料庫的時候遇到了多種數字的型別,主要有int,bigint,smallint和tinyint。其中比較迷惑的是int和smallint的差別。今天就在網上仔細找了找,找到如下內容,留檔做個總結 使用整數資料的精確數字資料型別。bigint 從 2 63 9223372036854...

mysql 整數 mysql整數資料型別深入解析

此處我們給int char沒有給出他們的寬度,系統缺省會給它分配乙個寬度。m指示最大顯示寬度。最大有效顯示寬度是255。顯示寬度與儲存大小或型別包含的值的範圍無關 我們來進行下試驗 mysql root localhost test 03 19 00 create table c id int no...