mysql--数据类型
目录
搞定所有数据类型
一、常见数据类型分类
二、数值类型
1、bit类型
2、float类型
编辑3、decimal类型
4、字符类型
(1)char
(2)varchar
(3)varchar和char有甚区别?
(4)char varchar如何选择?
5、日期和时间类型
编辑
6、Enum 和 set类型
比特位存储
7、Enum 和 set类型查找
find_in_set(xxx,filed_name)函数
一、常见数据类型分类
分类 | 数据类型 | 描述 | 示例 |
---|---|---|---|
数值类型 | tinyint | 1 字节,范围从 -128 到 127 | tinyint(3) |
smallint | 2 字节,范围从 -32,768 到 32,767 | smallint | |
mediumint | 3 字节,范围从 -8,388,608 到 8,388,607 | mediumint | |
int / integer | 4 字节,范围从 -2,147,483,648 到 2,147,483,647 | int | |
bigint | 8 字节,范围从 -9,223,372,036,854,775,808 到 9,223,372,036,854,775,807 | bigint | |
float | 4 字节,单精度浮点数 | float(7,4) | |
double | 8 字节,双精度浮点数 | double | |
decimal / numeric | 精确数值,可以指定精度和小数位数 | decimal(10,2) | |
日期和时间类型 | date | 日期,格式为 'yyyy-mm-dd' | date |
datetime | 日期和时间,格式为 'yyyy-mm-dd hh:mm:ss' | datetime | |
timestamp | 时间戳,自动初始化和更新 | timestamp | |
time | 时间,格式为 'hh:mm:ss' | time | |
year | 年,格式为 'yyyy' | year(4) | |
字符串类型 | char | 固定长度字符串,最大 255 字节 | char(10) |
varchar | 可变长度字符串,最大 65,535 字节 | varchar(255) | |
tinytext | 最多 255 字节的文本 | tinytext | |
text | 最多 65,535 字节的文本 | text | |
mediumtext | 最多 16,777,215 字节的文本 | mediumtext | |
longtext | 最多 4,294,967,295 字节的文本 | longtext | |
binary | 固定长度的二进制数据 | binary(10) | |
varbinary | 可变长度的二进制数据 | varbinary(255) | |
tinyblob | 最多 255 字节的二进制大对象 | tinyblob | |
blob | 最多 65,535 字节的二进制大对象 | blob | |
mediumblob | 最多 16,777,215 字节的二进制大对象 | mediumblob | |
longblob | 最多 4,294,967,295 字节的二进制大对象 | longblob | |
json类型 | json | 存储 json 格式的数据 | json |
二、数值类型
以tinyint为例
只有数据合法才允许插入,否则不给插入
保证了整体数据库的规范性
这个叫做约束,整个约束反过来倒逼程序员要正确的输入数据
1、bit类型
bit(M):位字段类型。M表示每个值的位数,范围从1-64,如果忽略不写,默认为1
如果是1位:范围是0-1
如果是2位:范围是0-3
如果是3位:范围是0-5
以此类推,其实就是二进制
超过位数的值不能被插入
示例:
create table table_name (
id bit(2)
);
2、float类型
float(m,d) [unsigned]
m:指定显示长度(超过显示长度,四舍五入)
d:小数位数
unsigned:将负数部分砍掉
小数点精度最大是7位
create table table_name (
id decimal(4,2)
);
例如:float(4,2)表示的范围是-99.99 - 99.99

3、decimal类型
decimal (m,d) [unsigned];
和float一样,但精度更高
float精度7位;decimal整数56位,小数30位如果d被省略,默认为0;m被省略,默认为10
区别:对更小的数据,float可能会修改部分数据;但decimal不会,而保持原值
4、字符类型
(1)char
char(L):固定长度字符串,L是可以存储的长度,单位是字符,最大是255个字符
mysql中的字符,对应一个符号,而非字节,字符可是字母 / 汉字
‘ab’是两个字符;‘你好’是两个字符;‘45’也是两个字符
create table table_name(
name char(4)
);
(2)varchar
varchar(L):变长字符串,L表示长度,最大长度65535字节
utf标准3个1字节表示一个字符,因此65535/3=21845个字符
gbk标准2个字节表示一个字符
同时,在varchar中,会有一个1-3个字节记录字符串的长度
因此,其实utf标准下,最大长度其实是21844
create table table_name (
name varchar(32)
);
(3)varchar和char有甚区别?
varchar(L)中的L表示上限,
而char(L)中的L表示固定长度
举个例子:
varchar(6)
如果数据是 'a' ,数据长度为1
如果数据是 'ab',数据长度为2
如果数据为 'abc',数据长度为3
....
用多少,分配多少,但不能超过6
而char(6):
如果数据是 ‘a’,数据长度为6
如果数据是‘ab’,数据长度为6
...
即大小固定
(4)char varchar如何选择?
如果数据确定长度都一样,用char,例如身份证、学号、身高、体重
(应该没有人的身高突破4位数吧?比如1700cm?)
如果数据有变化,用varchar,例如路程、地址
定长的磁盘空间比较浪费,但是效率高
变长的磁盘空间比较节省,但是效率低
5、日期和时间类型
常用三种日期类型:date、datetime、timestamp
据类型 | 存储大小 | 描述 |
---|---|---|
date | 3 字节 | 存储日期,格式为 YYYY-MM-DD ,范围:1000-01-01 到 9999-12-31 。 |
datetime | 8 字节 | 存储日期和时间,格式为 YYYY-MM-DD HH:MM:SS ,范围:1000-01-01 00:00:00 到 9999-12-31 23:59:59 。 |
timestamp | 4 字节 | 存储日期和时间,格式为 YYYY-MM-DD HH:MM:SS ,范围:1970-01-01 00:00:01 UTC 到 2038-01-19 03:14:07 UTC 。 |
time | 3 字节 | 存储时间,格式为 HH:MM:SS ,范围:'-838:59:59' 到 '838:59:59' 。 |
year | 1 字节 | 存储年份,格式为 YYYY ,范围:1901 到 2155 。 |
示例
创建一个时间类型表:
create table time_table(
d1 date,
d2 datetime,
d3 timestamp,
d4 time,
d5 year
);
插入时间:
insert into time_table(d1, d2, d3, d4, d5) values(
'2024-10-14','2024-10-14 15:30:00',current_timestamp,
'12:30:00', 2024
);
6、Enum 和 set类型
特性 | enum | set |
---|---|---|
定义 | 用于存储单一值,值从预定义的字符串集合中选择一个 | 用于存储多个值,值从预定义的字符串集合中选择多个 |
语法 | enum('value1', 'value2', ...) | set('value1', 'value2', ...) |
值的数量 | 只能有一个值,最大值为 65535 | 可以有多个值,最大值为 64 |
存储 | 占用一个或两个字节 | 占用一个或多个字节,具体取决于存储的值的数量 |
使用场景 | 适合用于选择单一选项,如性别、状态等 | 适合用于选择多个选项,如兴趣、标签等 |
空值 | 可以设置为空值 | 可以设置为空值 |
排序 | 根据定义的顺序排序 | 按位排序 |
限制 | 不允许重复值 | 允许重复值 |
enum:枚举。“单选”类型
enum(选项1,‘选项2’,‘选项3’...);
给多个选项,但只能选一个,单选
set:集合,“多选”类型;
set(’选项1','选项2','选项3'....);
给多个选项,可选多个选项,多选
上述两个类型:只能插入所给的选项
比特位存储
数据类型 | 定义例子 | 存储值 | 比特位 |
---|---|---|---|
ENUM | ENUM('small', 'medium', 'large') | 'small' 存储为 1 | 01 |
'medium' 存储为 2 | 10 | ||
'large' 存储为 3 | 11 | ||
SET | SET('music', 'sports', 'reading', 'traveling') | 'music,sports' 存储为 3 | 0000 0011 |
'reading' 存储为 8 | 0000 1000 |
set:二进制倒序,按顺序一个比特位对应一个选项
insert into table_name values set_name (n);#
对n:
0 = 0000,空串
1 = 0001,选择第一个
2 = 0010,选择第二个
3 = 0011,选择第一、第二个
7 = 0111,选择第一、第二、第三个
示例:
1、建立示例表
create table set_table(
id int,
sports set('唱','跳','rap')
);
2、插入数据看现象
insert into set_table values (1, 1);#1=01,对应第一个选项
insert into set_table values (2, 2);#2=01,对应第二个选项
insert into set_table values (3, 3);
#3=011,对应第一、第二选项
insert into set_table values (7,7);
#7=0111,对应前三个选项
enum:索引从1开始,从左到右,不是二进制
insert into enum_table valuse (n);
对n值:
n=0,空串
n=1,选择第一个
n=2,选择第二个
n=3,选择第三个
- 每个
ENUM
值都有一个从 1 开始的索引。例如,如果定义ENUM('small', 'medium', 'large')
,那么small
的索引为 1,medium
为 2,large
为 3。
7、Enum 和 set类型查找
查找某一个条件:严格匹配
select * from table_name where filed_name='xxx...';
find_in_set(xxx,filed_name)函数
查找所有匹配的条件:
select * from table_name where find_in_set('xxx',filed_name);
查找多个条件组合:
select * from table_name where find_in_set('xxx',filed_name) and find_in_set('yyy',filed_name) ;
也可以使用数字匹配:
select * from table_name where filed_name=num;
对应的是比特位图形式
相关文章:

mysql--数据类型
目录 搞定所有数据类型 一、常见数据类型分类 二、数值类型 1、bit类型 2、float类型 编辑3、decimal类型 4、字符类型 (1)char (2)varchar (3)varchar和char有甚区别? ࿰…...

代码随想录第40天|
#include <bits/stdc.h> using namespace std;vector<list<int>> graph; // 删除局部 graph,使用全局 graph vector<vector<int>> res; vector<int> path; int N, M;void dfs(int index) {if (index N) {res.push_back(path);…...

Turn-it:优化线材重构雕塑制造
🐨文章摘要abstract 电线雕塑在工业应用和日常生活中都很重要。 本文提出了一种新的制造策略,通过调整目标形状以适应电线弯曲机,然后由人工将其弯曲回目标形状。(机器弯曲人工弯曲) 该方法通过两阶段弯曲策略实现&a…...

微深节能 堆取料机动作综合检测系统 格雷母线
微深节能的堆取料机动作综合检测系统结合了格雷母线定位系统,是工业自动化领域的一项重要创新。该系统通过集成多种传感器和控制设备,实现对堆取料机的全面监控和精确控制,包括位置、速度、力度、振动以及工作状态等。格雷母线定位系统作为一…...

【JAVA面试题】什么是Springboot的自动配置以及注意事项
文章目录 强烈推荐核心概念:自动配置的关键特点:示例: 需要注意的点1.默认配置可能不适合所有场景2.Bean 冲突与覆盖3.应用启动慢的问题4.过度依赖自动配置5.安全性问题6.依赖冲突与版本兼容7.过多不必要的自动配置8.调试困难 专栏集锦 强烈推…...

华为鸿蒙开发笔记
记在前面 官方文档链接 因无法直接使用chatgpt进行编程(悲,2024/10),故记录笔记,方便查阅,基于arkts语言 DevEco 中文 deveco是默认有中文包的,所以在市场里面搜不错,而应该在已安装里面搜索,然后启用就行了 测试 对ts进行单独测试 打开entry/src/test/LocalUnit.test.…...

Go语言Gin框架的常规配置和查询数据返回json示例
文章目录 路由文件分组查询数据库并返回jsonservice层controller路由运行效果 启动多个服务 在 上一篇文章《使用Go语言的gorm框架查询数据库并分页导出到Excel实例》 中主要给大家分享了较多数据的时候如何使用go分页导出多个Excel文件并合并的实现方案,这一篇文章…...

JavaEE----多线程(二)
文章目录 1.进程的状态2.线程的安全引入3.线程安全的问题产生原因4.synchronized关键字的引入4.1修饰代码块4.2修饰实例方法4.3修饰静态方法4.4对象头介绍4.5死锁-可重入的特性 5.关于死锁的分析总结5.1死锁的分析5.2死锁成因的必要条件5.3死锁的解决方案 1.进程的状态 public…...

【K8S】快速入门Kubernetes
之前企业都是使用容器化和来构建自己的服务和应用程序,其中容器化优点有很多:提升了部署效率、稳定性、提高了资源的利用率降低了成本。 但是也带来了一些新的问题:容器的数量变得很多,管理就是一个新的问题。所以Kubernetes就出…...

如何在 MySQL 中处理大量的 DELETE 操作??
全文目录: 开篇语前言摘要简介概述DELETE 操作的基本概念常用的 DELETE 方法 核心源码解读简单 DELETE 语句批量 DELETE 示例 案例分析案例1:使用简单 DELETE 删除用户数据案例2:使用分批 DELETE 应用场景演示场景1:用户管理系统场…...

LabVIEW中句柄与引用
在LabVIEW中,句柄(Handle) 是一种用于引用特定资源或对象的标识符。它类似于指针,允许程序在内存中管理和操作复杂的资源,而不需要直接访问资源本身。句柄用于管理动态分配的资源,如队列、文件、网络连接、…...

【三十四】【QT开发应用】音量图标以及滑动条,没有代码补全的小技巧
效果展示 鼠标位于音量图标区域内,显示出滑动条。鼠标移出音量图标区域内滑动条隐藏。鼠标点击音量图标,如果此时音量为0,音量变成50,如果此时音量不为零,音量变为0。 CVolumeButton.h 音量图标头文件 #pragma once …...

Android修改第三方应用相机方向
以下修改基于Android7.1 diff --git a/frameworks/base/core/java/android/hardware/Camera.java b/frameworks/base/core/java/android/hardware/Camera.java index 8c7434b..7201481 100755 --- a/frameworks/base/core/java/android/hardware/Camera.java b/frameworks/ba…...

Python 读取文件汇总
readline和readlines的区别 使用 open()读取文件时,readline是读取文件的一行;而readlines是加载全部文档,以list形式保存每一行内容。 使用with避免资源泄露 with语句不仅限于open()函数,任何实现了上下文管理协议的对象都可以…...

云原生:一张图了解devops 中CI/CD
一个典型的云原生应用的开发和部署过程,其中涉及到的主要工具有 Git、Docker、Jenkins/CircleCI、Ansible、Kubernetes 等。以下是每个步骤的简要说明: 开发人员(Developers)使用 Git 进行版本控制,他们将代码推送到 G…...

无人机之自组网通信技术篇
无人机的自组网通信技术是一种利用无人机作为节点,通过无线通信技术实现节点间自主组网、动态路由和数据传输的技术。 一、技术原理与特点 技术原理:无人机自组网技术基于自组织网络(Ad-Hoc Network)的原理,通过无线…...

【WebLogic】Oracle发布2024年第四季度中间件安全公告
Oracle于美国时间2024年10月15日发布了 WebLogic 12c(12.2.1.4.0)和14c(14.1.1.0.0)两个大版本2024年第4季度的安全公告,涉及漏洞ID共计 6 个,包含2个高危漏洞 2 个,4个中危漏洞,其中…...

Java集合(3:Set和Map)
文章目录 Set概述哈希值HashSet去重原理LinkedHashSetTreeSet自定义排序规则 Map概述Map的基本方法Map集合的获取功能哈希表HashMap底层源码 特点注意 Set 概述 Set集合也是一个接口,继承自Collection,与List类似,都需要通过实现类来进行操…...

【Golang】Gin框架中如何定义路由
✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,…...

CPU内存飙升
CPU 飙升介绍 CPU 飙升是指中央处理器(CPU)的使用率在短时间内急剧上升,达到一个较高的水平。正常情况下,CPU 会根据系统和应用程序的需求合理分配资源,使用率会在一定范围内波动。但当 CPU 飙升时,可能会导…...

【Java】LinkedList实现类的使用
LinkedList实现类的使用 package com.star.test04;import java.util.Iterator;import java.util.LinkedList;/** * author : Starshine */public class Test { //这是main方法,程序的入口 public static void main(String[] args) { /* LinkedL…...

创建人物状态栏
接下来,我们来尝试制作一下我们的UI,我们会学习unity基本的UI系统 ************************************************************************************************************** 我们要先安装一个好用的插件到我们的unity当中,帮助…...

django5入门【01】环境配置
注意: ⭐前提:安装了annaconda(python版本管理工具),如果没有安装,强烈建议安装一下!!!操作: 前言: 这里新创建一个名为“python_3.11_start_dja…...

1000集《楼兰》系列短剧开机仪式在疆举行,开启全球传播新篇章
2024年10月18日,光明媚,秋风送爽。 在这个收获的季节里,倍受期待的楼兰系列短剧《楼兰之天女归来》和《楼兰之时空秘宝》在新疆吐鲁番东方红卓览文化博物馆举行了隆重的开机仪式,正式拉开了摄制的序幕。 1000集《楼兰》系列短剧…...

【景观生态学实验】实验五 景观生态脆弱性评价
实验目的 1.学习层次分析模型思路,对丹江口库区2000年景观生态脆弱性评价建模:通过实验课的学习,深入理解层次分析(Analytic Hierarchy Process,AHP)理论与模型,了解其在决策问题中的应用&…...

ChatGPT 现已登陆 Windows 平台
今天,OpenAI 宣布其人工智能聊天机器人平台 ChatGPT 已开始预览专用 Windows 应用程序。OpenAI 表示,该应用目前仅适用于 ChatGPT Plus、Team、Enterprise 和 Edu 用户,是一个早期版本,将在今年晚些时候推出"完整体验"。…...

和鲸社区数据科学实训季,西安交通大学圆满收官,西安,后会有期!
和鲸社区数据科学实训季活动已走进数十家高校,在西安的收官之站,落定西安交通大学管理学院,为本次西安之旅画上了圆满的句号。 和鲸社区 2024秋 数据科学实训季以“帮助同学积累真实场景项目经验”为出发点,提供 60 个数据科学实践…...

工作使用篇:如何在centos系统中安装anaconda
在CentOS 7上安装Anaconda的步骤如下: 1. 下载Anaconda 首先,你需要下载Anaconda的安装脚本。可以使用wget命令从Anaconda的官网获取最新版本的安装脚本。打开终端并运行以下命令: wget https://repo.anaconda.com/archive/Anaconda3-2024…...

qt creator 转 visual stdio 项目调试
因果 大家在使用qt creator调试程序时,会出现未知错误,比如下图,直接release运行就没有问题。由于调试复杂程序,使用qt creator都感觉不如vs,会报未知中断。 所以有了从qt creator转换到 visual stdio来调试的想法。…...

django5入门【02】创建新的django程序
注意: ⭐前提:已经安装了python以及django所依赖的包1、通过django-admin管理工具在命令行创建Django应用程序,创建命令如下: django-admin startproject ProjectName❓ 疑问:除了使用命令行创建django程序外&#x…...