史上最全的mysql数据类型汇总(下)

公号运维家 公号运维家     2022-11-29     174

关键词:

接着上文继续来梳理,上文我们写到了日期与时间类型中的​​time​​​类型,然后我们接着来写日期与时间类型中的​​date​​类型。

date类型

​date​​类型用在仅需要日期值时,没有时间部分,在存储时需要3字节。

日期格式为​​YYYY-MM-DD​​​。其中​​YYYY​​​表示年,​​MM​​​表示月,​​DD​​表示日。

(1)以 YYYY-MM-DD 或者 YYYYMMDD 字符串格式表示的日期,取值范围为 1000-01-01 ~ 9999-12-3 ;例如输入2022-12-31或者‘20221231’,插入数据库的日期都为2022-12-31;

(2)以‘YY-MM-DD’或者‘YYMMDD’字符串格式表示的日期,在这里‘YY’表示两位的年值。包含两位年值的日期会令人模糊,因为不知道世纪。​​mysql​​​使用以下规则解释两位年值:‘00~69’范围的年值转换为​​2000-2069​​​,70-99范围的年值转换为​​1970~1999​​。

(3)以YY-MM-DD或者YYMMDD数字格式表示的日期,与前面相似,00~69范围的年值转换为2000~2069,70~99范围的年值转换为1970~1999。

(4)使用​​CURRENT_DATE​​​或者​​NOW()​​,插入当前系统日期。

举个例子:

创建一个名为​​yunweijia_4​​的数据表;

mysql> create table yunweijia_4 (d date);
Query OK, 0 rows affected (0.03 sec)

mysql>

向表中插入一些值;

mysql> insert into yunweijia_4 values (1999-09-09), (19990909), (20221010);
Query OK, 3 rows affected (0.01 sec)
Records: 3 Duplicates: 0 Warnings: 0

mysql>

然后查看下结果:

mysql> select * from yunweijia_4;
+------------+
| d |
+------------+
| 1999-09-09 |
| 1999-09-09 |
| 2022-10-10 |
+------------+
3 rows in set (0.00 sec)

mysql>

再举个例子:

删除数据表​​yunweijia_4​​中的数据;

delete from yunweijia_4;

在表中插入数据;

mysql> insert into yunweijia_4 values (99-09-09), (990909), (000101), (111111);
Query OK, 4 rows affected (0.01 sec)
Records: 4 Duplicates: 0 Warnings: 0

mysql>

查看下结果:

mysql> select * from yunweijia_4;
+------------+
| d |
+------------+
| 1999-09-09 |
| 1999-09-09 |
| 2000-01-01 |
| 2011-11-11 |
+------------+
4 rows in set (0.00 sec)

mysql>

又举个例子:

老规矩,先删除表中的数据

mysql> delete from yunweijia_4;
Query OK, 4 rows affected (0.01 sec)

mysql>

向表中插入数据;

mysql> insert into yunweijia_4 values (19990909), (990909), (000101), (111111);
Query OK, 4 rows affected (0.01 sec)
Records: 4 Duplicates: 0 Warnings: 0

mysql>

查看下结果:

mysql> select * from yunweijia_4;
+------------+
| d |
+------------+
| 1999-09-09 |
| 1999-09-09 |
| 2000-01-01 |
| 2011-11-11 |
+------------+
4 rows in set (0.00 sec)

mysql>

又又举个例子:

删除表中数据;

mysql> delete from yunweijia_4;
Query OK, 4 rows affected (0.01 sec)

mysql>

插入系统当前时间:

mysql> insert into yunweijia_4 values (current_date()), (now());
Query OK, 2 rows affected, 1 warning (0.01 sec)
Records: 2 Duplicates: 0 Warnings: 1

mysql>

查看结果:

mysql> select * from yunweijia_4;
+------------+
| d |
+------------+
| 2022-07-09 |
| 2022-07-09 |
+------------+
2 rows in set (0.00 sec)

mysql>

​CURRENT_DATE​​​只返回当前日期值,不包括时间部分;​​NOW()​​函数返回日期和时间值,在保存到数据库时,只保留了其日期部分。

datetime类型

​DATETIME​​​类型用于需要同时包含日期和时间信息的值,在存储时需要8字节。日期格式为‘YYYY-MM-DD HH:MM:SS’。其中,​​YYYY​​​表示年,​​MM​​​表示月,​​DD​​​表示日,​​HH​​​表示小时,​​MM​​​表示分钟,​​SS​​​表示秒。在给​​DATETIME​​​类型的字段赋值时,可以使用字符串类型或者数字类型的数据插入,只要符合​​DATETIME​​的日期格式即可。

(1)以‘YYYY-MM-DD HH:MM:SS’或者‘YYYYMMDDHHMMSS’字符串格式表示的值,取值范围为‘1000-01-01 00:00:00’~‘9999-12-3 23:59:59’;

(2)以‘YY-MM-DD HH:MM:SS’或者‘YYMMDDHHMMSS’字符串格式表示的日期,在这里YY表示两位的年值。与前面相同,‘00~69’范围的年值转换为‘2000~2069’,‘70~99’范围的年值转换为‘1970~1999’。

(3)以YYYYMMDDHHMMSS或者YYMMDDHHMMSS数字格式表示的日期和时间。

TIMESTAMP类型

​TIMESTAMP​​​的显示格式与​​DATETIME​​​相同,显示宽度固定在19个字符,日期格式为​​YYYY-MM-DD HH:MM:SS​​​,在存储时需要4字节。​​TIMESTAMP​​​列的取值范围小于​​DATETIME​​​的取值范围,为‘1970-01-01 00:00:01’UTC~‘2038-01-1903:14:07’UTC。其中,​​UTC(Coordinated Universal Time)​​为世界标准时间,因此在插入数据时,要保证在合法的取值范围内。

注意点:

由于​​datetime​​​类型和​​TIMESTAMP​​和上面的用法大差不差,所以这里就不再一一举例了。

文本字符串类型

字符串类型用来存储字符串数据,除了可以存储字符串数据之外,还可以存储其他数据,比如图片和声音的二进制数据。

​mysql​​支持两类字符串数据:文本字符串和二进制字符串;

文本字符串可以进行区分或者不区分大小写的串比较,还可以进行模式匹配查找。

在​​mysql​​中,文本字符串类型指的是:

  • CHAR
  • VARCHAR
  • TEXT
  • ENUM
  • SET

详细可以看下表:

史上最全的mysql数据类型汇总(下)_字符串

​VARCHAR​​​和​​TEXT​​​类型与​​BLOB​​都是变长类型,其存储需求取决于列值的实际长度(在前面的表格中用L表示),而不是取决于类型的最大可能尺寸

例如,一个​​VARCHAR(10)​​列能保存最大长度为10个字符的字符串,实际的存储需要是字符串的长度L加上1字节(记录字符串的长度)。对于字符“abcd”,L是4而存储要求是5字节。

CHAR和VARCHAR类型

​CHAR(M)​​​为固定长度字符串,在定义时指定字符串列长。当保存时在右侧填充空格,以达到指定的长度。​​M​​​表示列长度,​​M​​的范围是0~255个字符。

例如:​​CAHR(4)​​​定义了一个固定长度的字符串列,其包含的字符个数最大为4。当检索到​​CHAR​​值时,尾部的空格将被删除。

​VARCHAR(M)​​​是长度可变的字符串,​​M​​​表示最大的列长度。​​M​​​的范围是0~65535。​​VARCHAR​​的最大实际长度由最长的行的大小和使用的字符集确定,而其实际占用的空间为字符串的实际长度加1。

例如:​​VARCAHR(50)​​​定义了一个最大长度为50的字符串,如果插入的字符串只有10个字符,则实际存储的字符串为10个字符和一个字符串结束字符。​​VARCHAR​​在对应值保存和检索时尾部的空格仍保留。

我们看下​​CHAR(4)​​​和​​VARCHAR(4)​​存储的区别是什么:

史上最全的mysql数据类型汇总(下)_字符串_02

从上图的对比结果可以看到,​​CHAR(4)​​​定义了固定长度为4的列,不管存入的数据长度为多少,所占用的空间均为4个字节;​​VARCHAR(4)​​定义的列所占的字节数为实际长度加1;

但是查询时是不同的,我们可以通过下面的例子来看下;

举个例子:

创建一个名为​​yunweijia_5​​的数据表;

mysql> create table yunweijia_5 (ch char(4), var varchar(4));
Query OK, 0 rows affected (0.03 sec)

mysql>

在这个数据表中插入一些数据;

mysql> insert into yunweijia_5 values (ab, ab);
Query OK, 1 row affected (0.01 sec)

mysql>

查看下结果:

mysql> select concat ((, ch, )), concat ((, var, )) from yunweijia_5;
+-----------------------+------------------------+
| concat ((, ch, )) | concat ((, var, )) |
+-----------------------+------------------------+
| (abc) | (abc) |
+-----------------------+------------------------+
1 row in set (0.00 sec)

mysql>

这里有问题,文档上面介绍的是,​​char​​​在保存的时候会将空格删除,​​varchar​​​会保留末尾的空格,但是从自身实践来看的话,不论是​​char​​​还是​​varchar​​都将末尾的空格给删除了。

TEXT类型

​TEXT​​列保存非二进制字符串,如文章内容、评论等。

当保存或查询​​TEXT​​列的值时,不删除尾部空格。

Text类型分为4种:


剩余内容请转至VX公众号 “运维家” ,回复 “196” 查看。


------ “运维家” ,回复 “196”  ------

------ “运维家” ,回复 “196”  ------

------ “运维家” ,回复 “196”  ------


潍坊运维工程师招聘,硬件运维工程师发展前景,运维工程师个人规划,深圳阳光雨露运维工程师,事业单位招聘运维工程师;

奇安信运维工程师面试,三一重工系统运维工程师,运维工程师面试题,环境工程的运维工程师;

运维工程师都有什么方向,杭州运维工程师招聘阿里,桥梁运维工程师,桌面运维工程师培训计划。


史上最全的大厂mysql面试题在这里!

1、MySQL的复制原理以及流程基本原理流程,3个线程以及之间的关联;主:binlog线程——记录下所有改变了数据库数据的语句,放进master上的binlog中;从:io线程——在使用startslave之后,负责从master上拉取binlog内容,放进自己的re... 查看详情

史上最全系列|大数据框架知识点汇总(资源分享还不快拿去)

...#xff1a;2、十四大组件安装教程(1)CDH6.2.0视频安装教程(史上最全的安装教程)(2)史上最完整的AirFlow2.1.2版本安装教程(3)2021年Windows下安装GPU版本的Tensorflow和Pytorch(4)Flink1.13.2集群安装部署的3种方式(建议收藏)(5)Flink1.14.0在docke... 查看详情

史上最全的mysql备份方法

 本人曾经用过的备份方式有:mysqldump、mysqlhotcopy、BACKUPTABLE、SELECTINTOOUTFILE,又或者备份二进制日志(binlog),还可以是直接拷贝数据文件和相关的配置文件。MyISAM表是保存成文件的形式,因此相对比较容易备份,上面提到的... 查看详情

史上最全mysql总结mysql超详细笔记(代码片段)

【史上最全MYSQL总结】MySQL超详细笔记      本文主要介绍了mysql是个啥、他的分类、SQL命令,MySQL的安装注意事项、分类以及在MySQL中常用的命令,包括:数据查询(基本查询、排序查询、条件查询、时间查询、... 查看详情

可能是史上最全的tensorflow学习资源汇总

 在之前的Tensorflow系列文章中,我们教大家学习了Tensorflow的安装、Tensorflow的语法、基本操作、CNN的一些原理和项目实战等。本篇文章将为大家总结Tensorflow纯干货学习资源,非常适合新手学习,建议大家收藏。想要学习更多... 查看详情

金九银十,史上最强java面试题整理。

...,会从以下几个方面汇总,本文会长期更新。Java面试篇史上最全Java面试题,带全部答案史上最全69道Spring面试题和答案史上最全Java多线程面试题及答案史上最全50道Redis面试题及答案史上最全 55道MySQL面试题总结i++是线程安... 查看详情

史上最全的变量作用域和内存问题

(一)JavaScript变量能够用来保存两种类型的值:基本类型值和引用类型值。基本类型的值源自下面5种基本数据类型:Undefined、Null、Boolean、Number和String。基本类型值和引用类型值具有下面特点:1.基本类型值在内存中占领固定大... 查看详情

史上最全的变量作用域和内存问题

(一)JavaScript变量可以用来保存两种类型的值:基本类型值和引用类型值。基本类型的值源自以下5种基本数据类型:Undefined、Null、Boolean、Number和String。基本类型值和引用类型值具有以下特点:1.基本类型值在内存中占据固定大... 查看详情

史上最全综述|3d目标检测算法汇总!(单目/双目/lidar/多模态/时序/半弱自监督)

史上最全综述|3D目标检测算法汇总!(单目/双目/LiDAR/多模态/时序/半弱自监督)2022-09-0209:06计算机视觉life”,选择“星标”快速获得最新干货本文转载自自动驾驶之心1摘要近年来,自动驾驶因其减轻驾驶员... 查看详情

史上最全综述|3d目标检测算法汇总!(单目/双目/lidar/多模态/时序/半弱自监督)

史上最全综述|3D目标检测算法汇总!(单目/双目/LiDAR/多模态/时序/半弱自监督)2022-09-0209:06计算机视觉life”,选择“星标”快速获得最新干货本文转载自自动驾驶之心1摘要近年来,自动驾驶因其减轻驾驶员... 查看详情

史上最全的数据库面试题,不看绝对后悔

数据库面试知识点汇总一、基本概念1.主键、外键、超键、候选键超键:在关系中能唯一标识元组的属性集称为关系模式的超键。一个属性可以为作为一个超键,多个属性组合在一起也可以作为一个超键。超键包含候选键和主键... 查看详情

史上最全java面试题整理(附参考答案)(代码片段)

下列面试题都是在网上收集的,本人抱着学习的态度找了下参考答案,有不足的地方还请指正,更多精彩内容可以关注我的微信公众号:Java团长1、面向对象的特征有哪些方面?抽象:将同类对象的共同特征提取出来构造类。继... 查看详情

史上最全的延迟任务实现方式汇总!附代码(强烈推荐)(代码片段)

这是我的第49篇原创文章。这篇文章的诞生要感谢一位读者,是他让这篇优秀的文章有了和大家见面的机会,重点是优秀文章,哈哈。事情的经过是这样的...不用谢我,送人玫瑰,手有余香。相信接下来的内容一定不会让你失望... 查看详情

[转]史上最全的mssql复习笔记

阅读目录 1.什么是SQL语句2.使用sql语句创建数据库和表3.创建数据表4.数据完整性约束5.四中基本字符类型说明6.SQL基本语句7.类型转换函数8.日期函数9.数学函数10.字符串函数11.联合结果集union12.CASE函数用法13.IFELSE语法14.WHILE循... 查看详情

史上最全的中高级java面试题汇总(代码片段)

原文链接:https://blog.csdn.net/shengqianfeng/article/details/102572691 memcache的分布式原理memcached虽然称为“分布式”缓存服务器,但服务器端并没有“分布式”功能。每个服务器都是完全独立和隔离的服务。memcached的分布... 查看详情

史上最全的中高级java面试题汇总(代码片段)

原文链接:https://blog.csdn.net/shengqianfeng/article/details/102572691 memcache的分布式原理memcached虽然称为“分布式”缓存服务器,但服务器端并没有“分布式”功能。每个服务器都是完全独立和隔离的服务。memcached的分布... 查看详情

史上最全mysql基本操作(这一篇就够用了!!!)(代码片段)

基础知识请移步:数据库、MySQL基本知识欢迎学习交流!!!持续更新中…文章目录MySQL基本操作一、SQL语法规则二、SQL库操作1、创建数据库2、显示数据库3、使用数据库4、修改数据库5、删除数据库三、SQL表(... 查看详情

python知识点(史上最全)(代码片段)

Python期末考试知识点(史上最全)python简介Python是一种解释型语言Python使用缩进对齐组织代码执行,所以没有缩进的代码,都会在载入时自动执行数据类型:整形int无限大浮点型float小数复数complex由实数和虚... 查看详情