0八、MySQL—字符串型

字符串型

一、Char

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

基本语法:sql

char(L),L表明字符数(中文与英文字母同样),L长度为0到255spa

2、Varchar

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

基本语法:3d

Varchar(L),L表明字符数,L的长度理论值位0到65535blog

由于varchar要记录数据长度(系统根据数据长度自动分配空间),因此每一个varchar数据产生后,系统都会在数据后面增长1-2个字节的额外开销:是用来保存数据所占用的空间长度图片

若是数据自己小于127个字符:额外开销一个字节;若是大于127个,就开销两个字节ci

(1) Char和varchar数据存储对比(utf8,一个字符都会占用3个字节)字符串

存储数据table

Char(2)

Varchar(2)

Char所占字节

Varchar所占字节

A

A

A

2 * 3 = 6

1 * 3 + 1 = 4

AB

AB

AB

2 * 3 = 6

2 * 3 + 1 = 7

(2) Char和varchar的区别

一、  char必定会使用指定的空间,varchar是根据数据来定空间

二、  char的数据查询效率比varchar高:varchar是须要经过后面的记录数来计算

 

说明:

若是肯定数据必定是占指定长度,那么使用char类型;

若是不肯定数据到底有多少,那么使用varchar类型;

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

 

三、Text

文本类型:本质上mysql提供了两种文本类型

Text:存储普通的字符文本

Blob:存储二进制文本(图片,文件),通常都不会使用blob来存储文件自己,一般是使用一个连接来指向对应的文件自己。

(1) Text:系统中提供的四种text

(2) Tinytext:系统使用一个字节来保存,实际可以存储的数据为:2 ^ 8 + 1

(3) Text:使用两个字节保存,实际存储为:2 ^ 16 + 2

(4) Mediumtext:使用三个字节保存,实际存储为:2 ^ 24 + 3

(5) Longtext:使用四个字节保存,实际存储为:2 ^ 32 + 4

注意:

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

(2) 在选择字符存储的时候,若是数据超过255个字符,那么必定选择text存储

 

四、Enum

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

若是肯定某个字段的数据只有那么几个值:如性别,男、女、保密,系统就能够在设定字段的时候规定当前字段只能存放固定的几个值:那么就使用枚举 

基本语法:

enum(数据值1,数据值2…)

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

 

① 建立表

 

② 插入数据:合法数据,字段对应的值必须是设定表的时候所肯定的值

 

③ 错误数据:enum有规范数据的功能,可以保证插入的数据必须是设定的范围,其余类型都不能够

 

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

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

特性:在mysql中系统是自动进行类型转换的:若是数据碰到“+、-、*、/”系统就会自动将数据转换成 数值,而普通字符串转换成数值为0

范例:查看enum元素的值

Select 字段名 + 0 from 表名;

 

⑤ 既然实际enum字段存储的结果是数值:那么在进行数据插入的时候,就可使用对应的数值来进行。

 

枚举的意义:

(1) 规范数据自己,限定只能插入规定的数据项

(2) 节省存储空间

五、Set

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

基本语法:

set(‘值1’,’值2’,’值3’…)

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

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

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

3个字节:set只能表示24个选项

8个字节:set能够表示64个选项

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

① 建立表

 

② 插入数据:能够插入多个数据,就是在数据插入的字符串中,使用对应的逗号“,”将选项进行隔开

 

③ 数据选项所在的数据与数据插入的顺序无关:最终都会变成选项对应的顺序

 

④ 分析数据存储的方式

(1) 系统将对应的数据选项(设计)按照顺序进行编排:从第一个开始进行占位,每个都对应一个二进制位。

 

(2) 数据在存储的时候,若是被选中,那么对应的位的值就为1,不然为0

 

(3) 系统在进行存储的时候会自动将获得的最终的二进制颠倒过来,而后再进行转换成十进制存储

 

⑤ 查看数据:按照自动转换成数值来查看

 

⑥ 既然是数值,那么就能够插入数值来代替实际插入数据

 

注意:数字插入的前提是对应的二进制位上都有对应的数据项

Set集合的意义: 规范数据、节省存储空间

Enum:单选框

Set:复选框

相关文章
相关标签/搜索