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

Đổi tên bảng trong MySQL với lệnh RENAME TABLE


Giới thiệu

Lệnh RENAME TABLE trong MySQL cho phép đổi tên bảng nhanh chóng, giữ nguyên cấu trúc, dữ liệu, index, khóa ngoại, trigger, v.v.

Cú pháp

RENAME TABLE old_table_name TO new_table_name;

Có thể đổi nhiều bảng cùng lúc:

RENAME TABLE t1 TO t2, t3 TO t4;

Ví dụ minh họa

Tạo bảng DemoTable1

mysql> CREATE TABLE DemoTable1 (
    Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    UserName VARCHAR(100),
    UserAge INT,
    UserCountryName VARCHAR(100)
);

Xem cấu trúc

mysql> DESC DemoTable1;
+-----------------+--------------+------+-----+---------+----------------+
| Field           | Type         | Null | Key | Default | Extra          |
+-----------------+--------------+------+-----+---------+----------------+
| Id              | int(11)      | NO   | PRI | NULL    | auto_increment |
| UserName        | varchar(100) | YES  |     | NULL    |                |
| UserAge         | int(11)      | YES  |     | NULL    |                |
| UserCountryName | varchar(100) | YES  |     | NULL    |                |
+-----------------+--------------+------+-----+---------+----------------+

Đổi tên thành DemoTable2

mysql> RENAME TABLE DemoTable1 TO DemoTable2;
Query OK, 0 rows affected (1.22 sec)

Kiểm tra cấu trúc bảng mới

mysql> DESC DemoTable2;

Cấu trúc y hệt DemoTable1.

Lưu ý quan trọng

  • Khóa bảng: RENAME TABLE khóa bảng trong quá trình thực hiện. Không thể truy cập bảng lúc đó.
  • Khóa ngoại: Nếu bảng bị tham chiếu bởi FK từ bảng khác, RENAME sẽ thất bại (trừ khi dùng SET FOREIGN_KEY_CHECKS=0 - không khuyến khích).
  • View/Trigger/Procedure: Các object tham chiếu tên bảng cũ sẽ BỊ VỠ (invalid). Cần cập nhật thủ công.
  • Quyền (Privileges): Quyền cấp trên bảng cũ **KHÔNG** tự chuyển sang bảng mới. Cần GRANT lại.
  • Transaction: RENAME TABLE không thể rollback (implicit commit).

Thay thế: ALTER TABLE RENAME

ALTER TABLE DemoTable1 RENAME TO DemoTable2;

Tương đương nhưng chỉ đổi 1 bảng mỗi câu lệnh.