SQL การใช้งาน SELECT INTO Statement

คำสั่ง SELECT INTO ใน SQL ใช้สำหรับการคัดลอกข้อมูลจากตารางหนึ่งไปยังอีกตารางหนึ่ง โดยสามารถใช้เพื่อสร้างตารางใหม่และนำข้อมูลจากตารางเดิมมาแทรกลงไปในตารางที่สร้างขึ้นใหม่ได้ในคราวเดียว มีรูปแบบการใช้งานดังนี้

SELECT * INTO new_table
FROM existing_table
WHERE condition;

คำสั่งนี้จะสร้างตารางใหม่ (new_table) และคัดลอกข้อมูลจากตารางที่มีอยู่ (existing_table) ตามเงื่อนไข (WHERE condition) นำไปแทรกในตารางที่สร้างขึ้นใหม่

สร้างตารางตัวอย่าง

สร้างตารางชื่อว่า Employees ด้วยคำสั่งดังนี้

SQL
CREATE TABLE Employees (
    EmployeeID INT PRIMARY KEY,
    FirstName NVARCHAR(50),
    LastName NVARCHAR(50),
    Department NVARCHAR(50),
    Salary DECIMAL(10, 2)
);

แทรกข้อมูลเข้าไปในตาราง Employees ด้วยคำสั่งดังนี้

SQL
INSERT INTO Employees (EmployeeID, FirstName, LastName, Department, Salary)
VALUES
(1, 'John', 'Doe', 'HR', 50000),
(2, 'Jane', 'Smith', 'Finance', 60000),
(3, 'Peter', 'Parker', 'IT', 75000),
(4, 'Mary', 'Johnson', 'Marketing', 55000);

รูปแบบการใช้คำสั่ง SELECT INTO

การคัดลอกข้อมูลทั้งหมดไปยังตารางใหม่

ในกรณีนี้เราจะสร้างตารางใหม่ที่ชื่อว่า EmployeeBackup โดยคัดลอกข้อมูลทั้งหมดจากตาราง Employees

SQL
SELECT * INTO EmployeeBackup
FROM Employees;

คำสั่งนี้จะสร้างตาราง EmployeeBackup โดยมีโครงสร้างเดียวกับตาราง Employees และคัดลอกข้อมูลทั้งหมดจากตาราง Employees มาใส่ในตารางนี้

การคัดลอกเฉพาะบางคอลัมน์ไปยังตารางใหม่

หากเราต้องการคัดลอกเฉพาะชื่อพนักงานและแผนกไปยังตารางใหม่ สามารถเขียนคำสั่งได้ดังนี้

SQL
SELECT FirstName, LastName, Department INTO EmployeeNameDept
FROM Employees;

คำสั่งนี้จะสร้างตารางใหม่ชื่อว่า EmployeeNameDept ที่มีเฉพาะคอลัมน์ FirstName, LastName, และ Department จากตาราง Employees และคัดลอกข้อมูลในคอลัมน์เหล่านั้นมาใส่

การคัดลอกข้อมูลบางส่วนโดยใช้เงื่อนไข

เราสามารถคัดลอกเฉพาะพนักงานที่มีเงินเดือนมากกว่า 55,000 ไปยังตารางใหม่ ดังนี้

SQL
SELECT * INTO HighSalaryEmployees
FROM Employees
WHERE Salary > 55000;

คำสั่งนี้จะสร้างตาราง HighSalaryEmployees และคัดลอกเฉพาะพนักงานที่มีเงินเดือนมากกว่า 55,000 จากตาราง Employees

การคัดลอกข้อมูลจากการคำนวณหรือตารางหลายตาราง

สมมุติว่าเรามีตาราง Departments ที่เก็บข้อมูลแผนกต่าง ๆ และเราต้องการรวมข้อมูลจากตาราง Employees และ Departments เพื่อสร้างตารางใหม่ที่มีข้อมูลพนักงานและชื่อแผนก เขียนคำสั่งได้ดังนี้

SQL
CREATE TABLE Departments (
    DepartmentID INT PRIMARY KEY,
    DepartmentName NVARCHAR(50)
);

INSERT INTO Departments (DepartmentID, DepartmentName)
VALUES
(1, 'HR'),
(2, 'Finance'),
(3, 'IT'),
(4, 'Marketing');

SELECT e.EmployeeID, e.FirstName, e.LastName, d.DepartmentName, e.Salary 
INTO EmployeeWithDept
FROM Employees e
JOIN Departments d ON e.Department = d.DepartmentName;
  • สร้างตาราง Departments ที่เก็บข้อมูลแผนกต่าง ๆ
  • สร้างตารางใหม่ชื่อ EmployeeWithDept ซึ่งประกอบด้วยข้อมูลพนักงานและชื่อแผนก โดยใช้การ JOIN ระหว่างตาราง Employees และ Departments

การใช้งาน SELECT INTO Statement ใน MySQL

ใน MySQL ไม่มีคำสั่ง SELECT INTO สำหรับคัดลอกข้อมูลไปยังตารางใหม่โดยตรงเหมือนใน SQL Server หรือ PostgreSQL แต่สามารถใช้คำสั่ง CREATE TABLE ร่วมกับ INSERT INTO ได้อย่างมีประสิทธิภาพแทนคำสั่ง SELECT INTO เพื่อสร้างตารางใหม่จากข้อมูลในตารางที่มีอยู่

สร้างตารางตัวอย่าง

SQL
CREATE TABLE Employees (
    EmployeeID INT PRIMARY KEY,
    FirstName VARCHAR(50),
    LastName VARCHAR(50),
    Department VARCHAR(50),
    Salary DECIMAL(10, 2)
);

INSERT INTO Employees (EmployeeID, FirstName, LastName, Department, Salary)
VALUES
(1, 'John', 'Doe', 'HR', 50000),
(2, 'Jane', 'Smith', 'Finance', 60000),
(3, 'Peter', 'Parker', 'IT', 75000),
(4, 'Mary', 'Johnson', 'Marketing', 55000);

การคัดลอกข้อมูลทั้งหมดไปยังตารางใหม่

ใน MySQL เราสามารถใช้คำสั่ง CREATE TABLE และ INSERT INTO ร่วมกันเพื่อคัดลอกข้อมูลทั้งหมดจากตารางเดิม ดังนี้

SQL
CREATE TABLE EmployeeBackup AS
SELECT * FROM Employees;

คำสั่งนี้จะสร้างตารางใหม่ชื่อ EmployeeBackup และคัดลอกข้อมูลทั้งหมดจากตาราง Employees ลงไปในตารางใหม่นี้

การคัดลอกเฉพาะบางคอลัมน์ไปยังตารางใหม่

หากต้องการคัดลอกเฉพาะบางคอลัมน์ เช่น ชื่อพนักงานและแผนก สามารถใช้คำสั่งต่อไปนี้

SQL
CREATE TABLE EmployeeNameDept AS
SELECT FirstName, LastName, Department FROM Employees;

คำสั่งนี้จะสร้างตารางใหม่ชื่อ EmployeeNameDept ที่มีเฉพาะคอลัมน์ FirstName, LastName, และ Department จากตาราง Employees

การคัดลอกข้อมูลบางส่วนโดยใช้เงื่อนไข

หากต้องการคัดลอกเฉพาะพนักงานที่มีเงินเดือนมากกว่า 55,000 ไปยังตารางใหม่ เขียนคำสั่งดังนี้

SQL
CREATE TABLE HighSalaryEmployees AS
SELECT * FROM Employees
WHERE Salary > 55000;

คำสั่งนี้จะสร้างตาราง HighSalaryEmployees และคัดลอกเฉพาะพนักงานที่มีเงินเดือนมากกว่า 55,000 จากตาราง Employees

แชร์เรื่องนี้