【Mysql】 数据类型

news2024/11/25 23:46:41

请添加图片描述

文章目录

  • 【Mysql】 数据类型
      • 数据类型分类
      • 数值类型
        • 1. tinyint类型
        • 2. bit类型
        • 3. 小数类型
      • 字符串类型
        • 1.char
        • 2.varchar
        • 3. 日期和时间类型
        • 4. enum 和 set

【Mysql】 数据类型

mysql中数据类型的作用:

  • 约束操作者的行为
  • 更清晰的代码逻辑
  • 不同的功用 – 例如,年龄使用数字,生日,姓名等消息使用子符串

更为重要的是类型约束,即如果操作者不按数据类型进行数据插入时,该条sql数据会被直接拒绝

数据类型分类

数值类型


1. tinyint类型

tinyint类型使用演示

如下:

我们知道,有符号的tinyint的存储范围就是 -128 ~ 127,当我们想插入数据128时,是直接报错的,而不像c/c++ ,会发生截断;

说明:

  • 在MySQL中,整型可以指定是有符号的和无符号的,默认是有符号的。

  • 可以通过UNSIGNED来说明某个字段是无符号的

而如果想将tinyint 设置为无符号的,只需要在设置列字段时,在类型加上unsigned即可,变成无符号之后,tinyint的存储范围就变成了0 ~ 255;

id tinyint unsigned

2. bit类型

基本语法:

bit[(M)] : 位字段类型。M表示每个值的位数,范围从164。如果M被忽略,默认为1

而我们通过类型表中,是没有我们c++中的bool类型的,而实际上,bit(1)就可以表示mysql中的bool类型,即bit(1) 类型的变量的值不是0就是1;

但mysql中的bit类型神奇之处远不止如此

bit使用案例

我们先创建一个张表,然后插入几个数据

插入数据和查看表中显示:

神奇的事情,我们会发现使用bit()存储的变量是使用acill值的形式显示的,10就是我们的’ \n’


3. 小数类型

float 使用

float[(m, d)] [unsigned] : M指定显示长度,d指定小数位数,占用空间4个字节

例:

我们先创建一个工资表出来:

float(4,2) 即表示显示长度为4,小数位数为2为,数值范围 :-99.99 ~ 99.99

而后插入几条数据:

我们会发现mysql保存数据时,对于99.994,99.995这些超出数据范围的数据会先对其进行4舍5入,而后再判断是否合法;

说明:

  • float类型,mysql在保存值时会进行4舍5入
  • float类型使用unsigned时,并不会将tinyint类型一样数值类型会变大;
    • 例:float(4,2) 数值范围为: 0 ~ 99.99

decimal使用

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

说明:

  • decimal使用起来和float是没什么区别的,但dicimal的精度比float要高很多
  • 当小数位超过7位时,建议都使用decimal类型;

例:

我们会发现,当插入的数据大于8位小数时,使用float存储是不够精准的

说明:

  • decimal整数最大位数m为65。支持小数最大位数d是30。如果d被省略,默认为0.如果m被省略,默认是10。 即decimal默认情况下decimal(10,0)

字符串类型

1.char

语法:

char(L): 固定长度字符串,L是可以存储的长度,单位为字符,最大长度值可以为255

例子:

我们先创建一张表,类型为char(6)

接着我们插入几个数据进去:

我们印象当中utf8中,一个中文大概是3字节大小,而我们指定的大小不是为6吗

使用length函数(求字符串的字节数)查看一下字符串长度

也就是说,mysql中的一个字符,并不是我们c/c++的字符类型(char),mysql中的字符即可以是中文也可以是英文;所以我们char(6) ,表示的字符长度为6,而是字节大小为6;


2.varchar

语法:

varchar(L): 可变长度字符串,L表示字符长度,最大长度65535个字节
  • 注: 最大长度为65535个字节,以字节为单位;而char最大长度是以字符为单位的

而varchar实际使用上也是和char是一样的,但只是存储上细节不一样:

  • char() 是直接将指定长度的空间开辟出来

  • 而varchar()是使用多少数据空间就开多少空间

  • 例:char(6) ,varchar(6) ,插入数据 “中国”,char存储是使用的6个字符大小的空间(早就开好了),varchar存储是2个字符大小

  • 比喻:char就好像c语言中的静态数组,一开始数组大小就固定了,就开好了固定大小的空间,而varchar就像动态数组,用多少开多少;

例:

创建与上面相同的表结构

查看所插入的数据

3. 日期和时间类型

  • date :日期 ‘yyyy-mm-dd’ ,占用三字节

  • datetime 时间日期格式 ‘yyyy-mm-dd HH:ii:ss’ 表示范围从 1000 到 9999 ,占用八字节

  • timestamp时间戳,从1970年开始的 yyyy-mm-dd HH:ii:ss 格式和 datetime 完全一致,占用四字节

例子:

创建一个生日表:

插入数据:

insert into birthday(t1,t2) values('1997-7-1','2008-8-8 12:1:1');

如下:

我们会发现我们没有插入t3 ,而t3默认是以当前的时间戳更新的;

查看一下具体表结构

下面我们将表数据进行修改一下,再查看一下表:

我们会发现当我们对表数据进行更新时,t3也会更新为最新的修改时间,这实际上是timestamp类型在作怪

说明:

  • timestamp类型,插入数据时如果没有指定,数值就为当前的时间戳,更新数据时也没有指定的话,数值也会被更新为修改时的时间戳
  • 或许有些数据库的版本的timestamp类型,默认是没有上面这些行为,就像我的数据库版本,书写timestamp类型,需要自己添加字段 not null default current_timestamp on update current_timestamp; 详情可以看看这篇文章 timestamp

4. enum 和 set

enum类型使用

语法:

enum:枚举,“单选”类型;

enum('选项1','选项2','选项3',...);

例:

再往里面插入数据:

我们会发现,使用数字1也可以表示enum当中的第一个选项;

说明:

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

set类型使用

set:集合,“多选”类型;
set('选项值1','选项值2','选项值3', ...);

说明:

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

例:

有一个调查表votes,需要调查人的喜好, 比如(登山,游泳,篮球,武术)中去选择(可以多选),(男,女)[单选]

mysql> create table votes(
-> username varchar(30),
-> hobby set('登山','游泳','篮球','武术'), --注意:使用数字标识每个爱好的时候,想想Linux权限,采用比特位位置来个set中的爱好对应起来
-> gender enum('男','女')); --注意:使用数字标识的时候,就是正常的数组下标

如下:

接下来我们插入俩个数据:

insert into votes values('Juse','登山,篮球',2);
insert into votes values('小王',3,'男');

即实际上set中的数据也是数子存储存储的,3代表1,2俩个爱好的合成;

小结:

  • enum类型可以使用于单项选择,set使用于多项选择;

如下:

[外链图片转存中…(img-M01iTbhF-1684973250081)]

接下来我们插入俩个数据:

insert into votes values('Juse','登山,篮球',2);
insert into votes values('小王',3,'男');

[外链图片转存中…(img-jlr5afO4-1684973250081)]

即实际上set中的数据也是数子存储存储的,3代表1,2俩个爱好的合成;

小结:

  • enum类型可以使用于单项选择,set使用于多项选择;
  • 虽然说enum和set都可以直接使用数字对数据进行表示,但是我们插入和查询数据时不推荐使用数字表示,可读性低;

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

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

相关文章

【JavaSE】Java基础语法(八)

文章目录 🍓1. 类和对象🍹🍹1.1 类和对象的关系🍹🍹1.2 类的定义 🍓2. 对象内存图🍹🍹2.1 单个对象内存图🍹🍹2.2 多个对象内存图2.3 多个对象指向相同内存图…

统计学_贾俊平——思考题第9章 分类数据分析

1.简述列联表的构造与列联表的分布。 答:列联表是将两个以上的变量进行交叉分类的频数分布表。 列联表的分布可以从两个方面看,一个是观察值的分布,又称为条件分布,每个具体的观察值就是条件频数;一个是期望…

【数据结构】树的认识

一个人的未来不是预测出来的,而是创造出来的。 -- 亚当詹姆斯目录 🍁前言: 🍀一.什么是树? 🍑二.树有什么用? ❤️1. 数据库 🧡2. 文件系统 &#x1…

chatgpt赋能python:PythonUSB摄像头-拍摄更美好的瞬间

Python USB摄像头 - 拍摄更美好的瞬间 在过去的几年中,摄影已经迅速成为了一种爆炸性的趋势。人们希望能够记录下人生中的美好瞬间,分享给全球的亲朋好友。而USB摄像头的普及与发展使得照片拍摄变得更加便利。而在这其中,Python也扮演了一个…

spingboot+jsp仓储型物流企业车辆运输管理系统

随着时代的进步,物流车辆运输行业也逐渐变得庞大起来。当然,物流车辆运输公司要想做大做强,就有必要有自己完整的一套物流车辆运输管理系统。这必将为物流管理公司提供规范化的管理模式,在各个部门之间有效的协调、合作过程中必将为物流车辆公司提供大量的客户生源,争取赢得最大…

6.4_7关键路径

上一节我们学的叫做AOV网(activity on vertex) 这一节我们是(activity on edge network) 顶点表示事件是一瞬间发生的事情。边上的权值表示完成该活动的开销。 AOE网中,有些事情是可以并行的。 前后活动之间存在依赖关系,我i们要知…

python绘制密度图

本期目录 1、绘图参数2、使用 matplotlib 库绘制密度图时常用的参数3、案例4、 运行结果python绘图往期系列文章目录 1、绘图参数 可以使用多种库来绘制密度图,其中最常用的是 seaborn 和 matplotlib。以下是使用 seaborn 库绘制密度图时常用的参数: i…

简历上,我写精通 JUC 的底气

真的假的,你简历上敢写精通 JUC ? 是真学到精通了,还是说只学到了个皮毛就写精通,从而争取一个面试机会。 我相信,当很多人看到文章标题的第一反应也会如上面的一样,质疑、好奇。这很正常,如果…

手把手教你用Python调用彩云机器翻译API

一、引言 彩云这个小而美的机器翻译一直很低调,它让人眼前一亮的是之前我们分享的网页翻译插件,可以把外文网站翻译成英中对照的样式,便于我们学习。之前我们也写过文章介绍过: PythonFan:如何用Google翻译英文网页成…

c++学习——类和对象

类和对象的基本概念 类是自定义数据类型&#xff0c;是C语言的结构体进化而成的 对象是类实例化出的&#xff0c;用数据类型定义一个变量 #define _CRT_SECURE_NO_WARNINGS #include <iostream> using namespace std;class Maker //这个是类 { public:int a;//成员属性…

PostgreSQL EDB 公司推出新服务,ORACLE 平移到 POSTGRESQL 一体化服务

开头还是介绍一下群&#xff0c;如果感兴趣polardb ,mongodb ,mysql ,postgresql ,redis 等有问题&#xff0c;有需求都可以加群群内有各大数据库行业大咖&#xff0c;CTO&#xff0c;可以解决你的问题。加群请联系 liuaustin3 &#xff0c;在新加的朋友会分到2群&#xff08;共…

创建本地LocalHost-SSL证书

mkcert 使用方法 mkcert 是一个开源工具&#xff0c;用于快速生成有效的本地开发证书。它可以帮助开发人员在本地环境中使用 HTTPS 加密来模拟真实的生产环境。 安装 首先&#xff0c;你需要安装 mkcert 工具。以下是在常见操作系统上安装的命令&#xff1a; macOS 使用 Homebr…

集简云数据表无需代码连接抖音的方法

使用场景 抖音作为自媒体时代的主流平台&#xff0c;越来越多的企业选择通过短视频来推广自己的产品或者吸引更多粉丝。那么随时关注抖音视频下的评论&#xff0c;了解用户的想法和需求&#xff0c;并针对不同的评论提供更好的回应是每一位运营的重点工作之一&#xff0c;但是运…

利用 PRIMO 重构 M87 黑洞图像,普林斯顿高等研究院成功将「甜甜圈」变身「金戒指」...

By 超神经 内容一览&#xff1a;2019 年&#xff0c;「事件视界望远镜 (Event Horizon Telescope&#xff0c;简称 EHT)」全球研究团队发布了人类历史上第一张黑洞照片&#xff0c;受限于当时的观测条件&#xff0c;这张黑洞图像只呈现出一个模糊不清的轮廓。近日&#xff0c;天…

研发工程师玩转Kubernetes——自动扩缩容

在《研发工程师玩转Kubernetes——使用Deployment进行多副本维护》一文中&#xff0c;我们通过Deployment实现了多副本维护——即维持在一个确定数量的副本个数。而在现实场景中&#xff0c;我们往往需要根据服务的压力&#xff0c;采用水平&#xff08;横向&#xff09;扩容的…

分享给你这几款冷门好用的工具

分享一&#xff1a;Hi HiSlide Hi HiSlide是一个在线演示文稿制作工具&#xff0c;它可以帮助用户轻松地创建出色的演示文稿。以下是该网站的一些功能和特点&#xff1a; 多种模板选择**&#xff1a;Hi HiSlide提供了多种演示文稿模板&#xff0c;适合不同行业和场合的演示需…

chatgpt赋能python:Python%.6f:一门强大且易于学习的编程语言

Python%.6f&#xff1a;一门强大且易于学习的编程语言 Python是一门免费开源的高级编程语言&#xff0c;用于快速开发脚本、Web应用、科学计算、数据分析、人工智能等应用程序。Python的灵活性、易学性、可读性和强大的第三方库使其成为全球最受欢迎的编程语言之一。 Python的…

面对当下各种不确定性,如何面对,每天很忙碌,不慌

&#xff08;点击即可收听&#xff09; 疫情时期,都难,疫情之后,发现还更难 随着互联网的热度的下降,各大小公司纷纷勒紧裤腰带,受打击最大的无疑是底层打工人 每天一打开手机,会发现,一些大厂裁员信息霸榜头条,年龄也是一道坎 刚刚看到一个大v发的&#xff1a; 一个原先是跨国…

Go编程快闪之logrus日志库

成文耗时1小时&#xff0c;阅读3min&#xff0c;有用指数4颗星。 golang中常见的日志包是logrus&#xff0c; 根据logrus的胚子和我们的生产要求&#xff0c;给出一个生产可用的logrus实践姿势。 主谓宾定状补 logrus是一个结构化的、可插拔的、兼容golang标准log api的日志库。…

ARD2F智能电动机保护器在合盛硅业股份有限公司的应用

摘要&#xff1a;介绍安科瑞ARD2F智能电动机保护器在合盛硅业股份有限公司项目的应用。用于新疆西部合盛硅业20万吨密封胶项目及新疆合盛硅业新材料有限公司二期年产20万吨硅氧烷及下游深加工项目中电动机回路的参数测量、故障保护、起停控制以及后台通讯&#xff0c;为项目的安…