如何在MySQL中插入值

如何在MySQL中插入值

在MySQL中,用户可以使用INSERT语句向数据库表中添加值。它是一种数据操作语言命令,因为它允许用户对数据进行更改。用户可以使用INSERT查询在表中添加单个或多个数据行。

INSERT查询的语法

下面是在MySQL中实现INSERT语句的语法:

INSERT INTO table_name (col1, col2, col3….coln)
VALUES (val1, val2, val3….valn);

语法的解释:

用户需要使用INSERT INTO关键字开始。然后用户需要提到要在其中添加值的表的名称。然后,使用括号来提到用户想要添加数据值的列的列表。逗号将列表中的列分隔开。

在第二部分中,使用VALUES关键字来指定表中的值。用户可以在括号中提到要插入的数据。这些值应该与上述步骤中提到的列相对应。

假设用户想要使用一个单独的语句向表中添加多个数据值。插入多个值的语法略有不同,因为在特定的VALUES子句中,用户必须指定要添加到数据库表中的以逗号分隔的行列表。当插入多行时,每个元素代表表中的不同行。列值和行之间用逗号分隔。括在括号中的值表示一个单独的行。

添加多行数据的语法如下:

INSERT INTO table_name (col1, col2,col3?.coln)
VALUES
(val1, val2, val3?valn),
(val1, val2, val3?valn),
(val1, val2, val3?valn);

注意:用户需要确保列的数量与插入到行中的值的数量完全相同。用户不需要包含表的标识列或具有默认约束的任何列。

实现INSERT命令

在使用MySQL的INSERT命令之前,用户需要在数据库中创建一个表。可以使用数据定义语言命令来创建表。以下是在数据库中创建student_table的查询。查询包含了student_table的定义。

CREATE TABLE student_table
(
Student_id int auto_increment primary key,
fname varchar(100) NOT NULL,
lname varchar(100) NOT NULL,
Address varchar(100),
Mail varchar (100),
Dept_id int default 10,
Doj date
);

使用上述定义的表,我们将讨论用户可以在MySQL中实现INSERT语句以添加数据值的情景。这些情景包括:

  • 使用INSERT查询将值插入到表中。
  • 使用INSERT查询在表中添加多行数据的值。
  • 在查询中使用INSERT命令和SELECT子句。它使用户能够将值添加到SELECT查询返回的输出中。
  • 使用INSERT IGNORE子句忽略在执行语句时发生的错误。

在INSERT查询中添加单行值

假设用户想要将学生的名和姓添加到表中。那么用户可以在MySQL中实现以下简单查询:

INSERT INTO student_table (fname, lname) VALUES ('Rohit','Sharma');

一旦用户实施了上述查询,数据值将被添加到表中。如果用户想看到更改,则用户必须实施SELECT语句以验证表中的修改。

SELECT * FROM student_table;

输出:

如何在MySQL中插入值

一旦实现了SELECT查询,用户可以检查数据行是否成功添加到表中。您还可以检查是否将值插入到相应的列中。这意味着值是按正确的列顺序添加的。在上述INSERT语句中,我已经提到了fname和lname列的值。

在定义表时,我们为Dept_id列声明了默认值。如果用户不明确为特定列分配一个不同的值,MySQL将自动分配其默认值。类似地,对于Student_id列,我们使用了auto_increment。它会自动给下一条记录分配比上一个值大1的值。MySQL将分配Student_id和Dept_id。

使用INSERT语句添加日期值

假设用户想要为一个学生分配一个特定的日期。在这种情况下,加入日期将被添加到student_table的Doj列中。添加日期的查询如下所示:

NSERT INTO student_table (fname, lname, Doj) VALUES ('Rahul',' Sharma', '2023-05-25');

一旦成功实现这个查询,您可以实现下面的查询。

SELECT * FROM student_table;

使用单个INSERT语句添加多行记录

假设用户想要在表中添加多名学生的详细信息。用户可以使用以下SQL查询来将数据添加到student_table中。

INSERT INTO student_table (fname, lname, Doj) VALUES ('Rahul',' Sharma', '2023-05-25'), 
('Rohit,''Verma,' '2023-05-25'),
('Harsh',' Jain', '2023-05-25'),
('Harshit',' Sharma', '2023-05-25');

一旦上述查询成功执行,您可以使用SELECT语句查看更新的表。

SELECT * FROM student_table;

输出:

如何在MySQL中插入值

注意:在MySQL中,有一个配置参数负责限制数据包的大小。最大数据包大小为1GB。如果用户试图输入超过最大数据包大小的数据,查询将返回一个错误,指示网络数据包太大。它将立即关闭连接。如果你想检查这个参数,那么你可以执行给定的命令:

SHOW VARIABLES LIKE 'max_allowed_packet';

输出:

您可以通过执行下面的SQL命令来更改允许的最大数据包大小。

SET GLOBAL max_allowed_packet=changed_size;

在SELECT查询中插入

假设用户想要将由不同SELECT语句生成的结果集添加到表中。用户可以使用INSERT INTO SELECT查询来实现。其语法如下:

INSERT INTO table_name (col1, col2)
SELECT
col1, col2
FROM src_table
WHERE condn;

从语法上可以看出,用户可以使用SELECT查询而不是实现VALUES子句。 SELECT查询负责从不同的表中收集数据或合并不同的表。当用户需要为特定表创建备份时,通常使用此查询。

让我们考虑一个例子来实现INSERT INTO SELECT查询。在这种情况下,我们将使用一个stud_table。现在我们将创建另一个表来创建stud_table的备份。 stud_table和stud_backup两者的结构应完全相同。用户可以在备份表中删除外键和其他限制条件。

用户可以实现以下查询来定义stud_backup。

CREATE TABLE stud_backup (
    Stud_id INT,
    fname varchar(45) NOT NULL,
    lname varchar(45) NOT NULL);

现在,用户必须将 stud_table 中的数据添加到 stud_backup 表中。用户可以执行下面的查询来创建 stud_backup 中的数据副本。

INSERT INTO stud_backup 
SELECT Stud_id, fname, lname
FROM stud_table;

用户可以通过实施SELECT查询来显示stud_backup中的数据,以确保备份表成功创建。

SELECT* FROM stud_backup;

用户在使用INSERT语句或INSERT INTO SELECT查询时,有时需要向表中插入多个数据值。INSERT查询由于错误的原因很可能失败,导致整个INSERT查询失败。

假设用户在向表中插入数千个数据值时出现错误。那么整个INSERT查询将失败,用户将不得不从头重新执行完整的查询。如果用户想避免这样的问题,可以使用INSERT IGNORE语句。

假设用户使用INSERT IGNORE查询以添加多个数据值到表中,即使在执行查询时出现错误。这将防止整个INSERT语句失败。

我们来使用一个示例来演示用户如何使用INSERT IGNORE。在这种情况下,创建一个employeetbl。执行下面的查询来定义员工。

CREATE TABLE employeetbl
(emp_id INT PRIMARY KEY,
emp_name varchar(10));

在这里,emp_id被分配为主键。它约束了emp_id列,因为用户无法在表中插入重复记录。使用INSERT IGNORE来实现下面的查询,将数据添加到表中:

INSERT IGNORE INTO employeetbl (emp_id, emp_name)
VALUES (1, 'Rohit'), (1, 'Rahul'), (2, 'Aman');

当你实现上面的查询时,它会返回一个警告。

因此,在这种特殊情况下,我们使用了INSERT IGNORE语句;因此,整个INSERT语句不会失败。它将被实现两次,确保其他两个记录将被添加到表中。要检查输入的数据值,请执行给定的SELECT查询:

SELECT * FROM employeetbl;

输出:

如何在MySQL中插入值

现在您可以看到只有两个值将被添加到表中,而不是三个值。

当用户实施INSERT INTO IGNORE语句时,执行不会失败;相反,MySQL会发出一个警告。它将数据值添加到相应的表列中。为了更好地理解这个概念,在employees中添加另一行。emp_name的长度设置为十个字符。让我们尝试在emp_name中添加一个超过该列允许的最大值的值。使用INSERT IGNORE INTO执行下面提供的查询。

INSERT IGNORE INTO employeetbl (emp_id, emp_name) VALUES (1, AKANKSHA VERMA);

MySQL将再次返回一个警告,但它将在表中添加这些值。实现以下SQL查询以显示插入的记录。

SELECT * FROM employeetbl;

它将返回以下输出:

如何在MySQL中插入值

您可以看到该行已添加到表中,但是MySQL减少了emp_name列的值。

摘要

在本教程中,我们讨论了用户如何通过实现INSERT语句向MySQL表中添加一个或多个行。我们还讨论了用户如何在另一个语句生成的结果集中的表中添加值。此外,我们还讨论了如何使用INSERT IGNORE语句忽略在执行INSERT查询时生成的错误。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程