SQL - 複製表格:初學者指南

你好,未來的數據庫魔法師們!今天,我們將踏上一段令人興奮的旅程,進入 SQL 表格複製的世界。別擔心如果你從未寫過一行代碼——我將成為你的友好導遊,我們會一步一步地進行。在這個教學的結尾,你將能像專家一樣複製表格!

SQL - Clone Tables

什麼是表格複製?

在我們深入細節之前,讓我們先了解什麼是表格複製。想像你有一本喜歡的書,你想製作一本它的精確副本。這就是我們在數據庫表格上做的事情。我們正在創建一個與現有表格完全相同的新表格。

那麼,我們為什麼想要這樣做呢?有許多原因:

  1. 在不危及原始數據的情況下測試新功能
  2. 創建備份
  3. 為新項目複製數據結構

好的,讓我們挽起袖子開始吧!

在 MySQL 中的簡單複製

讓我們從 MySQL 中最簡單的複製形式開始。這種方法創建了你的表格的精確副本,包括其結構和所有數據。

基本語法

CREATE TABLE new_table SELECT * FROM original_table;

讓我們分解一下:

  • CREATE TABLE new_table:這部分告訴 MySQL 創建一個新表格。
  • SELECT * FROM original_table:這選擇原始表格的所有列和行。

示例

想像我們有一個包含一些數據的名為 students 的表格:

CREATE TABLE students (
id INT PRIMARY KEY,
name VARCHAR(50),
age INT
);

INSERT INTO students VALUES (1, 'Alice', 20), (2, 'Bob', 22), (3, 'Charlie', 21);

現在,讓我們複製這個表格:

CREATE TABLE students_clone SELECT * FROM students;

瞧!你现在有一個名為 students_clonestudents 表格的精確副本。

局限性

儘管這種方法快速且容易,但它有一些局限性:

  1. 它不會複製索引(除主鍵外)。
  2. 它不會複製外鍵約束。

在 MySQL 中的淺層複製

淺層複製創建一個具有原始表格結構的新表格,但不複製數據。

語法

CREATE TABLE new_table LIKE original_table;

示例

使用我們之前的 students 表格:

CREATE TABLE students_structure LIKE students;

這將創建一個名為 students_structure 的新表格,它具有與 students 相同的列和數據類型,但它是空的。

何時使用

當你需要表格的結構而不是它的數據時,淺層複製很有用。例如,當你設置測試環境或為新項目創建模板時。

在 MySQL 中的深層複製

深層複製是最全面的複製方法。它複製表格結構、索引和所有數據。

語法

CREATE TABLE new_table LIKE original_table;
INSERT INTO new_table SELECT * FROM original_table;

示例

讓我們創建我們的 students 表格的深層複製:

CREATE TABLE students_full_clone LIKE students;
INSERT INTO students_full_clone SELECT * FROM students;

這個兩步過程首先創建一個具有相同結構(包括索引)的空表格,然後用原始表格的數據填充它。

優勢

深層複製保留原始表格的一切:

  1. 表格結構
  2. 索引
  3. 數據
  4. 外鍵約束(如果你在 CREATE TABLE 語句中包含它們)

在 SQL Server 中的表格複製

現在,讓我們換個方向,看看如何在 SQL Server 中複製表格。過程有些不同,但概念是相同的。

語法

SELECT * INTO new_table FROM original_table;

示例

讓我們說我們在 SQL Server 中有一個 products 表格:

CREATE TABLE products (
id INT PRIMARY KEY,
name VARCHAR(50),
price DECIMAL(10,2)
);

INSERT INTO products VALUES (1, 'Laptop', 999.99), (2, 'Mouse', 19.99), (3, 'Keyboard', 49.99);

複製這個表格:

SELECT * INTO products_clone FROM products;

這將創建一個與 products 相同結構和數據的新表格 products_clone

單複製結構

如果你想在 SQL Server 中複製僅結構而不帶數據:

SELECT * INTO new_table FROM original_table WHERE 1 = 0;

WHERE 1 = 0條件確保不選擇任何行,給你一個原始表格結構的空複製。

複製方法的比較

讓我們總結我們學到的不同複製方法:

方法 語法 複製結構 複製數據 複製索引 複製約束
簡單複製 (MySQL) CREATE TABLE new_table SELECT * FROM original_table; 否(除PK外)
淺層複製 (MySQL) CREATE TABLE new_table LIKE original_table;
深層複製 (MySQL) CREATE TABLE new_table LIKE original_table; INSERT INTO new_table SELECT * FROM original_table;
SQL Server 複製 SELECT * INTO new_table FROM original_table;

結論

就是这样,各位!我們已經穿越了 SQL 表格複製的世界,從簡單副本到深層複製。記住,每種方法都有其應用場景,所以選擇最適合你需求的那一種。

在你繼續你的 SQL 冒險時,你會發現複製表格是一個在工具箱中很方便的技能。這就像為你的數據庫擁有一台影印機——當你需要時非常有用!

繼續練習,很快你就能夠在睡夢中複製表格(雖然我不建議在睡著時編程——相信我,我試過,結果...很有趣)。

開心地編程,願你的查詢總是順利運行!

Credits: Image by storyset