Mysql 简明教程

MySQL - Create Tables

在 MySQL 关系数据库系统中,SQL 用于以结构化表格的形式存储数据。这些表格由字段和记录组成。一个字段表示一个定义了要存储在表格中的数据类型的列,记录是一行,它包含实际数据。MySQL 提供了各种查询来与数据交互,允许你创建表格、更新表格、删除表格等。

MySQL Create Table Statement

要在提示符中创建 MySQL RDBMS 表,请使用 CREATE TABLE 语句。

MySQL 创建表格的查询必须定义表格的结构。结构由表格的名称和表格中的列名称加上各列的数据类型组成。请注意,每个表格在数据库中都必须有唯一名称。

首先,表格创建命令需要以下详细信息 -

  1. Name of the table.

  2. Name of the columns.

  3. Definitions for each column.

Syntax

以下是创建 MySQL 表的基本 SQL 语法 -

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

Example

在以下查询中,我们使用 CREATE TABLE 语句创建一个名为 CUSTOMERS 的表 -

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

此处,需要对几个项目进行说明 -

  1. MySQL 中的字段属性 AUTO_INCREMENT 会为每个新增记录自动将 ID 列中的值递增一。它从下一个可用编号开始。

  2. 正在使用字段属性 NOT NULL ,因为我们不希望该字段为 NULL。所以,如果用户尝试创建一个具有该字段的 NULL 值的记录,那么 MySQL 将引发一个错误。

  3. 关键字 PRIMARY KEY 用于将列定义为主键。它确保该列中的每条记录均是唯一的。还可通过用逗号分隔它们来用于多列。

Output

当我们执行上述查询时,输出将获得如下:

Query OK, 0 rows affected (0.03 sec)

Verification

完成创建表后,我们可以使用以下查询检查是否成功创建 -

DESC CUSTOMERS;

上述查询显示 CUSTOMERS 表的结构:列名称、数据类型等。

Creating Tables from Command Prompt

我们可以通过定义结构和列从命令提示符创建 MySQL 表。

以下是在命令提示符下创建 MySQL 表的操作步骤:

  1. 首先,打开命令提示符并输入以下命令: mysql -u root -p ,以访问 MySQL 数据库管理系统。

  2. 输入命令后,输入密码登录 MySQL 服务器。

  3. 然后,我们可以使用尊重 SQL CREATE TABLE 查询开始创建表。

Example

在以下示例中,我们从命令提示符创建一个名为 CUSTOMERS 的 MySQL 表。

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

NOTE - MySQL 在 SQL 命令末尾输入分号 (;) 之前不会终止命令。

Output

当我们执行上述查询时,输出将获得如下:

Query OK, 0 rows affected (0.03 sec)

Verification

我们可以使用以下查询验证是否成功创建表 -

mysql> DESC CUSTOMERS;

上述查询将显示 CUSTOMERS 表的结构和说明 -

Creating a Table from an Existing Table

我们可以通过使用 SQL CREATE TABLE 和 SELECT 语句创建现有表的副本表,包括其结构和数据。副本表具有相同的列及其定义,并且还会填充与原始表相同的数据。

Note - 因为它是一个全新的表,所以对它所做的任何更改都不会反映在源表中。

Syntax

以下是通过其他表创建表的语法 -

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

此处,column1、column2…​是现有表的字段,可以用来创建新表的字段。并且 WHERE 子句可以随时使用。

Example

我们来考虑 TUTORIALS 数据库中现有的表 CUSTOMERS

mysql> USE TUTORIALS;
Database changed
mysql> SELECT * FROM CUSTOMERS;

以下为 CUSTOMERS 表 −

现在,使用以下查询,我们正创建一个名为 SAMPLE 的新表,其结构和记录与 CUSTOMERS 相同。

CREATE TABLE SAMPLE AS
SELECT * FROM CUSTOMERS;

Output

正如我们在输出中看到的那样,表 SAMPLE 已成功创建。

Query OK, 7 rows affected (0.03 sec)
Records: 7  Duplicates: 0  Warnings: 0

Verification

使用以下 SELECT 语句,让我们验证新表 SAMPLE 是否包含记录。

SELECT * FROM SAMPLE;

就像我们在下面的输出中看到的,SAMPLE 表已创建,并且包含 CUSTOMER 表中的所有记录。 −

The IF NOT EXISTS clause

如果您尝试使用现有名称创建一个表,将生成一个错误。 −

CREATE TABLE Employee(Name VARCHAR(255));
ERROR 1050 (42S01): Table 'employee' already exists

如果您按如下所示使用 IF NOT EXISTS 子句以及 CREATE 语句,将创建一个新表,并且如果存在具有给定名称的表,则将忽略该查询。

CREATE TABLE Test(Name VARCHAR(255));
Query OK, 0 rows affected (0.69 sec)

Create table into MySQL Database Using a Client Program

除了使用 MySQL 查询将表创建到 MySQL 数据库中,我们还可以使用客户端程序执行 CREATE TABLE 操作。

Syntax

以下是在各种编程语言中创建表的语法 −

Example

以下是这些程序 −