赞
踩
1)作用
用于存储用户的年龄、游戏的Level、经验值等整数类型。
2)分类
tinyint smallint mediumint int bigint(极小,小,中,一般,大)
3)详解
常用为int,这五种表达一样,只是范围不同,类型后面小括号内的数字是显示宽度,其不能限制插入数值的大小。
4)范围
tinyint:-128~127
smallint:-32768~32767
mediumint:-8388608~8388607
int:-2147483648~2147483647
brigint:-9,223,372,036,854,775,808~9,223,372,036,854,7
5)小结
- 当整数值超过 int 数据类型支持的范围时,就可以采用 bigint。
- 在 MySQL 中,int 数据类型是主要的整数数据类型。
- int(n)里的n是表示SELECT查询结果集中的显示宽度,并不影响实际的取值范围,没有影响到显示的宽度。
- 整形的宽度仅为显示宽度,不是限制。因此建议整形无须指定宽度。
6)示例
mysql>create table a.t1(age int(10));//在a库下创建t1表格,设置数据类型 mysql> insert into t1(age) values(1000); Query OK, 1 row affected (0.00 sec) mysql> insert into t1(age) values(2147483647); Query OK, 1 row affected (0.00 sec) mysql> insert into t1(age) values(2147483648); //超出范围,报错 ERROR 1264 (22003): Out of range value for column 'age' at row 1 mysql> select * from t1; //查询,可看到显示宽度最长为10 +------------+ | age | +------------+ | 100 | | 1000 | | 2147483647 | +------------+ 3 rows in set (0.00 sec)
1)作用
用于存储一些身高体重等带有小数的数据。
2)格式
float(5.3) //一共5位,小数保留3位(四舍五入)
3)示例
mysql> create table bb(weight float(4,2));
Query OK, 0 rows affected (0.01 sec)
mysql> insert into bb values(333.8888); //报错,小数点前超过2位
ERROR 1264 (22003): Out of range value for column 'weight' at row 1
mysql> insert into bb values(33.8888);
Query OK, 1 row affected (0.00 sec)
mysql> insert into bb values(99.9988); //报错,四舍五入后不符合
ERROR 1264 (22003): Out of range value for column 'weight' at row 1
mysql> select * from bb;
+--------+
| weight |
+--------+
| 33.89 |
+--------+
1 row in set (0.01 sec)
1)作用
用于存储用户的姓名、爱好、电话,邮箱地址,发布的文章等 。
2)类型
char varchar
3)区别
1>char
表示定长字符串,长度是固定的;如果插入数据的长度小于char的固定长度时,则用空格填充;因为长度固定,所以存取速度要比varchar快很多,甚至能快50%,但正因为其长度固定,所以会占据多余的空间。
2>varchar
varchar表示可变长字符串,长度是可变的;插入的数据是多长,就按照多长来存储;varchar在存取方面与char相反,它存取慢,因为长度不固定,但正因如此,不占据多余的空间。
3>小结
结合性能角度(char更快),节省磁盘空间角度(varchar更小),具体情况还需具体来设计数据库才是妥当的做法。char(10):根据10,占10个。列的长度固定为创建表时声明的长度:0 ~ 255;varchar(10):根据实际字符串长度占空间,最多10个,列中的值为可变长字符串,长度:0 ~ 65535。
4)示例
mysql> create table t8(c char(5),v varchar(12));
Query OK, 0 rows affected (0.42 sec)
mysql> insert into t8 values('abcde','abcdef');
Query OK, 1 row affected (0.38 sec)
mysql> insert into t8 values('abc','abcdef'); //可以少于规定长度。
Query OK, 1 row affected (0.05 sec)
mysql> insert into t8 values('abc777','abcdef7'); //不能大于规定的长度。
ERROR 1406 (22001): Data too long for column 'c' at row 1
5)总结
1>经常变化的字段用varchar
2>知道固定长度的用char
3>超过255字符的只能用varchar或者text
4>能用varchar的地方不用text(文本格式)
1)作用
从特定的范围里选定(多选一),有限制的时候用枚举。
2)示例
mysql> create table t10(name enum('m','w'));
mysql> insert into t10(sex) values('m');
Query OK, 1 row affected (0.00 sec)
mysql> insert into t10 values('w');
Query OK, 1 row affected (0.00 sec)
mysql> insert into t10 values('n'); //n不在枚举范围里,出错
ERROR 1265 (01000): Data truncated for column 'sex' at row 1
1)作用
用于存储用户的注册时间,文章的发布时间,文章的更新时间,员工的入职时间等。
2)种类
year、date、time、datetime、timestamp、timestamp
年,日期,时间,日期加时间,时间戳(从格林时间到现在的秒数)
注意:
=插入年份时,尽量使用4位值
=插入两位年份时,<=69,以20开头,比如65, 结果2065
=70,以19开头,比如82,结果1982
3)示例
mysql> create table test_time(d date,t time,dt datetime); Query OK, 0 rows affected (0.03 sec)+ mysql> desc test_time; +-------+----------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+----------+------+-----+---------+-------+ | d | date | YES | | NULL | | | t | time | YES | | NULL | | | dt | datetime | YES | | NULL | | +-------+----------+------+-----+---------+-------+ 3 rows in set (0.01 sec) mysql> insert into test_time values(now(),now(),now()); Query OK, 1 row affected, 1 warning (0.02 sec) mysql> select * from test_time; +------------+----------+---------------------+ | d | t | dt | +------------+----------+---------------------+ | 2019-08-23 | 00:26:29 | 2019-08-23 00:26:29 | +------------+----------+---------------------+ 1 row in set (0.00 sec)
测试年:
mysql> create table t3(born_year year); Query OK, 0 rows affected (0.40 sec) mysql> desc t3; +-----------+---------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-----------+---------+------+-----+---------+-------+ | born_year | year(4) | YES | | NULL | | +-----------+---------+------+-----+---------+-------+ 1 row in set (0.00 sec) mysql> insert into t3 values (12),(80); Query OK, 2 rows affected (0.06 sec) Records: 2 Duplicates: 0 Warnings: 0 mysql> select * from t3; +-----------+ | born_year | +-----------+ | 2012 | | 1980 | +-----------+ 2 rows in set (0.00 sec) mysql> insert into t3 values (2019),(81); Query OK, 2 rows affected (0.00 sec) Records: 2 Duplicates: 0 Warnings: 0 mysql> select * from t3; +-----------+ | born_year | +-----------+ | 2012 | | 1980 | | 2019 | | 1981 | +-----------+ 4 rows in set (0.00 sec)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。