类型 |
占用空间 |
最小值 |
最大值 |
举栗与知识点 |
---|---|---|---|---|
INT | 4 |
signed -2147483648 (-2^31)【默认】 unsigned 0 |
2147483647 (2^31-1) 4294967295 (2^32-1) |
int的默认类型是有符号的
|
BIGINT | 8 |
signed -2^63 【默认】 unsigned 0 |
2^63 2^64-1 |
int(3) int(11)中3和11的含义: 这里的3跟11表示显示宽度,本身没有意义,只有与zerofill配合在一起,才会起作用。
INT类型的属性: UNSIGNED/SIGNED: 是否有符号 ZEROFILL: 定义显示宽度,不会更改值,当插入数据宽度大于定义的宽度,不会对插入的数据有任何影响,还会按照类型的实际进度进行保存,这时宽度格式已经没有任何意义。 Auto_INCREMENT:自增,每张表一个自增字段,该自增字段,必须有唯一索引,以避免序号重复
|
类型 |
占用空间 |
有效位数
|
知识点 |
---|---|---|---|
单精度类型: FLOAT |
4 | 8 |
1、float(M,D)/DOUBLE(M,D)/DECIMAL(M,D),M表示总位数,D表示小数点后面有几位,M和D又称为精度和标度。 2、mysql在保存值的时候,会进行四舍五入,例如float(7,4),当插入,999.00009 这个时候会显示999.0001 3.FLOAT和DOUBLE在不指定精度时,默认会按照实际的精度来显示,而DECIMAL在不指定精度时,默认整数为10,小数为0。 |
双精度类型: DOUBLE |
8 | 16 |
|
高精度类型:DECIMAL | 变长 |
1.DECIMAL用于在数据库中存储精确的数值,FLOAT与DOUBLE在数据库中存放的是近似值 2. |
在mysql中float、double(或real)是浮点数,decimal(或numberic)是定点数,浮点数相对于定点数的优点是在长度一定的情况下,浮点数能够表示更大的数据范围;它的缺点是会引起精度问题。
在今后关于浮点数和定点数的应用中,需要记住以下几点:
参考:https://blog.csdn.net/qq_32823673/article/details/80410238
1、浮点数存在误差问题;
2、对货币等对精度敏感的数据,应该用定点数表示或存储;
3、编程中,如果用到浮点数,要特别注意误差问题,并尽量避免做浮点数比较;
4、要注意浮点数中一些特殊值的处理。
类型 |
说明 |
最大长度 |
用途
|
---|---|---|---|
char(n) | 定长字符 | 255字节 | 定长字符串 |
varchar(n) | 变长字符 | 65535字节 | 变长字符串 |
tinytext | 大对象 | 255字节 | 短文本字符串 |
text | 大对象 | 65535字节 | 长文本数据 |
知识点:
1.char(n)和varchar(n)中括号中n代表字符的个数,并不代表字节个数,所以当使用了中文的时候(UTF8)意味着可以插入m个中文,但是实际会占用m*3个字节
2.char和varchar最大的区别就在于char不管实际value都会占用n个字符的空间,而varchar只会占用实际字符应该占用的空间+1,并且实际空间+1<=n。
3.超过char和varchar的n设置后,可能会出现报错或者是字符串的截断,跟MySQL的版本有关。
4、char的上限为255字节,varchar的上限65535字节,text的上限为65535。
5、char在存储的时候会截断尾部的空格,varchar和text不会。
6、varchar会使用1-3个字节来存储长度,text不会。
7.当varchar大于某些数值的时候,其会自动转换为text,大概规则如下:
所以对于过大的内容使用varchar和text没有太多区别。
总结:
字符串类型-----ENUM & SET
ENUM类型最多运行65536个值,SET类型最多允许64个值,set类型一次可以选取多个成员,而ENUM则只能选一个,就相当于ENUM是单选,而set是复选
类型
|
大小
(字节) |
范围
|
格式
|
用途
|
---|---|---|---|---|
DATE | 3 | 1000-01-01~9999-12-31 | YYYY-MM-DD | 日期值 |
TIME | 3 | ‘-838:59:59‘~‘838:59:59‘ | HH:MM:SS | 时间值或持续时间 |
YEAR | 1 | 1901~2155 | YYYY | 年份值 |
DATETIME | 8 | 1000-01-01 00:00:00~9999-12-31 23:59:59 | YYYY-MM-DD HH:MM:SS | 混合日期和时间值 |
TIMESTAMP | 4 |
1970-01-01 00:00:00 UTC~2038-01-19 03:14:07 UTC |
YYYY-MM-DD HH:MM:SS | 混合日期和时间值,时间戳 |
日期函数
常用的创建包含create_time与update_time表的命令:
|
|
---|---|
create table test_time (id int(10) NOT NULL AUTO_INCREMENT , name varchar(10), create_time datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, update_time datetime NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (`id`)); |
原文:https://www.cnblogs.com/ting152/p/12450280.html