CHÈN MySQL

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

  1. Chèn bản ghi vào một hàng
  2. 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ÈN MySQL

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 MySQL

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

Trong bài viết trước của tôi, Tìm hiểu MySQL. Sắp xếp và lọc dữ liệu trong bảng, chúng ta đã học về sắp xếp và lọc dữ liệu bằng mệnh đề WHERE và ORDER BY

Câu lệnh chèn là câu lệnh DML (Ngôn ngữ sửa đổi dữ liệu) được sử dụng để chèn dữ liệu vào bảng MySQL. Sử dụng truy vấn Chèn, chúng ta có thể thêm một hoặc nhiều hàng trong bảng. Sau đây là cú pháp cơ bản của Câu lệnh INSERT trong MySQL

1

2

CHÈN VÀO <TABLENAME>(COLUMN_1, COLUMN_2,.. )

VALUES (VALUE_1,VALUE_2,.. )

Trong cú pháp,

  1. Trước tiên, bạn phải chỉ định tên của bảng. Sau đó, trong ngoặc đơn, bạn phải chỉ định tên cột của bảng và các cột phải được phân tách bằng dấu phẩy
  2. Các giá trị mà bạn muốn chèn phải nằm trong dấu ngoặc đơn và phải được theo sau bởi mệnh đề GIÁ TRỊ

Nếu bạn muốn chèn nhiều hàng cùng lúc thì cú pháp hơi khác một chút. Trong từ khóa giá trị, bạn phải chỉ định danh sách các hàng được phân tách bằng dấu phẩy. Ở đây, mỗi phần tử được coi là một hàng. Tất cả các hàng phải được phân tách bằng dấu phẩy. Sau đây là cú pháp

1

2

3

4

5

CHÈN VÀO <TABLENAME>(COLUMN_1, COLUMN_2,.. )

GIÁ TRỊ

(VALUE_1,VALUE_2,.. ),

(VALUE_3,VALUE_4,.. ),

(VALUE_5,VALUE_6,.. )  

  • Ghi chú. Tại đây, hãy đảm bảo rằng số lượng cột phải khớp với số lượng giá trị. Bạn có thể loại trừ cột nhận dạng của bảng hoặc ràng buộc mặc định được chỉ định trên bất kỳ cột nào của bảng. Trong các bài viết sắp tới, tôi sẽ giải thích các ràng buộc mặc định và các cột nhận dạng

Để chứng minh việc sử dụng Câu lệnh INSERT, tôi đã tạo một bảng có tên là tblemployees trên cơ sở dữ liệu VSData. Dưới đây là định nghĩa của bảng tblemployees

1

2

3

4

5

6

7

8

9

10

tạo bảng tblEmployee

(

Employee_id int auto_increment khóa chính,

Employee_first_name varchar(500) NOT null,

Employee_last_name varchar(500) NOT null,

Employee_Address varchar(1000),

Employee_emailID varchar(500),

Employee_department_ID int default 9,

Ngày_ngày_tham_gia của nhân viên ngày

);

Hãy để tôi chỉ ra các trường hợp sử dụng khác nhau của truy vấn chèn. Trong bài viết này, tôi sẽ đề cập đến những điều sau đây

  1. Câu lệnh INSERT đơn giản để thêm dữ liệu vào bảng
  2. Sử dụng câu lệnh INSERT để thêm nhiều hàng trong bảng
  3. Mệnh đề INSERT INTO SELECT để chèn đầu ra được tạo bởi truy vấn SELECT
  4. INSERT IGNORE mệnh đề để bỏ qua lỗi được tạo ra trong quá trình thực hiện truy vấn

Ví dụ truy vấn INSERT đơn giản

Giả sử tôi muốn chèn họ và tên của nhân viên. Chạy truy vấn sau

1

CHÈN VÀO tblemployee (employee_first_name, employee_last_name) values ('Nisarg','Upadhyay')

Sau khi truy vấn được thực thi thành công, chúng ta hãy chạy truy vấn CHỌN để xác minh dữ liệu. Thực hiện truy vấn sau

1

chọn * từ tblEmployee;

Sau đây là ảnh chụp màn hình của đầu ra

CHÈN MySQL
CHÈN MySQL

Như bạn có thể thấy trong ảnh chụp màn hình đầu ra ở trên, hàng đã được chèn thành công và giá trị của các cột tương ứng cũng được chèn chính xác. Trong truy vấn INSERT, tôi đã chỉ định các giá trị của cột first_name và last_name, nhưng chúng tôi đã đặt giá trị mặc định cho cột department_id, vì vậy nếu chúng tôi không chỉ định giá trị của cột, nó sẽ chèn giá trị mặc định. Cột employee_id là auto_increment để nó tự động tăng

Chèn một ngày trong bảng

Giả sử bạn muốn chèn ngày gia nhập cụ thể cho một nhân viên. Ngày tham gia sẽ được chèn vào cột employee_joining_date. Truy vấn nên được viết như sau

1

CHÈN VÀO tblemployee (employee_first_name, employee_last_name, employee_joining_date) values ('Nisarg','Upadhyay','2020-06-26');

Chạy truy vấn chọn để xác minh đầu ra

1

CHỌN * từ tblemployee

đầu ra

CHÈN MySQL
CHÈN MySQL

Như bạn có thể thấy, ngày tham gia được chèn chính xác. Bây giờ thay vì chỉ định ngày tham gia, chúng tôi muốn sử dụng ngày hiện tại. Trong trường hợp này, chúng ta có thể sử dụng hàm tích hợp có tên CURRENT_DATE(). Hàm này lấy ngày của máy chủ. Nó giống như hàm getdate() của SQL Server

Truy vấn nên được viết như sau

1

CHÈN VÀO tblemployee (employee_first_name, employee_last_name, employee_joining_date) values ('Nirali','Upadhyay',current_date());

Chạy truy vấn CHỌN

1

CHỌN * từ tblemployee;

Dưới đây là đầu ra

CHÈN MySQL
CHÈN MySQL

Như bạn có thể thấy, ngày tham gia của ID nhân viên là ngày hiện tại

Chèn nhiều hàng vào bảng

Chúng tôi muốn chèn thông tin chi tiết của hai nhân viên vào bảng tblemployee. Để làm điều đó, hãy thực hiện truy vấn sau

1

CHÈN VÀO tblemployee (employee_first_name, employee_last_name, employee_joining_date) values ('Dixit','Upadhyay',current_date()),('Bharti','Upadhyay',current_date())  ;

Khi các hàng được chèn vào, hãy thực hiện câu lệnh SELECT để xác minh đầu ra

1

Chọn * từ tblemployee;

Sau đây là đầu ra

CHÈN MySQL
CHÈN MySQL

  • Ghi chú. Trong MySQL có một tham số cấu hình tên là max_allowed_packat_size để giới hạn kích thước của gói tin. Kích thước gói tối đa trong MySQL 8. 0 máy chủ và máy khách là 1GB

Nếu bạn đang chèn nhiều hàng và kích thước của truy vấn INSERT cao hơn giá trị được định cấu hình trong max_allowed_packat_size, thì truy vấn sẽ báo lỗi ER_NET_PACKET_TOO_LARGE và đóng kết nối. Bạn có thể xem giá trị của tham số bằng cách thực hiện lệnh sau

1

HIỂN THỊ BIẾN THÍCH 'max_allowed_packet';

đầu ra

CHÈN MySQL
CHÈN MySQL

Giá trị của tham số cấu hình có thể được thay đổi bằng cách thực hiện lệnh sau

1

SET TOÀN CẦU max_allowed_packet=your_desired_size;

CHÈN VÀO Truy vấn CHỌN

Giả sử chúng ta muốn chèn tập kết quả được tạo bởi một truy vấn SELECT khác trong bảng, chúng ta có thể sử dụng INSERT INTO SELECT Query. Cú pháp như sau

1

2

3

4

5

6

7

CHÈN VÀO tên_bảng_điểm_đến(cột_1, column_2)

LỰA CHỌN

   cột_1,cột_2

TỪ

   source_table

Ở ĐÂU

   điều kiện;

Như bạn có thể thấy trong cú pháp, thay vì sử dụng mệnh đề VALUES, chúng tôi đã sử dụng truy vấn SELECT. Ở đây, câu lệnh SELECT lấy dữ liệu từ một bảng khác hoặc bằng cách nối các bảng khác nhau. Truy vấn này rất hữu ích khi bạn muốn tạo bản sao lưu của một bảng cụ thể

Để minh họa kịch bản, tôi sẽ sử dụng bảng diễn viên của cơ sở dữ liệu sakila. Tôi đã tạo một bảng khác có tên là actor_backup. Cấu trúc bảng của bảng actor_backup và diễn viên giống nhau. Thay đổi duy nhất tôi đã thực hiện là tôi đã bỏ khóa ngoại và các ràng buộc khác của bảng actor_backup

Bảng có thể được tạo bằng cách thực hiện truy vấn sau

1

2

3

4

5

TẠO BẢNG actor_backup (

    actor_id smallint ,

    first_name varchar(45) NOT NULL,

    last_name varchar(45) NOT NULL,

   last_update dấu thời gian KHÔNG NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP)

Bây giờ, để chèn dữ liệu từ bảng actor vào bảng actor_backup, hãy thực hiện truy vấn sau

1

chèn vào actor_backup chọn actor_id,first_name,last_name,last_update from actor;

Thực hiện truy vấn CHỌN sau để xác minh rằng dữ liệu đã được chèn thành công

1

Chọn * từ actor_backup;

đầu ra

CHÈN MySQL
CHÈN MySQL

CHÈN câu lệnh BỎ QUA

CHÈN BỎ QUA là một từ khóa rất thú vị. Khi chúng tôi chèn nhiều bản ghi trong câu lệnh sử dụng INSERT hoặc từ khóa INSERT INTO SELECT và đôi khi truy vấn INSERT không thành công do lỗi, toàn bộ truy vấn INSERT sẽ bị chấm dứt. Giả sử chúng ta đang chèn hàng nghìn bản ghi vào một bảng và do lỗi, toàn bộ truy vấn INSERT không thành công và chúng ta phải chạy lại toàn bộ truy vấn. Để tránh những vấn đề như vậy, chúng ta có thể sử dụng câu lệnh INSERT IGNORE

Nếu bạn đang sử dụng câu lệnh INSERT IGNORE để chèn dữ liệu vào bảng, mặc dù truy vấn gặp lỗi, nhưng truy vấn INSERT không bị lỗi

Để chứng minh, tôi đã tạo một bảng có tên là tbldepartment. Sau đây là định nghĩa bảng

1

2

3

4

5

tạo bảng tbldepartment

(

department_id varchar(10) primary key,

department_name varchar(500)

)

Ở đây, cột Department_ID là khóa chính nên bạn không thể chèn giá trị trùng lặp vào đó. Bây giờ, hãy chèn một vài hàng bằng cách thực hiện truy vấn sau

1

2

chèn bỏ qua vào tbldepartment (department_id, department_name) values

('DEP00001', 'IT'),('DEP00001', 'Sales'),('DEP00002', 'MARKETING');

Khi bạn chèn bản ghi, bạn sẽ nhận được cảnh báo sau

CHÈN MySQL
CHÈN MySQL

Ở đây, chúng tôi đã sử dụng câu lệnh INSERT IGNORE; . Để xác minh điều đó, hãy thực hiện truy vấn CHỌN sau

1

Chọn * từ tbldepartment;

Dưới đây là đầu ra

CHÈN MySQL
CHÈN MySQL

Như bạn có thể thấy, thay vì ba giá trị, chỉ có DEP00001 và DEP00002 được chèn vào

Khi chúng ta sử dụng từ khóa INSERT INTO IGNORE, MySQL sẽ đưa ra cảnh báo, nhưng nó sẽ cố gắng điều chỉnh giá trị trong cột. Để hiểu điều đó, hãy chèn một hàng khác vào bảng tbldepartment. Độ dài của cột department_id là 10 ký tự. Trong bảng, chúng ta hãy thử chèn bộ phận_id. Độ dài của giá trị cao hơn độ dài đã xác định. Thực hiện truy vấn sau

1

chèn bỏ qua vào phòng tbl(department_id, department_name)values('DEP000000001', 'Human Resource');

Truy vấn sẽ đưa ra cảnh báo sau

CHÈN MySQL
CHÈN MySQL

Như bạn có thể thấy, truy vấn tạo ra một cảnh báo. Bây giờ, hãy chạy truy vấn CHỌN để xem dữ liệu

1

Chọn * từ tbldepartment;

Dưới đây là đầu ra

CHÈN MySQL
CHÈN MySQL

Như bạn có thể thấy, hàng đó đã được chèn vào, nhưng MySQL đã cắt bớt giá trị của cột department_id

Bản tóm tắt

Trong bài viết này, chúng ta đã học cách chèn một hoặc nhiều hàng vào bảng MySQL bằng cách sử dụng câu lệnh INSERT. Chúng tôi cũng đề cập đến cách chúng tôi có thể chèn tập kết quả, được tạo bởi một truy vấn khác trong bảng. Ngoài ra, chúng tôi đã học cách bỏ qua lỗi do câu lệnh INSERT tạo ra. Trong phần tiếp theo, chúng ta sẽ tìm hiểu về các câu lệnh UPDATE và DELETE trong MySQL và các trường hợp sử dụng của chúng. Giữ nguyên

Chèn vào trong MySQL là gì?

Lệnh INSERT dùng để thêm dữ liệu mới vào bảng. MySql sẽ thêm một hàng mới, sau khi lệnh được thực thi. Các giá trị ngày và chuỗi phải được đặt trong dấu nháy đơn. Các giá trị số không cần đặt trong dấu ngoặc kép

Sự khác biệt giữa CẬP NHẬT và chèn là gì?

Sự khác biệt chính giữa INSERT và UPDATE trong SQL là INSERT được sử dụng để thêm các bản ghi mới vào bảng trong khi UPDATE được sử dụng để sửa đổi các bản ghi hiện có trong bảng. Relational Database Management System (RDBMS) is a program that allows storing and managing relational databases.

Chèn có giống như CẬP NHẬT trong MySQL không?

Chèn là để thêm dữ liệu vào bảng, cập nhật là để cập nhật dữ liệu đã có trong bảng .

Tôi có thể sử dụng vị trí chèn MySQL không?

Trong MySQL, nếu bạn muốn CHÈN hoặc CẬP NHẬT, bạn có thể sử dụng truy vấn REPLACE với mệnh đề WHERE . Nếu WHERE không tồn tại, nó CHÈN, nếu không, nó CẬP NHẬT.