河南商丘网站,wordpress电子书插件,2021拉新推广佣金排行榜,google入口字符类型用在存储名字、邮箱地址、家庭住址等描述性数据 char指的是定长字符#xff0c;varchar指的是变长字符 #官网#xff1a;https://dev.mysql.com/doc/refman/5.7/en/char.html
#注意#xff1a;char和varchar括号内的参数指的都是字符的长度#char类型#xff1a;定长… 字符类型用在存储名字、邮箱地址、家庭住址等描述性数据 char指的是定长字符varchar指的是变长字符 #官网https://dev.mysql.com/doc/refman/5.7/en/char.html
#注意char和varchar括号内的参数指的都是字符的长度#char类型定长简单粗暴浪费空间存取速度快字符长度范围0-255一个中文是一个字符是utf8编码的3个字节存储存储char类型的值时会往右填充空格来满足长度例如指定长度为10存10个字符则报错存10个字符则用空格填充直到凑够10个字符存储检索在检索或者说查询时查出的结果会自动删除尾部的空格除非我们打开pad_char_to_full_length SQL模式SET sql_mode PAD_CHAR_TO_FULL_LENGTH;#varchar类型变长精准节省空间存取速度慢字符长度范围0-65535如果大于21845会提示用其他类型 。mysql行最大限制为65535字节字符编码为utf-8https://dev.mysql.com/doc/refman/5.7/en/column-count-limit.html存储varchar类型存储数据的真实内容不会用空格填充如果ab ,尾部的空格也会被存起来强调varchar类型会在真实数据前加1-2Bytes的前缀该前缀用来表示真实数据的bytes字节数1-2Bytes最大表示65535个数字正好符合mysql对row的最大字节限制即已经足够使用如果真实的数据255bytes则需要1Bytes的前缀1Bytes8bit 2**8最大表示的数字为255如果真实的数据255bytes则需要2Bytes的前缀2Bytes16bit 2**16最大表示的数字为65535检索尾部有空格会保存下来在检索或者说查询时也会正常显示包含空格在内的内容 创建两张表 只有整型类型的宽度是显示宽度其他类型的宽度都是存储宽度 宽度指的是字符的个数 mysql create table t13(name char(5));
Query OK, 0 rows affected (0.02 sec)mysql create table t14(name varchar(5));
Query OK, 0 rows affected (0.01 sec) char就是定长不够5个字符会补全到5个字符补全相应的空格由空格作为占位符凑够5个空格。 varchar就是变长传几个字符就存几个。 插入数据 mysql insert into t13 values(李刚 ); #李刚
Query OK, 1 row affected (0.00 sec)mysql insert into t14 values(李刚 ); #李刚
Query OK, 1 row affected (0.00 sec) 查询表看不到效果 mysql select name from t13; #
--------
| name |
--------
| 李刚 |
--------
1 row in set (0.00 sec)mysql select name from t14; #
---------
| name |
---------
| 李刚 |
---------
1 row in set (0.00 sec mysql函数 length查看字节数
char_length:查看字符数 char类型 存的是5个 查的是2个 mysql 在存char类型时候 会自动补全空格存进来 取的时候把默认的空格去掉 mysql select char_length(name) from t13; #
-------------------
| char_length(name) |
-------------------
| 2 |
-------------------
1 row in set (0.00 sec) varchar 存的是5个 查的是3个 mysql select char_length(name) from t14; #
-------------------
| char_length(name) |
-------------------
| 3 |
-------------------
1 row in set (0.00 sec) char填充空格来满足固定长度但是在查询时却会很不要脸地删除尾部的空格装作自己好像没有浪费过空间一样然后修改sql_mode让其现出原形 #略施小计让char现出原形设置sql模式 mysql SET sql_mode PAD_CHAR_TO_FULL_LENGTH; 出现原形 mysql select char_length(name) from t13;
-------------------
| char_length(name) |
-------------------
| 5 |
-------------------
1 row in set (0.00 sec) 对于char 和varchar来说 不管怎么存 取得时候mysql只会对值进行比较 不会管末尾的空格末尾空格没有意义只是末尾空格验证 mysql select name from t13 where name李刚 ;
-----------
| name |
-----------
| 李刚 |
-----------
1 row in set (0.00 sec)mysql select name from t13 where name李刚;
-----------
| name |
-----------
| 李刚 |
----------- 开头 、中间有空格 都查询不到 mysql select name from t13 where name 李刚;
Empty set (0.00 sec)mysql select name from t13 where name李 刚;
Empty set (0.00 sec) 用模糊查询 like用like mysql就不会把末尾空格去掉。 精确的输入 mysql select name from t13 where name like 李刚 ;
Empty set (0.00 sec)mysql select name from t13 where name like 李刚 ;
Empty set (0.00 sec) # 后面补全三个空格可以查询出来
mysql select name from t13 where name like 李刚 ;
-----------
| name |
-----------
| 李杰 |
-----------
1 row in set (0.00 sec) #常用字符串系列char与varchar注虽然varchar使用起来较为灵活但是从整个系统的性能角度来说char数据类型的处理速度更快有时甚至可以超出varchar处理速度的50%。因此用户在设计数据库时应当综合考虑各方面的因素以求达到最佳的平衡 大部分场景用char类型 建议一张表里 不要char varchar混着用 要么全用char类型要么全用varchar类型 转载于:https://www.cnblogs.com/mingerlcm/p/9799813.html