【MySQL】详解MySQL数据类型

一、数据类型

各类型的数值范围:

         在MySQL中,整型可以指定是有符号的和无符号的,默认是有符号的。 可以通过UNSIGNED来说明某个字段是无符号的。对于int类型可能存放不下的数据,尽量不使用unsigned,unsigned int 同样可能存放不下,与其如此,还不如设计时,将int类型提升为bigint类型。

1.1、bit类型

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

bit字段在显示时,是按照ASCII码对应的值显示

mysql> insert into tt4 values ( 65 , 65 );
mysql> select * from tt4;
+------+------+
| id     | a      |        
+------+------+
| 10    |        |
| 65     | A     | 
+------+------+

        如果我们有这样的值,只存放01,这时可以定义bit(1)。这样可以节省空间。比如说我们要区分男女的时候。 

1.2、float

float[(m, d)] [unsigned] : M指定显示长度,d指定小数位数,占用空间4个字节。
insert into tt6 values(101, -99.991); #多的这一点被拿掉了

        float(4,2)表示的范围是-99.99 ~ 99.99MySQL在保存值时会进行四舍五入 如果定义的是float(4,2) unsigned, 这时因为把它指定为无符号的数,范围是 0 ~ 99.99。如果我们插入的是-99.991,那么实际上数据库中插入的是-99.99,如果我们插入的是99.996,那么数据库会不让我们插入,因为99.996被当成了100,超过了数值范围。

1.3、decimal

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

create table tt8 ( id int, salary float(10,8), salary2 decimal(10,8));
insert into tt8 values(100,23.12345612, 23.12345612);

        decimal(5,2) 表示的范围是 -999.99 ~ 999.99。decimal(5,2) unsigned 表示的范围 0 ~ 999.99。decimal和float很像,但是有区别。float和decimal表示的精度不一样。float表示的精度大约是7位,decimal整数最大位数m65。支持小数最大位数d30。如果d被省略,默认为0.如果m被省略,默认是10。如果希望小数的精度高,推荐使用decimal

1.4、char

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

        char(2) 表示可以存放两个字符,可以是字母或汉字,但是不能超过2个。在MySQL中,字符就真的是字符,字母或汉字都认为是字符

 1.5、varchar

varchar(L): 可变长度字符串,L表示字符长度,最大长度65535个字节。

        varchar长度可以指定为 065535之间的值,但是 有1 - 3 个字节用于记录数据大小,所以说有效字节数最多是65532 当我们的表的编码是utf8时,varchar(n)的参数n最大值是65532/3=21844[因为utf中,一个字符占用3个字,如果编码是gbkvarchar(n)的参数n最大是65532/2=32766(因为gbk中,一个字符占用2字节)。
        char和varchar类型的区别是char是你指定了多少字符就给你直接开辟多长字符的空间,而varchar是你指定了最多可以开辟多少个字节,但是实际开辟的空间根据实际情况而定,用多少,开辟多少定长的磁盘空间比较浪费,但是效率高。变长的磁盘空间比较节省,但是效率低。

1.6、日期和时间类型

  • date :日期 'yyyy-mm-dd' ,占用三字节。
  • datetime 时间日期格式 'yyyy-mm-dd HH:ii:ss' 表示范围从 1000 9999 ,占用八字节。
  • timestamp :时间戳,从1970年开始的 yyyy-mm-dd HH:ii:ss 格式和 datetime 完全一致,占用四字节。
create table birthday (t1 date, t2 datetime, t3 timestamp);
insert into birthday(t1,t2) values('1997-7-1','2008-8-8 12:1:1');
//添加数据时,时间戳自动补上当前时间。

 1.7、enumset

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

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

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

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

插入数据:

insert into votes values('雷锋', '登山,武术', '男');
insert into votes values('Juse','登山,武术',2);

 若想查找所有喜欢登山的人,可以采用集合查询,使用find_ in_ set函数。

find_in_set(sub,str_list) :如果 sub str_list 中,则返回下标;如果不在,返回0str_list 用逗号分隔的字符串。

 查询爱好登山的人:

select * from votes where find_in_set('登山', hobby);

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

国家信息安全水平考试(NISP一级)最新题库-第十六章

目录 另外免费为大家准备了刷题小程序和docx文档,有需要的可以私信获取 1 防火墙是一种较早使用、实用性很强的网络安全防御技术,以下关于防火墙说法错误的是() A.防火墙阻挡对网络的非法访问和不安全数据的传递;B.防…

强对流降水临近预报

强对流降水是一种最常见的灾害性天气,其突发性和局地性强、生命史短、灾害重等特点极易给人民生产和生活带来巨大的破坏和伤害。如果可以提前预知此类天气状态,则可以挽回巨大的生命财产损失,尤其是短时(0~12小时)和临…

基础篇:带你打开Vue的大门(二)

目录 学习目标: 核心技能目标 学习内容: 学习产出: 学习目标: 能够创建Vue实例并理解其基本选项。 理解el、data、methods等选项的作用。 掌握数据绑定: 理解单向数据绑定和双向数据绑定的区别。能够使用v-bind和…

MySQL进阶之(十二)MySQL事务日志-undo log

十二、MySQL事务日志-undo log 12.1 undo log 引入12.2 undo log 的作用01、回滚数据02、MVCC 12.3 undo log 的存储结构01、回滚段与 undo 页02、回滚段与事务03、回滚段中的数据分类 12.4 undo log 的类型12.5 undo log 的生命周期01、执行 insert 操作02、执行 update 操作0…

Kubernetes部署练习

Kubernetes详细笔记 文章目录 Kubernetes 一、Kubernetes介绍 1.1、应用部署方式演变1.2、kubernetes简介1.3、kubernetes组件1.4、kubernetes概念 二、集群环境搭建 2.1、环境规划 2.1.1、集群类型2.1.2、安装方式2.1.3、主机规划 2.2、环境搭建 2.2.1、主机安装2.2.2、环境初…

如何开启华为交换机 http

系列文章目录 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 例如:第一章 Python 机器学习入门之pandas的使用 提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目…

【计算机网络 - 基础问题】每日 3 题(四十七)

✍个人博客:https://blog.csdn.net/Newin2020?typeblog 📣专栏地址:http://t.csdnimg.cn/fYaBd 📚专栏简介:在这个专栏中,我将会分享 C 面试中常见的面试题给大家~ ❤️如果有收获的话,欢迎点赞…

极速体验:实用的前端性能优化技巧

本文将深入探讨一系列实用的前端性能优化方案,从基础知识到高级技巧,我们将揭示如何让你的网站在瞬息万变的互联网中脱颖而出,无论你是经验丰富的开发者还是刚入行的新手,这篇文章都将为你提供宝贵的见解和实践建议。 目录 &…

python解决解析汉诺塔问题

👨‍💻个人主页:开发者-曼亿点 👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍💻 本文由 曼亿点 原创 👨‍💻 收录于专栏&#xff1a…

如何选择适合自己的IP地址切换器

在互联网活动中,IP地址切换器成为越来越多用户的必备工具。本文旨在帮助用户了解如何选择适合自己的IP地址切换器,以确保网络活动的顺利进行。 ​一、IP地址切换器的基本功能与优势 IP地址切换器,又称IP代理软件或IP更换器,是一种…

计算机通信与网络实验笔记

1.LINUX通过版本号判断是否为稳定版本 2.计网基础 (CD),默认二层以太网交换机。 (10)物理层是均分(除以),数据链路层及以上是不除的。 3.传输介质: (1&…

IDEA 中的代码调试指南

目录 前言1. 为什么进行代码调试1.1 找出错误1.2 优化代码1.3 提高对代码的理解 2. 如何在 IDEA 中进行代码调试2.1 设置断点2.1.1 普通断点2.1.2 条件断点 2.2 开始调试2.3 调试控制2.3.1 单步调试(Step Over)2.3.2 进入方法(Step Into&…

打印自然常数E

自然常数E 自然常数,符号e,为数学中一个常数,是一个无限不循环小数,且为超越数,其值约为2.718281828459045。它是自然对数函数的底数。 我们打印表达式(11/x)的x次方的值以及获取第一次大于2.718的正整数 新建C#控制…

今日指数项目集成SpringSecurity

项目集成SpringSecurity ​ 在第一章我们是基于SpringSecurity、JWT技术实现前后端无状态化认证授权,而我们当前的项目是前后端分离的架构,同样也可借助Security框架和Jwt实现前后端的无状态认证授权操作; 1、项目自定义认证过滤器 1.1 依…

DFF对比

第一种 单元1:电平触发触发器: 在CLK高电平时,输入D的变化才可以传递到输出Q;在CLK点评时,输出Q不变。 第一种的整体 将两个电平触发组合,得到单边沿触发 输出Q仅在CLK上升沿处发生变化。边沿触发 第二…

MySQL-27.多表查询-案例

一.数据准备 -- 分类表 create table category (id int unsigned primary key auto_increment comment 主键ID,name varchar(20) not null unique comment 分类名称,type tinyint unsigned not null comment 类型 1 菜品分类 2 套餐分类,sort …

Quartus Ⅱ仿真 1.半加器

真服了,csdn上一搜全是收费,服啦服啦,我就自己来写一个吧 仿真波形: 输出结果: 介绍: 半加器(Half Adder)是数字电路中的一种基本组件,用于实现两个一位二进制数的加…

AI 代写是变现最快的副业项目,没有之一

AI 时代可以做的副业项目很多,但是实事求是的讲,大部分副业变现周期都有点长,短则几个月,长则半年到一年。所以很多副业社群都强调要坚持,当一项副业你能坚持一个月,基本就熬走了 90% 的人。但是坚持这件事…

ubuntu 安装haproxy

####安装##### sudo apt update sudo apt install haproxy sudo haproxy -v sudo systemctl status haproxy sudo cp /etc/haproxy/haproxy.cfg /etc/haproxy/haproxy.cfg-org####配置站点##### nano /etc/haproxy/haproxy.cfgfrontend www-httpbind *:5001mode httpdefault_ba…

复旦大学全球供应链研究中心揭牌,合合信息共话大数据赋能

10月13日,复旦大学全球供应链研究中心(以下简称“中心”)揭牌仪式在复旦大学管理学院政立院区隆重举行。我国的供应链体系庞大复杂,在百年未有之大变局下,保障产业链供应链安全已成为我国的重要战略目标。中心的设立旨…