Mysql字串型別

2021-10-03 08:00:27 字數 1631 閱讀 2474

mysql提供了多種對字元資料的儲存型別,不同的版本可能有所差異。以5.0版本為例,mysql包括了char、varchar、binary、varbinary、blob、text、enum和set等多種字串型別。下表詳細列出了這些字串的比較。

字串型別

位元組描述和儲存需求

char(m)

mm為0~255之間的整數

varchar(m)

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

tinyblob

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

mediumblob

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

blob

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

longblob

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

tinytext

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

mediumtext

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

text

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

longtext

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

varbinary(m)

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

binary(m)

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

1.char和varchar型別

char和varchar很類似,都用來儲存mysql中較短的字串。二者的主要區別在於儲存方式的不同:char列的長度固定位建立表時宣告的長度,長度可以為從0255的任何值;而varchar列中的值為可變長字串,長度可以指定為0255(mysql 5.0.3版本以前)或者65535(mysql 5.0.3版本以後)之間的值。

在檢索的時候,char列刪除了尾部的空格,而varchar則保留了空格。

下面的列子中通過給表vc中varchar(4)和char(4)字段插入相同的字串來描述這個區別。

1)建立測試表vc,並定義兩個字段"v varchar(4),c char(4)";

create table vc(

v varchar(4),

c char(4)

)engine=innodb default charset=utf8;

2)v和c列同時插入字串"ab "

insert into vc values("ab ","ab ");
3)顯示查詢結果

select length(v),length(c) from vc;

length(v) | length(c)

3|2

可以發現,c字串的length只有2。給兩個字段分別追加乙個"+"字串看得更清楚:

select concat(v,"+"),concat(c,"+") from vc;

concat(v,"+")|concat(c,"+")

ab + | ab+

顯然,char列最後的空格在做操作時都已經被刪除,而varchar依然保留空格。

mysql字串型別 mysql 字串型別

字串型別 字串型別指char varchar binary varbinary blob text enum和set。該節描述了這些型別如何工作以及如何在查詢中使用這些型別。型別大小用途 char0 255位元組定長字串 varchar0 65535 位元組變長字串 tinyblob0 255位元組...

mysql 可變字串 MySQL 字串型別

字串型 set enum blob text varchar char。1.char 字元 格式 char m 固定長度 m 表示嚴格限定的長度。char 5 varchar 5 5位元組1位元組 需要乙個位元組,儲存字串的總長度 abc abcde abcdef 超出限制,插入不成功 插入不成功 ...

mysql字串型別

字串型別 utf8字符集 乙個漢字佔3個位元組 gbk字符集 乙個漢字佔2個位元組,乙個字母佔乙個位元組 char和varchar 1 char m m為該字串佔的最大長度,長度為0 255位元組之間任意值,占用固定位元組,查詢時不區分大小寫。2 varchar m 長度為0 65535位元組之間任...