文章目录

  • 数值类型
    • tinyint类型
    • bit类型
    • 小数类型
    • decimal
  • 日期类型
    • 日期和时间类型
  • 字符串类型
    • char
    • varchar
  • enum和set

数值类型

类型大小范围(有符号)范围(无符号)用途
TINYINT1 Bytes(-128,127)(0,255)小整数值
SMALLINT2 Bytes(-32 768,32 767)(0,65 535)大整数值
MEDIUMINT3 Bytes(-8 388 608,8 388 607)(0,16 777 215)大整数值
INT或INTEGER4 Bytes(-2 147 483 648,2 147 483 647)(0,4 294 967 295)大整数值
BIGINT8 Bytes(-9,223,372,036,854,775,808,9 223 372 036 854 775 807)(0,18 446 744 073 709 551 615)极大整数值
FLOAT4 Bytes(-3.402 823 466 E+38,-1.175 494 351 E-38),0,(1.175 494 351 E-38,3.402 823 466 351 E+38)0,(1.175 494 351 E-38,3.402 823 466 E+38)单精度 浮点数值
DOUBLE8 Bytes(-1.797 693 134 862 315 7 E+308,-2.225 073 858 507 201 4 E-308),0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308)0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308)双精度 浮点数值
DECIMAL对DECIMAL(M,D) ,如果M>D,为M+2否则为D+2依赖于M和D的值依赖于M和D的值小数值

tinyint类型

说明:

  • 在MySQL中,整型可以指定是有符号的和无符号的,默认是有符号的。
  • 可以通过unsigned来说明某个字段是无符号的

例如:

注意:尽量不使用unsigned,还不如设计时,将int类型提升为bigint类型。

bit类型

基本语法:

bit[(M)] : 位字段类型。M表示每个值的位数,范围从164。如果M被忽略,默认为1

如果我们有这样的值,只存放0或1,这时可以定义bit(1)。这样可以节省空间。

小数类型

语法:

float[(m, d)] [unsigned] : M指定显示长度,d指定小数位数,占用空间4个字节

小数:float(4,2)表示的范围是-99.99 ~ 99.99,MySQL在保存值时会进行四舍五入。

  • 如果为无符号的

例如:

decimal

语法:

decimal(m, d) [unsigned] : 定点数m指定长度,d表示小数点的位数
  • decimal(5,2) 表示的范围是 -999.99 ~ 999.99
  • decimal(5,2) unsigned 表示的范围 0 ~ 999.99
  • decimal和float很像,但是有区别:
    • float和decimal表示的精度不一样

例如:

create table t6 (id int, salary float(10, 8), salary2 decimal(10, 8));
  • 发现decimal的精度更准确,因此如果我们希望某 个数据表示高精度,选择decimal

说明:float表示的精度大约是7位。

  • decimal整数最大位数m为65。支持小数最大位数d是30。如果d被省略,默认为0。如果m被省略,默认是10。

建议:如果希望小数的精度高,推荐使用decimal。

日期类型

表示时间值的日期和时间类型为DATETIME、DATE、TIMESTAMP、TIME和YEAR。
每个时间类型有一个有效值范围和一个"零"值,当指定不合法的MySQL不能表示的值时使用"零"值。

类型大小 ( bytes)范围格式用途
DATE31000-01-01/9999-12-31YYYY-MM-DD日期值
TIME3‘-838:59:59’/‘838:59:59’HH:MM:SS时间值或持续时间
YEAR11901/2155YYYY年份值
DATETIME8‘1000-01-01 00:00:00’ 到 ‘9999-12-31 23:59:59’YYYY-MM-DD hh:mm:ss混合日期和时间值
TIMESTAMP4‘1970-01-01 00:00:01’ UTC 到 ‘2038-01-19 03:14:07’ UTC结束时间是第 2147483647 秒,北京时间 2038-1-19 11:14:07,格林尼治时间 2038年1月19日 凌晨 03:14:07YYYY-MM-DD hh:mm:ss混合日期和时间值,时间戳

日期和时间类型

常用的日期有如下三个:

date:日期 ‘yyyy-mm-dd’ ,占用三字节

datetime: 时间日期格式 ‘yyyy-mm-dd HH:ii:ss’ 表示范围从 1000 到 9999 ,占用八字节

timestamp:时间戳,从1970年开始的 yyyy-mm-dd HH:ii:ss 格式和 datetime 完全一致,占用四字节

  • 插入指定时间

  • 时间戳

  • 使用现在的时间

字符串类型

类型大小用途
CHAR0-255 bytes定长字符串
VARCHAR0-65535 bytes变长字符串
TINYBLOB0-255 bytes不超过 255 个字符的二进制字符串
TINYTEXT0-255 bytes短文本字符串
BLOB0-65 535 bytes二进制形式的长文本数据
TEXT0-65 535 bytes长文本数据
MEDIUMBLOB0-16 777 215 bytes二进制形式的中等长度文本数据
MEDIUMTEXT0-16 777 215 bytes中等长度文本数据
LONGBLOB0-4 294 967 295 bytes二进制形式的极大文本数据
LONGTEXT0-4 294 967 295 bytes极大文本数据

char

语法:

char(L): 固定长度字符串,L是可以存储的长度,单位为字符,最大长度值可以为255

说明:

  • char(2)表示可以存放两个字符,可以是字母或汉字,但是不能超过2个, 最多只能是255

varchar

语法:

varchar(L): 可变长度字符串,L表示字符长度,最大长度65535个字节

说明:

  • 关于varchar(len),len到底是多大,这个len值,和表的编码密切相关:

varchar长度可以指定为0到65535之间的值,但是有1 - 3个字节用于记录数据大小,所以说有效字节数是65532。

当我们的表的编码是utf8时,varchar(n)的参数n最大值是65532/3=21844(因为utf中,一个字符占用3个字节),如果编码是gbkvarchar(n)的参数n最大是65532/2=32766(因为gbk中,一个字符占用2字节)。

enum和set

语法:

enum:枚举,“单选”类型;

enum(‘选项1’,‘选项2’,‘选项3’,…);

该设定只是提供了若干个选项的值,最终一个单元格中,实际只存储了其中一个值;而且出于效率考 虑,这些值实际存储的是“数字”,因为这些选项的每个选项值依次对应如下数字:1,2,3,…最多65535 个;当我们添加枚举值时,也可以添加对应的数字编号。

语法:

set:集合,“多选”类型;

set(‘选项值1’,‘选项值2’,‘选项值3’, …);

该设定只是提供了若干个选项的值,最终一个单元格中,设计可存储了其中任意多个值;而且出于效率考虑,这些值实际存储的是“数字”,因为这些选项的每个选项值依次对应如下数字:1,2,4,8,16,32,… 最多64个。

说明:不建议在添加枚举值,集合值的时候采用数字的方式,因为不利于阅读。

例如:

  • gender可以单选(enum)
  • 爱好可以多选(set)
create table stu(name varchar(6), gender enum('男','女'), hobby set('写代码', '打羽毛球', '篮球', '跑步')
);

  • 查找爱好只有写代码的人

  • 但是不能查询出所有爱好写代码的人,就可以使用find_in_set函数

find_in_set(sub,str_list) :如果substr_list中,则返回下标;如果不在,返回0;str_list用逗号分隔的字符串。

总结:

  • 如果我们向mysql特定的类型中插入不合法的数据,MySQL一般都是直接拦截我们,不让我们做对应的操作!
  • 反过来,如果我们已经有数据被成功插入到mysql中了,一定插入的时候是合法的!
  • 所以,mysq中,一般而言,数据类型本身也是一种:约束

  • mysql是否有无符号类型呢?
  • 答案是有的!但是mysql官方文档里明确说,不建议使用无符号类型,而且会在未来的般版本中就不支持了

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/diannao/87824.shtml
繁体地址,请注明出处:http://hk.pswp.cn/diannao/87824.shtml
英文地址,请注明出处:http://en.pswp.cn/diannao/87824.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Docker基础】Docker镜像管理:docker build详解

目录 1 Docker镜像基础概念 1.1 什么是Docker镜像 1.2 镜像的分层结构 2 docker build命令详解 2.1 docker build基本语法 2.2 构建上下文概念 3 Dockerfile编写实践示例 3.1 Dockerfile指令详解 3.1.1 FROM 3.1.2 RUN 3.1.3 COPY vs ADD 3.1.4 CMD vs ENTRYPOINT …

在 macOS 上部署 Akash Network 的完整 Shell 脚本解决方案

以下是在 macOS 上部署 Akash Network 的完整 Shell 脚本解决方案,包含详细注释和错误处理: #!/bin/bash # Akash Network macOS 部署脚本 v2.5 # 功能:在 macOS 系统上完整部署 Akash Network 节点和客户端工具 # 作者:DeepSeek 区块链团队 # 日期:2025-06-20 # 文档:h…

【分布式理论】读确认数与写确认数:分布式一致性的核心概念

文章目录 零、概述一、基本概念解释1、 什么是写确认数(w)?2、 什么是读确认数(r)?3、一致性级别的对应关系 二、工作流程详解1、 写操作的完整流程2、 读操作的完整流程 三、强一致性的数学原理1、 为什么…

滚珠导轨在医疗设备中有多重要?

在医疗设备领域,稳定性是保障手术安全、提升诊断精度的核心要素。无论是手术机器人精准的器械操作,还是CT扫描仪高速稳定的扫描运动,都离不开背后精密传动系统的支持。作为线性运动的核心部件,滚珠导轨凭借其独特的滚动摩擦原理与…

港科ISM选课攻略整理

毕业要求 课程和课程目录(ISM专业) "D:\HKUST-ISM\prepare\中英Program & Course Catalog.pdf" 课程和课程目录(全部ISOM课程) "D:\HKUST-ISM\prepare\全部ISOM Course Catalog.pdf" 两个可选专业方向 Financial Technolo…

rent8_wechat-最常用出租屋管理系统-微信小程序

rent8_wechat-最常用出租屋管理系统是rent8的微信小程序,需要和rent8配合使用。rent8_wechat基于Tdesign开发。 核心功能 房产管理:新增房产信息、修改房产信息、删除房产信息。房间管理:新增房间信息、修改房间信息、删除房间信息、入住管…

OpenCV CUDA模块设备层---- 绝对值函数abs()

操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 这是 OpenCV 的 cv::cudev 模块中用于 CUDA 设备端(device)的绝对值函数,专门处理 uchar1 类型(即…

IEC61850 通信协议测试验证方法详解

一、MMS 协议测试方法 MMS(制造报文规范)是 IEC61850 中用于设备监控和控制的核心协议,测试需覆盖以下维度: (一)协议栈实现验证 连接管理测试 测试用例:建立和释放 MMS 连接 100 次&#xf…

关于 Kyber:抗量子密码算法 Kyber 详解

一、基本概念 后量子密码学(PQC) │ ├──> 是一个领域(研究如何在“量子时代”保护数据安全) │ └──> Kyber 是这个领域中设计出来的一个“抗量子密码算法”└──> Kyber 是用于加密密钥交换的算法(叫…

如何保障具身智能系统级安全?鸿道OS给出中国方案

由东土科技自主研发完成的鸿道(Intewell)工业操作系统正式发布。东土科技董事长李平与该公司全资子公司光亚鸿道总经理邹露君在接受第一财经等采访时,解释了如何通过操作系统为具身智能产业提供底层支撑,解决产业规模化落地的安全…

深入浅出:JavaScript ES6中类(Class)的革新与实践

深入浅出:JavaScript ES6中类(Class)的革新与实践 在JavaScript的发展历程中,ES6(ECMAScript 2015)无疑是一个里程碑式的版本。它不仅引入了let、const、箭头函数等特性,更通过**类&#xff08…

华大北斗TAU804M-N2B0双频单北斗高精度定位模块 100%国产双频北斗 打破u-blox技术垄断

华大北斗TAU804M-N2B0双频单北斗模块深度解析 1. 产品定位 TAU804M-N2B0 是华大北斗(HDSC)推出的 双频单北斗高精度定位模块,支持 B1IB2a双频信号接收,专为 高精度定位、抗多径干扰 场景设计,是北斗三号系统应用的标杆…

IP证书申请攻略细则,有何作用?

IP证书申请攻略细则及作用解析 一、IP证书的作用 数据加密传输 IP证书通过SSL/TLS协议对客户端与服务器之间的数据进行加密,防止数据在传输过程中被窃取或篡改,适用于物联网设备、API接口、测试服务器等直接通过IP访问的场景。 身份验证与防伪造 浏览器…

回文链表C++

给你一个单链表的头节点 head ,请你判断该链表是否为回文链表。如果是,返回 true ;否则,返回 false 。 时间复杂度较大的解法: /*** Definition for singly-linked list.* struct ListNode {* int val;* Lis…

限流系列之三:TDMQ for Apache Pulsar 限流技术深度解析

导语 在高速、高吞吐量的消息处理场景中,TDMQ Pulsar 版以其卓越的性能和可扩展性成为众多企业的首选。然而,随着生产者和消费者以极高的速度生产/消费大量消息,服务器资源如 CPU、内存、网络及磁盘 IO 等可能会面临饱和风险。为此&#xff…

非研发部门参与产品开发过程的价值体现

汉捷咨询 胡红卫 企业已经越来越意识到新产品开发项目需要市场、销售、制造、采购、服务、财务等非研发部门的参与,尝试建立跨部门的项目组,安排相关人员参与项目,但是效果如何呢?在汉捷咨询对很多企业调研诊断过程中,…

Kafka的存储与索引:数据处理的底层奥秘

一、引言 Kafka 之所以能在海量数据的传输和处理过程中保持高效的性能和低延迟,背后隐藏着众多精妙的设计,而其存储与索引机制便是其中的核心奥秘。接下来,让我们深入探寻 Kafka 存储机制的基石与架构。 二、分区与日志组织​ Kafka 中的消…

大模型与搜索引擎的技术博弈及未来智能范式演进

基于认知革命与技术替代的全景综述 一、大模型对搜索引擎的替代性分析:技术范式与市场重构 (1)技术原理的代际分野 传统搜索引擎遵循 "爬虫抓取 - 索引构建 - 关键词排序" 的三段式架构,其核心是基于 PageRank 算法的…

XC7K325T数据采集卡设计原理图:786-基于X86 CPU+XC7K325T的16路16bit 1M sps同步数据采集卡

基于X86 CPUXC7K325T的16路16bit 1M sps同步数据采集卡 一、板卡概述 板卡为紧凑型的X86FPGA的工业监测处理平台,高度集成的硬件和完整的labview开发软件,大大方便客户现场使用。 二、板卡功能 板卡功能 参数内容 X86 SOM核心板 主频 2.0GHz …

单片机3种按键程序消抖方法

1,查询法延时模式 u8 key01;u8 x0;KEY1;while(1){if(KEY0) //"按键按下"{delay(10); //延时10msif(KEY0 && kdy01) //按下有10ms 且上状态是1。即下降沿时{key00; //将上状态置0.防止按住不放时&#xff0…