在本教程中,将学习如何使用SQL CREATE TABLE
语句来创建新表。
1. 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
);
创建新表所需的最低信息是表名和列名。
由table_name
指定的表名在数据库中必须是唯一的。 如果创建的表的名称与已存在的表相同,则数据库系统将发出错误。
在CREATE TABLE
语句中,指定以逗号分隔的列定义列表。每个列定义由列名,列的数据类型,默认值和一个或多个列约束组成。
列的数据类型指定列可以存储的数据类型。 列的数据类型可以是数字,字符,日期等。
列约束控制可以存储在列中的值的类型。 例如,NOT NULL
约束确保列不包含NULL
值。
列可能有多个列约束。 例如,users
表的username
列可以同时具有NOT NULL
和UNIQUE
约束。
如果约束包含多个列,则使用表约束。 例如,如果表的主键包含两列,则在这种情况下,必须使用PRIMARY KEY
表约束。
SQL CREATE TABLE示例
假设需要将员工的培训数据存储在数据库中,并要求每个员工可以接受零或多个培训课程,并且每个培训课程可以由零个或多个员工进行。
在查看了当前数据库后,发现没有地方存储此信息,因此创建一个新的表。
以下语句创建课程表:
CREATE TABLE courses (
course_id INT AUTO_INCREMENT PRIMARY KEY,
course_name VARCHAR(50) NOT NULL
);
courses
表有两列:course_id
和course_name
。course_id
是课程表的主键列。 每个表都有一个且只有一个主键,用于唯一标识表中的每一行。
注:为每个表定义主键是一个好习惯。
course_id
的数据类型是整数,由INT
关键字表示。 此外,course_id
列的值为AUTO_INCREMENT
。表示当在courses
表中插入新行而不提供course_id
列的值时,数据库系统将为该列生成一个整数值。course_name
存储课程名称。 其数据类型是最大长度为50
的字符串(VARCHAR
)。NOT NULL
约束确保course_name
列中不存储NULL
值。
现在有了存储课程数据的表。 要存储训练数据,请按如下方式创建名为training
的新表。
CREATE TABLE trainings (
employee_id INT,
course_id INT,
taken_date DATE,
PRIMARY KEY (employee_id , course_id)
);
trainings
表包含三列:
employee_id
列存储参加课程的员工的ID。course_id
列存储员工所采用的课程。taken_date
列存储员工参加课程的日期。
因为trainings
表的主键由两列组成:employee_id
和course_id
,所以必须使用PRIMARY KEY
表约束。
在本教程中,您学习了如何使用SQL CREATE TABLE
语句在数据库中创建新表。