[数据库]基本数据类型

news2024/9/24 1:26:06

●🧑个人主页:你帅你先说.
●📃欢迎点赞👍关注💡收藏💖
●📖既选择了远方,便只顾风雨兼程。
●🤟欢迎大家有问题随时私信我!
●🧐版权:本文由[你帅你先说.]原创,CSDN首发,侵权必究。

📌📌📌为您导航📌📌📌

  • 数据类型分类
  • 数值类型
    • tinyint类型
    • bit类型
    • float小数类型
    • decimal小数类型
    • char字符类型
    • varchar字符类型
    • 日期和时间类型
    • enum和set

数据类型分类

在这里插入图片描述

数值类型

tinyint类型

tinyint为1个字节,数据范围是-128~127。

mysql> insert into tt1 values(1); 
Query OK, 1 row affected (0.00 sec) 
mysql> insert into tt1 values(128); 
-- 越界插入,报错 ERROR 1264 (22003): Out of range value for column 'num' at row 1

bit类型

基本语法:

bit[(M)]:位字段类型。M表示每个值的位数,范围从164。如果M被忽略,默认为1//举个例子
mysql> create table tt1 (id int, a bit(8)); 
Query OK, 0 rows affected (0.01 sec)
mysql> insert into tt1 values(10,65);
Query OK, 1 row affected (0.00 sec)
mysql> select * from tt1;
+------+------+
| id   | a    |
+------+------+
|   10 | A    |
+------+------+
1 row in set (0.00 sec)

💡:bit数据类型是以字符的形式进行显示的。

float小数类型

基本语法:

float[(m, d)] [unsigned] : M指定显示长度,d指定小数位数,占用空间4个字节
//float(4,2)表示的范围是-99.99 ~ 99.99,MySQL在保存值时会进行四舍五入。

//例如插入99.995会报错,因为四舍五入就是100.00,但插入99.994不会报错,因为四舍五入还是99.99

//注意:当float是无符号时,float的范围缩小一半,只留下大于等于0的范围。

decimal小数类型

基本语法:

decimal(m, d) [unsigned]:定点数m指定长度,d表示小数点的位数

//decimal和float的用法非常类似
decimal(5,2)//表示的范围是 -999.99 ~ 999.99

decimal(5,2) unsigned//表示的范围 0 ~ 999.99
//与float不同的是,decimal的精度更高,所以需要高精度计算时,建议使用decimal

在这里插入图片描述
显然,decimal的精度更高,float的精度大约是7位

char字符类型

基本语法:

char(L):固定长度字符串,L是可以存储的长度,单位为字符,最大长度值可以为255//注意,L是字符长度,不是字节
//例如char(2),你可以插入"ab",也可以插入"中国"。

varchar字符类型

基本语法:

varchar(L):可变长度字符串,L表示字符长度,最大长度65535个字节。
//与char类似,这里的L也是字符长度
//从名字上可以看出char和varchar一定是有区别的
//举个例子,char和varchar的L都设置为8
//此时我们插入"abcd",此时char的L就是8,但varchar的L却是4,varchar也叫做可变字符,它的大小是动态变化的
//char可以理解成数组,一旦定义好大小就不能改变,varchar可以理解成string,8就是capacity,4就是len

我们还发现varchar并没有说最大长度是多少,而是直接给了最大字节数。
关于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字节。

日期和时间类型

常用的日期有如下三个:

  • date :日期 ‘yyyy-mm-dd’ ,占用三字节。
  • datetime 时间日期格式 ‘yyyy-mm-dd HH:ii:ss’ 表示范围从 1000 到 9999 ,占用八字节。
  • timestamp :时间戳,从1970年开始的 yyyy-mm-dd HH:ii:ss 格式和 datetime 完全一致,占用四字节。
mysql> create table t4(d1 date, d2 datetime, d3 timestamp);
Query OK, 0 rows affected (0.04 sec)

insert into t4(d1,d2) values('2022-01-01','2022-07-01 12:01:01');
Query OK, 1 row affected (0.01 sec)

在这里插入图片描述

enum和set

基本语法:
enum:枚举,“单选”类型;
enum(‘选项1’,‘选项2’,‘选项3’,…);
该设定只是提供了若干个选项的值,最终一个单元格中,实际只存储了其中一个值;而且出于效率考虑,这些值实际存储的是“数字”,因为这些选项的每个选项值依次对应如下数字:1,2,3,…最多65535个;当我们添加枚举值时,也可以添加对应的数字编号

set:集合,“多选”类型;
set(‘选项值1’,‘选项值2’,‘选项值3’, …);
该设定只是提供了若干个选项的值,最终一个单元格中,设计可存储了其中任意多个值;而且出于效率考虑,这些值实际存储的是“数字”,因为这些选项的每个选项值依次对应如下数字:1,2,4,8,16,32,… 最多64个。

mysql> create table t4( gender enum('男','女'),hobby set('打游戏','下棋','游泳','打篮球'));
Query OK, 0 rows affected (0.04 sec)

mysql> insert into t4 values ('男','下棋');
Query OK, 1 row affected (0.00 sec)
//与enum不同的是,set可以一次插入多条。
mysql> insert into t4 values ('男','下棋,游泳,打游戏');
Query OK, 1 row affected (0.01 sec)

在这里插入图片描述
如果我要查询爱好有下棋的人要怎么查?
可能有人以为是这样
在这里插入图片描述
这样仅仅找出了只会下棋的,而我们要的是爱好里有下棋的人都要找出来。
此时我们可以使用find_in_set(sub,str_list)函数
在这里插入图片描述
喜欢这篇文章的可以给个一键三连点赞👍关注💡收藏💖

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/340953.html

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

相关文章

nodejs下载安装以及配置全局变量

一、下载 官网下载: 1、https://nodejs.org/dist/v10.16.3/node-v10.16.3-win-x64.zip 2、http://nodejs.cn/download/ 注:根据自己的项目对应电的nodejs版本去下载对应的,否则肯出现项目无法运行的情况 二、安装 无脑下一步即可&#xff0…

【2021/反事实/POI推荐】Improving location recommendation with urban knowledge graph

文章全文首发:码农的科研笔记(公众号) 原文:https://arxiv.org/abs/2111.01013 1 动机 位置推荐定义为推荐地理位置给用户,现有推荐无法无法很好的建模地理位置属性,这导致推荐结果是次优的。同时作者希望…

引入QQ邮箱发送验证码进行安全校验

最近想给自己的项目在注册时加点安全校验,本想着使用短信验证码,奈何囊中羞涩只能退而求次改用QQ邮箱验证注册~ 一.需求分析 场景:用户输入自己的邮箱,点击获取验证码,后台会发送一封邮件到对应邮箱中。 分析&#x…

element表单搜索框与表格高度自适应

一般在后台管理系统中,表单搜索框和表格的搭配是非常常见的,如下所示: 在该图中,搜索框有五个,分为了两行排列。但根据大多数的UI标准,搜索框默认只显示一行,多余的需要进行隐藏。此时的页面被…

【Flutter入门到进阶】跨平台相关-Flutter的选择

1.回顾Android渲染机制工作流程 1.1 图例 1.2 说明 1.Android内部自己通过skia引起完成图像构建 2.Android通过surfacefilinger来完成图像与驱动之间的处理 2 自建渲染引擎渲染方案 自建渲染引擎渲染方案,是有别于Web渲染采用WebView容器进行渲染UI、原生渲染…

软件设计(十)--计算机系统知识

软件设计(九)https://blog.csdn.net/ke1ying/article/details/128990035 一、效验码 奇偶效验:是一种最简单的效验方法。基本思想是:通过在编码中增加一个效验位来使编码中1的个数为奇数(奇效验)或者为偶…

微内核架构

QNX微内核架构 设计原则 最小化内核功能 将操作系统功能移到用户态,成为Server“服务”。在用户模块之间,通过消息传递机制通信。 在宏内核中,文件系统和磁盘驱动都是运行在内核态,应用通过内核调用文件系统,文件系…

Ubuntu搭建博客typecho

提示 见过这样类型的blog吧,现在就是最详细的搭建过程。 第一步 搭建apache2环境 安装命令 sudo apt -y install apache2 apache2-utils访问项目地址: /var/www/html配置文件在: /etc/apache2/日志在: /var/log/apache2/ 修改配置文件 vim…

如何在项目中正确使用异常?

文章目录异常系列文章一、异常介绍二、异常体系三、异常处理机制四、异常处理五、异常调用链异常系列文章 如何在项目中正确使用异常?如何优雅的设计Java异常Java统一异常处理–实战篇Java 异常处理的误区和经验总结你要的Java常见异常都在这里Java中异常抛出后代码…

SpringBoot后端接口请求参数映射方式详解

在SpringBoot项目中,前端HTTP请求中的参数如何映射到Controller层的接口方法中的参数?这里针对各种方式做一个测试与总结。 1:QueryString方式 QueryString参数传递的方式为,在请求URL中直接拼接请求参数如:URL?para…

Java实现调用ChatGPT详解

Java调用ChatGPT的小插件1. 申请ChatGPT账号2. 配置阶段2.1 依赖引入2.2 配置application.yml文件2.3 EnableChatGPT注解3. 使用4. 测试1. 申请ChatGPT账号 CSDN上面有很多申请ChatGPT账号的教程,可以直接搜索chatgpt账号注册,然后按照高赞的几个回答注…

谷粒商城--SPU和SKU

目录 1.SPU和SKU概念 2.表的关系理解 3.导入前端代码 4.完善后端接口 5.属性分组详情 6.规格参数详情 7. 销售属性详情 8.分组与属性关联 9.发布商品 10.仓库服务 1.SPU和SKU概念 SPU:standard product unit(标准化产品单元):是商品信息聚合的…

链表OJ(一)

目录 从尾到头打印链表_牛客题霸_牛客网 160. 相交链表 141. 环形链表 142. 环形链表 II 138. 复制带随机指针的链表 从尾到头打印链表_牛客题霸_牛客网 输入一个链表的头节点,按链表从尾到头的顺序返回每个节点的值(用数组返回)。 如输入…

Three.js中的3D文字效果

对于一些设计网页中经常会出现一些3D的文字效果,本文将利用Three.js实现各种动画WebGL文本输入效果。 示例效果 原文章 文本采样 通常情况下,文本网格是2D的平面形状,我们所要实现的3D文本形状则是要在2D的平面下,再生成z值形成…

Oracle数据库启停命令

在日常工作中,关于数据库的启停:   先关闭上层应用服务 --> 关闭监听 --> 关闭数据库;   启动数据库 --> 启动监听 --> 启动应用(Oracle SQL Developer)。 监听lsnrctl Oracle监听命令。 lsnrctl start [listener-name]&a…

Xml格式化与高亮显示

具体请参考:Xml格式化与高亮显示

分布式系统的数据一致性方案

1、在出现一致性问题时如果系统的并发或不一致情况较少,可以先使用重试来解决 a、同步重试 b、异步重试 c、入库,定时任务重试 2、分布式事务 基于数据库 XA 协议的 2PC、3PC,基于业务层的TCC,基于消息队列消息表的最终一致性方案&#xff0…

七大设计原则之接口隔离原则应用

目录1 接口隔离原则介绍2 接口隔离原则应用1 接口隔离原则介绍 接口隔离原则(Interface Segregation Principle, ISP)是指用多个专门的接口,而不使用单一的总接口,客户端不应该依赖它不需要的接口。这个原则指导我们在设计接口时…

八、Git远程仓库操作——跨团队成员的协作

前言 前面一篇博文介绍了git团队成员之间的协作,现在在介绍下如果是跨团队成员的话,如何协作? 跨团队成员协作,其实就是你不属于那个项目的成员,你没有权限向那个仓库提交代码。但是github还有另一种 pull request&a…