MySQL——数据类型(二)

news/2024/9/18 23:19:06 标签: mysql, 数据库

目录

一、日期与时间类型

1.1 date

1.2 datetime

1.3 timestamp

二、枚举和联合

2.1 enum

2.2 set

2.2.1 set 的插入

2.2.2 set 的查找


思维导图可以参考如下链接:

数据类型.xmind · 夜夜亮晶晶/MySQL - Gitee.com

一、日期与时间类型

1.1 date

日期 'yyyy-mm-dd' ,占用三字节

1.2 datetime

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

1.3 timestamp

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

按理说, timestamp 应该会自动更新,但是由于 MySQL 版本不一致,可能存在不设置即为NULL的情况,此时可以设置为 列名称 timestamp default current_timestamp

timestamp 列在 MySQL 中的行为可以根据其定义而有所不同:

  1. DEFAULT CURRENT_TIMESTAMP

    • 当插入一行数据时,如果没有显式提供 TIMESTAMP 列的值,该列将自动填充为插入操作的时间戳
  2. ON UPDATE CURRENT_TIMESTAMP

    • 当行中的其他列被更新时,TIMESTAMP 列会自动更新为当前时间戳。通常用于跟踪行的最后更新时间。
  3. DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP

    • 这种配置结合了以上两种行为。插入时,TIMESTAMP 列会自动填充为插入时的时间戳;每次更新该行时,TIMESTAMP 列都会自动更新为当前时间戳。
  4. 无默认值

    • 如果没有设置默认值或 ON UPDATE 选项,插入或更新时如果未提供值,则该列可能会被填充为 NULL,或者保持原值

二、枚举和联合

枚举指的是 enum,联合指的是 set,你可能想知道二者的区别,其实 enum 可以看成单选题,set可以看作不定项选择题,第一个是多选一的关系,第二个是多选多或多选一的关系。

具体怎么使用,下面来一起看一下吧!

2.1 enum

枚举 —— 多选一的关系

首先进行建表:

mysql> create table test7(
    -> gender enum('男','女'),
    -> hobby set('篮球', '足球', '羽毛球', '游泳', '健身', '跑步'));
Query OK, 0 rows affected (0.04 sec)

插入数据:

mysql> insert test7 values('男','足球,羽毛球,游泳');
Query OK, 1 row affected (0.00 sec)

除了上述方法外,enum可以使用下标插入,下标从1开始:

2.2 set

2.2.1 set 的插入

可以看 enum 中插入数据时的方法,

注意:我在首次插入时选择了用C++字符串的格式,每个逗号后跟了一个空格再写数据,这样的格式是不行的! MySQL 的 SET 类型要求插入多个值时,不应将其视为一个完整的字符串,而是使用英文逗号分隔的独立值。

除此之外,enum可以使用下标插入,那么set呢?
set不是使用下标插入,set使用类似位图的概念,将数字转化成二进制,低位到高位依次是set中从前到后的元素:

  • 这里解释一下为什么向set中插入的是7但是表中却是篮球足球羽毛球: 首先,建表的时候使用的是 '篮球', '足球', '羽毛球', '游泳', '健身', '跑步' 共六项数据,对应的是比特位的前六位 7转化为二进制是0111,第三位为1对应set中前三个选项。所以是篮球足球羽毛球。

2.2.2 set 的查找

1.如果查找set中只含某项的数据,可以使用

select * from tb_name where column = 'enum类型';

2.如果查找set中含有某项的数据,就涉及到了函数的应用

使用 find_in_set(x, y) ,旨查找 x 是否在 y 集中,这里 x 只能是一个元素,如果查两个元素可以使用两个 find_in_set 用 and 连接


意为查找hobby集合中包含足球的数据

查找hobby集合中既包含足球也包含篮球的数据


http://www.niftyadmin.cn/n/5664685.html

相关文章

Python爬虫案例七:抓取南京公交信息数据并将其保存成excel多表形式

测试链接: https://nanjing.8684.cn/line4 思路:先抓取某个类型下的某一条线路所有数据,然后实现批量,,列举出三个类型代表既可 源码: from lxml import etree from xlutils.copy import copy import requests, os, xlrd, xlwtd…

在Ubuntu中编译含有JSON的文件出现报错

在ubuntu中进行JSON相关学习的时候,我发现了一些小问题,决定与大家进行分享,减少踩坑时候出现不必要的时间耗费 截取部分含有JSON部分的代码进行展示 char *str "{ \"title\":\"JSON Example\", \"author\&…

QGis二次开发 —— 3、程序加载栅格tif与矢量shp文件可进行切换控制,可进行导出/导入工程(附源码)

效果 功能说明 软件可同时加载.tif栅格图片与.shp矢量图片、加载图片后可进行自由切换查看图层、可对加载的图片进行关闭 关闭后清空图层、可对加载的图片进行导出.qgs的QGIS工程、可对.qgs的QGis工程导入并导入后可进行自由切换查看图层。 源码 注意: 在加载tif栅格文件后会在…

基于SpringBoot+Vue的房屋租赁平台

作者:计算机学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等,“文末源码”。 专栏推荐:前后端分离项目源码、SpringBoot项目源码、SSM项目源码 系统展示 【2025最新】基于JavaSpringBootVueMySQL的…

Mobile net V系列详解 理论+实战(2)

Mobilenet 系列 实践部分一、数据集介绍二、模型整体框架三、模型代码详解四、总结 实践部分 本章针对实践通过使用pytorch一个实例对这部分内容进行吸收分析。本章节采用的源代码在这里感兴趣的读者可以自行下载操作。 一、数据集介绍 可以看到数据集本身被存放在了三个文件…

Day02Day03

1. 为什么拦截器不会去拦截/admin/login上,是因为在SpringMvc中清除了这种可能。 2.使用自己定义注解,实现AOP(insert ,update) 3.使用update最好使用动态语句,可以使用多次 4.使用阿里云的OSS存储。用common类 5.在写…

动手学深度学习(pytorch)学习记录28-使用块的网络(VGG)[学习记录]

目录 VGG块VGG网络训练模型 VGG块 定义了一个名为vgg_block的函数来实现一个VGG块 import torch from torch import nn from d2l import torch as d2ldef vgg_block(num_convs, in_channels, out_channels):layers []for _ in range(num_convs):layers.append(nn.Conv2d(in_…

Go 1.19.4 路径和目录-Day 15

1. 路径介绍 存储设备保存着数据,但是得有一种方便的模式让用户可以定位资源位置,操作系统采用一种路径字符 串的表达方式,这是一棵倒置的层级目录树,从根开始。 相对路径:不是以根目录开始的路径,例如 a/b…