MySQL数据库的数据类型
个人主页:C++忠实粉丝
欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 C++忠实粉丝 原创MySQL数据库的数据类型
收录于专栏[MySQL]
本专栏旨在分享学习MySQL的一点学习笔记,欢迎大家在评论区交流讨论💌
目录
数据类型分类
数值类型
tinyint 类型
bit 类型
小数类型
float
decimal
字符串类型
char
varchar
char 和 varchar 比较
日期和时间类型
enum 和 set
数据类型分类
数值类型
tinyint 类型
数值越界测试:
说明:
在 MySQL 中,整型可以指定是有符号的和无符号的,默认是有符号的。
可以通过 UNSIGNED 来说明某个字段是无符号的
无符号示例:
其他类型都是一样的。
注意:尽量不要使用 unsigned,对于 int 类型可能存放不下的数据,int unsigned 同样可能存放不下,尽管如此,还不如设计时,将 int 类型提升为 bigint 类型。
bit 类型
基本语法:
bit[(M)]:位字段类型。M 表示每个值得位数,范围从 1 到 64。如果 M 被忽略,默认为1
举例:
查询 bit 类型的数据可能为空,因为它存储的是二进制数。在显示时会将 BIT 数据类型转化为空白表示,使用 HEX() 可以将其以十六进制或更直观的格式显示出来。
bit 使用注意事项:
bit 字段在显示时,是按照 ASCLL 码对应的值显示。
如果我们有这样的值,只存放0或1,这时可以定义 bit(1)。这样可以节省空间。
小数类型
float
语法:
float[(m, d)] [unsigned]:M 指定显示长度,d指定小数位数,占用空间4个字节
案例:
小数:float(4,2) 表示的范围是 -99.99 ~ 99.99,MySQL 在保存值时会进行四舍五入。
如果定义的是 float(4, 2) unsigned 这时,因为把它指定为无符号的数,范围是 0 ~ 99.99
decimal
语法:
decimal(m,d) [unsigned]:定点数m指定长度,d表示小数点的位数
decimal(5,2) 表示的范围是 -999.99 ~ 999.99
decimal(5,3) unsigned 表示的范围 0 ~ 999.99
decimal 和 float 很像,但是有区别:
flaot 和 decimal 表示的精度不一样:
发现 decimal 的精度更准确,因此如果我们希望小数的精度高,推荐使用 decimal
说明:float 表示的精度大约是7位。decimal 整数最大位数m为65。支持小数最大位数d是30。如果d被省略,默认为0,如果m被省略,默认是10.
字符串类型
char
语法:
char(L):固定长度字符串,L是可以存储的长度,单位为字符,最大长度值可以为255
案例 (char):
说明:char(2) 表示可以存放两个字符,可以是字母或者汉字,但是不能超过2个,最多只能是255
varchar
语法:
varchar(L):可变长度字符串,L表示字符长度,最大长度65535个字节
案例:
说明:
关于 varchar(len),len 到底是多大,这个 len 值,和表的编码密切相关:
varchar 长度可以指定为0到65535之间的值,但是有1-3个字节用于记录数据大小,所有说有效字节数是65532。
当我们的表的编码是utf8时,varchar(n) 的参数n最大值是65532/3 = 21844 [因为 utf 中,一个字符占用3个字节],如果编码是gbk,varchar(n) 的参数n最大是65532/2=32766(因为gbk中,一个字符占用2字节)。
char 和 varchar 比较
实际存储 | char(4) | varchar(4) | char占用字节 | varchar占用字节 |
---|---|---|---|---|
abcd | abcd | abcd | 4*3 = 12 | 4*3+1 = 13 |
A | A | A | 4*3 = 12 | 1*3 + 1 = 4 |
Abcde | 数据超过长度 | 数据超过长度 |
如何选择定长或变长字符串?
如果数据确定长度都一样,就使用定长(char),比如:身份证,手机号,md5
如果数据长度有变化,就是用变长(varchar),比如:名字,地址,但是你要保证最长的能存的进去。
定长的磁盘空间比较浪费,但是效率高。
变长的磁盘比较节省空间,但是效率低。
定长的意义是,直接开辟好对应的空间
变长的意义,在不超过自定义范围的情况下,用多少,开辟多少。
日期和时间类型
常用的日期有如下三个:
date:日期‘yyyy-mm-dd’,占用三字节
datetime:时间日期格式 ‘yyyy-mm-dd HH:ii:ss’ 表示范围从 1000 到 9999,占用八字节
timestamp:时间戳,从1970 年开始的 yyyy-mm-dd HH:ii:ss 格式和 datetime 完全一致,占用四字节
案例:
enum 和 set
语法:
enum:枚举,“单选”类型;
enum(‘选项1’,‘选项2’,‘选项3’,...);
该设定只是提供了若干个选项的值,最终一个单元格中,实际只存储了其中一个值;而且处于效率考虑,这些值实际存储的是 “数字”,因为这些选项的每个选项值依次对应如下数字:1,2,3....最多65535个;当我们添加枚举值时,也可以添加对应的数字编号。
set:集合,“多选”类型;
set("选项1",“选项二”,“选项三”)
该设定只是提供了若干个选项的值,最终一个单元格中,设计可存储了其中任意多个值;而且出于效率考虑,这些值实际存储的是“数字”,因为这些选项的每个选项值依次对应如下数字:1,2,4,8,16,32,......最多64个。
说明:不建议在添加枚举值,集合值得时候采用数字的方式,因为不利于阅读。
案例:
有一个调查表 votes,需要调查人的喜好,比如(登山,游泳,篮球,武术)中选择(可以多选),(男,女)【单选】
插入数据:
有如下数据,想查找所有喜欢登山的人:
我们可以使用如下语句进行查询:
select * from votes where hobby='登山';
我们发现不能查询出所有爱好为登山的人。
集合查询使用 find_in_set 函数:
find_in_set(sub,str_list):如果 sub 在 str_list 中,则返回下标;如果不在,返回0;
str_list 用逗号分隔的字符串。
查询爱好登山的人:
相关文章:
MySQL数据库的数据类型
个人主页:C忠实粉丝 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 C忠实粉丝 原创 MySQL数据库的数据类型 收录于专栏[MySQL] 本专栏旨在分享学习MySQL的一点学习笔记,欢迎大家在评论区交流讨论💌 目录 数据类型分类 …...
前端H5移动端基础框架模板 :Vue3 + Vite5 + Pinia + Vant4 + Sass + 附源码
技术栈选用 Vue3 Vite5 Pinia Vant4 Sass 源码地址: git clone https://gitee.com/gaiya001/h5-APP.git1. 1.vite.config.js文件配置 ** import { defineConfig } from vite // 导入 Vite 的配置函数 import vue from vitejs/plugin-vue // 导入 Vue 插件 i…...
什么是线程安全
🌈🌈🌈今天给大家分享的是:什么是线程安全 目录 线程安全的定义 线程安全的级别 (1)不可变 (2)绝对线程安全 (3)相对线程安全 (4)线程非安全…...
️️️ 避坑指南:如何修复国密gmssl 库填充问题并提炼优秀加密实践20241212
🛡️ 避坑指南:如何修复国密gmssl 库填充问题并提炼优秀加密实践 ✨ 引言 在当下的数据安全环境中,SM4作为中国国家密码算法的代表性选择,被广泛应用于金融、通信和政府领域。然而,在实际开发中,即便是开…...
深度学习实验十四 循环神经网络(1)——测试简单循环网络的记忆能力和梯度爆炸实验
目录 一、数据集构建 1.1数据集的构建函数 1.2加载数据集并划分 1.3 构建Dataset类 二、模型构建 2.1嵌入层 2.2SRN层 2.3模型汇总 三、模型训练 3.1 训练指定长度的数字预测模型 3.2 损失曲线展示 四、模型评价 五、修改 附完整可运行代码 实验大体步骤&#x…...
AWS re:Invent 发布新的数据库产品 Aurora DSQL; NineData SQL编程大赛开始; 腾讯云支持PostgreSQL 17
重要更新 1. AWS re:Invent 发布新的数据库产品 Aurora DSQL ,提供了跨区域、强一致、多区域读写的能力,同时具备99.999%(多区域部署)的可用性,兼容PostgreSQL;同时发布的还有 DynamoDB 也提供类似的跨区域…...
STM32 OLED屏幕驱动详解
一、介绍 OLED是有机发光二极管,又称为有机电激光显示(Organic Electroluminescence Display, OLED)。OLED由于同时具备自发光,不需背光源、对比度高、厚度薄、视角广、反应速度快、可用于挠曲性面板、使用温度范围广…...
Python字符串常用操作
Python字符串常用操作 一、字符串的切片 1.1、通过下标及下标范围取值 my_str myNameIsTaichi value1 my_str[2] # 正向 N value2 my_str[-5] # 反向 从 -1 开始 a字符串分割,语法:string[end: step] start:头下标,以0开…...
Redis 生产问题(重要)
缓存穿透 什么是缓存穿透? 缓存穿透说简单点就是大量请求的 key 是不合理的,根本不存在于缓存中,也不存在于数据库中 。这就导致这些请求直接到了数据库上,根本没有经过缓存这一层,对数据库造成了巨大的压力…...
前端 —— Git
Git安装 下载安装包 【免费】前端前置-Git安装包资源-CSDN文库 安装 ‘git‘不是内部或外部命令及Git 的保姆级安装教程(保姆级教程)_git不是内部或外部命令-CSDN博客 vscode添加gitbash终端 setting.json "terminal.integrated.profiles.win…...
【GL006】Linux 之 shell
目录 一、shell 指令 1.1 体验shell指令 1.2 命令格式 1.3 shell中的通配符 1.4 输入输出重定向 1.5 命令置换 1.6 基本系统维护命令 1.7 Linux的进程管理命令 1.8 文件系统相关命令 1.9 Linux网络配置管理 二、shell 编程 2.1 shell 脚本的基础知识 2.2 shell 变…...
JS听到了强运的回响
正则表达式 介绍 正则表达式是用于匹配字符串中字符组合的模式,在JS中,正则表达式也是对象 通常用来查找,替换那些符合正则表达式的文本 就是筛选出符合条件的一类人 比如说 有人喜欢玩艾斯爱慕,那他喜欢的就是这一类人&…...
Linux下MySQL的简单使用
Linux下MySQL的简单使用 导语MySQL安装与配置 MySQL安装密码设置 MySQL管理 命令 myisamchkmysql其他 常见操作 C语言访问MYSQL 连接例程错误处理使用SQL 总结参考文献 导语 这一章是MySQL的使用,一些常用的MySQL语句属于本科阶段内容,然后是C语言和M…...
.net core使用AutoMapper
AutoMapper 是一个用于 .NET 平台的对象映射工具,它简化了不同对象类型之间的转换过程。在软件开发中,尤其是在分层架构的应用程序里,常常需要在不同的对象模型之间进行数据传递,例如从数据库实体到视图模型、DTO(数据…...
nmap详解
Nmap(Network Mapper)是一个开放源代码的网络探测和安全审核的工具。由于它的功能强大,被广泛应用于网络安全领域。以下是Nmap的一些主要功能及其在实战中的应用举例。 Nmap的主要功能: 端口扫描:检测目标主机上开放…...
CentOS7环境安装php
直接安装 yum -y install php CentOS7默认安装是php5,现在php已有8.3版本 先查看php -v 版本 如果是低版本,可以删除 yum remove php yum remove php-fpm yum remove php-common 一、添加REMI存储库 yum install epel-release yum install -y …...
基于深度学习的猫狗识别系统【深度学习课设】
🏆 作者简介:席万里 ⚡ 个人网站:https://dahua.bloggo.chat/ ✍️ 一名后端开发小趴菜,同时略懂Vue与React前端技术,也了解一点微信小程序开发。 🍻 对计算机充满兴趣,愿意并且希望学习更多的技…...
字体子集化实践探索
最近项目rust生成PDF组件printpdf需要内嵌完整字体导致生成的PDF很大,需要做压缩,但是rust的类库allsorts::subset::subset不支持windows,所以做了一些windows下字体子集化的尝试 方案一:node.js做子集化 fontmin 缺点是也需要集…...
A1017 基于Java+JSP+SQL Server+servlet的二手购物平台的设计与实现
二手购物平台 1.摘要2.开发目的和意义3.系统功能设计4.系统界面截图5.源码获取 1.摘要 摘 要 计算机以及网络技术的飞速发展,网络的应用在全国乃至全球日益普及,随着人们的思想水平和生活水平的提高,网络已经是人们必不可少的一部分。人们的…...
Simdroid-EC:液冷仿真新星,助力新能源汽车电机控制器高效散热
近年来,新能源电动车的销量呈现出快速增长的态势。据统计,2024 年1-10月中国新能源汽车销量达728万辆,同比增长37.8%。 电机控制器在新能源汽车中对于保障动力和安全性能扮演着至关重要的角色,其核心部件IGBT(绝缘栅双…...
C语言——实现并求出两个数的最大公约数
问题描述:求出两个数的最大公约数 //求两个数的最大公约数 #include<stdio.h> #include<stdlib.h> #include<string.h> #include<math.h> #include<time.h>int main() {int a,b;printf("请您输入两个数 a 和 b\n");scanf…...
今天你学C++了吗?——C++中的类与对象(日期类的实现)——实践与知识的碰撞❤
♥♥♥~~~~~~欢迎光临知星小度博客空间~~~~~~♥♥♥ ♥♥♥零星地变得优秀~也能拼凑出星河~♥♥♥ ♥♥♥我们一起努力成为更好的自己~♥♥♥ ♥♥♥如果这一篇博客对你有帮助~别忘了点赞分享哦~♥♥♥ ♥♥♥如果有什么问题可以评论区留言或者私信我哦~♥♥♥ ✨✨✨✨✨✨ 个…...
享元模式的理解和实践
在软件开发中,性能优化是一个永恒的话题。在追求高性能的过程中,减少内存的使用是一项重要的任务。享元模式(Flyweight Pattern)就是一种用于减少内存使用量的设计模式,它特别适用于存在大量重复对象的场景。本文将详细…...
Unreal Engine 中的UI界面开发
推荐的使用方式 轻量级 HUD:使用 Canvas 绘制简单的文本、调试信息或基础 UI(如准星、血量条等)。 复杂 UI:使用 UMG(Unreal Motion Graphics)和 Slate 进行布局和交互,避免手动管理 Canvas 绘制。 避免遮挡场景:仅绘制必要的内容,并利用透明度(如 FLinearColor(1, 1…...
Docker在Ubuntu和CentOS系统下的安装
目录 1. 各版本平台支持情况2. 在Ubuntu系统下安装docker3. 常见报错4. Docker的镜像源修改5. Docker目录修改6. 在CentOS系统下安装docker 1. 各版本平台支持情况 (1)平台支持情况如下: Server 版本 桌面版本 2. 在Ubuntu系统下安装docker…...
EXCEL 关于plot 折线图--频度折线图的一些细节
目录 0 折线图有很多 1 频度折线图 1.1 直接用原始数据做的频度折线图 2 将原始数据生成数据透视表 3 这样可以做出了,频度plot 4 做按某字段汇总,成为累计plot分布 5 修改上面显示效果,做成百分比累计plot频度分布 0 折线图有很多 这…...
Hive操作案例
目录 idea/dg远程连接导入数据建表数据导入 idea/dg远程连接 hive的详细安装不多展示,自行搜索即可。 依次启动zookeeper,hadoop 在zookeeper的节点上启动如下指令(我的是1个主节点和2个备用节点) 启动Hive的metastore࿰…...
C++ 内存管理和模板与STL
此篇目是之后各种C库的基础 目录 内存管理 内存分布 内存管理方式 new和delete operator new 与 operator delete函数 实现原理 定位new表达式(placement-new) 模板基础 泛型编程 模板 函数模板 类模板 STL 组成部分 内存管理 内存分布 int globalVar 1; //全局变量 静…...
JDK8新特性:Stream
JDK8最大的改变: 1. lambda表达式 2. Stream 1. Steam流的入门 什么是Stream? 也叫Stream流,是jdk8开始的一套API,用于操作集合或者数组中的数据 优点: Stream流大量结合了Lambda的语法风格来创建,提…...
前端传入Grule,后端保存到 .grl 文件中
前端传入Grule,后端保存到 .grl 文件中 通过简单的输入框,将Grule的部分拆解成 规则名称 规则描述 规则优先级 规则条件 规则逻辑Grule关键字 when Then 模拟了 if 判断的条件和逻辑部分 类似于 shell 和 ruby 之类的脚本语言,有 then 关键字…...
医疗软件网站建设公司/长沙seo网站推广
jstl与EL表达式 一el表达式介绍 EL 全名为Expression Language EL 语法很简单,它最大的特点就是使用上很方便。接下来介绍EL主要的语法结构: ${sessionScope.user.sex} 所有EL都是以${为起始、以}为结尾的。上述EL范例的意思是:从Sessio…...
大米网站模板/最新互联网项目平台网站
写在前面: 由于暑假社会实践的时候,队里面的小姑娘回校的时候忘带了“实践地证明纸质版材料”,并且是没有电子版的公章的,而且今天就要交材料(昨天已经是10点多了),找人传真也不是很现实&#…...
成都微网站开发/策划推广活动方案
今天,刚好要写开源项目的后台数据了,所以学习了一下php的命名空间,收获多多,所以总结了一下这篇文章,好了,废话不多说,上代码吧我们该如何命名空间呢?<?php // 使用命名空间的关…...
ASP.NET网站建设实战/百度手机应用市场
锁在日常的开发过程中,为了控制线程的并发肯定会用到锁机制。对于数据库而言,锁机制就是数据库为了保证数据的一致性,而使各种共享资源在被并发访问变得有序所设计的一种规则。当然MySQL也不例外,根据不同的存储引擎,M…...
服装网站建设价格/免费网络推广软件有哪些
——————————————————–ha_innobase::write_row是向innodb写入记录的函数,进入函数时自增列的值还没被设置(如何是NULL的话),会调用handler::update_auto_increment来获取并更新自增列,然后再调用row_insert_for_mysql来实际…...
yii2 网站开发/软件推广平台
《计算机导论》教学大纲一、课程概述1. 课程研究对象和研究内容计算机导论对计算机科学的核心内容作概括介绍;使学生深刻理解计算机系统的信息处理功能本质;掌握数据表达和数据加工表达的层次方法;了解计算机系统的功能组成;认识计…...