【MySQL】数据类型(一)

news2024/12/24 1:21:11

文章目录

  • 前言
  • 一. tinyint等整型
  • 二. bit位字段类型
  • 三. float浮点型
  • 四. decimal浮点型
  • 结束语

前言

MySQL也有数据类型,其中一些与C/C++/Java是一样的,但也有一些数据类型不同,更有新的独有的数据类型

在这里插入图片描述

一. tinyint等整型

MySQL将整型按照字节分成若干种
其中,每个类型的最大最小值因有无符号也有不同

在这里插入图片描述

无符号:create table t1(num tinyint unsigned);
有符号:create table t1(num tinyint);
不携带unsigned默认为有符号

插入数据时,如果超出该类型所能表示的最大最小值,MySQL会直接报错拦截

比如,我们建立一个只含一个tinyint类型的表
如果插入128和-129就会出现如下报错
在这里插入图片描述


在C/C++中,我们可以对char类型的变量赋值超过其表示范围的数据。编译器会进行截断。但这样就无法保证数据的正确性了。
所以在MySQL中,如果插入数据超出表示范围,那么就直接拦截,这样保证数据的合法性和正确性。这也是MySQL约束的一种表现

二. bit位字段类型

bit就是比特位的意思

bie(M) 位字段类型
M表示每个值的位数,范围从1到64,如果M被忽略,默认为1

如果创建表时,使用了比如65,超过bit范围的大小,会出现如下报错

mysql> create table bit_test(
    -> id int,
    -> online bit(65)
    -> );
ERROR 1439 (42000): Display width out of range for column 'online' (max = 64)

创建如下表

mysql> create table bit_test( 
    -> id int,
    -> online bit(10)
    -> );
Query OK, 0 rows affected (0.02 sec)

插入若干数据

mysql> insert into bit_test values (123,2);
Query OK, 1 row affected (0.00 sec)

mysql> insert into bit_test values (123,3);
Query OK, 1 row affected (0.00 sec)

但是显示时,无法显示online

mysql> select * from bit_test;
+------+--------+
| id   | online |
+------+--------+
|  123 |       |
|  123 |       |
+------+--------+
2 rows in set (0.00 sec)

这是因为bit的显示是按照ASCII码表显示的,如果我们分别插入’a’和97,最后显示的结果都是字符’a’

mysql> insert into bit_test values (123,'a');
Query OK, 1 row affected (0.00 sec)

mysql> insert into bit_test values (123,97);
Query OK, 1 row affected (0.01 sec)

mysql> select * from bit_test;
+------+--------+
| id   | online |
+------+--------+
|  123 |       |
|  123 |       |
|  123 |  a     |
|  123 |  a     |
+------+--------+
4 rows in set (0.00 sec)

我们可以在显示时将位字段转换成十六进制

mysql> select id,hex(online) from bit_test;
+------+-------------+
| id   | hex(online) |
+------+-------------+
|  123 | 2           |
|  123 | 3           |
|  123 | 61          |
|  123 | 61          |
+------+-------------+
4 rows in set (0.00 sec)

三. float浮点型

float (m,d) [unsigned]
m指定显示长度,d指定小数位数
占用空间位4字节
double与float类似,但是占用空间为8字节

float(4,2)表示数值最长为4个数字,小数点后必须两位
表示范围为-99.99~99.99
如果插入超过表示范围的数据,MySQL同样会进行拦截报错

mysql> create table float_test(
    -> id int,
    -> salary float(4,2)
    -> );

mysql> insert into float_test values (1,99.999);
ERROR 1264 (22003): Out of range value for column 'salary' at row 1

mysql> insert into float_test values (1,100.0);
ERROR 1264 (22003): Out of range value for column 'salary' at row 1

float类型,在插入时会进行四舍五入
比如:

mysql> insert into float_test values (1,23.456);
Query OK, 1 row affected (0.00 sec)

mysql> insert into float_test values (2,55.632);
Query OK, 1 row affected (0.00 sec)

mysql> select * from float_test;
+------+--------+
| id   | salary |
+------+--------+
|    1 |  23.46 |
|    2 |  55.63 |
+------+--------+
2 rows in set (0.00 sec)

插入23.456会五入为23.46;插入55.632会四舍为55.63
同时在插入数据时,也要避免四舍五入的影响,比如99.995,在五入后同样会超出范围


float的无符号不会像int整型那样有更大的范围,比如float(4,2) unsigned表示的范围为0.00~99.99
float因为其特殊的存储方式,在存储较大数值的数据时,容易出现误差

mysql> insert into float_test2 values (1,236523627345.2323523);
Query OK, 1 row affected (0.00 sec)

mysql> select * from float_test2;
+------+-----------------+
| id   | salary          |
+------+-----------------+
|    1 | 236523634688.00 |
+------+-----------------+
1 row in set (0.00 sec)

四. decimal浮点型

decimal(m,d) [unsigned]
m指定长度,d指定小数点后位数

decimal和float很相似
decimal(4,2)表示范围同样是-99.99~99.99
decimal(4,2) unsigned 可表示0~99.99

但float和decimal表示的精度不同

mysql> create table decimal_test(
    -> salary1 float(10,8),
    -> salary2 decimal(10,8)
    -> );

mysql> insert into decimal_test values (23.12345612,23.12345612);
Query OK, 1 row affected (0.00 sec)

mysql> select *from decimal_test;
+-------------+-------------+
| salary1     | salary2     |
+-------------+-------------+
| 23.12345695 | 23.12345612 |
+-------------+-------------+
1 row in set (0.01 sec)

float表示的精度大致为7位


decimal在存储较大数据时,也更为的精准

mysql> create table decimal_test2(
    -> salary1 float,
    -> salary decimal
    -> );
Query OK, 0 rows affected (0.02 sec)

mysql> insert into decimal_test2 values (123456789.12345,123456789.12345);
Query OK, 1 row affected, 1 warning (0.00 sec)

mysql> select * from decimal_test2;
+-----------+-----------+
| salary1   | salary    |
+-----------+-----------+
| 123457000 | 123456789 |
+-----------+-----------+
1 row in set (0.00 sec)

decimal整数最大位数m为65,。支持小数最大位数d是30.如果d被省略,默认为0,如果m被省略了,默认为10
如果希望小数的精度高,或者数值较大,推荐使用decimal

结束语

感谢你的阅读

如果觉得本篇文章对你有所帮助的话,不妨点个赞支持一下博主,拜托啦,这对我真的很重要。
在这里插入图片描述

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

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

相关文章

leetcode 33. 搜索旋转排序数组

2023.9.26 本题暴力法可以直接A,但是题目要求用log n的解法。 可以想到二分法,但是一般二分法适用于有序数组的,这里的数组只是部分有序,还能用二分法吗? 答案是可以的。因为数组是经过有序数组旋转得来的,…

Ae 效果:CC Split、CC Split 2

扭曲/CC Split Distort/CC Split CC Split (CC 分割)主要用于将图像在指定的两点之间进行分割,可以创造出独特的图像分割效果。 ◆ ◆ ◆ CC Split 效果属性说明 Point A 点 A 用于设置分割线的起始点位置。 可手动在查看器面板上拖动来改变…

Linux 线程同步(重要) 互斥量

/*三个窗口卖一百张票 */#include<stdio.h> #include<unistd.h> #include<pthread.h> #include<string.h> int tickets 0; void * sellticket(void * arg) {//卖票usleep(7000);while(tickets < 100) {printf("%ld 正在卖第 %d 张票\n",…

linux使用操作[3]

文章目录 版权声明环境变量$符号自行设置环境变量 上传、下载rz、sz命令 压缩、解压tar命令压缩tar解压zip 命令压缩文件unzip 命令解压文件 版权声明 本博客的内容基于我个人学习黑马程序员课程的学习笔记整理而成。我特此声明&#xff0c;所有版权属于黑马程序员或相关权利人…

什么是物联网智慧公厕?

在当今科技快速发展的背景下&#xff0c;具备全感知、可靠传输、智能处理三大特点的物联网技术&#xff0c;正逐渐渗透到各个领域。而智慧公厕作为其中的一个创新应用&#xff0c;正逐渐受到市场的关注和重视。 什么是物联网智慧公厕&#xff1f;物联网智慧公厕是指通过物联网…

图像采集卡在应用程序的重要性概述

达到最大吞吐量是工业和工厂自动化的关键标准之一。提高传感器分辨率和帧速率有助于实现目标&#xff0c;但会限制带宽&#xff0c;并带来新的传输问题。图像采集卡是将相机连接到PC的最方便、最可靠的方式&#xff0c;在工业环境中使用图像采集卡为高速应用带来了特定的好处&a…

MySQL 内部组件结构以及SQL执行逻辑

目录 一、MySQL的的内部组件结构二、连接器三、查询缓存四、分析器五、优化器六、执行器 一、MySQL的的内部组件结构 Server层 主要包括连接器、查询缓存、分析器、优化器、执行器等&#xff0c;涵盖 MySQL 的大多数核心服务功能&#xff0c;以及所有的内置函数 &#xff08;如…

接口自动化测试思路和实战(4):数据驱动测试框架

目录 数据驱动测试框架 步骤1、在项目根目录下新建conf文件夹&#xff0c;在下面新建config.ini文件 步骤2、在common的py文件夹下新建ini_file_utils.py文件 步骤3&#xff0c;重写local_config.py文件&#xff0c;封装读取ini文件中的值 步骤4、修改common_function.py文…

基于微信小程序的火锅店点餐订餐系统设计与实现(源码+lw+部署文档+讲解等)

文章目录 前言系统主要功能&#xff1a;具体实现截图论文参考详细视频演示为什么选择我自己的网站自己的小程序&#xff08;小蔡coding&#xff09;有保障的售后福利 代码参考源码获取 前言 &#x1f497;博主介绍&#xff1a;✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计…

MySQL基础篇-约束

目录 1.约束概述 2.分类 3.测试user表的约束情况 主键约束 非空约束及唯一约束 检查约束 默认约束 4.外键约束 外键约束的语法 外键约束的删除/更新行为 小结 1.约束概述 MySQL约束&#xff08;Constraints&#xff09;是用于确保表中数据完整性和一致性的规则。它们定…

“童”趣迎国庆 安全“童”行-柿铺梁坡社区开展迎国庆活动

“金秋十月好心境&#xff0c;举国欢腾迎国庆。”国庆节来临之际&#xff0c;为进一步加强梁坡社区未成年人爱国主义教育&#xff0c;丰富文化生活&#xff0c;营造热烈喜庆、文明和谐的节日氛围。9月24日上午&#xff0c;樊城区柿铺街道梁坡社区新时代文明实践站联合襄阳市和时…

借助 ControlNet 生成艺术二维码 – 基于 Stable Diffusion 的 AI 绘画方案

背景介绍 在过去的数月中&#xff0c;亚马逊云科技已经推出了多篇博文&#xff0c;来介绍如何在亚马逊云科技上部署 Stable Diffusion&#xff0c;或是如何结合 Amazon SageMaker 与 Stable Diffusion 进行模型训练和推理任务。 为了帮助客户快速、安全地在亚马逊云科技上构建、…

抽象轻松java

嗨嗨嗨&#xff01; 没想到吧&#xff0c;出现了抽象轻松第4种语言系列&#xff08;我也没想到&#xff09; 简单的java程序&#xff0c;看完就懂的简单逻辑——购物车系统 购物车&#xff0c;首先要有商品吧&#xff0c;现实中的商品有什么属性&#xff1f; 名字&#xff0…

JavaSE 基础(十三)网络编程

1. 概述 计算机网络是指将地理位置不同的具有独立功能的多台计算机及其外部设备&#xff0c;通过通信线路连接起来&#xff0c;在网络操作系统&#xff0c;网络管理软件及网络通信协议的管理和协调下&#xff0c;实现资源共享和信息传递的计算机系统。 网络编程主要工作是在发…

基于ModebusRTU通信采集温度湿度项目案例

目录 一、模拟温湿度模拟 【1.1】温湿度仪表参数 【1.1】使用电脑模拟传感器 【1.2】使用Codesys软件模拟传感器 二、自定义控件UI设计 【2.1】自定义控件温度湿度柱状设计 ​编辑 【2.1.1】设置温度湿度柱状实际显示【属性】 【2.1.2】设置温度湿度柱状的背景颜色【属…

工具篇 | Gradle入门与使用指南 - 附Github仓库地址

介绍 1.1 什么是Gradle&#xff1f; Gradle是一个开源构建自动化工具&#xff0c;专为大型项目设计。它基于DSL&#xff08;领域特定语言&#xff09;编写&#xff0c;该语言是用Groovy编写的&#xff0c;使得构建脚本更加简洁和强大。Gradle不仅可以构建Java应用程序&#x…

用AI解决量子学问题

3 人工智能用于量子力学 在这一部分中&#xff0c;我们提供了有关如何设计高级深度学习方法以有效学习神经波函数的技术评述。在第3.1节中&#xff0c;我们概述了一般情况下定义和解决量子多体问题的方法。在第3.2节中&#xff0c;我们介绍了学习量子自旋系统基态的方法。在第…

Python3操作SQLite3创建表主键自增长|CRUD基本操作

Python3操作MySQL8.XX创建表|CRUD基本操作 Python3操作SQLite3创建表主键自增长|CRUD基本操作 一: SQLite3创建表时主键自增长 1: sqlite支持建立自增主键 create table t_user (id integer primary key autoincrement,age int(2), name varchar(10),address varchar(100) )…

YOLOv5、YOLOv8改进:ConvNeXt(backbone改为ConvNextBlock)

目录 1.介绍 2. YOLOv5修改backbone为ConvNeXt 2.1修改common.py 2.2 修改yolo.py 2.3修改yolov5.yaml配置 1.介绍 论文地址&#xff1a;https://arxiv.org/abs/2201.03545官方源代码地址&#xff1a;https://github.com/facebookresearch/ConvNeXt.git 自从ViT(Vision T…

Linux 权限相关例题练习

目录 一、前期准备工作&#xff1a; 1&#xff09;新建redhat用户 2&#xff09;新建testdir目录及其file1 二、例题详解 1、当用户redhat对/testdir目录无写权限时&#xff0c;该目录下的只读文件file1是否可修改和删除&#xff1f; 2、复制/etc/fstab文件到/var/tmp下&…