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

news2024/12/22 22:24:09

在这里插入图片描述

🌱博客主页:青竹雾色间
🌱系列专栏: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.coloradmin.cn/o/1620849.html

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

相关文章

屏幕状态自动检测+鼠标自动操作

目录 一、写在前面 1.1适用场景 1.2涉及到的库 二、函数库 2.1pyautogui-屏幕截图&鼠标操作 2.1.1屏幕截图screenshot函数 2.1.2鼠标移动及单击 2.2Opencv-模板匹配 2.2.1matchTemplate函数 2.2.2minMaxLoc函数 2.2.3相关代码 2.3base64-图片转base64 2.3.1在线…

顺序表的应用-通讯录

顺序表的应用-通讯录 1.操作2.功能要求2.1.功能要求2.2.思路小结2.3.文件梳理2.4.代码实现"SeqList.h""Contact.h""SeqList.c""Contact.c""test.c" 1.操作 链接: 顺序表专题 这篇文章介绍了顺序表的概念与基本操作。 本文将…

54位大咖演讲精华! 中国生成式AI大会圆满收官,TOP50企业榜单揭晓

54位大咖演讲精华! 中国生成式AI大会圆满收官,TOP50企业榜单揭晓© 由 红板报 提供 智东西4月19日报道,为期两天的2024中国生成式AI大会,今日在京圆满收官。 54位产学研投嘉宾代表全程干货爆棚,报名咨询人数逾52…

机械臂模型更换成自己的urdf模块

1.将urdf生成slx文件 smimport(rm_65_flange.urdf);%生成Simscape物理模型 2.更换joint部分(对应与几个输入几个输出)(依次更换) 3.更改关节部分(依次更换) 找到urdf文件夹下的meshes文件夹,看…

python爬虫 - 爬取 json 格式数据(股票行情信息:雪球网,自选股)

文章目录 1. 第一步:安装requests库2. 第二步:获取爬虫所需的header和cookie3. 第三步:获取网页4. 第四步:解析网页5. 第五步:解析 json 结构数据体6. 代码实例以及结果展示 python爬虫五部曲: 第一步&…

Window + Ubuntu 双系统无Ubuntu Bios 启动项

文章目录 安装硬盘位置不重要!!!(但是我安装在了第二张HDD)问题是多盘分位置会导致磁盘主分区变成了简单卷 Bios Ubuntu 启动项修复参考Ubuntu安装U盘进入Try Ubuntu 使用Terminal修复完提示Disable Secure Boot进入Te…

sublime运行编译C和Java

1.先安装终端 参照以下教程 如何在 Sublime 文本编辑器中使用终端?_sublime终端窗口怎么打开-CSDN博客 可能遇到的问题:有些sublime text3可能并没有显示“package control”。这个问题对于笔者来说是有些吊诡的,因为之前一开始安装时是能…

echarts 堆叠柱状图 顶部添加合计

堆叠有3个,后面加了一个对象显示顶部的数据, 其实主要的代码还是在series 的第四项,需要注意的是 series的第四项中的data需要为 data: [0, 0, 0] 顶部的统计才能显示出来 增加的代码如下 {name: 综合,type: bar,stack: total,label: {sh…

tcp inflight 守恒算法的几何解释

接上文:tcp inflight 守恒算法背后的哲学 在 tcp inflight 守恒算法正确性 中,E bw / srtt 的公平最优解是算出来的,如果自然可以用数学描述,那能算出来的东西反过来也一定能通过直感看出来,我倾向于用几何和力学描述…

Linux 深入理解Linux文件系统与日志分析

在Linux系统中,文件名和文件数据是分开存储的 文件数据包含 元信息(即不包含文件名的文件属性) 和 实际数据 文件元信息存储在 inode(索引节点)里, 文件实际数据存储在 block(块)里; 文件名存储在目录块里 查看文件的元信息 stat 文件名 [ro…

Maven基础篇7

私服-idea访问私服与组件上传 公司团队开发流程 本地上传–>repository–>私服 其他成员从私服拿 1.项目完成后发布到私服 在pom文件最后写上发布的配置管理 ​ //写发布的url也就是你发布到哪一个版本,以及写入id ​ ​ 发布的时候,将项…

ubuntu20 中设置桌面背景任务

1. 下载conky 使用 Conky 在 Ubuntu 中显示信息,例如你的阅读计划,可以分几个步骤来完成。Conky 是一款灵活的轻量级系统监视器,能够在桌面上显示各种信息。以下是基本的设置步骤: 安装 Conky 首先,你需要在 Ubuntu…

【Linux学习】Linux进程(二)

文章目录 📕查看进程🚀/proc目录🚀cwd与exe 📕改变进程的工作目录🚀chdir指令 📕vim卡住了怎么解决 本篇文章接着【LInux进程(一)】继续编写。 📕查看进程 &#x1f68…

java使用trim方法和replaceAll方法去除空格之后,还存在空格

今天使用其他人的一个功能,发现生成的映射少了一个,后面去代码里面debug发现是字符串中左边空格没有去除导致。查看代码,里面是使用了字符串.trim().replaceAll(" ", "")去除空格的。这个代码虽然能去除(半角…

windows查看xxx的版本号

node -v python --version redis-server --version java -version go version mvn -version git --version

工业抗振动和姿态控制的传感器:XV7021BB

针对工业应用的抗振动和姿态控制的陀螺仪传感器XV7021BB。XV7021BB陀螺仪传感器的电源电压(VDDM)均为2.7V~3.6V,接口电源电压(VDDI)范围为1.65V~3.6V,较低的电压需求便于应用电路的设计;XV7021BB内置温度传感器,并集成了用户可选数字滤波器&a…

Redis入门到通关之数据结构解析-Dict

文章目录 概述构成Dict的扩容Dict的rehash总结 欢迎来到 请回答1024 的博客 🍓🍓🍓欢迎来到 请回答1024的博客 关于博主: 我是 请回答1024,一个追求数学与计算的边界、时间与空间的平衡,0与1的延伸的后端开…

华为机考入门python3--(18)牛客18- 识别有效的IP地址和掩码并进行分类统计

分类:字符串 知识点: 字符串是否由数字组成 my_str.isdigit() 字符串填充 不足8位左侧填充0 my_str.zfill(8) 题目来自【牛客】 import sys def classify_ip(ip_mask): ip_class, is_private_ip, mask_class ignore_ip, 0, valid_mask# 解…

为什么大模型训练需要GPU,以及适合训练大模型的GPU介绍

文章目录 前言 1、为什么大模型训练需要GPU,而非CPU 2、现在都有哪些合适的GPU适合训练,价格如何 前言 今天偶然看到一篇关于介绍GPU的推文,我们在复现代码以及模型训练过程中,GPU的使用是必不可少的,那么大模型训练需…

如何评价微软发布的Phi-3,手机都可以运行的小模型

前几天才刚刚发布了Llama 3,今天微软就出手了,发布了小而精的phi-3 添加图片注释,不超过 140 字(可选) 刚刚发布的Phi-3系列小模型技术报告,引起AI圈热议。 添加图片注释,不超过 140 字&#x…