MySQL-TEXT&ENUM&SET类型

大家会不会想,哎呀 ,数据库怎么这么多类型呀,宝宝要哭了

MySQL-TEXT&ENUM&SET类型_第1张图片

其实不用想多了  数据库得类型比上编程语言得类型种类还是小巫见大巫呢

作为开发人员得话  能操作数据库就可以了 (当然也可以学习一下底层得源码),但就使用而言,数据库是非常简单。

一.TEXT类型

TEXT类型是一种特殊的字符串类型,包括TINYTEXT、TEXT、MEDIUMTEXT和LONGTEXT,其长度和存储空间的对比下表所示:

MySQL-TEXT&ENUM&SET类型_第2张图片

各种TEXT类型的区别在于允许的长度和存储空间不同。因此,在这几种TEXT类型中,根据需求选取既能满足需要又节省空间的类型即可。

特别注意

  1. 以上各类型无须指定长度!
  2. 允许的长度是指实际存储的字节数,而不是实际的字符个数,比如假设一个中文字符占两个字节, 那么TEXT 类型可存储 65535/2 = 32767  个中文字符,而varchar(100)可存储100个中文字 符,实际占200个字节,但varchar(65535) 并不能存储65535个中文字符,因为已超出表达范围.

mysql> use test;   #选择数据库test

mysql> create table text_example(e_text tinytext, v_char varchar(255)); #创建数据库表,e_text 可存储255个字节,v_char可存储255个字符   

 

mysql> insert into char_example values(90个中文字符,90个中文字符);  #插入失败,utfmb4 用3个字节表示一个中文汉字,会超出tinytext 保存范围

 

mysql> insert into char_example values(80个中文字符,100个中文字符);  #插入成功    

 

实战建议

  • 1、 char长度固定, 即每条数据占用等长字节空间;适合用在身份证号码、手机号码等定。超过255字       节的只能用varchar或者text;
  • 2、 varchar可变长度,可以设置最大长度;适合用在长度可变的属性。
  • 3、 text不设置长度, 当不知道属性的最大长度时,适合用text, 能用varchar的地方不用text;
  • 4、 如果都可以选择,按照查询速度: char最快, varchar次之,text最慢

 

二.ENUM 和SET类型

1.ENUM类型

ENUM类型又称为枚举类型。在创建表时,ENUM类型的取值范围以列表的形式指定,其基本形式如下:

    属性名  ENUM('值1',  '值2', …, '值n')

其中,“属性名”参数指字段的名称,“值n”参数表示列表中的第n个值。ENUM类型的值只能取列表中的一个元素。其取值列表中最多能有65535个值。如果数据值列表在255个以内,那么一个字节就够,如果超过255但是小于65535,那么系统采用两个字节保存。列表中的每个值独有一个顺序排列的编号,MySQL中存入的是这个编号,而不是列表中的值。默认编号从1开始!

Enum(,’女’,‘选择保密’)  # ‘男’=>1  ‘女’=>2  ‘选择保密’=> 3

mysql> use test;   #选择数据库test

mysql> create table enum_example (e_enum enum('男','女','选择保密') ); #创建表 

mysql> insert into enum_example values('男');  #插入记录,必须是enum 选项中的值

mysql> insert into enum_example values(1);  #插入记录可以用数值表示

mysql>select e_enum + 0  from enum_example; #查询enum 选项对应的整数值

如果ENUM类型加上了NOT NULL属性,其默认值为取值列表的第一个元素。如果不加NOT NULL属性,ENUM类型将允许插入NULL,而且NULL为默认值。

2.SET类型

在创建表时,SET类型的取值范围就以列表的形式指定了,其基本形式如下:

    属性名  SET('值1',  '值2', …, '值n')

其中,属性名参数指字段的名称,“值n”参数表示列表中的第n个值,这些值末尾的空格将会被系统直接删除。其基本形式与ENUM类型一样。SET类型的值可以取列表中的一个元素或者多个元素的组合。取多个元素时,不同元素之间用逗号隔开。SET类型的值最多只能是由64个元素构成的组合。

mysql> use test;   #选择数据库test

mysql> create table set_example (interest set('足球','追剧','篮球','撩妹') ); #创建表 

mysql> insert into set_example values( '足球,撩妹' ); #插入记录,必须是enum 选项中的值

mysql> insert into enum_example values(9);  #插入相应位效果等同,9 =>1001 选择1,4

mysql>select interest+0 from set_example;  #以整数的方式查询

 

 

更多的关于数据库我会在下面的文章中陆续的分享,也可以关注‘奇牛学院’

来一起讨论

你可能感兴趣的:(数据库)