摘要:在本教程中,你将学习如何使用 SQL CREATE TABLE
语句来创建新表。
SQL CREATE TABLE 语句简介
到目前为止,你已经学习了从 示例数据库 中的表查询数据的各种方法。现在是时候学习如何创建自己的表了。
表是存储在数据库中的数据集合。表由列和行组成。要创建新表,可以使用具有以下语法的 CREATE TABLE
语句
CREATE TABLE table_name(
column_name_1 data_type default value column_constraint,
column_name_2 data_type default value column_constraint,
...,
table_constraint
);
Code language: SQL (Structured Query Language) (sql)
创建新表所需的最低信息是表名和列名。
由 table_name
给出的表名在数据库中必须是唯一的。如果你创建的表名与已经存在的表名相同,数据库系统将发出错误。
在 CREATE TABLE
语句中,你可以指定一个逗号分隔的列定义列表。每个列定义都由列名、列的 数据类型、默认值和一个或多个列约束组成。
列的数据类型指定该列可以存储的数据类型。列的数据类型可以是数字、字符、日期等。
列约束控制可以存储在列中的值类型。例如,NOT NULL
约束确保列不包含任何 NULL 值。
一个列可以有多个列约束。例如, users
表的 username
列可以同时具有 NOT NULL
和 UNIQUE
约束。
如果约束包含多个列,可以使用表约束。例如,如果表具有由两列组成的主键,则在这种情况下,你必须使用 PRIMARY KEY
表约束。
SQL CREATE TABLE 示例
假设你必须将员工的培训数据存储在数据库中,要求是每个员工可以参加零门或多门培训课程,并且每门培训课程都可以由零个或多个员工参加。
你查看了当前数据库,没有找到存储此信息的位置,因此你决定创建新表。
以下语句创建 courses
表
CREATE TABLE courses (
course_id INT AUTO_INCREMENT PRIMARY KEY,
course_name VARCHAR(50) NOT NULL
);
Code language: SQL (Structured Query Language) (sql)

courses
表有两个列:course_id
和 course_name
。
course_id
是 courses
表的 主键 列。每个表都有一个且只有一个主键,可唯一标识表中的每一行。为每个表定义主键是一个好习惯。
course_id
的数据类型是整数,由 INT
关键字表示。此外,course_id
列的值为 AUTO_INCREMENT
。这意味着,当你向 courses
表中插入新行而不为 course_id
列提供值时,数据库系统将为该列生成整数值。
course_name
存储课程名称。其数据类型为字符字符串 ( VARCHAR
),最大长度为 50。NOT NULL
约束确保 course_name
列中没有存储任何 NULL 值。
现在您有了用于存储课程数据的表。若要存储培训数据,请如下所示创建一个名为 training 的新表。
CREATE TABLE trainings (
employee_id INT,
course_id INT,
taken_date DATE,
PRIMARY KEY (employee_id , course_id)
);
Code language: SQL (Structured Query Language) (sql)

trainings
表包含三列
employee_id
列存储参加课程的员工 ID。course_id
列存储员工参加的课程。taken_date
列存储员工参加课程的日期。
由于 trainings
表的主键包含两列:employee_id
和 course_id
,因此我们必须使用 PRIMARY KEY
表约束。
在本教程中,您学习了如何使用 SQL CREATE TABLE
语句在数据库中创建新表。