SQL CREATE表
在任何RDBMS中,数据库表用于以一些结构(字段和记录)的形式存储数据。在这里, 字段 是定义表中要存储数据的数据类型的列, 记录 是包含实际数据的行。SQL提供了各种查询来方便地与数据交互。我们可以使用SQL语句来创建和删除表,向这些表中插入、更新和删除数据。本教程将教你如何使用SQL创建表。有关与RDBMS相关的不同概念的更详细信息,请参阅RDBMS概念教程。
SQL CREATE TABLE语句
SQL提供了 CREATE TABLE 语句来在给定的数据库中创建一个新表。用于创建表的SQL查询必须定义表的结构。结构包括表的名称和表中每个列的名称及其数据类型。请注意,在数据库中每个表必须具有唯一的名称。
语法
以下是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语句后面。
然后在括号中列出了每个列的定义以及它是什么数据类型。以下示例可以使语法更清晰。
示例
以下代码块是一个示例,它创建了一个名为CUSTOMERS的表,其中ID是主键,NOT NULL是表示在创建记录时这些字段不能为空的约束条件。
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)
);
验证
创建表后,您可以检查它是否成功创建。您可以使用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 来创建一个表。
语法
以下是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的表,其中包含customer ID和customer 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 |