【MySQL】数据库操作指南:数据类型篇

在这里插入图片描述

🌱博客主页:青竹雾色间
🌱系列专栏:MySQL探险日记
😘博客制作不易欢迎各位👍点赞+⭐收藏+➕关注
在这里插入图片描述
✨人生如寄,多忧何为 ✨


文章目录

  • 1. 数值类型
    • 1.1 tinyint 类型
    • 1.2 bit 类型
    • 1.3 小数类型
      • 1.3.1 float
      • 1.3.2 decimal
  • 2. 字符串类型
    • 2.1 char
    • 2.2 varchar
    • 2.3 char 和 varchar 比较
  • 3. 日期和时间类型
  • 4. Enum 和 Set

在 MySQL 中,数据类型的选择对于数据库设计和性能优化至关重要。本篇博客将介绍 MySQL 中常见的数据类型,包括数值类型、字符类型、日期和时间类型、枚举类型以及集合类型,并提供相应的案例来帮助理解。


1. 数值类型

1.1 tinyint 类型

语法

tinyint[(m)] [unsigned]

示例

CREATE TABLE tt1(num TINYINT);INSERT INTO tt1 VALUES(1);

数值越界测试

-- 越界插入,报错
INSERT INTO tt1 VALUES(128);

说明

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

无符号案例

CREATE TABLE tt2(num TINYINT UNSIGNED);

注意:尽量不使用 UNSIGNED,对于 INT 类型可能存放不下的数据,INT UNSIGNED 同样可能存放不下,建议在设计时,将 INT 类型提升为 BIGINT 类型。

1.2 bit 类型

语法

bit[(M)]

示例

CREATE TABLE tt3(num BIT(8));

注意事项

  • bit 字段在显示时,是按照 ASCII 码对应的值显示。
  • 如果我们有这样的值,只存放 01,这时可以定义 bit(1)。这样可以节省空间。

1.3 小数类型

1.3.1 float

语法

FLOAT[(M, D)] [UNSIGNED]

示例

CREATE TABLE tt4 (id INT, a FLOAT(4,2));

问题:当我们的 FLOAT(4,2) 是一个有符号的时候,则表示范围是 -99.9999.99;如果 FLOAT(6,3),则表示范围是多少?

1.3.2 decimal

语法

DECIMAL(M, D) [UNSIGNED]

示例

CREATE TABLE tt5(id INT, salary FLOAT(4,2) UNSIGNED);

注意:如果定义的是 FLOAT(4,2) UNSIGNED,则范围是 099.99

2. 字符串类型

2.1 char

语法

CHAR(L)

示例

CREATE TABLE tt6(id INT, name CHAR(2));

说明

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

2.2 varchar

语法

VARCHAR(L)

示例

CREATE TABLE tt7(id INT, name VARCHAR(6)); -- 表示这里可以存放6个字符

说明

  • VARCHAR(L):可变长度字符串,L 表示字符长度,最大长度 65535 个字节。
  • 注意VARCHAR(L) 的长度和表的编码密切相关。当表的编码是 utf8 时,VARCHAR(n) 的参数 n 最大值是 21844;如果编码是 gbkVARCHAR(n) 的参数 n 最大是 32766

2.3 char 和 varchar 比较

如何选择定长或变长字符串?

  • 如果数据确定长度都一样,就使用定长(CHAR),比如:身份证、手机号、md5。
  • 如果数据长度有变化,就使用变长(VARCHAR),比如:名字、地址,但你要保证最长的能存的进去。
  • 定长的磁盘空间比较浪费,但是效率高。
  • 变长的磁盘空间比较节省,但是效率低。

3. 日期和时间类型

常用的日期有如下三个:

  • DATE:日期 ‘yyyy-mm-dd’,占用三字节
  • DATETIME:时间日期格式 ‘yyyy-mm-dd HH:ii:ss’,表示范围从 1000 到 9999,占用八字节
  • TIMESTAMP:时间戳,从1970年开始的 ‘yyyy-mm-dd HH:ii:ss’ 格式和 DATETIME 完全一致,占用四字节

案例

CREATE TABLE birthday (t1 DATE, t2 DATETIME, t3 TIMESTAMP);

4. Enum 和 Set

语法

  • ENUM:枚举,“单选”类型。
ENUM('选项1', '选项2', '选项3', ...)
  • SET:集合,“多选”类型。
SET('选项值1', '选项值2', '选项值3', ...)

创建表

CREATE TABLE votes(username VARCHAR(30),hobby SET('登山', '游泳', '篮球', '武术'),gender ENUM('男', '女')
);

插入数据

INSERT INTO votes VALUES('雷锋', '登山,武术', '男');
INSERT INTO votes VALUES('Juse', '登山,武术', '女');

查询数据

SELECT * FROM votes WHERE hobby = '登山';

集合查询使用 find_in_set 函数

SELECT * FROM votes WHERE FIND_IN_SET('登山', hobby);

通过学习 MySQL 中的数据类型,您可以更好地管理数据库,并保证数据的完整性和高效性。愿本篇博客对您有所帮助!


在这里插入图片描述

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

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

相关文章

nacos配置mysql(windows)

nacos默认是使用的内置数据库derby ,可通过配置修改成mysql,修改成mysql之后,之前配置在derby的数据会丢失 本文使用mysql版本为8.0.22 nacos版本为2.3.1 在mysql里面先创建一个数据库test(名称自定义,和后面配置文件里面的一样就好了) 在上面创建的数据…

Milvus 在哈啰的应用与落地

向量数据库还有哪些可能性? 本期的【User Tech】直播告诉你答案!明晚的直播,我们邀请了来自哈啰的资深研发工程师王永辉,他将为我们详细讲解 Milvus 在本地出行及生活服务平台的应用及未来发展的诸多可能性,敬请期待&a…

如何在Windows服务做性能测试(CPU、磁盘、内存)

目录 前言1. 基本知识2. 参数说明 前言 由于需要做一些接口测试,测试是否有真的优化 1. 基本知识 该基本知识主要用来用到Performance Monitor,以下着重介绍下这方面的知识 性能监视器(Performance Monitor):Windo…

C++ 核心编程 - 内存分区模型

文章目录 1.1 程序运行前1.2 程序运行后1.3 new 操作符 C 程序在执行时,将内存大致划分为 4个区域: 代码区:存放函数体的二进制代码,由操作系统进行管理;全局区:存放全局变量和静态变量以及常量&#xff1…

MT2041 三角形的个数

思路:找规律,推公式 4等分: 头朝上的三角形: 边长为1:1234s1; 边长为2:123s2; 边长为3:12s3; 边长为4:1s4; 即si12...n-i1(n-i2)*(n-i…

基于高斯混合模型的视频背景提取和人员跟踪算法matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 MATLAB2013B 3.部分核心程序 .............................................................................. %我们这里…

根据当年节假日和非工作时间计算请假时间-获取每个月的节假日,计算每个月的工作日时间进度,节假日每年更新

根据需求请假时间要排除法定节假日和非工作时间 1.获取当年的节假日 节假日是每年更新的,没有固定接口,需要手动录入 个人根据官方的节假日整理了当年的所有节假日,可以根据个人需求进行修改 // 获取每个月的节假日,如果当月没…

Java | 冒泡排序算法实现

大家可以关注一下专栏,方便大家需要的时候直接查找,专栏将持续更新~ 题目描述 编写一个Java程序,实现冒泡排序算法。程序需要能够接收一个整型数组作为输入,并输出排序后的数组。 冒泡排序是一种简单的排序算法,它…

Laravel 6 - 第十五章 验证器

​ 文章目录 Laravel 6 - 第一章 简介 Laravel 6 - 第二章 项目搭建 Laravel 6 - 第三章 文件夹结构 Laravel 6 - 第四章 生命周期 Laravel 6 - 第五章 控制反转和依赖注入 Laravel 6 - 第六章 服务容器 Laravel 6 - 第七章 服务提供者 Laravel 6 - 第八章 门面 Laravel 6 - …

记录好用的python包

记录好用的python包 PipxCentos 安装pipx确保 Pip 被安装更新 Pip安装 Pipx添加 Pipx 到 PATH临时添加到 PATH:永久添加到 PATH: 验证 Pipx 安装 Poetry安装准备工作创建虚拟环境激活虚拟环境安装包追踪 & 更新包常用配置pycharm 远程连接poetry创建的虚拟环境参考链接 cen…

Java基础入门day36

day36 js dom控制css变化 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title>…

【刷题】代码随想录算法训练营第二十二天|235、二叉搜索树的最近公共祖先,701、二叉搜索树中的插入操作,450、删除二叉搜索树中的节点

目录 235、二叉搜索树的最近公共祖先701、二叉搜索树中的插入操作450、删除 235、二叉搜索树的最近公共祖先 讲解&#xff1a; 回忆一下递归的三部曲&#xff0c;以这题为例。 1、参数&#xff1a; 当前节点和两个节点。 Treenode* cur, Treenode*p, Treenode*q2、递归终止条…

prometheus配置监控Java应用服务

程序员的公众号&#xff1a;源1024&#xff0c;获取更多资料&#xff0c;无加密无套路&#xff01; 最近整理了一份大厂面试资料《史上最全大厂面试题》&#xff0c;Springboot、微服务、算法、数据结构、Zookeeper、Mybatis、Dubbo、linux、Kafka、Elasticsearch、数据库等等 …

JAVA----Thread

Thread 这里写目录标题 Thread线程Thread 第 1 种写法此外, t.start()的作用 Thread 第 2 种写法Thread 第 3 种写法Thread 第 4 种写法Thread 第 5 种写法 线程 本身是操作系统提供的, 操作系统提供了 API 以让我们操作线程, JVM 就对操作系统 API 进行了封装. 线程这里, 则提…

PVE虚拟机隐藏状态栏虚拟设备

虚拟机启动后&#xff0c;状态栏会出现一些虚拟设备&#xff0c;点击弹出会导致虚拟机无法使用。 解决方案&#xff1a; 1、在桌面新建disable_virtio_removale.bat文件&#xff0c;内容如下&#xff1a; ECHO OFF FOR /f %%A IN (reg query "HKLM\SYSTEM\CurrentContro…

【注释和反射】类加载的过程

继上一篇博客【注释和反射】获取class类实例的方法-CSDN博客 目录 三、类加载的过程 例子 三、类加载的过程 在Java虚拟机&#xff08;JVM&#xff09;中&#xff0c;类加载是一个将类的字节码文件从文件系统或其他来源加载到JVM的内存中&#xff0c;并将其转换为类或接口的…

年如何在不丢失数据的情况下解锁锁定的 Android 手机?

当您忘记密码、PIN 码或图案并且想要解锁 Android 手机时&#xff0c;您可能会丢失 Android 手机上的数据。但您无需再担心&#xff0c;因为在这里&#xff0c;我们想出了几种解锁锁定的 Android 手机而不丢失数据的方法。 方法 1. 使用 Android Unlock 解锁锁定的 Android 且不…

mathtype设置公式编号,公式居中以及编号靠右

在word中实现&#xff1a; 1. 首先点击栏&#xff0c;选择更多栏去看 看到栏的宽度&#xff0c;然后去设置样式 在开始-样式中设置,新建样式&#xff1a; 新建样式&#xff0c;然后设置格式-制表位&#xff0c;选择对齐方式&#xff0c;居中对齐设置刚才的一半&#xff0c;右…

RK3568 学习笔记 : u-boot 千兆网络功能验证

前言 开发板型号&#xff1a; 【正点原子】 的 RK3568 开发板 使用 虚拟机 ubuntu 20.04 编译 RK3568 Linux SDK&#xff0c;生成镜像&#xff0c;烧写后&#xff0c;Linux 系统正常启动 开启后可以使用 CTRLC 进入 u-boot 本篇验证一下 u-boot 下网络功能 【正点原子】 rk…

MATLAB 运算符

MATLAB 运算符 运算符是一个符号&#xff0c;告诉编译器执行特定的数学或逻辑操作。MATLAB设计为主要在整个矩阵和数组上运行。因此&#xff0c;MATLAB中的运算符既可以处理标量数据&#xff0c;也可以处理非标量数据。MATLAB允许以下类型的基本运算- 算术运算符 关系运算符…