Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MySQL

MySQL: Sao chép bảng (INSERT INTO SELECT)

Để sao chép dữ liệu từ bảng này sang bảng khác (có thể khác database), sử dụng câu lệnh INSERT INTO ... SELECT.

Cú pháp

INSERT INTO ten_database_b.ten_bang_moi (cot1, cot2, ...)
SELECT cot1, cot2, ... FROM ten_database_a.ten_bang_goc;

Ví dụ minh họa

Bước 1: Tạo database và bảng nguồn

mysql> CREATE DATABASE bothinnodbandmyisam;
mysql> USE bothinnodbandmyisam;

mysql> CREATE TABLE ThongTinSinhVien (
    -> Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    -> Ten VARCHAR(10),
    -> Tuoi INT
    -> );

Chèn dữ liệu:

mysql> INSERT INTO ThongTinSinhVien(Ten, Tuoi) VALUES('Larry', 30);
mysql> INSERT INTO ThongTinSinhVien(Ten, Tuoi) VALUES('Mike', 26);
mysql> INSERT INTO ThongTinSinhVien(Ten, Tuoi) VALUES('Bob', 26);
mysql> INSERT INTO ThongTinSinhVien(Ten, Tuoi) VALUES('Carol', 24);

Bước 2: Tạo database và bảng đích

mysql> USE sample;
mysql> CREATE TABLE BangSinhVien_Sample (
    -> SinhVienId INT NOT NULL AUTO_INCREMENT,
    -> TenSinhVien VARCHAR(20),
    -> TuoiSinhVien INT,
    -> PRIMARY KEY(SinhVienId)
    -> );

Thực hiện sao chép

mysql> INSERT INTO sample.BangSinhVien_Sample (TenSinhVien, TuoiSinhVien)
    -> SELECT Ten, Tuoi FROM bothinnodbandmyisam.ThongTinSinhVien;
Query OK, 4 rows affected (0.23 sec)

Kiểm tra bảng đích:

mysql> SELECT * FROM BangSinhVien_Sample;
+-----------+-------------+------------+
| SinhVienId | TenSinhVien | TuoiSinhVien |
+-----------+-------------+------------+
| 1         | Larry       | 30         |
| 2         | Mike        | 26         |
| 3         | Bob         | 26         |
| 4         | Carol       | 24         |
+-----------+------------+

Lưu ý: Số cột và kiểu dữ liệu trong SELECT phải khớp với cột đích. Cột AUTO_INCREMENT sẽ tự động sinh giá trị mới.