SQL - 创建表



本教程将教你如何使用 SQL 在 RDBMS 中创建表。我们使用 **CREATE TABLE 命令** 在数据库中创建一个表。

在 RDBMS 中,数据库表用于以某种结构(字段和记录)的形式存储数据。这里,**字段** 是定义要存储在表中的数据类型的列,而 **记录** 是包含实际数据的行。简单来说,我们可以说表是行和列的组合。

SQL 提供各种查询,以便以方便的方式与数据交互。我们可以使用 SQL 语句创建和删除表,以及插入、更新和删除这些表中的数据。

有关与 RDBMS 相关的不同概念的更多详细信息,请查看 RDBMS 概念 教程。

SQL CREATE TABLE 语句

SQL 提供 CREATE TABLE 语句来在给定数据库中创建一个新表。创建表的 SQL 查询必须定义表的结构。该结构包括表名以及表中列的名称,以及每列的数据类型。请注意,每个表在数据库中都必须具有唯一的名称。

语法

CREATE TABLE 语句用于在数据库中创建新表。

CREATE TABLE table_name(
   column1 datatype,
   column2 datatype,
   column3 datatype,
   .....
   columnN datatype,
   PRIMARY KEY( one or more columns )
);

以下是关键点:

  • CREATE TABLE 是告诉数据库系统您想要做什么的关键字。在本例中,您想要创建一个新表。表的唯一名称或标识符位于 CREATE TABLE 语句之后。
  • 列参数(例如 column1、column2、column3 等)指定表的列名。
  • 数据类型参数指定列可以容纳的数据类型(例如整数、varchar、字符串等)。
  • PRIMARY KEY 约束唯一标识表中的每条记录。主键必须包含唯一值,并且不能包含 NULL 值。

示例:在 SQL 中创建表

CREATE TABLE CUSTOMERS(
   ID          INT NOT NULL,
   NAME        VARCHAR (20) NOT NULL,
   AGE         INT NOT NULL,
   ADDRESS     CHAR (25),
   SALARY      DECIMAL (18, 2),
   PRIMARY KEY (ID)
);

以下是关键点:

  • 以下代码块是一个示例,它创建一个 CUSTOMERS 表,列名为 ID、NAME、AGE、ADDRESS 和 SALARY,并将 ID 作为主键。
  • NOT NULL 是约束条件,表示在创建此表中的记录时,这些字段不能为 NULL。

验证

创建表后,您可以检查它是否已成功创建。您可以使用 SQL **DESC table_name** 命令列出表的描述,如下所示

DESC CUSTOMERS;

这将显示创建的表的结构:列名、各自的数据类型、约束(如有)等。

字段 类型 Null 默认值 额外
ID int(11) PRI NULL
NAME varchar(20) NULL
AGE int(11) NULL
ADDRESS char(25) NULL
SALARY decimal(18,2) NULL

现在,您的数据库中已经有了一个 CUSTOMERS 表,您可以使用它来存储与客户相关的所需信息。

SQL CREATE TABLE IF NOT EXISTS

考虑这样一种情况:您将尝试创建一个已经存在的表,在这种情况下,MySQL 将抛出以下错误。

ERROR 1050 (42S01): Table 'CUSTOMERS' already exists

因此,为了避免此类错误,我们可以使用 SQL 命令 **CREATE TABLE IF NOT EXISTS** 来创建表。

语法

以下是 CREATE TABLE IF NOT EXISTS 语句的基本语法:

CREATE TABLE IF NOT EXISTS table_name(
   column1 datatype,
   column2 datatype,
   column3 datatype,
   .....
   columnN datatype,
   PRIMARY KEY( one or more columns )
);

示例:创建表(如果不存在)

以下 SQL 命令仅在不存在同名表时才创建 **CUSTOMERS** 表,否则它将退出而不会出现任何错误。

CREATE TABLE IF NOT EXISTS CUSTOMERS(
   ID          INT NOT NULL,
   NAME        VARCHAR (20) NOT NULL,
   AGE         INT NOT NULL,
   ADDRESS     CHAR (25),
   SALARY      DECIMAL (18, 2),
   PRIMARY KEY (ID)
);

从现有表创建表

无需每次都创建新表,也可以将现有表及其内容(包括其结构)复制到新表中。这可以使用 CREATE TABLE 语句和 SELECT 语句的组合来完成。由于复制了其结构,因此新表将具有与原始表相同的列定义。此外,将使用旧表中的现有值填充新表。

语法

从另一个表创建表的基本语法如下:

CREATE TABLE NEW_TABLE_NAME AS
SELECT [column1, column2...columnN]
FROM EXISTING_TABLE_NAME
WHERE Condition;

这里,column1、column2…是现有表的字段,并将用于创建新表的字段。

示例:从现有表创建表

以下是一个示例,它将使用 CUSTOMERS 表创建一个 SALARY 表,并包含客户 ID 和客户 SALARY 字段:

CREATE TABLE SALARY AS
SELECT ID, SALARY
FROM CUSTOMERS;

这将创建一个新的 SALARY 表,该表将具有以下结构:

字段 类型 Null 默认值 额外
ID int(11) PRI NULL
SALARY decimal(18,2) NULL
广告