Trong bài viết này, chúng ta sẽ học được cách sử dụng câu lệnh MySQL INSERT
để chèn một hoặc nhiều bản ghi vào một bảng.
Giới thiệu về câu lệnh MySQL INSERT
Câu lệnh INSERT
cho phép bạn chèn một hoặc nhiều hàng vào một bảng. Dưới đây là một cách viết của câu lệnh INSERT
:
INSERT INTO table(c1,c2,...) VALUES (v1,v2,...);
Trong cú pháp này,
- Đầu tiên, chỉ định tên bảng và danh sách các cột được phân tách bằng dấu phẩy bên trong dấu ngoặc đơn sau mệnh đề
INSERT INTO
. - Sau đó, đặt danh sách các giá trị của các cột tương ứng được phân tách bằng dấu phẩy bên trong dấu ngoặc đơn theo sau từ khóa
VALUES
.
Số cột và giá trị phải giống nhau. Ngoài ra, vị trí của các cột phải tương ứng với vị trí của các giá trị của chúng.
Để chèn nhiều hàng vào một bảng bằng một câu lệnh INSERT
, bạn sử dụng cú pháp sau:
INSERT INTO table(c1,c2,...) VALUES (v11,v12,...), (v21,v22,...), ... (vnn,vn2,...);
Trong cú pháp này, các hàng được phân tách bằng dấu phẩy trong mệnh đề VALUES
.
Ví dụ về MySQL INSERT
Chúng ta sẽ tạo một bảng mới có tên tasks
để thực hành câu lệnh INSERT
.
CREATE TABLE IF NOT EXISTS tasks ( task_id INT AUTO_INCREMENT, title VARCHAR(255) NOT NULL, start_date DATE, due_date DATE, priority TINYINT NOT NULL DEFAULT 3, description TEXT, PRIMARY KEY (task_id) );
1) MySQL INSERT – ví dụ đơn giản về INSERT
Câu lệnh sau đây chèn một hàng mới vào bảng tasks
:
INSERT INTO tasks(title,priority) VALUES('Learn MySQL INSERT Statement',1);
MySQL trả về thông báo sau:
1 row(s) affected
Điều đó có nghĩa là một hàng đã được chèn vào bảng tasks
thành công.
Truy vấn này trả về dữ liệu từ bảng tasks
:
SELECT * FROM tasks;
kết quả:
Trong ví dụ này, chúng tôi đã chỉ định các giá trị cho cột title
và priority
. Đối với các cột khác, MySQL sử dụng các giá trị mặc định.
Cột task_id
là một AUTO_INCREMENT
cột. Điều đó có nghĩa là MySQL tạo ra một số nguyên tuần tự bất cứ khi nào một hàng được chèn vào bảng.
Các cột start_date
, due_date
, và sử dụng làm giá trị mặc định, do đó, MySQL sử dụng để chèn vào các cột này nếu bạn không chỉ định giá trị của chúng trong câu lệnh.description
NULL
NULL
INSERT
2) MySQL INSERT – Ví dụ về chèn hàng bằng giá trị mặc định
Nếu bạn muốn chèn một giá trị mặc định vào một cột, bạn có hai cách:
- Bỏ qua cả tên cột và giá trị trong câu lệnh
INSERT
. - Chỉ định tên cột trong mệnh đề
INSERT INTO
và sử dụng từ khóaDEFAULT
trong mệnh đềVALUES
.
Ví dụ sau minh họa cách thứ hai:
INSERT INTO tasks(title,priority) VALUES('Understanding DEFAULT keyword in INSERT statement',DEFAULT);
Trong ví dụ này, chúng tôi đã chỉ định cột priority
và từ khóa DEFAULT
.
Vì giá trị mặc định cho cột priority
là 3 như được khai báo trong định nghĩa bảng:
priority TINYINT NOT NULL DEFAULT 3
MySQL sử dụng số 3 để chèn vào cột priority
.
Câu lệnh sau trả về nội dung của bảng tasks
sau khi Insert thêm dữ liệu:
SELECT * FROM tasks;
3) MySQL INSERT – Ví dụ chèn ngày tháng vào bảng
Để chèn một giá trị ngày bằng chữ vào một cột, bạn sử dụng định dạng sau:
'YYYY-MM-DD'
Ở định dạng này:
YYYY
đại diện cho một năm có bốn chữ số, ví dụ: 2018.MM
đại diện cho một tháng có hai chữ số, ví dụ: 01, 02 và 12.DD
đại diện cho một ngày có hai chữ số, ví dụ: 01, 02, 30.
Câu lệnh sau đây chèn một hàng mới vào bảng tasks
với các giá trị ngày bắt đầu và ngày hết hạn:
INSERT INTO tasks(title, start_date, due_date) VALUES('Insert date into table','2018-01-09','2018-09-15');
Hình ảnh sau đây cho thấy nội dung của bảng tasks
sau khi được insert nội dung:
Có thể sử dụng các biểu thức trong mệnh đề VALUES
. Ví dụ: câu lệnh sau đây thêm một nhiệm vụ mới bằng cách sử dụng ngày hiện tại cho các cột ngày bắt đầu và ngày đến hạn:
INSERT INTO tasks(title,start_date,due_date) VALUES('Use current date for the task',CURRENT_DATE(),CURRENT_DATE())
Trong ví dụ này, chúng tôi đã sử dụng hàm CURRENT_DATE()
này làm giá trị cho các cột start_date
và due_date
. Lưu ý rằng hàm CURRENT_DATE()
là hàm ngày trả về ngày của hệ thống hiện tại.
Đây là nội dung của bảng tasks
sau khi chèn thêm dữ liệu:
4) MySQL INSERT – Ví dụ về chèn nhiều hàng
Câu lệnh sau đây chèn ba hàng vào bảng tasks
:
INSERT INTO tasks(title, priority) VALUES ('My first task', 1), ('It is the second task',2), ('This is the third task of the week',3);
Trong ví dụ này, mỗi dữ liệu hàng được chỉ định dưới dạng danh sách các giá trị trong mệnh đề VALUES
.
MySQL trả về thông báo sau:
3 row(s) affected Records: 3 Duplicates: 0 Warnings: 0
Điều đó có nghĩa là ba hàng đã được chèn thành công mà không có hàng trùng lặp hoặc cảnh báo nào.
SELECT * FROM tasks;
Bảng tasks
có các dữ liệu sau:
Tổng kết
Trong hướng dẫn này, bạn đã học cách sử dụng câu lệnh MySQL INSERT
để thêm một hoặc nhiều hàng vào một bảng.
Các bạn có thể tham khảo: https://www.mysqltutorial.org/mysql-insert-statement.aspx
Các bài viết liên quan: