SQL CREATE TABLE

摘要:在本教程中,你将学习如何使用 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 NULLUNIQUE 约束。

如果约束包含多个列,可以使用表约束。例如,如果表具有由两列组成的主键,则在这种情况下,你必须使用 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)

试试看

SQL CREATE TABLE - courses table

courses 表有两个列:course_idcourse_name

course_idcourses 表的 主键 列。每个表都有一个且只有一个主键,可唯一标识表中的每一行。为每个表定义主键是一个好习惯。

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)

试试看

SQL CREATE TABLE - trainings table

trainings 表包含三列

  • employee_id 列存储参加课程的员工 ID。
  • course_id 列存储员工参加的课程。
  • taken_date 列存储员工参加课程的日期。

由于 trainings 表的主键包含两列:employee_idcourse_id,因此我们必须使用 PRIMARY KEY 表约束。

在本教程中,您学习了如何使用 SQL CREATE TABLE 语句在数据库中创建新表。

本教程是否有用?