【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…

笔记:Python选择结构 编程题

文章目录 前言一、选择结构是什么?二、编程题总结 前言 在编程中,选择结构是一种重要的控制流程,它允许我们根据条件的满足与否选择性地执行不同的代码块。在 Python 中,常见的选择结构有 if、elif 和 else 语句。 if 语句允许我…

odoo 云部署

1、从镜像中安装:postgres docker run --name db -e POSTGRES_PASSWORD529500 -p 5432:5432 -d postgres:latest 2、从镜像中安装:unlimitedbiking/odoo16-enterprise docker run -v /download/addons:/mnt/extra-addons -p 8069:8069 --name odoo16 -…

如何在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 - …

面试集中营—场景面试题A

一、线上几百万的消息积压如何处理? 1、第一步我们要首先确定是什么导致的消息积压,基本上三个原因 消费者处理消息速度慢; 生产者生产消息速度太快; 消息处理流程异常导致大量重试; 线上消息积压第一步先看日志&am…

vue 实现 word 下载的方式

实现思路 下载任何文件的思路相同,只需配置相应的文件类型即可。 (1)使用 axios 从服务器获取文件的二进制数据; (2)在 axios 中设置 responseType 为 blob,指定处理 二进制数据; …

【刷题】搜索——DFS:DFS求排列和组合

排列 A n m A_n^m Anm​ 输入&#xff1a; 4 2 输出&#xff1a; 1 2 1 3 1 4 2 1 2 3 2 4 3 1 3 2 3 4 4 1 4 2 4 3 #include <iostream> #include <algorithm> #include <vector> using namespace std;int n, m; int a[100]; bool st[100]; void dfs(int …

记录好用的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…