![8fdc7ce1e38124e3ad6f5a31f6e0d72f.gif](https://i-blog.csdnimg.cn/blog_migrate/b6b1324bf7c41498fd4bc751b2d18ea7.gif)
点击关注,我们共同每天进步一点点!
1 字符类型
MySQL提供了多种关于字符存储的类型,但是在大多数情况下我们只使用char和varchar即可
类型 大小 用途
CHAR 0 - 255字节 定长字符串
VARCHAR 0 - 65535 字节 变长字符串
TINYBLOB 0 - 255字节 不超过 255 个字符的二进制字符串
TINYTEXT 0 - 255字节 短文本字符串
BLOB 0 - 65 535字节 二进制形式的长文本数据
TEXT 0 - 65 535字节 长文本数据
MEDIUMBLOB 0 - 16 777 215字节 二进制形式的中等长度文本数据
MEDIUMTEXT 0 - 16 777 215字节 中等长度文本数据
LONGBLOB 0 - 4 294 967 295字节 二进制形式的极大文本数据
LONGTEXT 0 - 4 294 967 295字节 极大文本数据
2 字符集
字符串分二进制与非二进制类型,二进制用于储存图片、声音等文件,非二进制用于储存文本数据。
非二进制文本受字符集和校对规则影响。
其实字符集说白了就是字符编码。
2|1概念解析
字符集(Character set)是多个字符的集合,字符集种类较多,每个字符集包含的字符个数不同。常用的字符集有GBK、BIG5、UTF8。
UTF8字符集包含文字内容更广,如韩文、日文、德文兼容度更高,也是推荐使用的字符集(UTF8MB4)。
表不设置字符集继承数据库,字段不设置字符集继承表的,所以一般我们在配置文件中为数据库指定字符集即可
SHOW CHARACTER SET; -- 查看服务器支持的字符集
2|2校对规则
字符集内用于字符比较和排序的一套规则,以_ci结束的为大小写不敏感、_bin结束的为不区分大小写。
当使用不区分大小写的校对规则时A与a是相同的,否则则不相同,这会影响到排序与比对。
修改表校对规则,对表的原字段将不影响,只对新增字段影响
SHOW COLLATION; -- 查看服务器支持的校对规则
3 基本定义
对于字符类型而言,其指定宽度均为存入宽度,以字符为单位。
create table temp(
ch char(5) not null, # 最多5个字符
vc varcha(5) not null # 最多5个字符
);
4 定长变长
4|1区别差异
char是定长字符串,当存入的字符数量不足指定宽度时,将会使用进行填充。
varchar是变长字符串,当存入的字符数类不足指定宽度时,不会使用任何字符进行填充。
通常情况下来讲,char的存取速度要比varchar要高(约50%),但是更加浪费磁盘空间。
在InnoDB存储引擎中,不存在这种差异。
差异详解
#
由于varchar类型是变长存储,所以需要有一个头部来标识真实内容占了多少字符,这个头部通常占据1个字节。
即存入abcd的时候算上头部实际上是占用了5个字节。这也是为什么说通常情况下varchar比较节省内存,而不是说全部情况。
4|2差异对比
如果要想进定长与变长的差异对比试验,需要用到以下两个函数。
length():查看字节数
char_length():查看字符数
mysql>
小总结:建议在同一张数据表中统一使用varchar或char类型,这里更推荐使用char类型。
5 常用函数
5|1大小写转换
upper()小写转大写,lower()大写转小写
mysql>
5|2指定量取
left()与right()函数用于取左或右指定数量的字符
以下将示例取左边3个字符。
mysql>
5|3中间字符
mid()从中间取字符串,参数二为指定起始位置(从1开始),参数三为取的字符数量(可不指定,一直取完)。
以下将演示从第二个字符开始取两个。
mysql>
5|4截取子串
substring()从指定起始位置开始取出向右所有字符串,可指定结束位置。(其实我感觉这个和mid()好像没啥区别)
mysql>
5|5字符长度
char_length()可获取字符长度,如果要获取char类型的字符长度且包括填充空白符,需要修改sql模式。
修改sql模式:SET sql_mode = 'PAD_CHAR_TO_FULL_LENGTH';
mysql>
5|6字节长度
length()可获取字节长度。
mysql>
5|7字符连接
concat()可将多段字符进行连接。
以下示例将展示一二三四五,---以及12345这三段字符的连接。
mysql>
原文地址:
https://www.cnblogs.com/Yunya-Cnblogs/p/13585668.html
![4fbcd9a5a34d998fec3ce531c37d8399.png](https://i-blog.csdnimg.cn/blog_migrate/36b78c07d07b20f31a5d363b4a43f9e8.jpeg)
![4f9f1783b0f5245905810019a94b276c.gif](https://i-blog.csdnimg.cn/blog_migrate/1d21607d2c8280f463ece48f3733ce8b.gif)
喜欢请关注,有用请转发~
升职、加薪、无漏测-点“在看”
![097ff40fbb8a61db821d9ba82db19287.gif](https://i-blog.csdnimg.cn/blog_migrate/84b004f71b4732f1059201e68a77cf63.gif)