SQL插入数据用法介绍(如何在表格中插入内容)

作为数据库操作的重要部分,SQL插入语句是用来向一个关系表中插入一条或多条数据记录的命令。在实际的开发中,经常需要使用SQL插入语句实现数据的持久化,因此了解SQL插入数据的方方面面对开发人员至关重要。下面从多个方面来介绍SQL插入数据的知识。

一、插入单条数据

插入单条数据是最基本的SQL插入操作,语法如下:

INSERT INTO table_name (column1, column2, column3, ...)
VALUES (value1, value2, value3, ...);

其中table_name是要插入的表名,column1, column2, column3, …是要插入的列名,VALUES后面的是对应列的值。例如,向一个student表中插入一条数据,可以使用如下SQL:

INSERT INTO student (name, age, gender)
VALUES ('小明', 18, '男');

如果插入的值为数值型,则可以省略单引号,例如:

INSERT INTO student (name, age, gender)
VALUES ('小红', 20, '女');

二、插入多条数据

插入多条数据可以使用单个SQL语句一次性插入多条数据。SQL语法如下:

INSERT INTO table_name (column1, column2, column3, ...)
VALUES (value1, value2, value3, ...),
       (value1, value2, value3, ...),
       (value1, value2, value3, ...);

例如,同时向student表中插入3条数据,SQL语句如下:

INSERT INTO student (name, age, gender)
VALUES ('小明', 18, '男'),
       ('小红', 20, '女'),
       ('小刚', 22, '男');

三、插入查询结果

在一些场景下,需要用到子查询语句,子查询语句可以获取到一些需要插入的数据,这时可以使用INSERT INTO SELECT语句。SQL语法如下:

INSERT INTO table_name (column1, column2, column3, ...)
SELECT column1, column2, column3, ...
FROM another_table
WHERE ...

例如,从另外一个score表,查询小明和小红的成绩,并把这些数据插入到student表中,SQL语句如下:

INSERT INTO student (name, age, gender)
SELECT name, age, gender
FROM score
WHERE name = '小明' OR name = '小红';

四、ON DUPLICATE KEY UPDATE

ON DUPLICATE KEY UPDATE是MySQL的一个扩展功能,用于在插入时进行更新操作。如果插入的数据在表中已经存在了,则可以更新该条记录;如果不存在,则进行插入操作。SQL语法如下:

INSERT INTO table_name (column1, column2, column3, ...)
VALUES (value1, value2, value3, ...)
ON DUPLICATE KEY UPDATE column1 = value1, column2 = value2, column3 = value3, ...;

例如,向student表中插入一条数据,如果该记录已经存在,则将其age值改为20,SQL语句如下:

INSERT INTO student (name, age, gender)
VALUES ('小明', 18, '男')
ON DUPLICATE KEY UPDATE age = 20;

五、防止SQL注入

SQL注入是一个常见的安全问题,指的是攻击者在执行SQL查询或修改时,通过注入恶意SQL语句,使得数据库执行了攻击者预设的恶意行为。为了避免这种情况的发生,开发人员需要使用参数化查询或输入校验等方法,例如:

$mysqli = new mysqli("localhost", "user", "password", "database");
$stmt = $mysqli->prepare("INSERT INTO student (name, age, gender) VALUES (?, ?, ?)");
$stmt->bind_param("sis", $name, $age, $gender);
$name = "小明";
$age = 18;
$gender = "男";
$stmt->execute();
$stmt->close();
$mysqli->close();

这里使用了mysqli的参数化查询方法,使用bind_param()方法来绑定变量,避免了SQL注入的问题。

六、总结

本文从插入单条数据、插入多条数据、插入查询结果、ON DUPLICATE KEY UPDATE和防止SQL注入等方面,详细介绍了SQL插入数据的知识。开发人员在实际应用中需要结合自身的需求和实际情况,灵活使用SQL插入语句。

Published by

风君子

独自遨游何稽首 揭天掀地慰生平