MySQL在create table建表时各种数据列类型规范示例

在 MySQL 中创建表时,你需要定义每列的**数据类型**来指定列将存储的数据格式和大小。以下是常见的数据类型及其使用示例。不同的 MySQL 版本可能会对某些数据类型有所不同,但大部分数据类型在 MySQL 中都有一致的支持。

1. 数字数据类型

数字数据类型用于存储整数、浮动点数和定点数。常见的数字数据类型如下

整数类型
  • TINYINT:存储小范围的整数。
  • SMALLINT:存储较小范围的整数。
  • MEDIUMINT:存储中等范围的整数。
  • INT 或 INTEGER:存储常规的整数。
  • BIGINT:存储大范围的整数。
CREATE TABLE example_integer (
    tinyint_col TINYINT,
    smallint_col SMALLINT,
    mediumint_col MEDIUMINT,
    int_col INT,
    bigint_col BIGINT
);
小数/浮点数类型
  • FLOAT:存储单精度浮动点数。
  • DOUBLE 或 DOUBLE PRECISION:存储双精度浮动点数。
  • DECIMAL 或 NUMERIC:存储定点数,用于存储精确的小数。
CREATE TABLE example_float (
    float_col FLOAT(7, 2),  -- 7总位数,其中2位小数
    double_col DOUBLE(16, 6),
    decimal_col DECIMAL(10, 2)  -- 总位数为10,其中小数位为2
);

2. 字符串数据类型

字符串类型用于存储文本数据,包括短文本和长文本。常见的字符串数据类型如下:

定长字符串
  • CHAR:存储固定长度的字符串(最多255字符)。
CREATE TABLE example_char (
    fixed_char CHAR(10)  -- 10个字符长度
);
变长字符串
  • VARCHAR:存储可变长度的字符串(最大65535字符,受表的行大小限制)
CREATE TABLE example_varchar (
    variable_varchar VARCHAR(255)  -- 最大255个字符
);
文本类型
  • TEXT:用于存储较长的文本(最大65535字符)。
  • TINYTEXT:最大255字符。
  • MEDIUMTEXT:最大16MB的文本。
  • LONGTEXT:最大4GB的文本。
CREATE TABLE example_text (
    short_text TINYTEXT,
    medium_text MEDIUMTEXT,
    long_text LONGTEXT
);

3. 日期和时间数据类型

日期和时间类型用于存储与时间相关的数据。

  • DATE:存储日期(格式:YYYY-MM-DD)。
  • DATETIME:存储日期和时间(格式:YYYY-MM-DD HH:MM:SS)。
  • TIMESTAMP:存储时间戳,自动设置为当前时间或更新时间。
  • TIME:存储时间(格式:HH:MM:SS)。
  • YEAR:存储年份(格式:YYYY)。
CREATE TABLE example_datetime (
    event_date DATE,
    event_datetime DATETIME,
    event_timestamp TIMESTAMP,
    event_time TIME,
    event_year YEAR
);

4. 布尔类型

MySQL 中没有专门的 BOOLEAN 类型,通常使用 TINYINT(1) 来表示布尔值。0 代表 FALSE1 代表 TRUE

CREATE TABLE example_boolean (
    is_active TINYINT(1)  -- 布尔值,0或1
);

5. 枚举和集合类型

  • ENUM:枚举类型,表示一组预定义的值。只能选择其中一个值。
  • SET:集合类型,表示一组预定义的值,允许选择多个值。
CREATE TABLE example_enum_set (
    gender ENUM('male', 'female', 'other'),  -- 只能是三个值之一
    colors SET('red', 'green', 'blue', 'yellow')  -- 可以是多个颜色的集合
);

6. 二进制数据类型

二进制类型用于存储二进制数据。

  • BINARY:固定长度的二进制数据。
  • VARBINARY:可变长度的二进制数据。
  • BLOB:二进制大对象,用于存储大量二进制数据(最大64KB)。
  • TINYBLOB:小型二进制大对象(最大255字节)。
  • MEDIUMBLOB:中型二进制大对象(最大16MB)。
  • LONGBLOB:大型二进制大对象(最大4GB)。
CREATE TABLE example_blob (
    fixed_binary BINARY(16),
    variable_binary VARBINARY(255),
    blob_data BLOB,
    tiny_blob TINYBLOB,
    medium_blob MEDIUMBLOB,
    long_blob LONGBLOB
);

7. 自增列

AUTO_INCREMENT 可以在列上定义自动递增,通常用于主键字段。

CREATE TABLE example_auto_increment (
    id INT AUTO_INCREMENT PRIMARY KEY,  -- 自动递增主键
    name VARCHAR(255)
);

8. 外键约束和索引

MySQL 支持外键约束,确保数据的完整性。外键通常用于连接两个表,指向另一表的主键或唯一键。

CREATE TABLE example_foreign_key (
    id INT AUTO_INCREMENT PRIMARY KEY,
    category_id INT,
    FOREIGN KEY (category_id) REFERENCES category(id)
);

9. 表的其他常见约束

  • NOT NULL:确保列不为空。
  • DEFAULT:为列指定默认值。
  • UNIQUE:确保列的值唯一。
  • PRIMARY KEY:指定列为主键。
  • INDEX:创建索引。
CREATE TABLE example_constraints (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(255) NOT NULL,
    email VARCHAR(255) UNIQUE,
    age INT DEFAULT 18,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    INDEX idx_name (name)
);

完整示例:创建一个完整的表

CREATE TABLE users (
    id INT AUTO_INCREMENT PRIMARY KEY,
    first_name VARCHAR(50) NOT NULL,
    last_name VARCHAR(50) NOT NULL,
    email VARCHAR(100) UNIQUE,
    birth_date DATE,
    registration_time DATETIME DEFAULT CURRENT_TIMESTAMP,
    is_active TINYINT(1) DEFAULT 1,
    profile_picture LONGBLOB,
    bio TEXT,
    gender ENUM('male', 'female', 'other') NOT NULL
);

总结

在 MySQL 中创建表时,使用不同的列数据类型来定义列的存储格式。通过选择适当的数据类型,可以优化存储空间和查询性能。在设计数据库时要注意:

  • 为每列选择合适的数据类型和大小。
  • 考虑性能、存储需求和数据验证。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值