Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

วิธีคัดลอกค่าของคอลัมน์หนึ่งไปสร้างตารางใหม่ใน MySQL แบบง่ายที่สุด

การสร้างตารางใหม่จากคอลัมน์ของตารางเดิมด้วย CREATE TABLE ... AS SELECT

วิธีที่ง่ายและรวดเร็วที่สุดคือใช้คำสั่ง CREATE TABLE ... AS SELECT ซึ่งจะสร้างตารางใหม่พร้อมคัดลอกข้อมูลไปด้วยในคำสั่งเดียว

รูปแบบคำสั่ง

CREATE TABLE new_table_name (new_column_name data_type)
AS SELECT old_column_name AS new_column_name FROM old_table_name;

ตัวอย่าง: คัดลอกคอลัมน์ Score ไปสร้างตารางใหม่

1. สร้างตารางต้นทางและเพิ่มข้อมูล

CREATE TABLE DemoTable1 (
    Score INT
);

INSERT INTO DemoTable1 VALUES (89);
INSERT INTO DemoTable1 VALUES (98);
INSERT INTO DemoTable1 VALUES (91);

2. ดูข้อมูลต้นทาง

SELECT * FROM DemoTable1;

ผลลัพธ์:

+-------+
| Score |
+-------+
| 89    |
| 98    |
| 91    |
+-------+

3. สร้างตารางใหม่พร้อมคัดลอกข้อมูล

CREATE TABLE DemoTable2 (
    StudentScore INT
) AS SELECT Score AS StudentScore FROM DemoTable1;

ผลลัพธ์การรัน: Query OK, 3 rows affected (0.81 sec) Records: 3 Duplicates: 0 Warnings: 0

4. ตรวจสอบตารางใหม่

SELECT StudentScore FROM DemoTable2;

ผลลัพธ์:

+--------------+
| StudentScore |
+--------------+
| 89           |
| 98           |
| 91           |
+--------------+

คุณสมบัติที่สำคัญ

  • สร้างโครงสร้างตารางใหม่โดยอัตโนมัติจากผลลัพธ์ SELECT
  • คัดลอกข้อมูลไปพร้อมกันในคำสั่งเดียว (Atomic operation)
  • สามารถเปลี่ยนชื่อคอลัมน์ได้ด้วย AS
  • สามารถใส่เงื่อนไข WHERE ได้: AS SELECT ... WHERE Score > 90

ข้อจำกัด

  • ไม่คัดลอก PRIMARY KEY, AUTO_INCREMENT, INDEX, FOREIGN KEY, DEFAULT constraints
  • ไม่คัดลอก TRIGGER หรือ VIEW
  • ชนิดข้อมูลจะถูกอนุมานจากผลลัพธ์ SELECT

วิธีอื่น: INSERT INTO ... SELECT

หากมีตารางปลายทางอยู่แล้ว:

INSERT INTO DemoTable2 (StudentScore) SELECT Score FROM DemoTable1;

วิธีสำรองโครงสร้างเต็มรูปแบบ

CREATE TABLE DemoTable2 LIKE DemoTable1;
INSERT INTO DemoTable2 SELECT * FROM DemoTable1;

วิธีนี้จะคัดลอกโครงสร้าง (Indexes, Keys, Constraints) ทั้งหมดก่อน แล้วค่อยคัดลอกข้อมูล