MySQL中常用的数据类型

整型

  • int

    • 有符号
    • 范围: -2147483648 ~ 2147483647
  • int unsigned

    • 无符号
    • 范围: 0 ~ 4294967295
  • int(5) zerofill

    • 仅用于显示,当不满足5位时,按照左边补0,例如: 00002
    • 满足时,正常显示
  • tinyint[(m)] [unsigned] [zerofill]

    • 有符号,取值范围 -128 ~ 127
    • 无符号,取值范围 0 ~ 255
  • bigint[(m)][unsigned][zerofill]

    • 有符号,取值范围: -9223372036854775808 ~ 9223372036854775807
    • 无符号,取值范围: 0 ~ 18446744073709551615

示例

  • create table L1(id int, uid int unsigned, zid int(5) zerofill) default charset=utf8;
  • insert into L1(id, uid, zid) values(1,2,3)
    • 这里的 zid 3 这么显示: 00003
  • insert into L1(id, uid, zid) values(21444444, 4000000, 3000000)
    • 这里的 zid 3000000 显示 3000000
    • 如果 插入数值,超过类型范围,则会报错,这个需要注意, Out of range value for column
    • 可以配置不报错,但截断,不建议使用

小数

  • decimal[(m[,d])] [unsigned] [zerofill]
    • 准确的小数值
    • m是数字总个数 (负号不算), 最大值 65
    • d是小数点后个数, d最大值 30

sql 示例

create table L2(id int not null primary key auto_increment,salary decimal(8, 2)
) default charset=utf8;
  • 如果插入 小数不是 2位,会自动四舍五入

  • 如果整数部分超出,则会报错(严格模式)

  • 项目开发中,一般都用 decimal, float, double 不常用

  • FLOAT[(M,D)] [UNSIGNED] [ZEROFILL]

    • 单精度浮点数,非准确小数值
    • m是数字总个数,d是小数点后个数
    • 底层存储是 32位
  • DOUBLE[(M,D)] [UNSIGNED] [ZEROFILL]

    • 双精度浮点数 (非准确小数值)
    • m是数字总个数
    • d是小数点后个数
    • 底层存储是 64位

字符串

  • char(m)

    • 定长字符串
    • m 代表字符串的长度,最多容纳 255 个字符
    • 定长的体现
      • 及时内容长度小于 m, 也会占用 m长度
      • 例如, char(5), 数据是 yes,底层也会占用5个字符
      • 如果超出 m 长度限制 (默认 mysql是严格模式,所以会报错)
      • 如果在配置文件中,加入如下配置
      • sql-mode="NO_AUTO_CREATE_USER, NO_ENGINE_SUBSTITUTION"
      • 保存并重启,此时 mysql 则是非严格模式,此时超过长度则自动截断 (不报错)
    • 注意
      • 默认底层存储是固定的长度 (不够则用空格补齐),但是查询数据时,会自动将空白去除
      • 如果想要保留空白,在 sql-mode中加入 PAD_CHAR_TO_FULL_LENGTH 即可,但是一般不加
      • 查看模式 sql-mode, 执行命令: show variables like ‘sql_mode’
      • 一般适用于: 固定长度的内容
  • varchar(m)

    • 变长字符串,m代表字符串的长度,最多可容纳 65535 个字节(和编码有关,utf8的编码一个字符占用三个字节)
    • 同上,超出后会报错,配置非严格后会自动截断

例如

-- 创建 表 L3
create table L3(id int not null primary key auto_incrementname varchar(5),depart char(3)
) default charset=utf8;insert into L3(name, depart) values("asssss", "s");
select id, name, depart, length(depart) from L3; -- 如果配置了 PAD_CHAR_TO_FULL_LENGTH 不足长度的,会补足
  • 严格模式和非严格模式的区别

    • 默认是严格模式
    • 可配置为非严格模式
  • text

    • text 数据类型用于保存变长的大字符串,可以组多到 65535 ( 2 16 2^{16} 216 - 1) 个字符
    • 一般情况下,长文本会用 text类型,例如,文章,新闻等
create table L4(id int not null primary key auto_increment,title varchar(128),content text
) default charset=utf8;
  • mediumtext
  • 长度 16777215 ( 2 24 − 1 2^{24} - 1 2241) 个字符
  • longtext
    • 长度 4294967295 or 4GB ( 2 32 2^{32} 232 - 1)

时间

  • datetime

    • YYYY-MM-DD HH:MM:SS (1000-01-01 00:00:00 ~ 9999-12-31 23:59:59)
  • timestamp

    • YYYY-MM-DD HH:MM:SS (1970-01-01 00:00:00 ~ 2037 年)
    • 对于 TIMESTAMP, 它把客户端插入的时间从当前时区转化为 UTC (世界标准时间) 进行存储
    • 查询时,将其又转化为客户端当前时区进行返回

举例

create table L5(id int not null primary key auto_increment,dt datetime,tt timestamp
) default charset=utf8;insert into L5(dt, tt) values("2023-12-12 12:12:12", "2023-12-12 12:12:12")select * from L5;
  • 从上面显示的时间是一样的

    • 从定义上看,只是时间范围不一样而已
    • 但是,实际上,timestamp 内部存储和展示和mysql的时区设置也有关系
    • show varibales like '%time_zone%'
    +------------------+--------+
    | Variable_name    | Value  |
    +------------------+--------+
    | system_time_zone | CST    |
    | time_zone        | SYSTEM |
    +------------------+--------+
    
    • CST 指的是mysql所在主机的系统时间,是中国标准时间的缩写
      • China Standard Time UT+8:00
      • 就是 东八区的时间
      • 用的最多
    • 在插入 timestamp 类型的数据时,会将数据当成你现在所在时区(东八区),内部会把这个时间转换成UTC时间进行存储
      • 再次进行查询的时候,会将UTC时间再转换成 东八区时间
    • 这里将时区改成 伦敦时间, set time_zone='+0:00',再次查询时
      • datetime的时间是不会变化的,但是 timestamp 会变成 伦敦时区的时间,也就是 - 8h
  • date

    • YYYY-MM-DD (1000-01-01 ~ 9999-12-31)
  • time

    • HH:MM:SS (-838:59:59 ~ 838: 59: 59)

其他数据类型

  • 其他数据类型: set, enum, TinyBlob, Blob, MediumBlob, LongBlob等
    • 详见官方文档 dev.mysql.com/doc/refman/5.7/en/data-types.html

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

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

相关文章

运行时错误‘53’文件未找到:MathPage.WLL,安装MathType后Word不能复制粘贴问题的解决

两步解决: 1. 打开Word-->文件-->选项-->信任中心-->信任中心设置-->受信任位置,解决宏问题 添加如下受信任位置, 我的路径:C:\Program Files\Microsoft Office\root\Office16\STARTUP\ 2. 找到MathType下的MathT…

Unity关于动画混合树(Blend Tree)的使用

在动画与动画的切换过程中,常因为两个动画之间的差距过大,而显得动画的切换很不自然。 这时候就需要动画混合树Blend Tree这个功能。使用混合树可以将多个动画混合在一起,例如在处理角色的移动中,走动画与跑动画切换的时候&#x…

数据结构算法-穷举搜索算法

引言 穷举搜索是一种基本的搜索策略,其基本思想是逐一检查所有可能的解,直到找到一个有效的解或确定不存在解为止。在现实生活中,穷举搜索的应用非常广泛,以下是一些例子: 密码破解:在密码学中&#xff0…

vue3引入百度地图(两种方法)

首先要有百度开放平台并进行注册&#xff0c;不懂看这里 ### 第一种方法 地图引入流程 安装vue-baidu-map-3x插件 参考官网地址&#xff1a;快速上手 | vue-baidu-map-3x npm install vue-baidu-map-3x --save 在public/index.html文件中引入 <!-- 百度地图 --> &…

pytorch03:transforms常见数据增强操作

目录 一、数据增强二、transforms--Crop裁剪2.1 transforms.CenterCrop2.2 transforms.RandomCrop2.3 RandomResizedCrop2.4 FiveCrop和TenCrop 三、transforms—Flip翻转、旋转3.1RandomHorizontalFlip和RandomVerticalFlip3.2 RandomRotation 四、transforms —图像变换4.1 t…

HarmonyOS4.0系统性深入开发09卡片使用动效能力

卡片使用动效能力 ArkTS卡片开放了使用动画效果的能力&#xff0c;支持显式动画、属性动画、组件内转场能力。需要注意的是&#xff0c;ArkTS卡片使用动画效果时具有以下限制&#xff1a; 名称参数说明限制描述duration动画播放时长限制最长的动效播放时长为1秒&#xff0c;当…

【华为数据之道学习笔记】8-3异常数据监控

质量控制是通过监控质量形成过程&#xff0c;消除全过程中引起不合格或不满意效果的因素&#xff0c;以达到质量要求而采用的各种质量作业技术和活动。要保证最终交付质量&#xff0c;必须对过程进行质量控制&#xff0c;通常是在过程中设置关键质量控制点。例如&#xff0c;可…

Dockerfile学习文档

Dockerfile详解 Dockerfile是一个组合映像命令的文本&#xff1b;可以使用在命令行中调用任何命令&#xff1b;Docker通过dockerfile中的指令自动生成镜像。 通过docker build -t repository:tag ./ 即可构建&#xff0c;要求&#xff1a;./下存在Dockerfile文件 之前我们聊的…

SpringMVC源码解析——DispatcherServlet的逻辑处理

DispatcherServlet类相关的结构图如下&#xff1a; 其中jakarta.servlet.http.HttpServlet的父类是jakarta.servlet.GenericServlet&#xff0c;实现接口jakarta.servlet.Servlet。我们先看一下jakarta.servlet.Servlet接口的源码如下&#xff1a; /*** 定义所有servlet必须实…

PHP8的JIT(Just-In-Time)编译器是什么?

PHP8的JIT&#xff08;Just-In-Time&#xff09;编译器是什么&#xff1f; PHP8是最新的PHP版本&#xff0c;引入了JIT&#xff08;Just-In-Time&#xff09;编译器&#xff0c;以进一步提高性能和执行速度。 JIT编译器是一种在运行时将解释性语言转化为机器码的技术。在过去…

【网络安全】网络隔离设备

一、网络和终端隔离产品 网络和终端隔离产品分为终端隔离产品和网络隔离产品两大类。终端隔离产品一般指隔离卡或者隔离计算机。网络隔离产品根据产品形态和功能上的不同&#xff0c;该类产品可以分为协议转换产品、网闸和网络单向导入产品三种。 图1为终端隔离产品的一个典型…

2022-2023年度广东省职业院校学生专业技能大赛“软件测试”赛项性能测试题目-Jmeter

性能测试-JM 1、脚本添加: 脚本文件名称:SuppAndComp,测试计划名称:SuppAndComp。测试计划下添加两个线程组: (1)线程组一操作内容:系统管理员登录、进行新增供应商操作。 线程组名称SuppAdd。具体要求如下: 登录操作存放到仅一次控制器中,供应商名称前4位为固定…

dash 中的模式匹配回调函数Pattern-Matching Callbacks 8

模式匹配 模式匹配回调选择器 MATCH、ALL 和 ALLSMALLER 允许您编写可以响应或更新任意或动态数量组件的回调函数。 此示例呈现任意数量的 dcc. Dropdown 元素&#xff0c;并且只要任何 dcc. Dropdown 元素发生更改&#xff0c;就会触发回调。尝试添加几个下拉菜单并选择它们的…

Grafana增加仪表盘

1.Grafana介绍 grafana 是一款采用Go语言编写的开源应用&#xff0c;主要用于大规模指标数据的可视化展现&#xff0c;是网络架构和应用分析中最流行的时序数据展示工具&#xff0c;目前已经支持绝大部分常用的时序数据库。 Grafana下载地址&#xff1a;https://grafana.com/g…

burpsuite的安装与介绍

安装(挑一个你喜欢的版本安装就行) 编程环境安装指南:Java、Python 和 Burp Suite抓包工具_burpsuite和java-CSDN博客 简介 Burp Suite是一个用于攻击Web应用程序的集成平台。它集成了多种渗透测试组件,能够帮助我们更好地完成对Web应用的渗透测试和攻击,无论是自动化还…

基于CNN神经网络的手写字符识别实验报告

作业要求 具体实验内容根据实际情况自拟&#xff0c;可以是传统的BP神经网络&#xff0c;Hopfield神经网络&#xff0c;也可以是深度学习相关内容。 数据集自选&#xff0c;可以是自建数据集&#xff0c;或MNIST&#xff0c;CIFAR10等公开数据集。 实验报告内容包括但不限于&am…

nodejs+vue+微信小程序+python+PHP的会议管理系统-计算机毕业设计推荐

会议管理系统可以为公司领导提供会议记录管理功能&#xff0c;公司领导也就是系统的管理员&#xff0c;具有员工管理、公告管理、会议室管理、会议资料管理、会议投票管理、意见收集管理等管理的权限&#xff0c;添加或者删除用户基本信息。管理员需要先进行登录&#xff0c;获…

[C#]opencvsharp进行图像拼接普通拼接stitch算法拼接

介绍&#xff1a; opencvsharp进行图像拼一般有2种方式&#xff1a;一种是传统方法将2个图片上下或者左右拼接&#xff0c;还有一个方法就是融合拼接&#xff0c;stitch拼接就是一种非常好的算法。opencv里面已经有stitch拼接算法因此我们很容易进行拼接。 效果&#xff1a; …

PayPal账户被封是因为什么?如何解决?

Paypal作为跨境出海玩家最常用的付款工具之一&#xff0c;同时也是最容易出现冻结封号现象。保障PP账号安全非常重要&#xff0c;只有支付渠道安全&#xff0c;才不会“白费力气”&#xff0c;那么最重要的就是要了解它的封号原因以做好规避。 一、Paypal账号被封原因 1、账号…

FreeRTOS列表与列表项相关知识总结以及列表项的插入与删除实战

1.列表与列表项概念及结构体介绍 1.1列表项简介 列表相当于链表&#xff0c;列表项相当于节点&#xff0c;FreeRTOS 中的列表是一个双向环形链表 1.2 列表、列表项、迷你列表项结构体 1&#xff09;列表结构体 typedef struct xLIST { listFIRST_LIST_INTEGRITY_CHECK_VAL…