MySQL基本数据类型
一、整型
分类:TINYINT, SMALLINT, MEDUIMINT, INT, BIGINT
TINYINT
默认情况下是带有符号的,超出限制只存最大可接受值
create table test1(id TINYINT);
insert into test1 values(-129,256);
mysql> insert into test1 values(-129),(256);
ERROR 1264 (22003): Out of range value for column 'id' at row 1
mysql> insert into test1 values(-128),(256);
ERROR 1264 (22003): Out of range value for column 'id' at row 2
mysql> insert into test1 values(-128),(127);
Query OK, 2 rows affected (0.00 sec)
约束条件之unsigned 无符号
create table test2(id tinyint unsigned);
INT
默认情况下也是带符号的
整型默认情况下都是带符号的
针对整型 括号内的宽度到底是干嘛的?
create table test3(id int(8));
insert into test3 values(123456789);
特例:只有整型括号里面的数字不是表示限制位数,id int(8)
如果数字没有超过8位,那么默认用空格填充至8位
如果数字超出8位,那么有几位就存几位(但是还是要遵守最大范围)
create table test4(id int(8) unsigned zerofill); #用0填充至8位
mysql> create table test4(id int(8) unsigned zerofill);
Query OK, 0 rows affected (0.06 sec)
mysql> insert into test4 values(1);
Query OK, 1 row affected (0.01 sec)
mysql> select * from test4;
+----------+
| id |
+----------+
| 00000001 |
+----------+
1 row in set (0.00 sec)
总结:针对整型字段,括号内无需指定宽度,因为它默认的宽度已经足够显示所有的数据了。
二、字符型
分类:char 、varchar
char:
定长,char(4),数据超过4个字符直接报错,不够4个字符空格补全
varchar:
变长,varchar(4) 数据超过4个字符直接报错,不够有几个存几个
create table test5(name char(4));
create table test6(name varchar(4));
insert into test5 values('a');
insert into test6 values('a');
#一个小方法,char_length统计字段长度
select char_length(name) from test5;
char 与varchar对比:
char
缺点:浪费空间
优点:存取都很简单,直接按照固定的字符串存取数据即可,存按照5个字符存,取也直接按照5个字符取
varchar
优点:节省空间
缺点:存取较为麻烦,存的时候需要制作报头,取的时候也需要先读取报头,之后才能读取真实数据;
以前用char比较多,现在用varchar的比较多;