加油! 为了更好的自己
2020年10月30日 23:32 __ _ _ _ _

点击蓝色文字关注”程序员Bob”吧!

认真感谢每一个在你生命中出现的人。

关于学习MySQL,以及如何学习,学习后能对自己有多大帮助或者对于以后能带来多大的收益
,这都是我们在学习时会遇到的,学习一件新事物可能对于大多数人来说并不难,难的是在学习时所遇到的各种难题,以及如何去解决。当然也会有很多博主去写文章如何如何解决,但就小编来看,可能更多的是自己都不确定是不是这个问题的最优解,所以,在成为更好的自己之前,这些问题无可避免的需要自己去解决和处理,当然不同的人会有不同的解法,那么能否亮出你的解法:
字符串类型字符串类型: 在SQL中,根据应用场景,内存等将字符串分成了以下六类:char,varchar,text(最常用的三种),blob,enum和set。定长字符串:Char *定长字符串char:在磁盘(二维表)在定义结构的时候,就已经确定了最终数据的存储长度。 用法: ** char(L),其中L
代表length,即可以存储的长度,单位为字符(以符号为主)。一个字符大于等于一个字节。最大长度可以为255。如char(4):在UTF8环境下,就需要43=12个字节;当你输入的字符小于4时,它会在后面补空值;当大于4时会截取掉后面超出的部分。
变长字符串:Varchar
变长字符串(可能是会变大的) varchar :在分配空间的时候,会按照最大的空间分配;但是实际上最终用了多少,是根据具体的数据来确定。
用法:varchar(L),其中L表示字符长度,理论长度是65536个字符(即可以存65536个中文),但也会多出1到2个字节来确定存储的实际长度。实际上如果长度超过255,既不用定长也不用变长,使用文本字符串text。如varchar(10):存有10个汉字,在UTF8环境下,103+1=31(1或2和长度255有关),若是存3个汉字,33+1=10(bytes)。
定长与变长的实际存储空间示例如下:
实际存储数据
| Char(4)
| Varchar(4)
| char占用字节
| varchar占用字节
—|—|—|—|—
ABCD
| ABCD | ABCD | 4*3=12
| 4*3+1=13
A
| A
| A
| 4*3=12 | 1*3+1=4
ABCDE
| ×
| × | 数据超出长度
| 数据超出长度
那么如何选择定长或者变长字符串?
定长字符串在磁盘空间上比较浪费,但是效率高(如果数据基本上确定长度都一样,就是使用定长,如身份证,手机号码等);变长字符串磁盘比较节省,但是效率低(如果数据不能确定长度,不同数据有变化,如:姓名,地址)。
从空间上考虑,用varchar合适;从效率上考虑,用char合适,关键是根据实际情况找到权衡点。
文本字符串
文本字符串: 如果数据非常大,通常说超过255个字符就会使用文本字符串。 文本字符串根据存储的数据的格式进行分类:text和blob。
text:存储文字(二进制数据实际上都是存储路径)
Blob:存储二进制数据(较少用)
枚举字符串 枚举字符串enum:事先将所有可能会出现的结果设计好,实际上存储数据中的一个。** 枚举的使用方式(存储数据,只能存储上面定义好的数据): **
定义:enum(可能出现的元素列表);#如enum(‘男’,’女’,’不男不女’,’保密’);
创建枚举表语句:
-- 创建枚举表create table my_enum(gender enum('男','女','保密'))charset utf8;
加入数据:规范数据格式,数据只能是规定的数据中的其中一个,这也是枚举的作用之一。
那么作用之二:节省存储空间(通常有一个别名:单选框),枚举实际存储的是数值而不是字符串本身。
插入数据语句:
-- 插入数据insert into my_enum values('nan'),('baomi'); -- 有效数据insert into my_enum values ('male'); -- 错误数据,无该元素存在
如何证明字段存储的的数据是数值呢?
解:将数据取出来+0,就可以判断出原来的数据存的到底是字符串还是数值;如果是字符串最终结果永远为0,否则就是其他值,如下图一个有趣的例子:

那么建表后的例子:

在MySQL中,系统也是自动转换数据格式,而且基本与PHP一样(尤其是字符串转数据)。
枚举原理:
枚举在进行数据规范的时候(即定义时),系统会自动建立一个数字与枚举元素的对应关系(关系放在日志中);然后在进行数据插入的时候,系统会自动将字符转换成对应的数字存储,然后在进行数据提取的时候,系统会自动将数值转换成对应的字符串显示,因此也节省了许多存储空间。

往期推荐:
MySQL基础学习之大战数据操作 2020-10-17
MySQL基础学习之大战表操作 2020-10-16
为你,千千万万遍.
关注 程序员Bob 公众号,与你一起终生学习

一键三连,就差你了
预览时标签不可点
阅读
__










