较短的文本:
char
varchar
其他:
binary和varbinary用于保存较短的二进制
enum用于保存枚举
set用于保存集合
较长的文本:
text
blob (较大的二进制)
char和varchar类型
说明:用来保存MySQL中较短的字符串。
字符串类型 | 最多字符数 | 描述及存储需求 |
char(M) | M | M位0~255之间的整数 |
varchar(M) | M | M位0~65535之间的整数 |
两种类型的比较:
字符串类型 | 写法 | M的意思 | 特点 | 空间 | 效率 |
char | char(M) | 最大的字符数,可以省略,默认为1 | 固定长度的字符 | 比较耗费 | 高 |
varchar | varchar(M) | 最大的字符数,不可以省略 | 可变长度的字符 | 比较节省 | 低 |
binary和varbinary类型
说明:类似于char和varchar,不同的是它们包含二进制字符串而不包含非二进制字符串。
Enum类型(SQL SERVER不支持)
说明:又称为枚举类型哦,要求插入的值必须属于列表中指定的值之一。
如果列表成员为1~255,则需要1个字节存储
如果列表成员为255~65535,则需要2个字节存储
最多需要65535个成员!
案例:
CREATE TABLE test char (c1 ENUM('a', 'b', 'c'));
INSERT INTO test VALUES('a') ;
INSERT INTO test VALUES('b') ;
INSERT INTO test VALUES('c') ;
INSERT INTO test VALUES('m') ;
INSERT INTO testr VALUES('A') ;
SELECT * FROM test;
m不是范围列表中的值故插入不成功,枚举值不区分大小写
※SQL Server没有枚举类型
可以使用约束限制取值:
列名 VARCHAR(10) NOT NULL CHECK (列名 IN('可选值1', 可选值2', 可选值3))
Set类型
说明:和Enum类型类似,里面可以保存0~64个成员。和Enum类型最大的区别是: SET类型一次可以选取多个成员,而Enum只能选一个。
根据成员个数不同,存储所占的字节也不同
成员数 | 字节数 |
1~8 | 1 |
9~16 | 2 |
17~24 | 3 |
25~32 | 4 |
33~64 | 5 |
CREATE TABLE test char (c1 SET('a', 'b', 'c','d'));
INSERT INTO test VALUES('a') ;
INSERT INTO test VALUES('a,b') ;
INSERT INTO test VALUES('a,c,d') ;
INSERT INTO test VALUES('A,B') ;
SELECT * FROM test;