# 注意: 宽度指的是字符个数
char: 定长
char(5)
varchar: 变长
varchar(5)
相同点: 宽度指的都是最大存储的字符个数,超过了就无法正常存储
不同点:
char(5)
'a' ---> 5个字符(不够个数用空格补充)
|a |at |set |like |where|
varchar(5)
'a' ---> 1个字符
1bytes+a|1bytes+at|1bytes+set|1bytes+like|1bytes+where|
如果真实的数据<255bytes则需要1Bytes的前缀(1Bytes=8bit 2**8最大表示的数字为255)
如果真实的数据>255bytes则需要2Bytes的前缀(2Bytes=16bit 2**16最大表示的数字为65535)
查询某个字段:
select * from 表名 where 字段名 = ' ';
注意: mysql 在查询时针对where 字段= ''时会忽略掉右面的空格,即where 字段 = '值';
select * from 表名 where name like 'x%';
# '%' 指的是查找所有以x开头的数据
select * from 表名 where name like 'x__';
# _填充完整字符长度,才能查找到
# 宽度相关练习
mysql> create table tab(a char(5),b varchar(5));
Query OK, 0 rows affected (0.02 sec)
# char 存3个字符, varchar 存2个字符
mysql> insert into tab values('a ','b ');
Query OK, 1 row affected (0.01 sec)
mysql> select a,char_length(a),b,char_length(b) from tab;
+------+----------------+------+----------------+
| a | char_length(a) | b | char_length(b) |
+------+----------------+------+----------------+
| a | 1 | b | 2 |
+------+----------------+------+----------------+
1 row in set (0.00 sec)
mysql> SET sql_mode = 'PAD_CHAR_TO_FULL_LENGTH';
Query OK, 0 rows affected (0.00 sec)
mysql> select a,char_length(a),b,char_length(b) from tab;
+-------+----------------+------+----------------+
| a | char_length(a) | b | char_length(b) |
+-------+----------------+------+----------------+
| a | 5 | b | 2 |
+-------+----------------+------+----------------+
1 row in set (0.00 sec)
字符类型
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...