CREATE TABLE LIKE 语法在 MySQL 中用于创建一个新的表,其结构与现有的另一个表完全相同,但不包含源表的数据。这是一种快速复制表结构而不复制数据的方法。

语法
CREATE TABLE new_table_name
LIKE existing_table_name;
  • 1.
  • 2.
示例

假设你有一个名为 employees 的表,你想创建一个名为 employees_backup 的新表,其结构与 employees 相同,但不包含任何数据。你可以使用以下 SQL 语句:

CREATE TABLE employees_backup
LIKE employees;
  • 1.
  • 2.
说明
  • new_table_name:新表的名字。
  • existing_table_name:你希望复制其结构的现有表的名字。
注意事项
  • CREATE TABLE LIKE 只会复制表的结构,包括列定义、索引等,但不会复制数据。
  • 如果你想要复制数据,可以结合 INSERT INTO ... SELECT 语句使用。
示例:创建表并填充数据

如果你不仅想复制结构,还想复制数据,可以使用以下步骤:

  1. 创建新表
CREATE TABLE employees_backup
LIKE employees;
  • 1.
  • 2.
  1. 插入数据
INSERT INTO employees_backup
SELECT * FROM employees;
  • 1.
  • 2.
示例:复制表结构并添加约束

如果你想要复制表结构的同时添加一些新的约束或修改某些列的定义,你可以使用 CREATE TABLE 语句,并指定所有列和约束:

CREATE TABLE employees_backup (
  id INT PRIMARY KEY AUTO_INCREMENT,
  first_name VARCHAR(50),
  last_name VARCHAR(50),
  email VARCHAR(100) UNIQUE,
  hire_date DATE,
  salary DECIMAL(10, 2),
  department_id INT,
  FOREIGN KEY (department_id) REFERENCES departments(id)
)
AS SELECT * FROM employees;
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.

在这个例子中,我们复制了 employees 表的结构,并添加了一个新的外键约束。AS SELECT * FROM employees; 部分用于同时复制数据。

总结

CREATE TABLE LIKE 是一种非常方便的方法来快速创建一个具有相同结构的新表。如果你需要复制数据,可以结合 INSERT INTO ... SELECT 语句使用。