SQL 创建表

12 Feb 2025 | 7 分钟阅读

在讨论创建表的命令之前,我们首先需要了解什么是表。

什么是表?

表用于在关系数据库中存储数据。它是由行和列组成的集合。数据库表中的每一列代表属性,每一行代表数据库表中的一组列值。表中的一行也称为记录。

以下是简单学生表的示例

第1行列1列2列3
第2行名称Class条款
第3行RahulBCAA
第4行AnjaliMCAB
第5行SunitaBTECHA

在上面的表格表示中,Student_Table 存储了有关学生的信息。

设计表时应遵循以下规则

  • 为表、列和索引使用描述性名称。例如:包含学校学生信息的表应具有像 rollno、name、class 等字段名,表应命名为 student_info 等。
  • 表中的每一列都应具有有效的数据类型。
  • 每个表至少必须有一个列。
  • 允许为空的列应最后定义,以节省存储空间。
  • 为每个表及其列的含义创建适当的文档。
  • 不要在表名中使用任何隐藏的代码或数字。

如何创建表?

SQL CREATE TABLE 语句用于在数据库中创建表。如果要创建表,则应为表命名并定义其列以及每列的数据类型。

要创建表,您必须拥有 CREATE TABLE 系统权限。如果您想在另一个用户的模式中创建表,则必须拥有 CREATE ANY TABLE 系统权限。

创建表时使用以下语法。

在上面的语法中,

  • Schema:这代表表所属的模式名称或用户名。
  • table_name:它代表在此表中要创建的列的名称。
  • column_name:它代表要在表中创建的列的名称。
  • Data_type:这代表每列的数据类型。为列分配数据类型时,它必须具有长度和精度,具体取决于指定的数据类型。列的数据类型可能因数据库而异。例如,NUMBER 在 Oracle 数据库中支持整数值,而在 MySQL 中支持 INT。
  • Default <expression>:如果插入语句省略了该列的值,则它会存储要分配给该列的值。表达式可以是固定值或任何 SQL 函数,如 sysdate 等。
  • Column constraints:约束是必须满足的值才能使列中的值有效的规则。列约束仅应用于单个列。
  • Table constraints:我们将约束应用于一个或多个列的组。在表级别,可以定义除 NOT NULL 之外的任何约束。

让我们举一个创建具有 ID 作为主键的 STUDENTS 表的示例,NOT NULL 是约束,表示在创建表中的记录时,这些字段不能为空。

如果您成功创建了表,可以通过查看 SQL Server 显示的消息来验证它,否则可以使用 DESC 命令,如下所示

SQL> DESC STUDENTS;

字段类型NULLDEFAULT额外
IDInt(11)PRI
姓名Varchar(20)
年龄Int(11)
地址Varchar(25)NULL

4 行已设置 (0.00 秒)

现在您的数据库中已有了 STUDENTS 表,您可以使用它来存储与学生相关的所需信息。

MySQL 中的 SQL CREATE TABLE 示例

让我们看看在 MySQL 数据库中创建表的命令。

说明

在上面的 mysql 查询中,将创建一个名为“Employee”的新表,其中包含列名 EmployeeID、FirstName、LastName、Email、AddreesLine、City。

Oracle 中的 SQL CREATE TABLE 示例

让我们看看在 Oracle 数据库中创建表的命令。

说明

在上面的 Oracle 查询中,将创建一个名为“Employee”的新表,其中包含 EmployeeID、FirstName、LastName、Email、AddreesLine、City 等列名。

Microsoft SQLServer 中的 SQL CREATE TABLE 示例

让我们看看在 SQLServer 数据库中创建表的命令。它与 MySQL 和 Oracle 相同。

说明

在上面的 Microsoft SQLSERVER 查询中,将创建一个名为“Employee”的新表,其中包含 EmployeeID、FirstName、LastName、Email、AddreesLine、City 等列名。

使用另一个表创建表

我们可以使用 create table 命令创建现有表的副本。新表具有与旧表相同的列签名。我们可以选择所有列或特定列。

如果使用旧表创建新表,新表将填充旧表中的现有值。

使用其他表创建表的​​基本语法是

在上述语法中, column1、column2 用于指定要与子查询返回的值关联的不同列名。这些列的规范是可选的。如果您未指定它,则将返回 Select 语句中指定的所有列。

以下 SQL 创建了一个 employee 表的副本。

以下 SQL 创建了一个 employee 表的副本。

说明

在上面的 sql 查询中,将创建一个名为“EmployeeCopy”的新表,其中包含 EmployeeID、FirstName、Email 等列名。它将包含 Select 语句返回的行。

使用上述查询创建表时应牢记的要点列表。

  • 如果给定了列属性,则列数必须等于子查询 select 语句中的列数。
  • 每当您使用子查询创建表时,只有 NOT NULL 约束会被复制。
  • 列定义包含仅列名和默认值。

SQL CREATE TABLE 语句中的 SQL 主键

以下查询在创建“Employee”表时,在“D”列上创建了 PRIMARY KEY。

MySQL

SQL Server / Oracle / MS Access

使用以下查询为多个列定义 PRIMARY KEY 约束,并允许为 PRIMARY KEY 约束命名。

适用于 MySQL / SQL Server / Oracle / MS Access

SQL Create Table 的多项选择题

1. 在以下语法中,哪种方式是正确的 SQL 创建表的方式?





答案:c

说明

在上面的问题中,选项 c 是创建 SQL 表的正确方法。


2. 在以下命令列表中,哪个用于创建表?

  1. create
  2. make
  3. define
  4. 以上所有

答案:a

说明

Create table 是用于创建表的 DDL 命令。


3. SQL 表中有多少个主键?

  1. 一个
  2. 以上都不是

答案:a

说明

在 SQL 表中,只有一个主键。


4. 在 SQL 表中,哪个约束用于定义条件?

  1. 默认约束
  2. CHECK 约束
  3. 主键约束
  4. 外键约束

答案:b

说明

CHECK 约束允许您定义在将值插入表之前必须满足的条件,然后才能接受该值。这也称为业务规则约束。


5. 哪个约束用于在表中定义 UNIQUE 和 NOT NULL 约束?

  1. NOT NULL 约束
  2. UNIQUE KEY 约束
  3. 主键约束
  4. 外键约束

答案:c

说明

主键是唯一键约束和非空约束的组合。


下一主题SQL DROP TABLE