当前位置: 首页 > article >正文

MySQL 数据库常见字段类型大全及详细解析

在工作期间会遇到数据库建表的业务,经常会使用复制粘帖等操作,而不清楚数据库的字段类型。本文记录了 MySQL 数据库常见字段类型,根据不同的数据需求,可以选择不同的字段类型来存储数据。

文章目录

    • 一、整数类型
      • 1、TINYINT:存储较小的整数值
      • 2、SMALLINT:存储比 TINYINT 稍大一些的整数
      • 3、MEDIUMINT:存储中等大小的整数
      • 4、INT 或 INTEGER:存储一般性的整数
      • 5、BIGINT:存储非常大的整数
    • 二、浮点数和定点数类型
      • 1、FLOAT:存储对精度要求不是特别高的浮点数
      • 2、DOUBLE 或 DOUBLE PRECISION:存储高精度的浮点数
      • 3、(DECIMAL 或 DEC)或 NUMERIC:存储精确的小数
    • 三、字符类型
      • 1、CHAR(n):定长字符数据类型
      • 2、VARCHAR(n):变长字符数据类型
      • 3、TEXT:存储大量文本数据
    • 四、日期和时间类型
      • 1、DATE:存储日期 YYYY-MM-DD
      • 2、TIME:存储时间 HH:MM:SS
      • 3、DATETIME 或 TIMESTAMP:存储日期 YYYY-MM-DD HH:MM:SS
    • 五、二进制数据类型
      • 1、BINARY(n):定长二进制数据类型
      • 2、VARBINARY(n):变长二进制数据类型
      • 3、BLOB:存储二进制大对象
    • 六、枚举和集合类型
      • 1、ENUM:枚举类型
      • 2、SET:集合类型
    • 七、JSON 类型
      • 1、JSON:存储 JSON 数据
    • 八、空间数据类型:存储地理信息数据
      • 1、POINT:存储一个点的坐标
      • 2、LINESTRING:存储一条线的坐标序列
      • 3、POLYGON:存储一个多边形的顶点坐标序列

一、整数类型

1、TINYINT:存储较小的整数值

占用 1 个字节,有符号范围是 -128127,无符号范围是 0255。通常用于存储较小的整数值,如状态标志、计数器等。

CREATE TABLE example (tinyint_column TINYINT
);

2、SMALLINT:存储比 TINYINT 稍大一些的整数

占用 2 个字节,有符号范围是 -3276832767,无符号范围是 065535。适合存储比 TINYINT 稍大一些的整数,如少量物品的数量等。

CREATE TABLE example (smallint_column SMALLINT
);

3、MEDIUMINT:存储中等大小的整数

占用 3 个字节,有符号范围是 -83886088388607,无符号范围是 016777215。可用于存储中等大小的整数,在数据量不是很大时比较有用。

CREATE TABLE example (mediumint_column MEDIUMINT
);

4、INT 或 INTEGER:存储一般性的整数

占用 4 个字节,有符号范围是 -21474836482147483647,无符号范围是 04294967295。是最常用的整数类型之一,可用于存储一般性的整数,如用户 ID、产品 ID 等。

CREATE TABLE example (int_column INT
);

5、BIGINT:存储非常大的整数

占用 8 个字节,有符号范围是 -92233720368547758089223372036854775807,无符号范围是 018446744073709551615。用于存储非常大的整数,如大数据表中的主键、大型计数等。

CREATE TABLE example (bigint_column BIGINT
);

二、浮点数和定点数类型

1、FLOAT:存储对精度要求不是特别高的浮点数

单精度浮点数,占用 4 个字节。可存储近似值,适用于对精度要求不是特别高的浮点数存储,如科学计算中的近似值。

CREATE TABLE example (float_column FLOAT
);

2、DOUBLE 或 DOUBLE PRECISION:存储高精度的浮点数

双精度浮点数,占用 8 个字节。比 FLOAT 提供更高的精度,适用于需要更高精度的浮点数存储,如复杂的科学计算等。

CREATE TABLE example (double_column DOUBLE
);

3、(DECIMAL 或 DEC)或 NUMERIC:存储精确的小数

定点数,可存储精确的小数,使用时需要指定精度(总位数)和标度(小数位数)。适用于货币、财务数据等需要精确存储的场景。

CREATE TABLE example (decimal_column DECIMAL(10, 2)
);

在示例中,DECIMAL(10, 2) 表示总共可以存储 10 位数字,其中 2 位是小数部分,例如 1234567.89

三、字符类型

1、CHAR(n):定长字符数据类型

定长字符数据类型,存储长度固定为 n 个字符,n 的范围是 0 到 255。如果存储的数据长度小于 n,会使用空格填充。常用于存储长度固定的数据,如国家代码、邮政编码等。

CREATE TABLE example (char_column CHAR(5)
);

2、VARCHAR(n):变长字符数据类型

变长字符数据类型,存储长度可变,最大长度为 n 个字符,n 的范围是 0 到 65535。仅存储实际输入的字符长度,可节省空间,常用于存储长度不固定的数据,如用户名、地址等。

CREATE TABLE example (varchar_column VARCHAR(50)
);

3、TEXT:存储大量文本数据

存储大量文本数据,最大长度为 65,535 个字符。适用于存储较长的文本内容,如文章、评论等。

CREATE TABLE example (text_column TEXT
);

四、日期和时间类型

1、DATE:存储日期 YYYY-MM-DD

存储日期,格式为 YYYY-MM-DD,范围是 1000-01-019999-12-31。用于存储日期信息,如生日、订单日期等。

CREATE TABLE example (date_column DATE
);

2、TIME:存储时间 HH:MM:SS

存储时间,格式为 HH:MM:SS,范围是 -838:59:59838:59:59。可存储一天内的时间信息,如上班时间、下班时间等。

CREATE TABLE example (time_column TIME
);

3、DATETIME 或 TIMESTAMP:存储日期 YYYY-MM-DD HH:MM:SS

存储日期和时间,格式为 YYYY-MM-DD HH:MM:SS,范围是 1000-01-01 00:00:009999-12-31 23:59:59.999999。常用于存储同时包含日期和时间的信息,如操作时间、日志记录时间等。

CREATE TABLE example (datetime_column DATETIME
);

五、二进制数据类型

1、BINARY(n):定长二进制数据类型

定长二进制数据类型,存储长度固定为 n 个字节,n 的范围是 0 到 255。适用于存储固定长度的二进制数据,如存储一些固定长度的加密数据。

CREATE TABLE example (binary_column BINARY(10)
);

2、VARBINARY(n):变长二进制数据类型

变长二进制数据类型,存储长度可变,最大长度为 n 个字节,n 的范围是 0 到 65535。可存储不同长度的二进制数据,如存储图像、音频等的二进制数据。

CREATE TABLE example (varbinary_column VARBINARY(100)
);

3、BLOB:存储二进制大对象

存储二进制大对象,可存储多达 65,535 字节的二进制数据。适用于存储较大的二进制文件,如图片、文档等。

CREATE TABLE example (blob_column BLOB
);

六、枚举和集合类型

1、ENUM:枚举类型

允许从预定义的列表中选择一个值。

CREATE TABLE example (enum_column ENUM('value1', 'value2', 'value3')
);

在示例中,enum_column 只能存储 value1value2value3 中的一个。

2、SET:集合类型

允许存储多个预定义值的集合。

CREATE TABLE example (set_column SET('value1', 'value2', 'value3')
);

在示例中,set_column 可以存储 value1value2value3 的任意组合,如 'value1,value3'

七、JSON 类型

1、JSON:存储 JSON 数据

可用于存储和查询 JSON 格式的数据,方便存储和操作结构化的数据。

CREATE TABLE example (json_column JSON
);

八、空间数据类型:存储地理信息数据

1、POINT:存储一个点的坐标

CREATE TABLE example (point_column POINT
);
-- 插入数据
INSERT INTO spatial_data (point_column)
VALUES (-- 插入一个点,坐标为 (2, 3)POINT(2, 3)
);

使用 POINT 函数创建一个点,坐标为 (2, 3)。

2、LINESTRING:存储一条线的坐标序列

CREATE TABLE example (json_column JSON
);
-- 插入数据
INSERT INTO spatial_data (linestring_column)
VALUES (-- 插入一条线段,经过 (1, 1), (2, 2), (3, 3)LINESTRING(POINT(1, 1), POINT(2, 2), POINT(3, 3))
);

使用 LINESTRING 函数创建一条线段,通过连接多个 POINT 来定义线段的路径,这里的线段经过 (1, 1)、(2, 2) 和 (3, 3) 三个点。

3、POLYGON:存储一个多边形的顶点坐标序列

CREATE TABLE example (json_column JSON
);
-- 插入数据
INSERT INTO spatial_data (polygon_column)
VALUES (-- 插入一个多边形,顶点为 (0, 0), (0, 3), (3, 3), (3, 0), (0, 0)POLYGON(POINT(0, 0), POINT(0, 3), POINT(3, 3), POINT(3, 0), POINT(0, 0)) 
);

使用 POLYGON 函数创建一个多边形,通过连接多个 POINT 来定义多边形的顶点,这里是一个矩形,顶点为 (0, 0)、(0, 3)、(3, 3)、(3, 0) 和 (0, 0)。注意,多边形的最后一个点通常与第一个点相同,以确保闭合。

相关文章:

MySQL 数据库常见字段类型大全及详细解析

在工作期间会遇到数据库建表的业务,经常会使用复制粘帖等操作,而不清楚数据库的字段类型。本文记录了 MySQL 数据库常见字段类型,根据不同的数据需求,可以选择不同的字段类型来存储数据。 文章目录 一、整数类型1、TINYINT&#x…...

MATLAB 工具库的使用说明和案例示例

以下是一些常见的 MATLAB 工具库的使用说明和案例示例: 信号处理工具箱(Signal Processing Toolbox): 使用说明:提供了用于生成、测量、变换、过滤和可视化信号的函数和应用程序。包括重新采样、平滑、同步信号、设计…...

对于Docker的初步了解

简介与概述 1.不需要安装环境,工具包包含了环境(jdk等) 2.打包好,“一次封装,到处运行” 3.跨平台,docker容器在任何操作系统上都是一致的,这就是实现跨平台跨服务器。只需要一次配置好环境&…...

java基础学习——jdbc基础知识详细介绍

引言 数据的存储 我们在开发 java 程序时,数据都是存储在内存中的,属于临时存储,当程序停止或重启时,内存中的数据就会丢失,我们为了解决数据的长期存储问题,有以下解决方案: 通过 IO流书记&…...

第20篇:Python 开发进阶:使用Django进行Web开发详解

第20篇:使用Django进行Web开发 内容简介 在上一篇文章中,我们深入探讨了Flask框架的高级功能,并通过构建一个博客系统展示了其实际应用。本篇文章将转向Django,另一个功能强大且广泛使用的Python Web框架。我们将介绍Django的核…...

CukeTest使用 | 1 CukeTest是什么?如何下载安装?

CukeTest使用 | 1 CukeTest是什么?如何下载安装? 1 CukeTest是什么?2 关于开发者3 CukeTest有哪些特性?4 都支持哪些自动化技术类型?5 版本区别6 下载安装 特殊说明:学习内容主要来自官网的教程、以及网上公…...

An OpenGL Toolbox

3.An OpenGL Toolbox 声明:该代码来自:Computer Graphics Through OpenGL From Theory to Experiments,仅用作学习参考 3.1 Vertex Arrays and Their Drawing Commands 顶点数组及其绘制命令:将几何数据存储在一个位置&#xff0c…...

R语言学习笔记之高效数据操作

一、概要 数据操作是R语言的一大优势,用户可以利用基本包或者拓展包在R语言中进行复杂的数据操作,包括排序、更新、分组汇总等。R数据操作包:data.table和tidyfst两个扩展包。 data.table是当前R中处理数据最快的工具,可以实现快…...

构造函数及实例化的过程:实例成员

构造函数:是一种特殊的函数,主要用来初始化对象 使用场景:比如我们创建了佩奇的对象,继续创建乔治的对象还需要重新写一遍,此时可以通过构造函数来快速创建多个类似的对象。 构造函数语法:大写字母开头的函数 function Pig(name,age,gender)…...

Linux的权限和一些shell原理

目录 shell的原理 Linux权限 sudo命令提权 权限 文件的属性 ⽂件类型: 基本权限: chmod改权限 umask chown 该拥有者 chgrp 改所属组 最后: 目录权限 粘滞位 shell的原理 我们广义上的Linux系统 Linux内核Linux外壳 Linux严格…...

LearnOpenGL——光照

教程地址:简介 - LearnOpenGL CN 前言 这篇开始光照的学习。 颜色 原文链接: 颜色 - LearnOpenGL CN总结: 重新搭建了一个简单场景,为后面的学习做准备。 现实世界中有无数种颜色,每一个物体都有它们自己的颜色。我…...

落地 ORB角点检测与sift检测

ORB角点检测 可以说ORB是由FAST、灰度质心和BRIEF等技术组合优化形成的,不过更准确地说,ORB是在FAST特征检测算法基础上,结合了灰度质心确定方向以及改进后的BRIEF描述子等技术形成的,以下是具体分析: • FAST特征检…...

步入响应式编程篇(二)之Reactor API

步入响应式编程篇(二)之Reactor API 前言回顾响应式编程Reactor API的使用Stream引入依赖Reactor API的使用流源头的创建 reactor api的背压模式发布者与订阅者使用的线程查看弹珠图查看形成新流的日志 前言 对于响应式编程的基于概念,以及J…...

利用Redis实现数据缓存

目录 1 为啥要缓存捏? 2 基本流程(以查询商铺信息为例) 3 实现数据库与缓存双写一致 3.1 内存淘汰 3.2 超时剔除(半自动) 3.3 主动更新(手动) 3.3.1 双写方案 3.3.2 读写穿透方案 3.3.…...

如何使用 pytest-html 创建自定义 HTML 测试报告

关注开源优测不迷路 大数据测试过程、策略及挑战 测试框架原理,构建成功的基石 在自动化测试工作之前,你应该知道的10条建议 在自动化测试中,重要的不是工具 测试 Python 代码对于提高代码质量、检测漏洞或意外行为至关重要。 但测试结果又该…...

服务器中的流量主要是指什么?

服务器流量就是指服务器在单位时间内所传输的数据量,服务器流量在互联网中起着十分重要的作用,一般会被用来处理网站的访问请求,当用户在网站中浏览网页和视频时,服务器会接收到用户的请求,同时会返回网站的内容。 服务…...

飞牛NAS安装过程中的docker源问题

采用CloudFlare进行飞牛NAS的远程访问 【安全免费】无需公网IP、端口号&#xff0c;NAS外网访问新方法_网络存储_什么值得买 sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json <<EOF {"registry-mirrors": ["https://docker.1panel.dev&quo…...

【动态规划】--- 斐波那契数模型

Welcome to 9ilks Code World (๑•́ ₃ •̀๑) 个人主页: 9ilk (๑•́ ₃ •̀๑) 文章专栏&#xff1a; 算法Journey &#x1f3e0; 第N个泰波那契数模型 &#x1f4cc; 题目解析 第N个泰波那契数 题目要求的是泰波那契数&#xff0c;并非斐波那契数。 &…...

php-phar打包避坑指南2025

有很多php脚本工具都是打包成phar形式&#xff0c;使用起来就很方便&#xff0c;那么如何自己做一个呢&#xff1f;也找了很多文档&#xff0c;也遇到很多坑&#xff0c;这里就来总结一下 phar安装 现在直接装yum php-cli包就有phar文件&#xff0c;很方便 可通过phar help查看…...

ChirpIoT技术的优势以及局限性

ChirpIoT是一种由上海磐启微电子开发的国产无线射频通讯技术&#xff0c;ChirpIoT技术基于磐启多年对雷达等线性扩频信号的深入研究&#xff0c;并在此基础上对线性扩频信号的变化进行了改进&#xff0c;实现了远距离传输的一种无线通信技术。相关产品型号有E29-400T22D、E290-…...

java提取系统应用的日志中的sql获取表之间的关系

为了获取到对应的sql数据&#xff0c;分了三步骤 第一步&#xff0c;获取日志文件&#xff0c;解析日志文件中的查询sql&#xff0c;递归解析sql&#xff0c;获取表关系集合 递归解析sql&#xff0c;获取表与表之间的关系 输出得到的对应关联关系数据 第二步&#xff0c;根据获…...

PyQt6医疗多模态大语言模型(MLLM)实用系统框架构建初探(下.代码部分)

医疗 MLLM 框架编程实现 本医疗 MLLM 框架结合 Python 与 PyQt6 构建,旨在实现多模态医疗数据融合分析并提供可视化界面。下面从数据预处理、模型构建与训练、可视化界面开发、模型 - 界面通信与部署这几个关键部分详细介绍编程实现。 6.1 数据预处理 在医疗 MLLM 框架中,多…...

IMX6ull项目环境配置

文件解压缩&#xff1a; .tar.gz 格式解压为 tar -zxvf .tar.bz2 格式解压为 tar -jxvf 2.4版本后的U-boot.bin移植进SD卡后&#xff0c;通过串口启动配置开发板和虚拟机网络。 setenv ipaddr 192.168.2.230 setenv ethaddr 00:04:9f:…...

Linux(Centos 7.6)命令详解:wc

1.命令作用 打印文件的行数、单词数、字节数&#xff0c;如果指定了多个文件&#xff0c;还会打印以上三种数据的总和(Print newline, word, and byte counts for each FILE, and a total line if more than one FILE is specified) 2.命令语法 Usage: wc [OPTION]... [FIL…...

Gradle buildSrc模块详解:集中管理构建逻辑的利器

文章目录 buildSrc模块二 buildSrc的使命三 如何使用buildSrc1. 创建目录结构2. 配置buildSrc的构建脚本3. 编写共享逻辑4. 在模块中引用 四 典型使用场景1. 统一依赖版本管理2. 自定义Gradle任务 3. 封装通用插件4. 扩展Gradle API 五 注意事项六 与复合构建&#xff08;Compo…...

六、深入了解DI

依赖注入是⼀个过程&#xff0c;是指IoC容器在创建Bean时,去提供运⾏时所依赖的资源&#xff0c;⽽资源指的就是对象. 在上⾯程序案例中&#xff0c;我们使⽤了 Autowired 这个注解&#xff0c;完成了依赖注⼊的操作. 简单来说,就是把对象取出来放到某个类的属性中。 关于依赖注…...

基于RAG构建Text2SQL的实战教程

大家好,我是herosunly。985院校硕士毕业,现担任算法研究员一职,热衷于大模型算法的研究与应用。曾担任百度千帆大模型比赛、BPAA算法大赛评委,编写微软OpenAI考试认证指导手册。曾获得阿里云天池比赛第一名,CCF比赛第二名,科大讯飞比赛第三名。授权多项发明专利。对机器学…...

【论文阅读】HumanPlus: Humanoid Shadowing and Imitation from Humans

作者&#xff1a;Zipeng Fu、Qingqing Zhao、Qi Wu、Gordon Wetstein、Chelsea Finn 项目共同负责人&#xff0c;斯坦福大学 项目网址&#xff1a;https://humanoid-ai.github.io 摘要 制造外形与人类相似的机器人的一个关键理由是&#xff0c;我们可以利用大量的人类数据进行…...

第25篇 基于ARM A9处理器用C语言实现中断<一>

Q&#xff1a;怎样理解基于ARM A9处理器用C语言实现中断的过程呢&#xff1f; A&#xff1a;同样以一段使用C语言实现中断的主程序为例介绍&#xff0c;和汇编语言实现中断一样这段代码也使用了定时器中断和按键中断。执行该主程序会在DE1-SoC的红色LED上显示流水灯&#xf…...

Spring WebSocket 与 STOMP 协议结合实现私聊私信功能

目录 后端pom.xmlConfig配置类Controller类DTO 前端安装相关依赖websocketService.js接口javascripthtmlCSS 效果展示简单测试连接&#xff1a; 报错解决方法1、vue3 使用SockJS报错 ReferenceError: global is not defined 功能补充拓展1. 安全性和身份验证2. 异常处理3. 消息…...