暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

MySQL中的数据类型及示例

技术老小子 2024-06-28
3

在本文中,我将讨论MySQL中的数据类型及其示例。作为开发人员,理解MySQL数据类型非常重要。

什么是MySQL中的数据类型?

理解MySQL中的数据类型是数据库开发中最重要的因素。通过理解数据类型,我们可以创建更专业、规范化、关系化且易于管理的数据库列和表结构。表中的每一列都根据其将要存储的数据值定义其数据类型。换句话说,数据类型定义了列可以存储的值的种类。主要有三种数据类型:

  1. 数值数据类型

  2. 字符数据类型

  3. 时间数据类型


数值数据类型

数值数据类型仅存储数值。根据值的不同,数值数据类型可以是整数数值、定点数和浮点数。数值数据示例包括价格、评分、工资等。

整数数值数据类型

整数数值是像1、2、3、4、5、6等的整数。整数可以存储正数、负数和零。在SQL标准中,整数类型是INTEGER或INT和SMALLINT。在MySQL中,作为对标准整数类型的扩展,它支持TINYINT、MEDIUMINT和BIGINT等整数类型。以下表格显示了整数数值数据类型、其存储大小以及可以存储的最小和最大值。

数据类型存储大小最小值(有符号)最大值(有符号)最小值(无符号)最大值(无符号)
TINYINT1字节-1281270255
SMALLINT2字节-3276832767065535
MEDIUMINT3字节-83886088388607016777215
INT4字节-2147483648214748364704294967295
BIGINT8字节-92233720368547758089223372036854775807018446744073709551615

定点数数据类型

定点数或精确值是像0.01、10.25、123.456等的数值。定点数是带有小数点的货币、小计算和测量数据。定点数可以是正数、负数和零值,每个小数数值有两个部分:小数点右边的位数和数值中的总位数。小数点不计入总位数。例如,值10.25总共有4位,其中两位在小数点右边。

DECIMAL和NUMERIC是存储定点数或精确值的数据类型。DECIMAL和NUMERIC数据类型几乎相同,存储数据值的格式相同。NUMERIC是DECIMAL的同义词。

复制
    CREATE TABLE example_fixed_point (
    id INT AUTO_INCREMENT PRIMARY KEY,
    price DECIMAL(5, 2)
    );


    INSERT INTO example_fixed_point (price) VALUES (99.99), (10.25), (0.45);


    复制
    浮点数数据类型
    复制

    浮点数或近似值是非常大或非常小的值,最常用于科学或测量计算。由于计算机硬件架构导致的舍入错误,浮点数也称为近似值。

      FLOAT、REAL和DOUBLE PRECISION数据类型用于存储浮点数值。
      CREATE TABLE example_floating_point (
      id INT AUTO_INCREMENT PRIMARY KEY,
      measurement FLOAT(7, 4)
      );


      INSERT INTO example_floating_point (measurement) VALUES (123.0001), (999.9999), (0.0001);


      复制

      字符数据类型

      字符数据类型可以存储字母、符号和数字。字符数据示例包括名称、描述、字母数字字符串等。

      CHAR和VARCHAR数据类型

      CHAR或CHARACTER数据类型存储固定宽度的字符列。定义CHAR数据类型时,需要输入列宽。例如:CHAR(5)、CHAR(50)。

      复制
        CREATE TABLE example_char (
        id INT AUTO_INCREMENT PRIMARY KEY,
        firstname CHAR(20)
        );


        INSERT INTO example_char (firstname) VALUES ('张三'), ('李四'), ('王五');


        复制
        VARCHAR或VARYING CHARACTER存储动态宽度的字符列。在VARCHAR定义中,定义的宽度是数据列中允许的最大值宽度。
        复制
        复制
          CREATE TABLE example_varchar (
          id INT AUTO_INCREMENT PRIMARY KEY,
          description VARCHAR(250)
          );


          INSERT INTO example_varchar (description) VALUES ('这是一个描述。'), ('这是另一个描述。'), ('这是第三个描述。');


          复制
          复制

          NCHAR和NVARCHAR数据类型

          在SQL标准中,NCHAR和NVARCHAR表示国家字符和国家变量字符。与CHAR和VARCHAR类似,NCHAR和VARCHAR数据类型存储固定宽度的字符列,但使用更大的字符集。NCHAR和VARCHAR使用Unicode字符集,如UTF-8,用于国际化。

          复制
            CREATE TABLE example_nchar (
            id INT AUTO_INCREMENT PRIMARY KEY,
            foreign_name NCHAR(20)
            );


            INSERT INTO example_nchar (foreign_name) VALUES ('张三'), ('李四'), ('王五');


            复制
            复制

            CLOB和BLOB数据类型

            CLOB和BLOB分别表示字符大对象和二进制大对象。CLOB和BLOB数据类型用于存储无法存储在CHAR或VARCHAR中的非常大数据。CLOB用于存储字符数据,而BLOB用于存储二进制数据,如图像、音频和视频。

              CREATE TABLE example_blob (
              id INT AUTO_INCREMENT PRIMARY KEY,
              image BLOB
              );


              -- 假设我们有一个图像文件 'image.jpg'
              -- INSERT INTO example_blob (image) VALUES (LOAD_FILE('C:\\Users\\truei\\Downloads\\image.png'));
              '));
              复制


              复制

              ENUM数据类型

              ENUM数据类型是一个字符串对象,其值在列创建时从定义的允许值列表中选择。它是一种使用数字索引表示字符串值的紧凑数据存储。

              复制
                CREATE TABLE example_enum (
                id INT AUTO_INCREMENT PRIMARY KEY,
                status ENUM('active', 'inactive', 'pending')
                );


                INSERT INTO example_enum (status) VALUES ('active'), ('inactive'), ('pending');


                复制
                TEXT, TINYTEXT, MEDIUMTEXT, LONGTEXT数据类型
                复制

                TEXT数据类型用于存储长期文本字符串,可以存储从1字节到4GB的数据。

                复制
                  CREATE TABLE example_text (
                  id INT AUTO_INCREMENT PRIMARY KEY,
                  content TEXT
                  );


                  INSERT INTO example_text (content) VALUES ('这是一个长文本。'), ('这是另一个长文本。'), ('这是第三个长文本。');


                  复制
                  复制

                  布尔数据类型

                  布尔数据类型在MySQL中是内置的,而MySQL使用TINYINT(1)表示布尔值。BOOLEAN或BOOL是TINYINT(1)的同义词。

                  复制
                    CREATE TABLE example_boolean (
                    id INT AUTO_INCREMENT PRIMARY KEY,
                    is_active BOOLEAN
                    );


                    INSERT INTO example_boolean (is_active) VALUES (TRUE), (FALSE), (TRUE);


                    复制
                    日期、时间和时间戳(时间值)数据类型
                    复制

                    时间数据类型包括日期、时间和时间戳(同时具有日期和时间值)。日期值存储标准的365天公历。每个数据库系统都有自己的规则来存储和显示日期值。最流行的日期格式是YYYY-MM-DD,其中4Y表示年份,2M表示月份,2D表示日期。MySQL以‘HH:MM:SS’格式检索和显示时间值。时间值格式可能因数据库系统而异。时间戳数据类型可以同时存储日期和时间组件。

                    复制
                      CREATE TABLE example_datetime (
                      id INT AUTO_INCREMENT PRIMARY KEY,
                      created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
                      updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
                      );


                      INSERT INTO example_datetime () VALUES (), (), ();


                      复制
                      复制


                      文章转载自技术老小子,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

                      评论