Sql 简明教程

SQL - CREATE Table

本教程将教您如何使用 SQL 在 RDBMS 中创建表。我们使用 CREATE TABLE command 在数据库中创建表。

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

SQL 提供了多种查询,可以方便地与数据进行交互。我们可以使用 SQL 语句在这些表中创建和删除表,插入、更新和删除数据。

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

The SQL CREATE TABLE Statement

SQL 提供了 CREATE TABLE 语句,用于在给定数据库中创建新表。用于创建表的 SQL 查询必须定义表的结构。结构由表的名称和表中列的名称及其每个列的数据类型组成。请注意,每个表在数据库中必须有唯一的名称。

Syntax

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

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

以下是要点 -

  1. CREATE TABLE 是一个关键字,它告诉数据库系统你要做什么。在这种情况下,你想创建一个新表。表的唯一名称或标识符位于 CREATE TABLE 语句后面。

  2. 列参数(例如 column1、column2、column3 等)指定表中列的名称。

  3. datatype 参数指定列可以容纳的数据类型(例如整数、varchar、字符串等)。

  4. PRIMARY KEY 约束唯一标识表中的每条记录。主键必须包含唯一值,且不能包含空值。

Example: Creating Table in 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)
);

以下是要点 -

  1. 以下代码块是一个示例,它创建一个 CUSTOMERS 表,其中列名为 ID、NAME、AGE、ADDRESS 和 SALARY,而 ID 是主键。

  2. NOT NULL 是约束,表示创建表中的记录时,这些字段不能为 NULL。

Verification

创建表后,可以检查它是否已成功创建。可以使用 SQL DESC table_name 命令按以下方式列出表的说明:

DESC CUSTOMERS;

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

Field

Type

Null

Key

Default

Extra

ID

int(11)

NO

PRI

NULL

NAME

varchar(20)

NO

NULL

AGE

int(11)

NO

NULL

ADDRESS

char(25)

YES

NULL

SALARY

decimal(18,2)

YES

NULL

现在,你的数据库中已经有了 CUSTOMERS 表,可以使用此表来存储与客户相关的信息。

SQL CREATE TABLE IF NOT EXISTS

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

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

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

Syntax

以下是 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 )
);

Example: Creating Table if Not Exists

只有当不存在具有相同名称的表时,以下 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)
);

Creating a Table from an Existing Table

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

Syntax

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

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

此处,column1、column2 等是现有表中的字段,并且将被用于创建新表的字段。

Example: Creating Table from an Existing Table

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

CREATE TABLE SALARY AS
SELECT ID, SALARY
FROM CUSTOMERS;

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

Field

Type

Null

Key

Default

Extra

ID

int(11)

NO

PRI

NULL

SALARY

decimal(18,2)

YES

NULL