SQL CREATE TABLE

SQL CREATE TABLE 语句用于创建数据库表。我们使用此表来存储记录(数据)。例如,

示例

-- create a table named Companies with different columns

CREATE TABLE Companies (
  id int,
  name varchar(50),
  address text,
  email varchar(50),
  phone varchar(10)
);

这里,SQL 命令创建了一个名为 Companies 的数据库,包含以下列:idnameaddressemailphone


SQL CREATE TABLE 语法

CREATE TABLE table_name (
    column1 datatype,
    column2 datatype,
    column3 datatype,
   ....
);

这里,

  • table_name 是您要创建的表的名称
  • column 是表中的列名
  • datatype 是列可以保存的数据类型(例如,整数、可变字符、日期)

示例:SQL CREATE TABLE

-- create a table Students with different columns
CREATE TABLE Students(
  id int,
  name varchar(50),
  address text,
  grades  varchar(50),
  phone varchar(10)
);

这里,我们创建了一个名为 Students 的表,包含列。

Create Table in SQL
在 SQL 中创建表

我们创建的表将不包含任何数据,因为我们没有向表中插入任何内容

这里,intvarchar(50)text 指定了可以在相应列中存储的数据类型。

注意:在创建表时,我们必须为每个列提供数据类型。要了解更多信息,请访问SQL 数据类型


CREATE TABLE IF NOT EXISTS

如果我们尝试创建一个已经存在的表,我们会收到错误消息 'Error: table already exists'

为了解决这个问题,我们可以在创建表时添加可选的 IF NOT EXISTS 命令。

让我们看一个例子。

-- create a Companies table if it does not exist

CREATE TABLE IF NOT EXISTS Companies (
  id int,
  name varchar(50),
  address text,
  email varchar(50),
  phone varchar(10)
);

这里,SQL 命令检查是否存在名为 Companies 的表,如果不存在,则创建一个具有指定列的表。


使用另一个现有表创建表

在 SQL 中,我们可以通过复制现有表的结构来创建新表。

让我们看一个例子。

-- create a backup table from the existing table Customers

CREATE TABLE CustomersBackup 
    AS 
    SELECT * 
    FROM Customers;

此 SQL 命令创建名为 CustomersBackup 的新表,复制 Customers 表的结构。

注意:您可以选择复制所有列或特定列。


更多关于 CREATE TABLE

创建带主键的表

要创建带主键的表,我们可以编写以下命令。

在 MySQL 中

CREATE TABLE Companies (
  id int,
  name varchar(50),
  address text,
  email varchar(50),
  phone varchar(10),
  PRIMARY KEY (id)
);

在 Oracle 和 SQL Server 中

CREATE TABLE Companies (
  id int NOT NULL PRIMARY KEY,
  name varchar(50),
  address text,
  email varchar(50),
  phone varchar(10)
);

要了解更多信息,请访问SQL PRIMARY KEY

在创建表时定义约束

我们还可以在创建表时添加不同类型的约束。例如,

CREATE TABLE Companies (
  id int NOT NULL,
  name varchar(50) NOT NULL,
  address text,
  email varchar(50) NOT NULL,
  phone varchar(10)
);

这里,约束 NOT NULL 已添加到列 idnameemail。它简单地表示这些列不能为空(NULL)。

要了解更多信息,请访问SQL 约束

注意:有时这些约束是特定于数据库的,这意味着这些关键字可能因数据库而异。

从现有表创建新的过滤表

我们可以通过根据特定条件从现有表中提取特定行来创建新表。我们可以使用 SELECTWHERE 子句。例如,

CREATE TABLE USACustomers AS 
  SELECT *
  FROM Customers
  WHERE country = 'USA';

输出

Create a New Filtered Table
创建新的过滤表

这里,我们创建了一个新表 USACustomers,其中包含所有来自 USA 的客户数据。


另请阅读

你觉得这篇文章有帮助吗?

我们的高级学习平台,凭借十多年的经验和数千条反馈创建。

以前所未有的方式学习和提高您的编程技能。

试用 Programiz PRO
  • 交互式课程
  • 证书
  • AI 帮助
  • 2000+ 挑战