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

当我们在设计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日

相关文章

  • wordpress数据库优化和清理冗余数据的方法

    WordPress数据库优化和清理冗余数据是保持网站运行效率的重要步骤。当数据库变得庞大时,网站运行速度会变慢,因此定期进行数据库优化和清理是非常有必要的。下面是数据库优化和清理冗余数据的完整攻略: 什么是数据库优化? 数据库优化是指通过对表结构、查询优化、内容清理等一系列操作来提高数据库性能,优化数据库的加载速度,以提高网站速度。通常通过压缩和重建数据表、…

    database 2023年5月19日
    00
  • 解决bash: mysql: command not found 的方法

    当你在终端窗口中输入mysql命令时,如果出现 “bash: mysql: command not found” 错误消息,这表示你的系统中并没有安装 MySQL 或者安装的 MySQL 引擎环境变量不正确。下面是解决这个问题的方法。 方法一:使用系统包管理器安装MySQL 首先,检查系统是否安装了MySQL。如果你使用 macOS,可以在终端中输入以下命令…

    database 2023年5月22日
    00
  • Ubuntu安装MySQL-python方法

    以下是Ubuntu安装MySQL-python的完整攻略。 安装MySQL-python 在Ubuntu上安装MySQL-python,需要首先安装pip和MySQL开发包。 安装pip Ubuntu 18.04及以上版本,pip已经默认安装。可以通过以下命令确认pip是否已安装: pip –version 如果提示“Command ‘pip’ not f…

    database 2023年5月22日
    00
  • 实用的简单PHP分页集合包括使用方法

    实用的简单PHP分页集合包括使用方法攻略 简介 分页是 Web 开发中很常见的功能,使用合适的工具可以大大简化分页实现的难度。本攻略介绍一个简单易用的 PHP 分页库 php-paginator,它提供了完整的分页实现和多种显示模板,支持自定义显示模板,可无缝集成到 PHP 项目中。 安装和使用 安装 使用 composer 安装最新版的 php-pagin…

    database 2023年5月21日
    00
  • Linux下安装PHP MSSQL扩展教程

    下面是“Linux下安装PHP MSSQL扩展教程”的完整攻略。 准备工作 在安装 MSSQL 扩展之前必须先安装好其所依赖的环境。 安装FreeTDS FreeTDS是一个能够让 Linux 或类 Unix 系统作为客户端连接到远程的 MSSQL 或 Sybase 服务器的桥梁。 下载源码包: wget ftp://ftp.freetds.org/pub/…

    database 2023年5月22日
    00
  • Centos6.6 安装Redis

    一.介绍   redis在做数据库缓存,session存储,消息队列上用的比较多   二.安装 $ yum install -y wget gcc make tcl $ wget http://download.redis.io/releases/redis-3.0.2.tar.gz $ tar zxvf redis-3.0.2.tar.gz $ cd re…

    Redis 2023年4月13日
    00
  • 详解mysql查询缓存简单使用

    详解MySQL查询缓存简单使用攻略 什么是MySQL查询缓存 MySQL查询缓存是通过缓存查询结果来提高MySQL查询执行效率的一种机制。在缓存命中的情况下,可以直接返回结果而无需一遍遍地重复查询。 缓存原理 当执行查询语句时,MySQL会先检查是否开启了查询缓存功能。如果开启了查询缓存,并且查询语句内容以及查询语句所使用的表都没有发生变化,则MySQL会尝…

    database 2023年5月21日
    00
  • .htaccess重定向和url重写详细介绍

    介绍 .htaccess 重定向和 URL 重写之前,我们需要了解两个概念:服务器响应码和正则表达式。 服务器响应码 服务器响应码,也称为 HTTP 状态码,是指 Web 服务器响应客户端请求时所返回的状态码。 几个常见的状态码: 200 OK:用来表示客户端的请求在服务器端被正常处理。 301 Moved Permanently:用于永久性重定向,浏览器会…

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