在 MySQL 資料庫中複製行

Mehvish Ashiq 2024年2月15日
  1. 在 MySQL 資料庫中複製行
  2. 在 MySQL 資料庫中使用 INSERTSELECT 語句將行從一個表複製到另一個表
  3. 使用 INSERTSELECT 語句在具有自動增量 ID 的同一表中複製行
  4. 使用 INSERTSELECT 語句複製具有自定義 ID 的同一表中的行
在 MySQL 資料庫中複製行

今天的主題是關於在 MySQL 資料庫中複製行。我們將學習如何複製一行並將其貼上到具有自動增量 ID 和自定義 ID 的同一個表中。

我們還將瞭解如何從一個表的多行復制多個欄位並將它們貼上到另一個表中。

在 MySQL 資料庫中複製行

當需要另一個表中的兩個或多個精確列時,複製行很有用。我們可以將一行(一條記錄)從一個表複製到另一個表,而不是手動插入它們。

我們可以使用不同的方法來複制 MySQL 資料庫中的行。首先,為了學習這些方法,讓我們建立一個包含兩個表 tb_studentstb_attendancetest 資料庫。

示例程式碼:

# create a database
CREATE SCHEMA `test`;

# create students table
CREATE TABLE `test`.`tb_students` (
  `ID` INT NOT NULL AUTO_INCREMENT,
  `FIRSTNAME` VARCHAR(45) NOT NULL,
  `LASTNAME` VARCHAR(45) NOT NULL,
  `DEPARTMENT` VARCHAR(45) NOT NULL,
  `GENDER` VARCHAR(10) NOT NULL,
  `PHONE` BIGINT NOT NULL,
  `CITY` VARCHAR(45) NOT NULL,
  PRIMARY KEY (`ID`));

# create attendance table
CREATE TABLE `test`.`tb_attendance` (
  `ID` INT NOT NULL,
  `FIRSTNAME` VARCHAR(45) NOT NULL,
  `LASTNAME` VARCHAR(45) NOT NULL,
  `GENDER` VARCHAR(45) NOT NULL,
  `DEPT` VARCHAR(45) NOT NULL,
  `ATTENDANCE` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`ID`));

在 MySQL 資料庫中使用 INSERTSELECT 語句將行從一個表複製到另一個表

我們必須將資料插入到一個表中,才能將該表中的行復制到另一個表中。為此,我們按如下方式填充名為 tb_students 的表。

示例程式碼:

#insert data into the table
INSERT INTO `test`.`tb_students`
(FIRSTNAME, LASTNAME, DEPARTMENT, GENDER, PHONE, CITY)
VALUE
('Mehvish', 'Ashiq', 'Computer Science', 'Female', '1234567890', 'Lahore'),
('Thomas', 'Christopher', 'Physics', 'Male', '2546317908', 'Miami'),
('Daniel', 'James', 'Business Administration', 'Male', '7854123690', 'Texas'),
('Saira', 'Kethy', 'History', 'Female', '3254169870', 'Michigan');

#display table data
SELECT * FROM test.tb_students;

輸出:

複製 mysql 資料庫中的行 - 學生表

現在,從 tb_students 表中複製資料並將其插入 tb_attendace 表中。請注意,我們不是複製所有資料,而是複製特定欄位以填充 tb_attendance 表。

#insert data into the table
INSERT INTO `test`.`tb_attendance`
(ID, FIRSTNAME, LASTNAME, GENDER, DEPT)
SELECT ID, FIRSTNAME, LASTNAME, GENDER, DEPARTMENT
FROM `test`.`tb_students`;

#display table data
SELECT * FROM test.tb_attendance;

輸出:

複製 mysql 資料庫中的行 - 出勤表

使用 INSERTSELECT 語句在具有自動增量 ID 的同一表中複製行

在本節中,我們從 tb_students 表中複製一行,其中包含四條記錄,使用自動增量 ID 插入它,並更新 PHONECITY 屬性的值。

示例程式碼:

INSERT INTO `test`.`tb_students`
(FIRSTNAME, LASTNAME, DEPARTMENT, GENDER, PHONE, CITY)
SELECT FIRSTNAME, LASTNAME, DEPARTMENT, GENDER, '2564138790', 'Dubai'
FROM `test`.`tb_students`
WHERE `test`.`tb_students`.ID = 1;

SELECT * FROM `test`.`tb_students`;

輸出:

複製 mysql 資料庫中的行 - 複製並插入到具有自動增量 ID 的同一個表中

使用 INSERTSELECT 語句複製具有自定義 ID 的同一表中的行

如果我們不想在 tb_students 表中使用自增 ID 而是自定義 ID,我們可以在 INSERT 語句中寫入列名,在 SELECT 語句中寫入其值,如下所示。

示例程式碼:

INSERT INTO `test`.`tb_students`
(ID, FIRSTNAME, LASTNAME, DEPARTMENT, GENDER, PHONE, CITY)
SELECT 10,FIRSTNAME, LASTNAME, DEPARTMENT, GENDER, '2564138790', 'Dubai'
FROM `test`.`tb_students`
WHERE `test`.`tb_students`.ID = 1;

SELECT * FROM `test`.`tb_students`;

輸出:

複製 mysql 資料庫中的行 - 複製並插入到具有自定義 ID 的同一個表中

作者: Mehvish Ashiq
Mehvish Ashiq avatar Mehvish Ashiq avatar

Mehvish Ashiq is a former Java Programmer and a Data Science enthusiast who leverages her expertise to help others to learn and grow by creating interesting, useful, and reader-friendly content in Computer Programming, Data Science, and Technology.

LinkedIn GitHub Facebook

相關文章 - MySQL Database