Hướng dẫn how do i add a variable to a table in mysql? - làm cách nào để thêm một biến vào một bảng trong mysql?

Tôi phải chèn một giá trị biến vào một bảng. Cú pháp đúng là gì? Tôi đã thử với

set @variable= @variable1+@variable2 INSERT INTO table (column) VALUES(@variable); INSERT INTO table (column) VALUES('variable');

Nhưng trường không phải là dân cư. Tôi đã kiểm tra rằng biến tồn tại.

hỏi ngày 16 tháng 7 năm 2015 lúc 10:30Jul 16, 2015 at 10:30

5

SET @variable = @variable1 + @variable2; INSERT INTO table (column) VALUES (@variable);

Đã trả lời ngày 16 tháng 7 năm 2015 lúc 10:36Jul 16, 2015 at 10:36

4

Vui lòng kiểm tra và đảm bảo cả hai biến không nên vô hiệu trong trường hợp này.

Tôi đã thử điều này và chạy thành công:

set @variable1 = 100; set @variable2 = 100; SET @variable = @variable1 + @variable2; INSERT INTO etl_1(name) VALUES (@variable);

Đây là ETL_1 là tên bảng của tôi, thay thế nó bằng của bạn ..

Lỗi ở cuối của bạn là gì?

Đã trả lời ngày 16 tháng 7 năm 2015 lúc 10:43Jul 16, 2015 at 10:43

Aman Aggarwalaman AggarwalAman Aggarwal

16.7K9 Huy hiệu vàng53 Huy hiệu bạc77 Huy hiệu đồng9 gold badges53 silver badges77 bronze badges

Bạn có thể thử điều này:-

INSERT INTO table (column) SELECT @variable= @variable1+@variable2

Đã trả lời ngày 16 tháng 7 năm 2015 lúc 10:34Jul 16, 2015 at 10:34

Ankit Bajpaiankit BajpaiAnkit Bajpai

12.6K4 Huy hiệu vàng25 Huy hiệu bạc40 Huy hiệu đồng4 gold badges25 silver badges40 bronze badges

Thử

SET @variable = @variable1+@variable2

Đã trả lời ngày 16 tháng 7 năm 2015 lúc 10:36Jul 16, 2015 at 10:36

Vui lòng kiểm tra và đảm bảo cả hai biến không nên vô hiệu trong trường hợp này.devnull

Tôi đã thử điều này và chạy thành công:4 silver badges18 bronze badges

Đây là ETL_1 là tên bảng của tôi, thay thế nó bằng của bạn ..

@variable= @variable1+@variable2; INSERT INTO table (column) VALUES (@variable);

Lỗi ở cuối của bạn là gì?

Đã trả lời ngày 16 tháng 7 năm 2015 lúc 10:34Jul 16, 2015 at 10:34

4

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 tôi đã tìm hiểu về việc sắp xếp và lọc dữ liệu bằng cách sử dụng mệnh đề và đặt hàng.

Câu lệnh INSERT 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 INSQL chèn.

INSERTINTO(COLUMN_1,COLUMN_2,..)INTO(COLUMN_1,COLUMN_2,..)

VALUES(VALUE_1,VALUE_2,..)(VALUE_1,VALUE_2,..)

Trong cú pháp,

  1. Đầu 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 ở bên trong dấu ngoặc đơn và nó phải được theo sau bởi mệnh đề giá trịVALUES clause

Nếu bạn muốn chèn nhiều hơn một hàng cùng một lúc, cú pháp hơi khác nhau. 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 yếu 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:

INSERTINTO(COLUMN_1,COLUMN_2,..)INTO(COLUMN_1,COLUMN_2,..)

Giá trị

(VALUE_1,VALUE_2,..),VALUE_1,VALUE_2,..),

(VALUE_3,VALUE_4,..),VALUE_3,VALUE_4,..),

(VALUE_5,VALUE_6,..)  VALUE_5,VALUE_6,..)  

  • Lưu ý: Ở đâ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ột nhận dạng.Here, make sure that the number of columns should match with the number of values. You can exclude the identity column of a table, or a default constraint is specified on any of the columns of the table. In upcoming articles, I will explain the default constraints and identity columns.

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

createdetabletbleployeetabletblEmployee

.

Employee_idintauto_incrementprimarykey,intauto_incrementprimarykey,

Employee_first_namevarchar(500)NOTnull,varchar(500)NOTnull,

Employee_last_namevarchar(500)NOTnull, varchar(500)NOTnull,

Employee_Addressvarchar(1000),varchar(1000),

Employee_emailIDvarchar(500),varchar(500),

Employee_department_IDintdefault9,int default9,

Employee_Joining_datedatedate

);;

Hãy để tôi hiển thị 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ẽ trình bày như sau:

  1. Câu lệnh chèn đơn giản để thêm dữ liệu vào bảngINSERT statement to add data to the table
  2. Sử dụng câu lệnh INSERT để thêm nhiều hàng trong bảngINSERT Statement to add multiple rows in the table
  3. Chèn vào mệnh đề chọn để chèn đầu ra được tạo bởi truy vấn chọn clause to insert the output generated by the SELECT query
  4. Chèn mệnh đề bỏ qua để bỏ qua lỗi được tạo trong quá trình thực hiện truy vấn clause to ignore the error generated during the execution of the query

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

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

InsertIntItSplessPloyee (womanchee_first_name, womanchee_last_name) giá trị ('nisarg', 'upadhyay'))INTOtblemployee (employee_first_name,employee_last_name)values('Nisarg','Upadhyay')

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:

select*fromtblEmployee;*fromtblEmployee;

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

Như bạn có thể thấy trong ảnh chụp màn hình trên của đầu ra, hàng đã được chèn thành công và các giá trị của các cột tương ứng của chúng cũng được chèn chính xác. Trong truy vấn chèn, 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 của cột Sở_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 womanchee_id là tự động_increment để nó được tăng tự động.first_name and last_name column, but we have set the default value of the department_id column, so if we do not specify the value of the column, it inserts the default value. The employee_id column is auto_increment so that it will be incremented automatically.

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

Giả sử bạn muốn chèn một ngày tham gia cụ thể cho một nhân viên. Ngày tham gia sẽ được chèn vào cột nhân viên_joining_date. Truy vấn nên được viết như sau:employee_joining_date column. The query should be written as follows:

InsertIntItStemployee (womanchee_first_name, womanchee_last_name, womanchee_joining_date) giá trị ('nisarg', 'upadhyay', '2020-06-26');INTOtblemployee (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:

SELECT*fromtblemployee*fromtblemployee

Đầu ra:

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 một ngày tham gia, chúng tôi muốn sử dụng ngày hiện tại. Trong kịch bản này, chúng ta có thể sử dụng hàm tích hợp có tên current_date (). Chức năng này nhận được ngày của máy chủ. Nó giống như hàm getDate () của SQL Server.CURRENT_DATE(). This function gets the date of the server. It is like the getdate() function of SQL Server.

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

InsertIntItStemployee (womanchee_first_name, womanchee_last_name, womanchee_joining_date) giá trị ('nirali', 'upadhyay', current_date ());INTOtblemployee (employee_first_name,employee_last_name,employee_joining_date)values('Nirali','Upadhyay',current_date());

Chạy truy vấn chọn:

SELECT*fromtblemployee;*fromtblemployee;

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

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.joining date of the employee ID is the current date.

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

Chúng tôi muốn chèn chi tiết của hai nhân viên trong bảng Temployee. Để làm điều đó, thực hiện truy vấn sau:tblemployee table. To do that, execute the following query:

InsertIntIntbleDployee (womanchee_first_name, womanchee_last_name, womanchee_joining_date) giá trị ('dixit', 'upadhyay', current_date ()), ('bharti', 'upadhyay', current_date ()INTOtblemployee (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, thực thi câu lệnh Chọn để xác minh đầu ra:

Select*fromtblemployee;*fromtblemployee;

Sau đây là đầu ra:

  • Lưu ý: Trong MySQL, có một tham số cấu hình có tên MAX_OWNED_PACKAT_SIZE để giới hạn kích thước của gói. Kích thước gói tối đa trong máy chủ và máy khách MySQL 8.0 là 1GB. In MySQL, there is a configuration parameter named max_allowed_packat_size to limit the size of the packet. The maximum package size in MySQL 8.0 server and client is 1GB.

Nếu bạn đang chèn nhiều hàng và kích thước của truy vấn chèn cao hơn giá trị được định cấu hình trong MAX_ALLOWED_PACKAT_SIZE, truy vấn sẽ cung cấp lỗi ER_NET_PACKET_TOO_LARGE và đóng kết nối. Bạn có thể thấy giá trị của tham số bằng cách thực thi lệnh sau:INSERT query is higher than the value configured in max_allowed_packat_size, the query will give the ER_NET_PACKET_TOO_LARGE error and close the connection. You can see the value of the parameter by executing the following command:

SHOWVARIABLESLIKE'max_allowed_packet';VARIABLESLIKE'max_allowed_packet';

Đầu ra:

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

SETGLOBALmax_allowed_packet=your_desired_size;GLOBALmax_allowed_packet=your_desired_size;

Chèn vào truy vấn chọn

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

INSERTINTOdestination_table_name(column_1,column_2)INTOdestination_table_name(column_1,column_2)

LỰA CHỌN

& nbsp; & nbsp; Cột_1, cột_2column_1,column_2

TỪ

& nbsp; & nbsp; Source_Tablesource_table

Ở ĐÂU

& nbsp; & nbsp; tình trạng;condition;

Như bạn có thể thấy trong cú pháp, thay vì sử dụng mệnh đề Giá trị, chúng tôi đã sử dụng truy vấn chọn. Ở đây chọn câu lệnh Lấy dữ liệu từ một bảng khác hoặc bằng cách tham gia 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ể.

Để chứng minh 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 diễn viên_backup và diễn viên là như nhau. Thay đổi duy nhất tôi thực hiện là tôi đã bỏ các phím nước ngoài và các ràng buộc khác của bảng Actor_backup.actor table of the sakila database. I have created another table named actor_backup. The table structure of the table actor_backup and actor is the same. The only change I made is that I have dropped the foreign keys and other constraints of the actor_backup table.

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

Createdetableactor_backup (TABLEactor_backup (

    actor_idsmallint,actor_idsmallint,

    first_namevarchar(45)NOTNULL,first_namevarchar(45)NOTNULL,

    last_namevarchar(45)NOTNULL,last_name varchar(45)NOTNULL,

    last_updatetimestampNOTNULLDEFAULTCURRENT_TIMESTAMPONUPDATECURRENT_TIMESTAMP)last_updatetimestampNOTNULLDEFAULTCURRENT_TIMESTAMPONUPDATECURRENT_TIMESTAMP)

Bây giờ, để chèn dữ liệu từ bảng diễn viên vào bảng Actor_backup, thực hiện truy vấn sau.actor_backup table, execute the following query.

insertintoactor_backupselectactor_id,first_name,last_name,last_updatefromactor;intoactor_backupselectactor_id,first_name,last_name,last_updatefromactor;

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.

Select*fromactor_backup;*fromactor_backup;

Đầu ra:

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

Chèn vào truy vấn chọn is a very interesting keyword. When we insert multiple records in the using INSERT statement or INSERT INTO SELECT keyword, and sometimes the INSERT query failed due to an error, the entire INSERT query gets terminated. Suppose we are inserting thousands of records in a table, and due to error, the entire INSERT query fails and we must re-run the entire query. To avoid such issues, we can use the INSERT IGNORE statement.

Giả sử chúng ta muốn chèn bộ kết quả được tạo bởi một truy vấn chọn khác trong bảng, chúng ta có thể sử dụng Chèn vào truy vấn chọn. Cú pháp như sau:INSERT IGNORE statement to insert data in tables, even though the query encounters an error, the INSERT query does not fail.

LỰA CHỌNtbldepartment. The following is the table definition:

& nbsp; & nbsp; Cột_1, cột_2tabletbldepartment

TỪ

department_idvarchar(10)primarykey,varchar(10)primarykey,

department_namevarchar(500)varchar(500)

& nbsp; & nbsp; Source_Table

Ở ĐÂUDepartment_ID column is a primary key so you cannot insert a duplicate value in it. Now, let’s insert a few rows by executing the following query:

& nbsp; & nbsp; tình trạng;ignoreintotbldepartment (department_id,department_name)values

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

Như bạn có thể thấy trong cú pháp, thay vì sử dụng mệnh đề Giá trị, chúng tôi đã sử dụng truy vấn chọn. Ở đây chọn câu lệnh Lấy dữ liệu từ một bảng khác hoặc bằng cách tham gia 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ể.

Để chứng minh 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 diễn viên_backup và diễn viên là như nhau. Thay đổi duy nhất tôi thực hiện là tôi đã bỏ các phím nước ngoài và các ràng buộc khác của bảng Actor_backup.

Select*fromtbldepartment;*fromtbldepartment;

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

Createdetableactor_backup (DEP00001 and DEP00002 have been inserted.

Bây giờ, để chèn dữ liệu từ bảng diễn viên vào bảng Actor_backup, thực hiện truy vấn sau.INSERT INTO IGNORE keyword, the MySQL will issue the warning, but it will try to adjust the value in the column. To understand that, insert another row in the tbldepartment table. The length of the department_id column is 10 characters. In the table, let us try to insert the department_id. The length of the value is higher than the defined length. Execute the following query:

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.ignoreintotbldepartment(department_id,department_name)values('DEP000000001','Human Resource');

Chèn tuyên bố 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 vào câu lệnh INSERT hoặc chèn vào từ khóa chọn và đôi khi truy vấn chèn không thành công do lỗi, toàn bộ truy vấn chèn sẽ bị chấm dứt. Giả sử chúng ta đang chèn hàng ngàn bản ghi vào một bảng và do lỗi, toàn bộ truy vấn chèn không thành công và chúng ta phải chạy lại toàn bộ truy vấn. Để tránh các vấn đề như vậy, chúng ta có thể sử dụng tuyên bố bỏ qua chèn.

Select*fromtbldepartment;*fromtbldepartment;

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

Createdetableactor_backup (department_id column.

Bản tóm tắt

Trong bài viết này, chúng tôi đã học cách chúng tôi có thể chèn một hoặc nhiều hơn một hàng trong 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 các bảng. Ngoài ra, chúng tôi đã học cách bỏ qua lỗi được tạo bởi câu lệnh chèn. Trong bài viết tiếp theo, chúng tôi sẽ tìm hiểu về Cập nhật và xóa các câu lệnh và các trường hợp sử dụng của chúng. Giữ nguyên..

Mục lục

Tìm hiểu MySQL: Truy vấn dữ liệu từ máy chủ MySQL bằng cách sử dụng câu lệnh CHỌN
Tìm hiểu mysql: phân trang là gì
Tìm hiểu MySQL: Sắp xếp và lọc dữ liệu trong bảng
Tìm hiểu MySQL: Thêm dữ liệu trong các bảng bằng cách sử dụng câu lệnh INSERT
Tìm hiểu MySQL: Tạo và thả bảng tạm thời
Tìm hiểu MySQL: Xóa và cập nhật các câu lệnh
Tìm hiểu MySQL: Những điều cơ bản của các thủ tục lưu trữ MySQL
Tìm hiểu MySQL: Những điều cơ bản của quan điểm MySQL
Tìm hiểu MySQL: Tổng quan về nhật ký nhị phân MySQL
Tìm hiểu MySQL: Tổng quan về tiện ích mysqlbinlog
Tìm hiểu MySQL: Chạy nhiều phiên bản của máy chủ MySQL trên Windows 10
Tìm hiểu MySQL: Chức năng chuỗi MySQL
Tìm hiểu MySQL: Các chức năng lưu lượng điều khiển
Tìm hiểu MySQL: Cài đặt MYSQL Server 8.0.19 bằng Lưu trữ Zip NoInstall
Tìm hiểu MySQL: Bảng sao chép MySQL

  • Tác giả
  • Bài viết gần đây

Nisarg Upadhyay là quản trị viên cơ sở dữ liệu SQL Server và Microsoft Certified Professional, người có hơn 8 năm kinh nghiệm với quản trị SQL Server và 2 năm với quản trị cơ sở dữ liệu Oracle 10G.

Ông có chuyên môn về thiết kế cơ sở dữ liệu, điều chỉnh hiệu suất, sao lưu và phục hồi, thiết lập HA và DR, di chuyển cơ sở dữ liệu và nâng cấp. Ông đã hoàn thành B.Tech từ Đại học Ganpat. Anh ấy có thể đạt được

Chủ đề