Câu lệnh MySQL INSERT được sử dụng để lưu trữ hoặc thêm dữ liệu trong bảng MySQL trong cơ sở dữ liệu. Chúng ta có thể thực hiện chèn bản ghi theo hai cách bằng một truy vấn duy nhất trong MySQL
- Chèn bản ghi vào một hàng
- Chèn bản ghi vào nhiều hàng
cú pháp
Dưới đây là cú pháp chung của lệnh SQL INSERT INTO để chèn một bản ghi vào bảng MySQL
Trong cú pháp trên, trước tiên chúng ta phải 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. Thứ hai, chúng tôi cung cấp danh sách các giá trị tương ứng với tên cột sau mệnh đề VALUES
GHI CHÚ. Tên trường là tùy chọn. Nếu chúng tôi muốn chỉ định các giá trị một phần, tên trường là bắt buộc. Nó cũng đảm bảo rằng tên và giá trị cột phải giống nhau. Ngoài ra, vị trí của các cột và giá trị tương ứng phải giống nhau
Nếu chúng ta muốn chèn nhiều bản ghi trong một lệnh, hãy sử dụng câu lệnh sau
Trong cú pháp trên, tất cả các hàng phải được phân tách bằng dấu phẩy trong các trường giá trị
Ví dụ CHÈN MySQL
Hãy cho chúng tôi hiểu cách các câu lệnh INSERT hoạt động trong MySQL với sự trợ giúp của nhiều ví dụ. Đầu tiên, tạo một bảng "People" trong cơ sở dữ liệu bằng lệnh sau
1. Nếu chúng tôi muốn lưu trữ các bản ghi duy nhất cho tất cả các trường, hãy sử dụng cú pháp như sau
2. Nếu chúng tôi muốn lưu trữ nhiều bản ghi, hãy sử dụng các câu lệnh sau nơi chúng tôi có thể chỉ định tất cả các tên trường hoặc không chỉ định bất kỳ trường nào
3. Nếu chúng tôi muốn lưu trữ các bản ghi mà không đưa ra tất cả các trường, chúng tôi sử dụng các câu lệnh trường một phần sau đây. Trong trường hợp này, bắt buộc phải chỉ định tên trường
Trong kết quả bên dưới, chúng ta có thể thấy rằng tất cả các câu lệnh INSERT đã được thực thi thành công và lưu trữ giá trị trong bảng một cách chính xác
Chúng ta có thể sử dụng cú pháp dưới đây để hiển thị các bản ghi của bảng People
Ta sẽ được kết quả như sau
Chèn ngày vào bảng MySQL
Chúng ta cũng có thể sử dụng INSERT STATEMENT để thêm ngày vào bảng MySQL. MySQL cung cấp một số kiểu dữ liệu để lưu trữ ngày như DATE, TIMESTAMP, DATETIME, và YEAR. Định dạng mặc định của ngày trong MySQL là YYYY-MM-DD
Tóm lược. trong hướng dẫn này, bạn sẽ học cách sử dụng câu lệnh MySQL
5 để chèn một hoặc nhiều hàng vào một bảngCode language: SQL [Structured Query Language] [sql]
INSERT INTO table[c1,c2,...] VALUES [v11,v12,...], [v21,v22,...], ... [vnn,vn2,...];
Giới thiệu về câu lệnh MySQL INSERT INTO table[c1,c2,...]
VALUES
[v11,v12,...],
[v21,v22,...],
...
[vnn,vn2,...];
Code language: SQL [Structured Query Language] [sql]
5
INSERT INTO table[c1,c2,...]
VALUES
[v11,v12,...],
[v21,v22,...],
...
[vnn,vn2,...];
Câu lệnh
5 cho phép bạn chèn một hoặc nhiều hàng vào một bảng. Sau đây minh họa cú pháp của câu lệnhCode language: SQL [Structured Query Language] [sql]
INSERT INTO table[c1,c2,...] VALUES [v11,v12,...], [v21,v22,...], ... [vnn,vn2,...];
5Code language: SQL [Structured Query Language] [sql]
INSERT INTO table[c1,c2,...] VALUES [v11,v12,...], [v21,v22,...], ... [vnn,vn2,...];
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 đề
9
Code language: SQL [Structured Query Language] [sql]INSERT INTO table[c1,c2,...] VALUES [v11,v12,...], [v21,v22,...], ... [vnn,vn2,...];
- 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
0
Code language: SQL [Structured Query Language] [sql]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] ];
Số lượng 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
5, bạn sử dụng cú pháp sauCode language: SQL [Structured Query Language] [sql]
INSERT INTO table[c1,c2,...] VALUES [v11,v12,...], [v21,v22,...], ... [vnn,vn2,...];
Code language: SQL [Structured Query Language] [sql]
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 đề
0Code language: SQL [Structured Query Language] [sql]
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] ];
MySQL INSERT INTO table[c1,c2,...]
VALUES
[v11,v12,...],
[v21,v22,...],
...
[vnn,vn2,...];
Code language: SQL [Structured Query Language] [sql]
5 ví dụ
INSERT INTO table[c1,c2,...]
VALUES
[v11,v12,...],
[v21,v22,...],
...
[vnn,vn2,...];
Hãy tạo một bảng mới có tên là
4 để thực hành câu lệnhCode language: SQL [Structured Query Language] [sql]
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] ];
5Code language: SQL [Structured Query Language] [sql]
INSERT INTO table[c1,c2,...] VALUES [v11,v12,...], [v21,v22,...], ... [vnn,vn2,...];
Code language: SQL [Structured Query Language] [sql]
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 INTO table[c1,c2,...]
VALUES
[v11,v12,...],
[v21,v22,...],
...
[vnn,vn2,...];
Code language: SQL [Structured Query Language] [sql]
5 – ví dụ INSERT INTO table[c1,c2,...]
VALUES
[v11,v12,...],
[v21,v22,...],
...
[vnn,vn2,...];
Code language: SQL [Structured Query Language] [sql]
5 đơn giản
INSERT INTO table[c1,c2,...]
VALUES
[v11,v12,...],
[v21,v22,...],
...
[vnn,vn2,...];
INSERT INTO table[c1,c2,...]
VALUES
[v11,v12,...],
[v21,v22,...],
...
[vnn,vn2,...];
Câu lệnh sau chèn một hàng mới vào bảng
4Code language: SQL [Structured Query Language] [sql]
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] ];
Code language: SQL [Structured Query Language] [sql]
INSERT INTO tasks[title,priority] VALUES['Learn MySQL INSERT Statement',1];
MySQL trả về thông báo sau
Code language: SQL [Structured Query Language] [sql]
1 row[s] affected
Điều đó có nghĩa là một hàng đã được chèn vào bảng
4 thành côngCode language: SQL [Structured Query Language] [sql]
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] ];
Truy vấn này trả về dữ liệu từ bảng
4Code language: SQL [Structured Query Language] [sql]
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] ];
Code language: SQL [Structured Query Language] [sql]
SELECT * FROM tasks;
Đây là đầu ra
Trong ví dụ này, chúng tôi đã chỉ định các giá trị cho chỉ các cột
1 vàCode language: SQL [Structured Query Language] [sql]
INSERT INTO tasks[title,priority] VALUES['Learn MySQL INSERT Statement',1];
2. Đối với các cột khác, MySQL sử dụng các giá trị mặc địnhCode language: SQL [Structured Query Language] [sql]
INSERT INTO tasks[title,priority] VALUES['Learn MySQL INSERT Statement',1];
Cột
3 là cộtCode language: SQL [Structured Query Language] [sql]
INSERT INTO tasks[title,priority] VALUES['Learn MySQL INSERT Statement',1];
4. Đ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ảngCode language: SQL [Structured Query Language] [sql]
INSERT INTO tasks[title,priority] VALUES['Learn MySQL INSERT Statement',1];
Các cột
5,Code language: SQL [Structured Query Language] [sql]
INSERT INTO tasks[title,priority] VALUES['Learn MySQL INSERT Statement',1];
6 vàCode language: SQL [Structured Query Language] [sql]
INSERT INTO tasks[title,priority] VALUES['Learn MySQL INSERT Statement',1];
7 sử dụngCode language: SQL [Structured Query Language] [sql]
INSERT INTO tasks[title,priority] VALUES['Learn MySQL INSERT Statement',1];
8 làm giá trị mặc định, do đó, MySQL sử dụngCode language: SQL [Structured Query Language] [sql]
INSERT INTO tasks[title,priority] VALUES['Learn MySQL INSERT Statement',1];
9 để 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
INSERT INTO tasks[title,priority] VALUES['Learn MySQL INSERT Statement',1];
Code language: SQL [Structured Query Language] [sql]
5Code language: SQL [Structured Query Language] [sql]
INSERT INTO table[c1,c2,...] VALUES [v11,v12,...], [v21,v22,...], ... [vnn,vn2,...];
2] MySQL INSERT INTO table[c1,c2,...]
VALUES
[v11,v12,...],
[v21,v22,...],
...
[vnn,vn2,...];
Code language: SQL [Structured Query Language] [sql]
5 – Ví dụ về chèn hàng bằng giá trị mặc định
INSERT INTO table[c1,c2,...]
VALUES
[v11,v12,...],
[v21,v22,...],
...
[vnn,vn2,...];
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
5
Code language: SQL [Structured Query Language] [sql]INSERT INTO table[c1,c2,...] VALUES [v11,v12,...], [v21,v22,...], ... [vnn,vn2,...];
- Chỉ định tên cột trong mệnh đề
9 và sử dụng từ khóa
Code language: SQL [Structured Query Language] [sql]INSERT INTO table[c1,c2,...] VALUES [v11,v12,...], [v21,v22,...], ... [vnn,vn2,...];
4 trong mệnh đề
Code language: SQL [Structured Query Language] [sql]1 row[s] affected
0
Code language: SQL [Structured Query Language] [sql]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] ];
Ví dụ sau minh họa cách thứ hai
Code language: SQL [Structured Query Language] [sql]
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
2 và từ khóaCode language: SQL [Structured Query Language] [sql]
INSERT INTO tasks[title,priority] VALUES['Learn MySQL INSERT Statement',1];
4Code language: SQL [Structured Query Language] [sql]
1 row[s] affected
Bởi vì giá trị mặc định cho cột
2 là 3 như được khai báo trong định nghĩa bảngCode language: SQL [Structured Query Language] [sql]
INSERT INTO tasks[title,priority] VALUES['Learn MySQL INSERT Statement',1];
Code language: SQL [Structured Query Language] [sql]
priority TINYINT NOT NULL DEFAULT 3
MySQL sử dụng số 3 để chèn vào cột
2Code language: SQL [Structured Query Language] [sql]
INSERT INTO tasks[title,priority] VALUES['Learn MySQL INSERT Statement',1];
Câu lệnh sau trả về nội dung của bảng
4 sau khi chènCode language: SQL [Structured Query Language] [sql]
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] ];
Code language: SQL [Structured Query Language] [sql]
SELECT * FROM tasks;
3] MySQL INSERT INTO table[c1,c2,...]
VALUES
[v11,v12,...],
[v21,v22,...],
...
[vnn,vn2,...];
Code language: SQL [Structured Query Language] [sql]
5 – Chèn ngày tháng vào bảng ví dụ
INSERT INTO table[c1,c2,...]
VALUES
[v11,v12,...],
[v21,v22,...],
...
[vnn,vn2,...];
Để 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
Code language: SQL [Structured Query Language] [sql]
'YYYY-MM-DD'
ở định dạng này
2 đại diện cho năm có bốn chữ số e. g. , 2018
Code language: SQL [Structured Query Language] [sql]SELECT * FROM tasks;
3 đại diện cho tháng có hai chữ số e. g. , 01, 02 và 12
Code language: SQL [Structured Query Language] [sql]SELECT * FROM tasks;
4 đại diện cho ngày có hai chữ số e. g. , 01, 02, 30
Code language: SQL [Structured Query Language] [sql]SELECT * FROM tasks;
Câu lệnh sau đây chèn một hàng mới vào bảng
4 với các giá trị ngày bắt đầu và ngày đáo hạn
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] ];
Code language: SQL [Structured Query Language] [sql]
0Code language: SQL [Structured Query Language] [sql]
INSERT INTO table[c1,c2,...] VALUES [v11,v12,...], [v21,v22,...], ... [vnn,vn2,...];
Hình ảnh sau đây cho thấy nội dung của bảng
4 sau khi chènCode language: SQL [Structured Query Language] [sql]
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] ];
Có thể sử dụng các biểu thức trong mệnh đề
0. 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ạnCode language: SQL [Structured Query Language] [sql]
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] ];
1Code language: SQL [Structured Query Language] [sql]
INSERT INTO table[c1,c2,...] VALUES [v11,v12,...], [v21,v22,...], ... [vnn,vn2,...];
Trong ví dụ này, chúng tôi đã sử dụng hàm
8 làm giá trị cho các cộtCode language: SQL [Structured Query Language] [sql]
SELECT * FROM tasks;
5 vàCode language: SQL [Structured Query Language] [sql]
INSERT INTO tasks[title,priority] VALUES['Learn MySQL INSERT Statement',1];
6. Lưu ý rằng hàmCode language: SQL [Structured Query Language] [sql]
INSERT INTO tasks[title,priority] VALUES['Learn MySQL INSERT Statement',1];
1 là hàm ngày trả về ngày hệ thống hiện tạiCode language: SQL [Structured Query Language] [sql]
INSERT INTO tasks[title,priority] VALUES['Understanding DEFAULT keyword in INSERT statement',DEFAULT];
Đây là nội dung của bảng
4 sau khi chènCode language: SQL [Structured Query Language] [sql]
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] ];
4] MySQL INSERT INTO table[c1,c2,...]
VALUES
[v11,v12,...],
[v21,v22,...],
...
[vnn,vn2,...];
Code language: SQL [Structured Query Language] [sql]
5 – Ví dụ về chèn nhiều hàng
INSERT INTO table[c1,c2,...]
VALUES
[v11,v12,...],
[v21,v22,...],
...
[vnn,vn2,...];
Câu lệnh sau chèn ba hàng vào bảng
4Code language: SQL [Structured Query Language] [sql]
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] ];
2Code language: SQL [Structured Query Language] [sql]
INSERT INTO table[c1,c2,...] VALUES [v11,v12,...], [v21,v22,...], ... [vnn,vn2,...];
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 đề
0Code language: SQL [Structured Query Language] [sql]
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] ];
MySQL trả về thông báo sau
3Code language: SQL [Structured Query Language] [sql]
INSERT INTO table[c1,c2,...] VALUES [v11,v12,...], [v21,v22,...], ... [vnn,vn2,...];
Đ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
Code language: SQL [Structured Query Language] [sql]
SELECT * FROM tasks;
Bảng
4 có dữ liệu sauCode language: SQL [Structured Query Language] [sql]
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] ];
Trong hướng dẫn này, bạn đã học cách sử dụng câu lệnh MySQL
5 để thêm một hoặc nhiều hàng vào một bảngCode language: SQL [Structured Query Language] [sql]
INSERT INTO table[c1,c2,...] VALUES [v11,v12,...], [v21,v22,...], ... [vnn,vn2,...];