1. Giới thiệu
Câu lệnh INSERT INTO trong SQL được sử dụng để thêm dữ liệu mới vào bảng trong cơ sở dữ liệu. Khi bạn cần nhập dữ liệu như thông tin khách hàng, sản phẩm, đơn hàng hoặc bất kỳ loại thông tin nào vào bảng, câu lệnh INSERT INTO là công cụ giúp bạn thực hiện điều này.
Bài viết này sẽ hướng dẫn chi tiết về cú pháp, cách sử dụng và các ví dụ thực tế của câu lệnh INSERT INTO trong MySQL để bạn có thể dễ dàng áp dụng trong công việc của mình.
2. SQL INSERT INTO là gì?
Câu lệnh INSERT INTO được sử dụng để chèn một hoặc nhiều bản ghi mới vào một bảng trong cơ sở dữ liệu. Bạn có thể chỉ định rõ các cột mà bạn muốn chèn dữ liệu, hoặc nếu bạn đã chuẩn bị dữ liệu cho tất cả các cột của bảng, bạn có thể bỏ qua phần khai báo cột.
Cú pháp tổng quát của SQL INSERT INTO:
INSERT INTO table_name (column1, column2, column3, ...)
VALUES (value1, value2, value3, ...);table_name: Tên bảng mà bạn muốn thêm dữ liệu.column1, column2, column3, ...: Các cột mà bạn muốn chèn dữ liệu vào (tùy chọn).value1, value2, value3, ...: Giá trị tương ứng với các cột mà bạn muốn chèn.
3. Các trường hợp sử dụng SQL INSERT INTO
a. Sử dụng SQL INSERT INTO khi chỉ định rõ các cột
Trong trường hợp bạn muốn chỉ chèn dữ liệu vào một số cột cụ thể của bảng, bạn có thể liệt kê rõ các cột đó.
Ví dụ 1: Thêm một nhân viên mới với thông tin cơ bản
Giả sử bạn có bảng employees với các cột first_name, last_name, age, và department, bạn có thể thêm một nhân viên mới như sau:
INSERT INTO employees (first_name, last_name, age, department)
VALUES ('John', 'Doe', 30, 'Sales');Trong ví dụ này, chúng ta chỉ định rõ các cột mà chúng ta muốn chèn dữ liệu (first_name, last_name, age, department), và các giá trị tương ứng cho từng cột.
b. Sử dụng SQL INSERT INTO khi chèn giá trị cho tất cả các cột
Nếu bạn chèn giá trị vào tất cả các cột của bảng, bạn có thể bỏ qua phần liệt kê cột và chỉ cần chèn giá trị theo đúng thứ tự các cột trong bảng.
Ví dụ 2: Thêm một sản phẩm mới
Giả sử bạn có bảng products với các cột product_id, product_name, category, và price, bạn có thể chèn một sản phẩm mới như sau:
INSERT INTO products
VALUES (101, 'Laptop', 'Electronics', 15000000);Câu lệnh này sẽ chèn sản phẩm mới với product_id là 101, tên sản phẩm là "Laptop", thuộc danh mục "Electronics" và giá là 15,000,000.
c. Chèn nhiều bản ghi cùng một lúc
Bạn có thể chèn nhiều bản ghi vào bảng trong một lần bằng cách liệt kê nhiều bộ giá trị trong phần VALUES.
Ví dụ 3: Thêm nhiều khách hàng cùng lúc
Giả sử bạn có bảng customers với các cột customer_id, first_name, last_name, city, bạn có thể thêm nhiều khách hàng cùng một lúc như sau:
INSERT INTO customers (customer_id, first_name, last_name, city)
VALUES
(1, 'Alice', 'Smith', 'Hà Nội'),
(2, 'Bob', 'Johnson', 'Đà Nẵng'),
(3, 'Charlie', 'Brown', 'TP. Hồ Chí Minh');Câu lệnh này sẽ thêm ba khách hàng vào bảng customers với các thông tin tương ứng.
4. Cách sử dụng SQL INSERT INTO với các kiểu dữ liệu khác nhau
a. Chèn dữ liệu kiểu chuỗi
Khi chèn dữ liệu kiểu chuỗi (TEXT, VARCHAR, CHAR), bạn cần bao bọc giá trị bằng dấu nháy đơn '.
Ví dụ:
INSERT INTO employees (first_name, last_name)
VALUES ('Nguyen', 'Thanh');b. Chèn dữ liệu kiểu số
Dữ liệu kiểu số (INTEGER, FLOAT, DOUBLE) có thể được chèn trực tiếp mà không cần dấu nháy.
Ví dụ:
INSERT INTO products (product_id, price)
VALUES (101, 199000);c. Chèn dữ liệu kiểu ngày tháng
Dữ liệu kiểu ngày tháng (DATE, DATETIME) cần được định dạng đúng chuẩn YYYY-MM-DD hoặc YYYY-MM-DD HH:MM:SS.
Ví dụ:
INSERT INTO orders (order_date)
VALUES ('2023-09-01');5. Một số lưu ý khi sử dụng SQL INSERT INTO
a. Chèn thiếu giá trị cho cột có ràng buộc
Nếu bảng của bạn có các cột bắt buộc (ví dụ như cột có ràng buộc NOT NULL), bạn cần chắc chắn rằng đã chèn giá trị hợp lệ cho các cột này. Nếu không, câu lệnh INSERT sẽ gây lỗi.
Ví dụ:
-- Nếu cột 'email' bắt buộc không được để NULL
INSERT INTO customers (customer_id, first_name, last_name)
VALUES (1, 'John', 'Doe'); -- Gây lỗi nếu 'email' bắt buộcb. Chèn giá trị tự động cho cột AUTO_INCREMENT
Nếu bạn có cột AUTO_INCREMENT trong bảng (thường là cột id), bạn không cần phải chèn giá trị cho cột đó, MySQL sẽ tự động tạo giá trị mới.
Ví dụ:
INSERT INTO customers (first_name, last_name)
VALUES ('John', 'Doe'); -- MySQL tự động tăng giá trị cho cột idc. Sử dụng INSERT IGNORE để bỏ qua lỗi
Nếu bạn muốn bỏ qua các lỗi xảy ra khi chèn dữ liệu (chẳng hạn như trùng khóa chính), bạn có thể sử dụng INSERT IGNORE. Khi gặp lỗi, câu lệnh sẽ không chèn bản ghi gây lỗi nhưng sẽ tiếp tục thực hiện các bản ghi khác.
Ví dụ:
INSERT IGNORE INTO employees (employee_id, first_name, last_name)
VALUES (1, 'John', 'Doe'); -- Bỏ qua lỗi nếu id 1 đã tồn tạid. Sử dụng INSERT INTO ... SELECT để chèn dữ liệu từ một bảng khác
Bạn có thể chèn dữ liệu từ một bảng khác vào bảng hiện tại bằng cách sử dụng INSERT INTO kết hợp với câu lệnh SELECT.
Ví dụ:
INSERT INTO archive_employees (first_name, last_name)
SELECT first_name, last_name
FROM employees
WHERE department = 'Sales';Câu lệnh trên sẽ sao chép tất cả các nhân viên trong bộ phận "Sales" từ bảng employees sang bảng archive_employees.
6. Các ví dụ về SQL INSERT INTO
Ví dụ 1: Thêm một sản phẩm mới vào bảng products
INSERT INTO products (product_name, category, price)
VALUES ('Smartphone', 'Electronics', 12000000);Ví dụ 2: Thêm một đơn hàng mới vào bảng orders với ngày đặt hàng
INSERT INTO orders (order_id, order_date, customer_id, total_amount)
VALUES (1, '2023-09-01', 101, 500000);Ví dụ 3: Thêm nhiều nhân viên mới vào bảng employees
INSERT INTO employees (first_name, last_name, department, salary)
VALUES
('Alice', 'Nguyen', 'Marketing', 15000000),
('Bob', 'Tran', 'IT', 20000000),
('Charlie', 'Pham', 'HR', 12000000);Ví dụ 4: Chèn dữ liệu vào bảng từ một bảng khác
INSERT INTO archived_customers (first_name, last_name, city)
SELECT first_name, last_name, city
FROM customers
WHERE city = 'Hà Nội';7. Kết luận
Câu lệnh INSERT INTO trong SQL là một trong những công cụ quan trọng nhất để chèn dữ liệu vào bảng. Bạn có thể thêm một hoặc nhiều bản ghi, chỉ định rõ cột nào cần chèn dữ liệu, và thậm chí có thể chèn dữ liệu từ bảng khác. Hiểu cách sử dụng câu lệnh này sẽ giúp bạn quản lý dữ liệu hiệu quả hơn và tối ưu hóa quy trình làm việc với cơ sở dữ liệu.
Hãy thực hành và thử áp dụng các kiến thức này trong các dự án thực tế của bạn trên CodeTutHub để thành thạo hơn trong việc thao tác với dữ liệu!








