数据类型
字符串类型:
字符串类型指CHAR、VARCHAR、BINARY、VARBINARY、BLOB、TEXT、ENUM和SET。该节描述了这些类型如何工作以及如何在查询中使用这些类型。
CHAR 、 VARCHAR
- char是长度固定的,不变的,长度在0-255字节 ;而varchar是长度可变的,长度在0-65535。
同时,char后面的空格不会保留,而varchar会保留。还需注意的是oracle中的两个字节表示一个汉字,mysql中只需一个。
char定长:磁盘空间比较浪费,但是效率高,确定数据长度都一样,就使用定长
比如:生日时间、身份证号
varchar变长:比较节省空间,但是效率低,数据不能确定长度(不同数据长度有变化),不过例如varchar(5)所占的字节数是实际长度的基础上加1,后面还有结束标识符
比如:地址
BINARY、VARBINARY
- 两者的关系和上面char和varchar很像,只不过它们是存储二进制字符串,包含字节字符串。
BLOB
- BLOB 是一个二进制大对象,可以容纳可变数量的数据,分为TINYBLOB(0-255)、BLOB(0-65535)、MEDIUMBLOB 和 LONGBLOB。
- MySQL的四种BLOB类型(除了在存储的最大信息量上不同外,他们是等同的。
- 但是有时存储的文件过大,数据库性能就会下降。
TEXT
-
存储文字,大的一些文本等,也是四种类型,大小关系和上面的一样
- 上图的就可以看出分类,不过这个数据类型不怎么使用。
ENUM和SET
-
ENUM看名字就知道了,这是一种枚举类型的数据类型,事先将可能出现的结果都定义好,实际存储的数据必须是枚举中的一个,不能随意存储。
格式:字段名 enum('值1','值2',...,'值n') NULL/NOT NULL 列表中的每个值都有一个顺序排列的编号,MySQL中存入的是这个编号,就是可以对应其位置来取到相应的值,同时如果存储不是枚举的值,如果类型后面加上了null属性,其默认值为取值列表中的第一个元素。如果不加not null属性,enum类型将允许插入null,而且null为默认值.
-
SET支持去重,可以存储多个元素,如果要选取列表中多个值的组合,就要选择set类型
格式:字段名 set('值1','值2',...,'值n') NULL/NOT NULL 这里的同enum类型一样,列表中的每个值都有一个顺序排列的编号
-
记住这两种类型的数据都不是直接将数据存入数据库,而是将其列表中的编号存入数据库。