详细深入聊一聊Mysql中的int(1)和int(11)

yizhihongxing

当我们在设计MySQL表时,常常会使用int类型作为列的数据类型,但是int还可以指定长度,比如int(1)和int(11)两种类型。在这里,我们来深入聊一聊它们之间的不同。

int(1)与int(11)的区别

事实上,int(1)和int(11)在存储数据时并没有真正的差异,它们都占据四个字节的存储空间,存储的范围也一样。它们的唯一区别在于,int(1)在显示时会被截断成只显示一位数字,而int(11)则可以完整显示出所有的数字。

int(1)的示例

接下来,我们用一个简单的示例来说明int(1)的作用。

创建一个employee表,用int(1)作为员工性别的数据类型:

CREATE TABLE employee (
  id int(11) NOT NULL AUTO_INCREMENT,
  name varchar(50) NOT NULL,
  gender int(1),
  PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

接下来插入一些员工信息:

INSERT INTO employee (name, gender) VALUES
('Tom', 1),
('Jerry', 0),
('Alice', 2);

接着我们查看表中的数据:

SELECT * FROM employee;

结果如下:

| id | name   | gender |
|----|--------|--------|
| 1  | Tom    | 1      |
| 2  | Jerry  | 0      |
| 3  | Alice  | 2      |

由于gender字段的数据类型是int(1),所以JDBC在插入数据时会把0和1都当作Boolean类型的数据,所以实际存储的值为0或1。这也是我们不建议使用int(1)作为Boolean类型的原因之一。

但是,当我们使用SQL语句查询时,MySQL会把gender字段的值自动转换成字符串类型,如果是0或1,会显示为'0'和'1',如果是其他值,则会显示为该值本身。

int(11)示例

接下来我们用一个示例来说明int(11)的作用。

创建一个sales表,用int(11)作为订单金额的数据类型:

CREATE TABLE sales (
  id int(11) NOT NULL AUTO_INCREMENT,
  name varchar(50) NOT NULL,
  amount int(11),
  PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

接下来插入一些订单数据:

INSERT INTO sales (name, amount) VALUES
('Tom', 80000),
('Jerry', 90000),
('Alice', 50000);

我们可以使用下面的SQL语句查询所有订单的金额:

SELECT * FROM sales;

结果如下:

| id | name   | amount  |
|----|--------|---------|
| 1  | Tom    | 80000   |
| 2  | Jerry  | 90000   |
| 3  | Alice  | 50000   |

由于amount字段的数据类型是int(11),所以MySQL会把所有的数字都完整地显示出来。

结论

根据上面的示例,我们得出以下结论:

  • int(1)在存储时和int(11)没有实际区别,它们占用的存储空间是一样的;
  • int(1)可以被当做Boolean类型来使用,但要注意在查询时可能会出现一些问题;
  • int(11)在存储数值时可以完整显示出所有的数字,比如订单金额等需要精确到分的数字,适合使用int(11)。

希望本文能够对大家了解关于int数据类型的不同大小有一些帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:详细深入聊一聊Mysql中的int(1)和int(11) - Python技术站

(0)
上一篇 2023年5月18日
下一篇 2023年5月18日

相关文章

  • 关于使用PLSQL Developer时出现报错ora-12514的问题

    下面是详细讲解关于使用PLSQL Developer时出现报错ora-12514的问题的攻略。 问题描述 在使用PLSQL Developer时,连接Oracle数据库时可能会出现“ora-12514”的错误提示,这个错误提示的完整信息通常为“ora-12514: TNS 监听程序当前无法处理连接请求中描述的服务名或 SID”。 错误原因 这个错误通常是由于…

    database 2023年5月18日
    00
  • mysql用户变量与set语句示例详解

    关于“mysql用户变量与set语句示例详解”,我会给你详细讲解一下。 什么是MySQL用户变量 MySQL用户变量是指在MySQL连接期间创建的变量,其生命周期与连接相关。用户变量可以存储字符串、数值和二进制数据等类型的值,而设置它们的语法为: @var_name := value。 其中,@符号为用户变量的前缀,var_name为变量名,value为变量…

    database 2023年5月21日
    00
  • 达思sql数据库修复软件2.6用友金蝶浪潮管家婆思迅浪潮病毒

    攻略:使用达思SQL数据库修复软件2.6修复用友、金蝶、浪潮、思迅等数据库中的病毒 背景 使用各种数据库管理软件,如用友、金蝶、浪潮、思迅等,可能会遇到因病毒感染导致数据库损坏的问题。此时,达思SQL数据库修复软件是一种比较有效的解决方案。 需要准备 损坏的数据库文件 达思SQL数据库修复软件2.6 步骤 首先,安装好达思SQL数据库修复软件2.6,打开软件…

    database 2023年5月18日
    00
  • Java 用Prometheus搭建实时监控系统过程详解

    Java 用Prometheus搭建实时监控系统过程详解 简介 Prometheus是一个开源的监控和警报系统。它最初由SoundCloud开发,用于监测它们的容器化部署。Prometheus已经成为一个独立的开源项目,并且拥有一个庞大的社区。它可以监控各种不同类型的服务,并提供查询语言,以便分析和警报数据。 在本篇文章中,我们将介绍如何在Java应用程序中…

    database 2023年5月22日
    00
  • Apache同时支持PHP和Python的配置方法

    为使Apache服务器同时支持PHP和Python脚本语言,需要按照以下步骤进行配置。 步骤1:安装Apache服务器 首先,需要安装Apache HTTP服务器。使用如下命令(基于Ubuntu系统): sudo apt-get update sudo apt-get install apache2 安装完成后,可以使用如下命令检查Apache是否已经成功安…

    database 2023年5月22日
    00
  • Oracle提高SQL执行效率的3种方法

    标题: Oracle提高SQL执行效率的3种方法 文章正文: 在使用Oracle数据库时,我们常常需要优化SQL语句以提高查询效率。下面介绍3种提高SQL执行效率的方法。 一、使用索引 索引是用于加速SQL语句执行的数据结构。在SQL语句中使用索引可以提高查询效率,减少数据库的IO负载,从而加快SQL执行速度。具体使用方法如下: 创建索引:CREATE IN…

    database 2023年5月21日
    00
  • Mysql的增删改查语句简单实现

    针对“Mysql的增删改查语句简单实现”的完整攻略,一般来说会包含以下内容: 环境搭建 在进行Mysql的增删改查操作之前,我们需要先搭建一个Mysql环境。这里建议使用XAMPP来搭建环境,因为它是跨平台的且安装配置也较为简单。 数据库操作 创建数据库 要操作Mysql,首先要先创建一个数据库。在Mysql中,使用CREATE DATABASE语句来创建数…

    database 2023年5月21日
    00
  • sql server利用不同语种语言显示报错错误消息的方法示例

    下面是“SQL Server利用不同语种语言显示报错错误消息的方法示例”的完整攻略: 1. 概述 在SQL Server中,错误消息是用于指示错误类型以及错误原因的一个重要的信息来源。在国际化的环境下,错误消息必须支持不同的语种,以适应不同用户的需求。本篇攻略将介绍如何利用SQL Server来实现对多语言错误消息的支持。 2. 利用内置函数实现多语言错误消…

    database 2023年5月19日
    00
合作推广
合作推广
分享本页
返回顶部