当前位置: 首页 > news >正文

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)函数


一、常见数据类型分类

分类数据类型描述示例
数值类型tinyint1 字节,范围从 -128 到 127tinyint(3)
smallint2 字节,范围从 -32,768 到 32,767smallint
mediumint3 字节,范围从 -8,388,608 到 8,388,607mediumint
int / integer4 字节,范围从 -2,147,483,648 到 2,147,483,647int
bigint8 字节,范围从 -9,223,372,036,854,775,808 到 9,223,372,036,854,775,807bigint
float4 字节,单精度浮点数float(7,4)
double8 字节,双精度浮点数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

据类型存储大小描述
date3 字节存储日期,格式为 YYYY-MM-DD,范围:1000-01-01 到 9999-12-31
datetime8 字节存储日期和时间,格式为 YYYY-MM-DD HH:MM:SS,范围:1000-01-01 00:00:00 到 9999-12-31 23:59:59
timestamp4 字节存储日期和时间,格式为 YYYY-MM-DD HH:MM:SS,范围:1970-01-01 00:00:01 UTC 到 2038-01-19 03:14:07 UTC
time3 字节存储时间,格式为 HH:MM:SS,范围:'-838:59:59' 到 '838:59:59'
year1 字节存储年份,格式为 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类型

特性enumset
定义用于存储单一值,值从预定义的字符串集合中选择一个用于存储多个值,值从预定义的字符串集合中选择多个
语法enum('value1', 'value2', ...)set('value1', 'value2', ...)
值的数量只能有一个值,最大值为 65535可以有多个值,最大值为 64
存储占用一个或两个字节占用一个或多个字节,具体取决于存储的值的数量
使用场景适合用于选择单一选项,如性别、状态等适合用于选择多个选项,如兴趣、标签等
空值可以设置为空值可以设置为空值
排序根据定义的顺序排序按位排序
限制不允许重复值允许重复值

enum:枚举。“单选”类型
enum(选项1,‘选项2’,‘选项3’...);
给多个选项,但只能选一个,单选

set:集合,“多选”类型;
set(’选项1','选项2','选项3'....);
给多个选项,可选多个选项,多选
上述两个类型:只能插入所给的选项

比特位存储
数据类型定义例子存储值比特位
ENUMENUM('small', 'medium', 'large')'small' 存储为 101
'medium' 存储为 210
'large' 存储为 311
SETSET('music', 'sports', 'reading', 'traveling')'music,sports' 存储为 30000 0011
'reading' 存储为 80000 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有甚区别? &#xff0…...

代码随想录第40天|

#include <bits/stdc.h> using namespace std;vector<list<int>> graph; // 删除局部 graph&#xff0c;使用全局 graph vector<vector<int>> res; vector<int> path; int N, M;void dfs(int index) {if (index N) {res.push_back(path);…...

Turn-it:优化线材重构雕塑制造

&#x1f428;文章摘要abstract 电线雕塑在工业应用和日常生活中都很重要。 本文提出了一种新的制造策略&#xff0c;通过调整目标形状以适应电线弯曲机&#xff0c;然后由人工将其弯曲回目标形状。&#xff08;机器弯曲人工弯曲&#xff09; 该方法通过两阶段弯曲策略实现&a…...

微深节能 堆取料机动作综合检测系统 格雷母线

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

【JAVA面试题】什么是Springboot的自动配置以及注意事项

文章目录 强烈推荐核心概念&#xff1a;自动配置的关键特点&#xff1a;示例&#xff1a; 需要注意的点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文件并合并的实现方案&#xff0c;这一篇文章…...

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

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

如何在 MySQL 中处理大量的 DELETE 操作??

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

LabVIEW中句柄与引用

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

【三十四】【QT开发应用】音量图标以及滑动条,没有代码补全的小技巧

效果展示 鼠标位于音量图标区域内&#xff0c;显示出滑动条。鼠标移出音量图标区域内滑动条隐藏。鼠标点击音量图标&#xff0c;如果此时音量为0&#xff0c;音量变成50&#xff0c;如果此时音量不为零&#xff0c;音量变为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()读取文件时&#xff0c;readline是读取文件的一行&#xff1b;而readlines是加载全部文档&#xff0c;以list形式保存每一行内容。 使用with避免资源泄露 with语句不仅限于open()函数&#xff0c;任何实现了上下文管理协议的对象都可以…...

云原生:一张图了解devops 中CI/CD

一个典型的云原生应用的开发和部署过程&#xff0c;其中涉及到的主要工具有 Git、Docker、Jenkins/CircleCI、Ansible、Kubernetes 等。以下是每个步骤的简要说明&#xff1a; 开发人员&#xff08;Developers&#xff09;使用 Git 进行版本控制&#xff0c;他们将代码推送到 G…...

无人机之自组网通信技术篇

无人机的自组网通信技术是一种利用无人机作为节点&#xff0c;通过无线通信技术实现节点间自主组网、动态路由和数据传输的技术。 一、技术原理与特点 技术原理&#xff1a;无人机自组网技术基于自组织网络&#xff08;Ad-Hoc Network&#xff09;的原理&#xff0c;通过无线…...

【WebLogic】Oracle发布2024年第四季度中间件安全公告

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

Java集合(3:Set和Map)

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

【Golang】Gin框架中如何定义路由

✨✨ 欢迎大家来到景天科技苑✨✨ &#x1f388;&#x1f388; 养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; &#x1f3c6; 作者简介&#xff1a;景天科技苑 &#x1f3c6;《头衔》&#xff1a;大厂架构师&#xff0c;华为云开发者社区专家博主&#xff0c;…...

CPU内存飙升

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

【Java】LinkedList实现类的使用

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

创建人物状态栏

接下来&#xff0c;我们来尝试制作一下我们的UI&#xff0c;我们会学习unity基本的UI系统 ************************************************************************************************************** 我们要先安装一个好用的插件到我们的unity当中&#xff0c;帮助…...

django5入门【01】环境配置

注意&#xff1a; ⭐前提&#xff1a;安装了annaconda&#xff08;python版本管理工具&#xff09;&#xff0c;如果没有安装&#xff0c;强烈建议安装一下&#xff01;&#xff01;&#xff01;操作&#xff1a; 前言&#xff1a; 这里新创建一个名为“python_3.11_start_dja…...

1000集《楼兰》系列短剧开机仪式在疆举行,开启全球传播新篇章

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

【景观生态学实验】实验五 景观生态脆弱性评价

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

ChatGPT 现已登陆 Windows 平台

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

和鲸社区数据科学实训季,西安交通大学圆满收官,西安,后会有期!

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

工作使用篇:如何在centos系统中安装anaconda

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

qt creator 转 visual stdio 项目调试

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

django5入门【02】创建新的django程序

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