【MySQL】详解MySQL数据类型

news2024/11/29 8:40:11

一、数据类型

各类型的数值范围:

         在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);

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

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

相关文章

分布式链路追踪-01初步认识SkyWalking

一 SkyWaling是什么? Skywalking是分布式系统的应用程序性能监视工具,专为微服务、云原生架构和基于容器(Docker、K8s、Mesos)架构而设计。SkyWalking 是观察性分析平台和应用性能管理系统,提供分布式追踪、服务网格遥…

信发软件之电脑版拖动——未来之窗行业应用跨平台架构

一、电脑版拖动 二、电脑版随意移动函数 var _movefalse;//移动标记 var _x,_y;//鼠标离控件左上角的相对位置 $("#"宿主id).click(function(){ }).mousedown(function(e){ _movetrue; _xe.pageX-parseInt($("#"宿主id).css("left")); _ye…

Spring Boot论坛网站:安全特性与性能优化

4系统概要设计 4.1概述 本系统采用B/S结构(Browser/Server,浏览器/服务器结构)和基于Web服务两种模式,是一个适用于Internet环境下的模型结构。只要用户能连上Internet,便可以在任何时间、任何地点使用。系统工作原理图如图4-1所示: 图4-1系统工作原理…

计算机网络(十二) —— 高级IO

#1024程序员节 | 征文# 目录 一,预备 1.1 重新理解IO 1.2 五种IO模型 1.3 非阻塞IO 二,select 2.1 关于select 2.2 select接口参数解释 2.3 timeval结构体和fd_set类型 2.4 socket就绪条件 2.5 select基本工作流程 2.6 简单select的服务器代…

论文解读 | ECCV2024 AutoEval-Video:一个用于评估大型视觉-语言模型在开放式视频问答中的自动基准测试...

点击蓝字 关注我们 AI TIME欢迎每一位AI爱好者的加入! 点击 阅读原文 观看作者讲解回放! 作者简介 陈修元,上海交通大学清源研究院硕士生 概述 总结来说,我们提出了一个新颖且具有挑战性的基准测试AutoEvalVideo,用于全…

蓝牙资讯|iOS 18.1 正式版下周推送,AirPods Pro 2耳机将带来助听器功能

苹果公司宣布将在下周发布 iOS 18.1 正式版,同时确认该更新将为 AirPods Pro 2 耳机带来新增“临床级”助听器功能。在启用功能后,用户首先需要使用 AirPods 和 iPhone 进行简短的听力测试,如果检测到听力损失,系统将创建一项“个…

5G RedCap工业路由器赋能电力物联网应用

随着5G轻量化技术应用的推进,5G RedCap旨在提供低功耗、低成本、广覆盖等功能特点赋能电力智能化升级。特别适用于工业物联网、低空经济、车联网、消费电子和轻量级5G的需求。 5G RedCap工业路由器的特点 低功耗:5G RedCap工业路由器通过节能技术&#…

win10下用vscode和pycharm运行odoo18的速度对比

我很少用win平台开发odoo,主要原因就是速度太慢,效率太低,这次odoo18发布,我做odoo18的基础培训教程的时候,发现odoo运行速度相比以前有大大改观,虽然还是不如ubuntu,但是确实提高很多了环境&am…

如何搭建一部引人入胜的短剧小程序

在移动互联网时代,短剧小程序以其轻便、快捷的特点迅速成为人们消遣娱乐的新宠。无论是在通勤途中、休息时间还是等待间隙,用户都能通过手机轻松观看精彩短剧,享受碎片化时间的娱乐盛宴。如果你是一位对内容创作充满热情的创作者,…

网络安全领域推荐证书介绍及备考指南

在网络安全领域,拥有专业认证不仅可以证明个人的专业能力,还能帮助在实际工作中应用先进的技术和知识。以下是几种热门的网络安全证书介绍及备考指南。 1. OSCP (Offensive Security Certified Professional) 证书简介 OSCP是针对渗透测试领域的入门级…

GRU神经网络理解

全文参考以下B站视频及《神经网络与深度学习》邱锡鹏,侧重对GPU模型的理解,初学者入门自用记录,有问题请指正【重温经典】GRU循环神经网络 —— LSTM的轻量级版本,大白话讲解_哔哩哔哩_bilibili 更新门、重置门、学习与输出 注&a…

Django 项目的创建

1.安装Django pip install django 2.创建项目 在想要创建的项目我文件位置同时按住Shift右键打开Powershell窗口。 输入命令 django-admin startproject myproject 这里 myproject 是你的项目名称,你可以根据需要替换为其他名称。。 3. 理解项目结构 创建项目…

Netty简单应用

1.服务端构建 接收客户端请求,打印请求消息;消息采用内置String作为编码与解码器;开启信息输入监听线程,发送消息至客户端; 1.1 服务端消息处理类 import io.netty.channel.Channel; import io.netty.channel.Chann…

一款好用的搜索软件——everthing(搜索比文件资源管理器快)

everthing官网链接 在官网选择下载 1.下载后双击打开 2.点击OK(需要其他语言自己选择) 3.选择安装位置(路径最好别带中文和空格) 继续点击下一步 4. 点击下一步 5.继续点击安装 6.然后就完成了 7.点击打开然后就可以搜索了

零代码快速开发智能体 |甘肃旅游通

在互联网信息爆炸的时代,寻找一处让人心动的旅游胜地往往需要花费大量的时间和精力。而今天,我要向大家介绍一款能够帮助你轻松规划甘肃之行的智能体——“甘肃旅游通”。这款智能体通过低代码开发,集合了丰富的旅游信息和个性化推荐功能&…

Viky图片压缩 v3.1 超简单,一键压缩,高压缩率,肉眼无损

下载:https://pan.quark.cn/s/166406040a7b 软件介绍: 使用方法 拖入即压缩 功能 智能压缩,高压缩率,肉眼无损 支持WebP、JPG、JPEG、PNG格式 多线程处理,提升批量压缩速度 带进度显示,以及压缩前后对比 …

QT枚举类型转字符串和使用QDebug<<重载输出私有枚举类型

一 将QT自带的枚举类型转换为QString 需要的头文件&#xff1a; #include <QMetaObject> #include <QMetaEnum> 测试代码 const QMetaObject *metaObject &QImage::staticMetaObject;QMetaEnum metaEnum metaObject->enumerator(metaObject->indexOf…

pikachu靶场CSRF-post测试报告

目录 一、测试环境 1、系统环境 2、使用工具/软件 二、测试目的 三、操作过程 1、抓包使用burp生成csrf脚本 四、源代码分析 五、结论 一、测试环境 1、系统环境 渗透机&#xff1a;本机(127.0.0.1) 靶 机&#xff1a;本机(127.0.0.1) 2、使用工具/软件 Burp sui…

基于Session的认证方式

基于Session的认证方式 认证流程创建工程创建maven工程Spring 容器配置servletContext配置加载 Spring容器 实现认证功能认证页面认证接口 实现会话功能实现授权功能小结 认证流程 基于Session认证方式的流程是&#xff0c;用户认证成功后&#xff0c;在服务端生成用户相关的数…

详解Oracle审计(一)

题记&#xff1a; 有段时间没写过oracle了&#xff0c;今天回归。 本文将详细介绍oracle的审计功能&#xff0c;基于11g版本&#xff0c;但对12c&#xff0c;19c也同样适用。 审计&#xff08;Audit&#xff09;用于监视用户所执行的数据库操作&#xff0c;并且 Oracle 会将审…