MySQL列类型(字符串类型)——C

char

定长字符:指定长度后,系统一定会分配指定的空间用于存储数据

语法:char(L),L代表字符数(中文与英文字母占用一样),L长度为0-255

varchar

变长字符:指定长度后,会根据实际存储的数据来计算长度,分配合适的长度(数据没有超出长度)

语法:varchar(L),L代表字符数,L的长度理论值为0-65535

因为varchar要记录数据长度(系统根据长度自动分配空间),所以每个varchar数据产生后,系统都会在数据后面增加1-2个字节的额外开销,用来保存数据所占有的空间长度

如果确定数据一定是占指定长度,那么使用char类型

如果不确定数据到底有多少,那么使用varchar类型;

如果数据长度超过255个字符,不论是否固定长度,都会使用text,不再使用char和varchar

扫描二维码关注公众号,回复: 3399587 查看本文章

text

文本类型,本质上没有MySQL提供了两种文本类型

text:存储普通的字符文本

tinytext:系统使用一个字节来保存(数据所在位置),实际能存储的数据为2^8+1(能保存的字符树)

text:使用两个字节保存,实际存储为2^16+2

mediumtext:使用三个字节保存,实际存储为2^24+3

longtext:使用四个字节保存,实际存储为2^32+4

注意:

1、在选择对应的存储文本的时候,不用刻意选择text类型,系统会自动根据存储的数据长度来选择合适的文本类型

2、在选择字符存储的时候,如果数据超过255个字符,那么一定选择text存储。

blod:存储二进制文本(图片、文件)

一般不会使用blod 来存储文件本身,通常是使用一个链接来指向对应的文件本身

 

enum

 枚举类型:在数据插入之前,先设定几个项,这几个项就是可能出现的数据结果

如果确定某个字段的数据只有几个值,如性别,男、女、保密,系统就可以在设定的时候规定当前字段只能存放固定的几个值;

语法:enum(数据值1,数据值2....)

系统提供了1到2个字节来存储枚举数据,通过计算enum列举的具体值来选择实际的存储空间:如果数据值列表在255个以内,那么一个字节就够,如果超过255但是小于65535,系统采用两个字节保存。

枚举enum的存储原理:实际上字段上所存储的值并不是真正的字符串,而是字符串对应的下标;当系统设定枚举类型的时候买会给枚举中每个元素定义一个下标,这个下标规则从1开始

枚举的意义:

1、规范数据本身,限定只能插入规定的数据项

2、节省存储空间

set

集合:是一种将多个数据选项可以同时保存的数据类型,本质是将指定的项按照对应的二进制位进行控制:1表示该选项被选中,0表示该选项没有被选中

语法:set(‘值1’,‘值2’,‘值3’)

系统为set提供了多个字节进行保存,但是系统会自动计算来选择具体的存储单元

1个字节:set只能有8个选项

2个字节:set只能有16个选项

3个字节:set只能有24个选项

8个字节:set可以表示64个选项(最大)

create table my_set(
hobby set('篮球','足球','羽毛球','乒乓球','网球','橄榄球','冰球','排球')
)charset utf8;

insert into my_set values('篮球,乒乓球,足球');


set和enum一样,最终存储到数据字段中的依然是数字,而不是真实的字符串

set意义:

1、规范数据

2、节省存储空间



MySQL记录长度

在MySQL中,有一个规定:MySQL的纪录长度(record == 行row)总长度不能超过65535个字节

varchar能够存储的理论值为65535个字符:字符在不同的字符集下可能占用多个字节,但是还需要额外的空间来保存记录长度

utf8最多只能储存21844个字符;

gbk最多只能储存32766个字符;

猜你喜欢

转载自blog.csdn.net/weixin_42523297/article/details/82788375