MySQL 数据库中的数据类型

整数类型

标准 SQL 中支持 INTEGER 和 SMALLINT 这两种类型,MySQL 数据库除了支持这两种类型以外,还扩展支持了 TINYINT、MEDIUMINT 和 BIGINT

整数类型 字节数 无符号数的取值范围 有符号数的取值范围 TINYINT 1 (0,255) (-128,127) SMALLINT 2 (0,65535) (-32768,32767) MEDIUMINT 3 (0,16777215) (-8388608,8388607) INT 4 (0,4294967295) (-2147483648,2147483647) INTEGER 4 (0,4294967295) (-2147483648,2147483647) BIGINT 8 (0,18446744073709551615) (-9223372036854775808,9223372036854775807)

浮点数类型和定点数类型

数据表中用浮点数类型和定点数类型来表示小数,浮点数类型包括单精度浮点数(FLOAT)和双精度浮点数(DOUBLE),定点数类型就是 DECIMAL

类型 字节数 负数的取值范围 非负数的取值范围 FLOAT 4 (-3.402823466E+38,-1.175494351E-38) 0,(1.175494351E-38,3.402 823466E+38) DOUBLE 4 (-1.7976931348623157E+308,-2.2250738585072014E-308) 0,(2.2250738585072014E-308,1.7976931348623157 E+308) DECIMAL(M,D) M+2 取决于 M 和 D 取决于 M 和 D

FLOAT 和 DOUBLE 类型存储数据时存储的是近似值,DECIMAL 存储的是字符串,因此提供了更高的精度。在金融系统中,表示货币金额的时候会优先考虑 DECIMAL 类型;在一般的价格体系,比如购物平台的商品标价,一般用 FLOAT 类型即可

日期和时间类型

每种日期和时间类型都有一个有效范围。如果插入的值超过此范围,系统将报告错误并将零值插入数据库

[En]

Each date and time type has a valid range if the inserted value exceeds this range, the system will report an error and insert a zero value into the database

类型 字节数 取值范围 零值 YEAR 1 1901 ~ 2155 0000 DATE 4 1000-01-01 ~ 9999-12-31 0000:00:00 TIME 3 -838:59:59 ~ 838:59:59 00-00-00 DATETIME 8 1000-01-01 00:00:00 ~ 9999-12-31 23:59:59 0000-00-00 00:00:00 TIMESTAMP 4 19700101080001 ~ 2038011911407 00000000000000

字符串类型

CHAR 类型和 VARCHAR 类型都在创建表时指定了最大长度,CHAR 类型的长度是固定的,其长度可以是 0 ~ 255 的任意值。而 VARCHAR 类型的长度是可变的,其最大值可以取 0 ~ 65535 之间的任意值,VARCHAR 类型实际占用的空间为字符串的实际长度加一,这样可以有效节约系统的空间

TEXT 类型是一种特殊的字符串类型,各种 TEXT 类型的区别在于允许的长度和存储空间不同

类型 允许的长度 存储空间 TINYTEXT 0-255 值的长度+2个字节 TEXT 0-65535 值的长度+2个字节 MEDIUMTEXT 0-16772150 值的长度+3个字节 LONGTEXT 0-4294967295 值的长度+4个字节

ENUM 类型又称枚举类型,在创建表时,ENUM 类型的取值范围以列表的形式指定

属性名 ENUM('值1', '值2', ..., '值n')
  • 属性名:指字段的名称
  • 值n:表示列表中的第 n 个值

ENUM 类型的值只能取列表中的某一个元素,取值列表最多能有 65535 个值。列表中的每个值独有一个顺序排列的编号,MySQL 存入的是这个编号,而不是列表中的值

如果 ENUM 类型加上了 NOT NULL 属性,其默认值为取值列表的第一个元素。如果不加 NOT NULL 属性,ENUM 类型将允许插入 NULL,而且 NULL 为默认值

在创建表时,SET 类型的取值范围就以列表的形式指定了

属性名 SET('值1', '值2', ..., '值n')

二进制类型

BINARY是存储二进制数据的数据类型。

[En]

Binary is the data type that stores binary data.

类型 取值范围 BINARY(M) 字节数为M,允许长度为0~M的定长二进制字符串 VARBINARY (M) 允许长度为0~M的变长二进制字符串,字节数为值的长度加1 BIT(M) M位二进制数据,M最大值为64 TINYBLOB 可变长二进制数据,最多255个字节 BLOB 可变长二进制数据,最多(2^16-1)个字节 MEDIUMBLOB 可变长二进制数据,最多(2^24-1)个字节 LONGBLOB 可变长二进制数据,最多(2^32-1)个字节

BINARY 类型的长度是固定的,不足最长长度的空间有 ‘\0’ 补全

VARBINARY 类型的长度是可变的,在最大范围内使用多少就分配多少

例如,BIT(4) 就是指定数据类型为 BIT 类型,长度为 4,若存储的数据是 0 ~ 15,因为变成二进制后的 15 的值为 1111,则其长度为 4。如果插入的值为 16,其二进制数为 10000,长度为 5 超过最大长度,则插入失败

BLOB 用来保存数据量很大的二进制数据,如图片等。BLOB 类型与 TEXT 类型类似,不同在于 BLOB 类型用于存储二进制数据,根据其二进制编码进行比较和排序,而 TEXT 类型是以文本模式进行比较和排序的

JSON 类型

在 MySQL 中,JSON 值是以字符串形式写入的,MySQL 会对字符串进行解析,如果不符合 JSON 格式,那么写入将失败

名称 描述 json_array() 创建json数组 json_array_append() 数组尾部追加元素 json_array_insert() 在数组的指定位置插入元素 json_extract() / -> / ->> 根据条件提取文档中的数据 json_contains(target,candidate[,path]) 查询文档中是否包含指定的元素 json_contains_path() 查询文档中是否包含指定的路径 json_depth() json文档的深度(元素最大嵌套层数) json_insert() 向json文档插入值 json_keys() 提取json中的键值为json数组 json_length() json文档的长度(元素的个数) json_merge() / json_merge_preserve() 将两个文档合并,保留重复键值 json_merge_patch() 将两个文档合并,替换重复键值 json_object() 创建json对象 json_pretty() 美化json格式 json_quote() / json_unquote() 加上/去掉json文档两边的双引号 json_remove() 删除文档中指定位置的元素 json_replace() 替换文档中指定位置的元素 json_search() 返回所有符合条件的路径集合 json_set() 给文档中指定位置的元素设置新值 json_storage_free() json文档更新操作后的剩余空间 json_storage_size() json文档占用的存储空间 json_table() 将json文档转换为表格 json_type() json文档类型(数组/对象/标量) json_valid() json格式是否合法

Spatial 数据类型

Spatial 数据即空间数据,又称几何数据,表示物体的位置、形态、大小分布等各方面信息

MySQL 包含的空间数据类型有几何体(GEOMETRY)、点(POINT)、线(LINESTRING)和多边形(POLYGON),其中几何体可以存储任何类型的几何数据,而其他三种只能存储对应类型的几何数据

Original: https://www.cnblogs.com/Yee-Q/p/16153180.html
Author: 低吟不作语
Title: MySQL 数据库中的数据类型

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/505480/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • Java学习-第一部分-第一阶段-第八节:项目-房屋出租系统

    项目-房屋出租系统 笔记目录:(https://www.cnblogs.com/wenjie2000/p/16378441.html) 房屋出租系统-需求 ●项目需求说明 实现基于…

    数据库 2023年6月11日
    0147
  • django中的JsonRseponse对象

    json格式的数据 在进行前后端数据交互的时候,我们需要使用json格式的数据作为过渡,实现跨语言传输数据! django中的JsonResponse对象 在django中Json…

    数据库 2023年6月14日
    0116
  • 分布式事务解决方案

    分布式事务解决方案 花开堪折直须折,莫待无花空折枝。 分布式事务是指事务的操作位于不同的节点上,需要保证事务的ACID特性。在分布式架构下,每个节点只知晓自身操作的成功与失败,无法…

    数据库 2023年6月14日
    0135
  • MYSQL性能优化以及建议

    1、业务代码组合逻辑后进行数据库操作,如根据波次进行库存分配,可以将波次里面的订单所有明细进行分组,然后匹配库存。2、将大字段、不常用字段放置到扩展表中,将经常使用(状态、数量、编…

    数据库 2023年5月24日
    0113
  • BigDecimal 设置小数位数、小数比例转换整数

    控制小数位数 DecimalFormat decimalFormat = new DecimalFormat("0.00"); decimalFormat.fo…

    数据库 2023年6月6日
    0135
  • JavaWeb核心篇(6)——Ajax

    JavaWeb核心篇(6)——Ajax Ajax(Asynchronous JavaScript And XML):异步的 JavaScript 和 XML。 我们先来说概念中的 …

    数据库 2023年6月14日
    0111
  • 详谈 MySQL 8.0 原子 DDL 原理

    柯煜昌 青云科技研发顾问级工程师 目前从事 RadonDB 容器化研发,华中科技大学研究生毕业,有多年的数据库内核开发经验。 文章字数 3800+,阅读时间 15 分钟 背景 My…

    数据库 2023年6月11日
    0191
  • Vue 2.0 基础

    知识点 1.是一个MVVM框架 由MVC架构衍生,分为View(视图层)、ViewModel(数据视图层)、Model(数据层),MVVM 最标志性的特性就是 数据绑定,实现数据驱…

    数据库 2023年6月11日
    0151
  • Java根据Freemarker模板生成Word文件

    准备模板 模板 + 数据 = 模型 1、将准备好的Word模板文件另存为.xml文件(PS:建议使用WPS来创建Word文件,不建议用Office) 2、将.xml文件重命名为.f…

    数据库 2023年6月14日
    0135
  • 【黄啊码】MySQL入门—3、我用select *,老板直接赶我坐火车回家去,买的还是站票

    大家好!我是黄啊码,学会了DDL语句了吗?那我们今天就来学习一下基本的查询语法,我见过很多外包机构的程序员都是万物皆可select *,然后项目跑了一段时间就基本跑不动了,问就回答…

    数据库 2023年6月16日
    0108
  • HTTP 协议概述

    什么是 HTTP 协议 什么是协议? 协议是指双方,或多方,相互约定好,大家都需要遵守的规则,叫协议。所谓 HTTP 协议,就是指,客户端和服务器之间通信时,发送的数据,需要遵守的…

    数据库 2023年6月11日
    0132
  • 小心陷入MySQL索引的坑

    索引可以说是数据库中的一个大心脏了,如果说一个数据库少了索引,那么数据库本身存在的意义就不大了,和普通的文件没什么两样。所以说一个好的索引对数据库系统尤其重要,今天来说说MySQL…

    数据库 2023年6月6日
    0142
  • 如何在MySQL中进行简单的增删改查

    — 创建dept表并设置主键create table dept(deptno int(2) primary key ,dname varchar(14),loc var…

    数据库 2023年6月16日
    0174
  • Spring Boot 入门

    一、 Spring Boot 入门 1、Spring Boot 简介 简化Spring应用开发的一个框架;整个Spring技术栈的一个大整合;J2EE开发的一站式解决方案; 2、微…

    数据库 2023年6月6日
    0200
  • 栈和队列数据结构

    栈和队列都是常用的数据结构。栈的应用非常的广泛,其原理也是非常经典的。 一、栈 ①栈(stack)又名堆栈,他是一种运算受限的线性表。其限制是仅允许在表的一端进行插入和删除运算。这…

    数据库 2023年6月11日
    0184
  • 20 行代码!带你快速构建基础文本搜索引擎 ⛵

    💡 作者:韩信子@ShowMeAI📘 机器学习实战系列:https://www.showmeai.tech/tutorials/41📘 深度学习实战系列:https://www.s…

    数据库 2023年6月14日
    0134
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球