mysql字串型別 MySQL

2021-10-19 19:21:28 字數 3058 閱讀 2780

11.1.3. 字串型別概述

在某些情況中,mysql可以將乙個字串列更改為不同於create table或alter table語句中所給出的型別。參見13.1.5.1節,「沉寂的列規格變更」。

mysql 5.1字串資料型別包括部分在mysql 4.1之前的版本中沒有的特性:

·許多字串資料型別的列定義可以包括指定字符集的character set屬性,也可能包括校對規則。(charset是character set的乙個同義詞)。這些屬性適用於char、varchar、text型別、enum和set。例如:

·create table t

·c1 char(20) character set utf8,

·c2 char(20) character set latin1 collate latin1_bin

該錶定義建立了乙個名為c1的列,具有乙個utf8字符集和該字符集的預設 校對規則,和乙個名為c2的列以及latin1字符集和該字符集的二元 校對規則。二元校對規則對大小寫不敏感。

·mysql 5.1用字元單位解釋在字元列定義中的長度規範。(以前的一些mysql版本以位元組解釋長度)。

· 對於char、varchar和text型別,binary屬性可以為列分配該列字符集的 校對規則。

·字元列的排序和比較基於分配給列的字符集。在以前的版本中,排序和比較基於伺服器字符集的校對規則。對於char和varchar列,你可以用binary屬性宣告列讓排序和 校對規則使用當前的字元**值而不是詞彙順序。

關於mysql 5.1中字符集的支援,參見第10章:字符集支援。

· [national] char(m) [binary| ascii | unicode]

固定長度字串,當儲存時在右側填充空格以達到指定的長度。m表示列長度。m的範圍是0到255個字元。

注釋:當檢索char值時尾部空格被刪除。

如果想要將某個char的長度設為大於255,執行的create table或alter table語句將失敗並提示錯誤:

mysql>create table c1 (col1 int, col2 char(500));

error 1074 (42000): column length too big for column 'col' (max = 255); use blob or text instead

mysql>show create table c1;

error 1146 (42s02): table 'test.c1' doesn't exist

char是character的簡寫。national char(或其等效短形式nchar)是標準的定義char列應使用 預設字符集的sql方法。這在mysql中為預設值。

binary屬性是指定列字符集的二元 校對規則的簡寫。排序和比較基於數值字元值。

列型別char byte是char binary的乙個別名。這是為了保證相容性。

可以為char指定ascii屬性。它分配latin1字符集。

可以為char指定unicode屬性。它分配ucs2字符集。

mysql允許建立型別char(0)的列。這主要用於必須有乙個列但實際上不使用值的舊版本的應用程式相相容。當你需要只能取兩個值的列時也很好:沒有定義為not null的乙個char(0)列只占用一位,只可以取值null和''(空字串)。

· char

這是char(1)的同義詞。

· [national] varchar(m) [binary]

變長字串。m表示最大列長度。m的範圍是0到65,535。(varchar的最大實際長度由最長的行的大小和使用的字符集確定。最大有效長度是65,532位元組)。

注釋:mysql 5.1遵從標準sql規範,並且不刪除varchar值的尾部空格。

varchar是字元varying的簡寫。

binary屬性是指定列的字符集的二元 校對規則的簡寫。排序和比較基於數值字元值。

varchar儲存時用乙個位元組或兩個位元組長的字首+資料。如果varchar列宣告的長度大於255,長度字首是兩個位元組。

· binary(m)

binary型別類似於char型別,但儲存二進位制位元組字串而不是非二進位制字串。

· varbinary(m)

varbinary型別類似於varchar型別,但儲存二進位制位元組字串而不是非二進位制字串。

· tinyblob

最大長度為255(28–1)位元組的blob列。

· tinytext

最大長度為255(28–1)字元的text列。

· blob[(m)]

最大長度為65,535(216–1)位元組的blob列。

可以給出該型別的可選長度m。如果給出,則mysql將列建立為最小的但足以容納m位元組長的值的blob型別。

· text[(m)]

最大長度為65,535(216–1)字元的text列。

可以給出可選長度m。則mysql將列建立為最小的但足以容納m字元長的值的text型別。

· mediumblob

最大長度為16,777,215(224–1)位元組的blob列。

· mediumtext

最大長度為16,777,215(224–1)字元的text列。

· longblob

最大長度為4,294,967,295或4gb(232–1)位元組的blob列。longblob列的最大有效(允許的)長度取決於客戶端/伺服器協議中配置最大包大小和可用的記憶體。

· longtext

最大長度為4,294,967,295或4gb(232–1)字元的text列。longtext列的最大有效(允許的)長度取決於客戶端/伺服器協議中配置最大包大小和可用的記憶體。

· enum('value1','value2',...)

列舉型別。只能有乙個值的字串,從值列'value1','value2',...,null中或特殊 ''錯誤值中選出。enum列最多可以有65,535個截然不同的值。enum值在內部用整數表示。

· set('value1','value2',...)

乙個設定。字串物件可以有零個或多個值,每個值必須來自列值'value1','value2',...set列最多可以有64個成員。set值在內部用整數表示。

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位元組之間任...