一、区别
char(m)
:m表示长度,固定m宽度的字符,不足用空格补齐,取出数据时会删掉尾部的空格。varchar(m)
:m表示长度,不固定,有多少字符就存多少字符,不会删除尾部的空格。int(m)
:m表示显示的位数,不会决定int的范围大小,需配合zerofill 字段一起使用。
二、示例
创建一个新表:
1 2 3 4 5 6 7 |
mysql> create table t( -> int_a int, -> int_b int(5) zerofill, -> char_a char(10), -> varchar_a varchar(10) -> ); Query OK, 0 rows affected (3.99 sec) |
插入数据:
1 2 3 4 5 6 7 8 9 10 |
mysql> insert into t values(100, 200, "H e l l o ", "H e l l o "); Query OK, 1 row affected (0.02 sec) mysql> select * from t; # 打印出所有数据 +-------+-------+-----------+------------+ | int_a | int_b | char_a | varchar_a | +-------+-------+-----------+------------+ | 100 | 00200 | H e l l o | H e l l o | +-------+-------+-----------+------------+ 1 row in set (0.00 sec) |
查看两个字符串类型字段的区别:
1 2 3 4 5 6 7 |
mysql> select concat(char_a, "-"), concat(varchar_a, "-") from t; +---------------------+------------------------+ | concat(char_a, "-") | concat(varchar_a, "-") | +---------------------+------------------------+ | H e l l o- | H e l l o - | # char类型的字段数值尾部空格被去除了 +---------------------+------------------------+ 1 row in set (0.00 sec) |
查看两个整形字段的区别:
1 2 3 4 5 6 7 |
mysql> select int_a, int_b from t; # 查询两个整形字段 +-------+-------+ | int_a | int_b | +-------+-------+ | 100 | 00200 | # int_b多了填充0 +-------+-------+ 1 row in set (0.00 sec) |
评论