数值

tinyint

1.十分小的数据,占用1个字节,有符号的范围是-128 - 127,无符号的范围是 从 0 到 255 的整型数据
2.java类型Integer

smallint

1.较小的数据,占用2个字节
2.java类型Integer

mediumint

1.中等大小的数据,占用3个字节
2.java类型Integer

int

1.标准的整数,占用4个字节,范围为-231~231 -1 (-2147483648 ~ 2147483647),可以达到21亿,一般足够用了
2.unsigned,无符号,范围大小 是 0 到4294967295 (40亿)
id int unsigned NOT NULL AUTO_INCREMENT
3.int(num)一般加上zerofill,才有效果。zerofill的作用一般可以用在一些编号相关的数字中,比如学生的编号 001 002 … 999这种
id int(4) unsigned zerofill NOT NULL AUTO_INCREMENT
4.java类型Integer

bigint

1.占用8 个字节,范围从 -2^63 (-9223372036854775808) 到 2^63-1 (9223372036854775807) 的整型数据(所有数字),无符号的范围是0到18446744073709551615

float

1.浮点型,占4个字节
2.float单精度在一些处理器上比double双精度更快而且只占用double双精度一半的空间
3.缺点是当值很大或很小的时候,它将变得不精确。
4.float(m,d),一个显示宽度m和一个小数点后面带的个数d,同decimal的参数一样
5.unsigned和 zerofill 修饰符也可以被 float、double和 decimal数据类型使用, 并且效果与 int数据类型相同
6.java类型Float

double

1.浮点型,占8个字节
2.double 双精度是消耗内存的,并且是 float 单精度的两倍
3.当你需要保持多次反复迭代的计算精确性时,或在操作值很大的数字时,双精度型是最好的选择。
4.double(m,d),一个显示宽度m和一个小数点后面带的个数d,同decimal的参数一样
5.unsigned和 zerofill 修饰符也可以被 float、double和 decimal数据类型使用, 并且效果与 int数据类型相同
6.java类型Double

decimal

1.字符串形式的浮点数,一般用于计算金额,decimal 类型是适合财务和货币计算
2.decimal(m,d),m是数字的最大位数,他的范围是从1-65;d是小数点后的位数,他的范围是0-30,并且不能大于m。
3.如果m被省略了,那么m的值默认为10,如果d被省略了,那么d的值默认为0.
比如:decimal(5,2),最大位数5位,2位小数,范围-999.99~999.99
4.小数点左侧位数1–2占1个字节,3-4占2个字节,5-6占3个字节,7-9占4个字节
5.unsigned和 zerofill 修饰符也可以被 float、double和 decimal数据类型使用, 并且效果与 int数据类型相同
6.java类型BigDecimal

字符串

char

1.固定大小的字符串,0~255
2.java类型String

varchar

1.可变大小的字符串,0~65535
2.java类型String

tinytext

1.微型文本,最大长度是 255 (2^8 – 1) 个字符。
2.java类型String

text

1.文本串, 最大长度是 65535 (2^16 – 1) 个字符,64kb
2.java类型String

MEDIUMTEXT

1.文本串, 最大长度是 16777215 (2^24 – 1) 个字符,16M
2.java类型String

LONGTEXT

1.文本串, 最大长度是 4294967295 (2^32 – 1) 个字符,4GB
2.java类型String

注意:text类型可用于存储富文本,在utf8mb4下,英文占用1个字节,一般汉字占3个字节,emoji表情占4个字节。

二进制字符串类型

BINARY与VARBINARY类型

  • BINARY和VARBINARY类似于CHAR和VARCHAR,只是它们存储的是二进制字符串。
  • BINARY (M)为固定长度的二进制字符串,M表示最多能存储的字节数,取值范围是0~255个字符。如果未指定(M),表示只能存储1个字节。例如BINARY (8),表示最多能存储8个字节,如果字段值不足(M)个字 节,将在右边填充’\0’以补齐指定长度。
  • VARBINARY(M)为可变长度的二进制字符串,M表示最多能存储的字节数,总字节数不能超过行的字节长度限制65535,另外还要考虑额外字节开销,VARBINARY类型的数据除了存储数据本身外,还需要1或2个字节来存储数据的字节数。VARBINARY类型必须指定(M) ,否则报错。

BLOB类型

  • (binary large object),二进制大对象,是一个可以存储二进制文件的容器,在数据库中存放体积较大的多媒体对象就是应用程序处理BLOB的典型例子。
  • TinyBlob 最大 255,Blob 最大 65K,MediumBlob 最大 16M,LongBlob 最大 4G
  • 需要注意的是,在实际工作中,往往不会在MySQL数据库中使用BLOB类型存储大对象数据,通常会将图片、音频和视频文件存储到服务器的磁盘上 ,并将图片、音频和视频的访问路径存储到MySQL中。

日期时间

date

1.YYYY-MM-DD日期格式,范围1000-01-01 ~ 9999-12-31
2.java类型Date

time

1.HH:mm:ss时间格式,范围-838:59:59 ~ 838:59:59
2.java类型Time

DATETIME

1.YYYY-MM-DD HH:mm:ss (最常用的时间格式),范围1000-01-01 00:00:00 ~ 9999-12-31 23:59:59
2.java类型Date

TIMESTAMP

1.时间戳, 1970.1.1到现在的毫秒数!也较为常用

DATETIME和TIMESTAMP的区别

  • DATETIME 类型在所有的日期时间类型中占用的存储空间最大,总共需要 8 个字节的存储空间
  • 不考虑存储空间优化的情况下,DATETIME是最优的时间存储类型 ;考虑存储空间的情况下,TIMESTAMP是最优的时间存储类型
  • TIMESTAMP会先将用户输入转换成UTC时间进行存储,查询时也会将时间转换成当前UTC时间,所以当数据库服务器的时区跟查询客户端时区不一致时,会出现查询不到的情况。比如查询客户端与数据库服务器都在中国,北京是东八区时间是UTC+8小时,那么存储时会先-8小时,查询时+8。
  • 使用函数CURRENT_TIMESTAMP(), NOW()可以向datetime类型字段插入系统当前日期和时间。

YEAR[(2|4)]

1.缺省为4位格式,4位格式取值范围为 1901 ~ 2155,2位格式取值范围为 70-69(1970-2069)
2.java类型Year

ENUM

1.枚举类型,ENUM类型只允许从成员中选取单个值,不能一次选取多个值
2.当ENUM类型包含1~255个成员时,需要1个字节的存储空间;当ENUM类型包含256~65535个成员时,需要2个字节的存储空间。ENUM类型的成员个数的上限为65535个。
3.没有限制非空的情况下,可以添加null值
4.java类型Enum

JSON类型

JSON(JavaScript Object Notation)是一种轻量级的数据交换格式 。简洁和清晰的层次结构使得 JSON成为理想的数据交换语言

CREATE TABLE json_demo(content JSON);
insert into json_demo(content)values('{"name":"baidu","host":"www.baidu.com"}'),
('{"name":"alibaba","host":"www.alibaba.com"}');
select JSON_EXTRACT(content,'$.name')as name,JSON_EXTRACT(content,'$.host')as host from json_demo;

建表实例

SET NAMES utf8;
SET FOREIGN_KEY_CHECKS = 0;DROP TABLE IF EXISTS `demo`;
CREATE TABLE `demo`  (`id` varchar(36) NOT NULL COMMENT 'id',`code` int(4) unsigned zerofill NOT NULL AUTO_INCREMENT COMMENT '四位编号',`name` varchar(100) COMMENT '姓名',`id_number` char(18) COMMENT '证件号码,使用固定18位,可以提供索引效率',`birth_year` year COMMENT '出生年份',`sex` ENUM('男','女') COMMENT '出生年份',`resume` text  COMMENT '个人简介',`create_date` date COMMENT '创建日期',`create_time` time COMMENT '创建时间',`update_time` datetime COMMENT '更新时间',`is_del` tinyint NOT NULL DEFAULT 0 COMMENT '是否删除 0-正常1-已删除',`salary` decimal(11, 2)  COMMENT '工资收入 9+2整数9位占用4个字节',`x_coordinate` float COMMENT 'x坐标',`y_coordinate` double COMMENT 'y坐标',PRIMARY KEY (`id`),INDEX `demo_id_number`(`id_number`),
);SET FOREIGN_KEY_CHECKS = 1;

uuid()

36位的id,建议直接使用这种

select UUID()
44a5cc70-e23c-11ec-bff7-00ffc0087494

32位的id,但是这种可能会出现重复的情况,

select replace(uuid(),'-','');
8ea9402be23c11ecbff700ffc0087494

mysql自动创建uuid

oracel创建uuid为主键的表时可以直接指定default uuid();但是mysql不支持,可以通过触发器实现

CREATE TRIGGER `demo_before_insert` BEFORE INSERT ON `demo` FOR EACH ROW
BEGIN
IF new.id is NULL THENSET new.id = UUID();
END IF;
END;

或使用mybatisplus注解

import com.baomidou.mybatisplus.annotations.TableId;
import com.baomidou.mybatisplus.enums.IdType;
@ApiModelProperty("主键ID")
@TableId(type = IdType.UUID
)
private String id;

mysql 数据库字段类型大全相关推荐

  1. mysql数据库字段类型大全_mysql数据库字段类型详解

    MySQL支持大量的列类型,它可以被分为3类:数字类型.日期和时间类型以及字符串(字符)类型.本节首先给出可用类型的一个概述,并且总结每个列类型的存储需求,然后提供每个类中的类型性质的更详细的描述. ...

  2. Java实体类字段类型与MySQL数据库字段类型的对应关系

    序号 Java实体类类型 Java引入 MySQL字段类型 1 String java.lang.String varchar 2 String java.lang.String char 3 Str ...

  3. MySQL数据库字段类型 text 超长报错问题解决方案

    把 字段类型 改为 longtext 即可,因为: 1.text字段类型:text字段类型的字节限制为65535字节. 2.longtext字段类型:longtext字段类型的字节限制为2147483 ...

  4. mysql中数据库字段类型详解

    mysql中数据库字段类型详解 1,blob字段 mysql中blob是一个二进制大型对象,是一个可以储存大量数据的容器,它能容纳不同大小的数据. mysql中blob的四种类型除了存储数据的大小有区 ...

  5. MySQL数据库优化技巧大全

    简介:MySQL数据库优化技巧大全 MySQL优化三大方向 ① 优化MySQL所在服务器内核(此优化一般由运维人员完成). ② 对MySQL配置参数进行优化(my.cnf)此优化需要进行压力测试来进行 ...

  6. mysql5.7语句建库_MySQL5.7.14下载安装图文教程及MySQL数据库语句入门大全

    如何下载: 我先去MySQL首页下载最新版本的MySQL-链接:https://www.mysql.com/downloads/ 进入此界面下载: Downloads–>MySQL Commun ...

  7. java中常见数据库字段类型与java.sql.Types的对应

    转自:http://blog.csdn.net/hbzyaxiu520/article/details/5457225 常见数据库字段类型与java.sql.Types的对应 Oracle与java. ...

  8. mysql 数据库时间类型 datetime 数据在页面上显示一串数字, 用函数date_format( )转换格式 ;

    mysql 数据库时间类型 datetime 转换格式 数据库时间字段datetime可以使用date_format( )函数进行时间的转换. 数据库时间字段类型: 数据库查询结果: 没转换前页面显示 ...

  9. mysql修改字段类型语句

    mysql中字段为TEXT类型的内容怎么修改? 可以把字段类型改成MEDIUMTEXT(最多存放16777215个字符)或者LONGTEXT(最多存放4294967295个字符). MySQLsupp ...

最新文章

  1. Mina airQQ聊天 client篇(三)
  2. # 管道已结束_CIPP内衬紫外线固化法用于污水管道非开挖修复
  3. KnowledgeTree简体中文汉化包安装指导
  4. carsim8.02和matlab2016b的联合仿真,找不到carsim s-function的解决办法
  5. Django REST framework介绍
  6. tensorflow gpu安装_tensorflow-gpu安装配置
  7. 基础算法 —— 高精度计算 —— Java 大数类
  8. ui设计移动端字体适配_超全面的移动端UI 设计规范整理汇总
  9. php首字母 大写 数组去重复
  10. 有了这个开源项目,再也不会忘记 Linux 命令啦~
  11. 【目标检测大集合】R-FCN、SSD、YOLO2、faster-rcnn和labelImg实验笔记
  12. TPYBoard MircoPython 外接SPI AD7705
  13. cookie.setValue一些注意事项
  14. 10-16 C1-2新增订单统计信息 (20 分)
  15. 使用python做王者荣耀挂机刷金币脚本
  16. Spring 实战-第四章-4.3 使用注解引入新方法 Introductions@DeclareParents
  17. BUUCTF msic 专题(120)[QCTF2018]X-man-A face
  18. html/css--flex布局
  19. CGTrader新赛CG Wildlife Challenge(CG野生生物竞赛)重磅推出
  20. 怎么用计算机算三角函数值,如何在手机计算器中由三角函数值求角度

热门文章

  1. 视频号怎么做?6条干货汇总,超详细视频号制作教程!
  2. AU类型的fault占比过高,覆盖率低,Debug步骤
  3. 天天基金爬虫——天天基金爬取基金信息统计持仓净值
  4. 【SVM分类】基于粒子群算法优化支持向量机实现葡萄酒数据分类附matlab代码
  5. 神经网络算法是什么意思,神经网络计算工作原理
  6. 华硕支持2003服务器主板,华硕支持45nm服务器主板P5BV/SAS上市
  7. 牛客网 MIKU酱的氪金宝典(BFS)
  8. JAV API 之 --- StringBuffer类、Array类、基本类型包装类
  9. 小米手机为什么老显示服务器忙,小米手机网速慢是怎么回事
  10. Vue+element ui 上传视频