目录

  1. CREATE TABLE 简介
  2. CREATE TABLE 语法
  3. CREATE TABLE 示例
  4. CREATE TABLE 使用场景
  5. CREATE TABLE 注意事项
  6. 参考资料

CREATE TABLE 简介

CREATE TABLE 是 SQL 中用于创建数据库表的语句。表是数据库中的基本结构,用来存储数据。CREATE TABLE 语句允许定义表的列及其数据类型、约束(如主键、外键等)以及其他表级别的选项。

一个表由若干列(字段)组成,每列有特定的数据类型(如整数、字符、日期等)。创建表时,除了指定列的数据类型,还可以添加一些约束来确保数据的完整性和一致性。


CREATE TABLE 语法

CREATE TABLE 的基本语法如下:

CREATE TABLE table_name (
    column1 datatype [constraints],
    column2 datatype [constraints],
    ...

[table_constraints]

);

说明:

  • table_name:要创建的表的名称。表名称必须遵循数据库的命名规则,通常由字母、数字和下划线组成。
  • column1, column2, ...:表中的列,每列有一个名称和数据类型。每列可以有约束条件(例如:NOT NULLUNIQUEPRIMARY KEY 等)。
  • datatype:指定列的数据类型,如 INTVARCHARDATE 等。
  • [constraints]:列约束,控制数据输入时的规则,如 NOT NULL(不能为空),PRIMARY KEY(主键),FOREIGN KEY(外键)等。
  • [table_constraints]:表级约束,通常是用于约束表的多个列组合,如联合主键(PRIMARY KEY (column1, column2))等。

示例语法:

CREATE TABLE employees (
    employee_id INT PRIMARY KEY,
    first_name VARCHAR(50) NOT NULL,
    last_name VARCHAR(50),
    hire_date DATE,
    salary DECIMAL(10, 2),
    department_id INT,
    FOREIGN KEY (department_id) REFERENCES departments(department_id)
);


CREATE TABLE 示例

示例 1:创建一个简单的表

创建一个名为 employees 的表,包含员工的 ID、姓名和入职日期:

CREATE TABLE employees (
    employee_id INT PRIMARY KEY,
    first_name VARCHAR(50),
    last_name VARCHAR(50),
    hire_date DATE
);

执行此语句后,会创建一个包含 employee_idfirst_namelast_namehire_date 的表。

示例 2:创建带约束的表

创建一个带有主键、外键和非空约束的表。假设我们还需要一个 departments 表,employees 表中的 department_id 列是外键,引用 departments 表中的 department_id 列。

CREATE TABLE employees (
    employee_id INT PRIMARY KEY,
    first_name VARCHAR(50) NOT NULL,
    last_name VARCHAR(50),
    hire_date DATE,
    salary DECIMAL(10, 2),
    department_id INT,
    FOREIGN KEY (department_id) REFERENCES departments(department_id)
);

在这个例子中:

  • employee_id 是主键,唯一标识每个员工。
  • first_name 是非空列(不能为空)。
  • department_id 是外键,引用 departments 表的 department_id 列。

示例 3:创建表并指定字符集和排序规则(适用于 MySQL)

在 MySQL 中,可以在创建表时指定字符集和排序规则。以下是一个包含这些选项的例子:

CREATE TABLE employees (
    employee_id INT PRIMARY KEY,
    first_name VARCHAR(50),
    last_name VARCHAR(50)
) CHARACTER SET utf8 COLLATE utf8_general_ci;

此语句创建的表使用 utf8 字符集和 utf8_general_ci 排序规则。


CREATE TABLE 使用场景

  1. 创建新项目的表:在开发一个新的应用时,通常需要通过 CREATE TABLE 语句定义多个表以存储应用程序数据,如用户信息、订单信息、产品信息等。
  2. 数据库迁移:当迁移数据库或创建数据库备份时,通常会在新数据库中重新创建表结构,然后将数据从旧数据库迁移过来。
  3. 多租户系统:对于支持多租户的系统,可以使用 CREATE TABLE 为每个租户创建独立的数据表,或者在表中使用租户标识来隔离数据。
  4. 临时数据存储:在某些情况下,临时数据或中间结果需要存储在表中,CREATE TABLE 语句可以用来创建临时表。

CREATE TABLE 注意事项

  1. 列的数据类型选择
    • 在定义表时,选择适当的数据类型至关重要。每种数据类型都有不同的存储需求和操作特性。例如,VARCHAR 适合存储可变长度的字符串,而 INT 用于存储整数值。
  2. 表约束的使用
    • 使用表级约束(如主键、外键、唯一约束)可以确保数据的一致性和完整性。避免在不需要时使用过多约束,以免影响性能。
  3. 表名和列名的命名规则
    • 命名时,应遵循一定的命名规则,例如使用有意义的名字(如 employee_id),并避免使用 SQL 保留字作为列名或表名。
  4. 字符集和排序规则的选择
    • 在支持多语言的应用中,确保选择适当的字符集(如 utf8utf8mb4)。这样可以确保数据库支持国际化字符并避免编码问题。
  5. 存储引擎(MySQL)
    • 在 MySQL 中,可以为表指定存储引擎(如 InnoDBMyISAM)。InnoDB 支持事务、外键约束,而 MyISAM 更适用于只读数据表。
  6. 自动增长列
    • 对于主键列,可以使用自动增长属性(如 AUTO_INCREMENT)来自动生成唯一值,避免手动指定主键值。

参考资料