<bdo id='6iryG'></bdo><ul id='6iryG'></ul>

    <tfoot id='6iryG'></tfoot>

  • <small id='6iryG'></small><noframes id='6iryG'>

      <legend id='6iryG'><style id='6iryG'><dir id='6iryG'><q id='6iryG'></q></dir></style></legend>
        <i id='6iryG'><tr id='6iryG'><dt id='6iryG'><q id='6iryG'><span id='6iryG'><b id='6iryG'><form id='6iryG'><ins id='6iryG'></ins><ul id='6iryG'></ul><sub id='6iryG'></sub></form><legend id='6iryG'></legend><bdo id='6iryG'><pre id='6iryG'><center id='6iryG'></center></pre></bdo></b><th id='6iryG'></th></span></q></dt></tr></i><div id='6iryG'><tfoot id='6iryG'></tfoot><dl id='6iryG'><fieldset id='6iryG'></fieldset></dl></div>
      1. 详细深入聊一聊Mysql中的int(1)和int(11)

        时间:2023-12-06
        • <bdo id='sdVfd'></bdo><ul id='sdVfd'></ul>
        • <i id='sdVfd'><tr id='sdVfd'><dt id='sdVfd'><q id='sdVfd'><span id='sdVfd'><b id='sdVfd'><form id='sdVfd'><ins id='sdVfd'></ins><ul id='sdVfd'></ul><sub id='sdVfd'></sub></form><legend id='sdVfd'></legend><bdo id='sdVfd'><pre id='sdVfd'><center id='sdVfd'></center></pre></bdo></b><th id='sdVfd'></th></span></q></dt></tr></i><div id='sdVfd'><tfoot id='sdVfd'></tfoot><dl id='sdVfd'><fieldset id='sdVfd'></fieldset></dl></div>
              <tbody id='sdVfd'></tbody>
            • <legend id='sdVfd'><style id='sdVfd'><dir id='sdVfd'><q id='sdVfd'></q></dir></style></legend>

                  <small id='sdVfd'></small><noframes id='sdVfd'>

                  <tfoot id='sdVfd'></tfoot>

                  当我们在设计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事物锁等待超时Lock wait timeout exceeded;的解决 下一篇:使用Oracle命令进行数据库备份与还原

                  相关文章

                  <small id='Viyle'></small><noframes id='Viyle'>

                1. <tfoot id='Viyle'></tfoot>

                  <legend id='Viyle'><style id='Viyle'><dir id='Viyle'><q id='Viyle'></q></dir></style></legend>
                  • <bdo id='Viyle'></bdo><ul id='Viyle'></ul>

                    1. <i id='Viyle'><tr id='Viyle'><dt id='Viyle'><q id='Viyle'><span id='Viyle'><b id='Viyle'><form id='Viyle'><ins id='Viyle'></ins><ul id='Viyle'></ul><sub id='Viyle'></sub></form><legend id='Viyle'></legend><bdo id='Viyle'><pre id='Viyle'><center id='Viyle'></center></pre></bdo></b><th id='Viyle'></th></span></q></dt></tr></i><div id='Viyle'><tfoot id='Viyle'></tfoot><dl id='Viyle'><fieldset id='Viyle'></fieldset></dl></div>