mysql中int、bigint、smallint 和 tinyint的区别详细介绍
类型 | 范围(无符号) | 大小 | 范围(有符号) | 用途 |
---|
TINYINT | (0,255) | 1字节 | (-128,127) | 小整数值 |
SMALLINT | (0,65 535) | 2字节 | (-32 768,32 767) | 大整数值 |
MEDIUMINT | (0,16 777 215) | 3字节 | (-8 388 608,8 388 607) | 大整数值 |
INT或INTEGER | (0,4 294 967 295) | 4字节 | (-2 147 483 648,2 147 483 647) | 大整数值 |
BIGINT | (0,18 446 744 073 709 551 615) | 8字节 | (-9 233 372 036 854 775 808,9 223 372 036 854 775 807) | 极大整数值 |
MySQL中Date,DateTime,TimeStamp和Time的解释和区别
Date:
名称 | 解释 |
---|
显示格式 | YYYY-MM-DD |
显示范围 | 1601-01-01 到 9999-01-01 |
应用场景 | 当业务需求中只需要精确到天时,可以用这个时间格式 |
后台取值 | @JSONField(format=”yyyy-MM-dd”) |
DateTime:
名称 | 解释 |
---|
显示格式 | YYYY-MM-DD HH:mm:ss |
显示范围 | 1601-01-01 00:00:00 到 9999-12-31 23:59:59 |
应用场景 | 当业务需求中需要精确到秒时,可以用这个时间格式 |
后台取值 | @JSONField(format=”yyyy-MM-dd HH:mm:ss”) |
TimeStamp:
名称 | 解释 |
---|
显示格式 | YYYY-MM-DD HH:mm:ss |
显示范围 | 1601-01-01 00:00:00 到 9999-12-31 23:59:59 |
应用场景 | 当业务需求中需要精确到秒或者毫秒时,或者该系统用于不同时区,可以用这个时间格式 |
后台取值 | @JSONField(format=”yyyy-MM-dd HH:mm:ss:SSS”)(这里只会精确到秒) |
Time:
名称 | 解释 |
---|
显示格式 | HH:mm:ss |
显示范围 | 00:00:00 到 23:59:59 |
应用场景 | 当业务需求中只需要每天的时间,可以用这个时间格式 |
后台取值 | @JSONField(format=”HH:mm”)(这里是只精确到分,数据库存的也就是只精确到分,比如 09:36:00,如果需要精确到秒。需要使用@JSONField(format=”HH:mm:ss”)) |
DateTime和TimeStamp比较
1、精度:DateTime和TimeStamp都可以精确到毫秒(我目前使用的5.5的mysql,所以只能精确到秒,据说高版本的可以用TIMESTAMP(3)与 DATETIME(3)精确到毫秒。),但是用的很少,一般精确到毫秒都是用Timestamp,2、DateTime和TimeStamp最大的区别只是用的场景不同,如果你的应用 是用于不同时区(就是国内和国外同时使用),这时候如果用dateTime就会出现各种各样的问题,但是如果使用TimeStamp就不会出现这种时差的问题。
MySQL中tinytext、text、mediumtext和longtext等各个类型详解
类型 | 范围 | 说明 | |
---|
Char(N) [ binary] | N=1~255 个字节 binary :分辨大小写 | 固定长度 | std_name cahr(32) not null |
VarChar(N) [binary] | N=1~255 个字节 binary :分辨大小写 | 可变长度 | std_address varchar(256) |
TinyBlob | 最大长度255个字节(2^8-1) | Blob (Binary large objects)储存二进位资料,且有分大小写 | memo text not null |
TinyText | 最大长度255个字节(2^8-1) | | |
Blob | 最大长度65535个字节(2^16-1) | | |
Text | 最大长度65535个字节(2^16-1) | | |
MediumBlob | 最大长度 16777215 个字节(2^24-1) | | |
MediumText | 最大长度 16777215 个字节(2^24-1 | | |
LongBlob | 最大长度4294967295个字节 (2^32-1) | | |
LongText | 最大长度4294967295个字节 (2^32-1) | | |
Enum | 集合最大数目为65535 | 列举(Enumeration),Enum单选、Set复选 | sex enum(1,0) habby set(‘玩电玩’,'睡觉’,'看电影’,'听音乐’) |
Set | 集合最大数目为64 | 同上 | |
辨別Null与Not Null :Null为允许储存空值(Null)
在My SQL 中varchar定义的长度的单位是字符,哪怕是1个多字节字符也是1个字符,如中文和英文字母都被当作1个字符来对待。
mysql创建表时的空值和非空值设置有什么讲究
空值是一种特殊的状态, 表示某一个字段"没有被处理过"几乎在所有的数据库中甚至是编程语言中, 空与非空都有其存在的意义, 举个例子, 一个人员表中, 有一个年龄字段, 这个年龄字段如果为非 空, 则在不知道人员年龄的情况下, 数据无法入库, 否则会显示个奇怪的年龄(比如0岁, 或者-1岁等)而有些情况泽不可以为空, 最常见的就是"主键", 比如身份证号之类的