MySQL中的INSERT INTO语句用于向数据库表中插入新的记录,它允许你指定要插入的表名和列名,以及要插入的值。

语法如下:
INSERT INTO table_name (column1, column2, column3, ...) VALUES (value1, value2, value3, ...);
table_name是要插入数据的表的名称,column1, column2, column3, ...是表中的列名,value1, value2, value3, ...是要插入的具体值。
示例:
假设有一个名为students的表,包含以下列:id,name,age,grade,现在我们要插入一条新记录,可以使用以下语句:
INSERT INTO students (id, name, age, grade) VALUES (1, 'John Doe', 18, 'A');
这将在students表中插入一条新记录,其id为1,name为'John Doe',age为18,grade为'A'。
注意事项:
如果省略列名列表,则必须按照表中列的顺序提供值。
```sql
INSERT INTO students
VALUES (2, 'Jane Smith', 19, 'B');
```
如果要插入多个记录,可以继续添加多个VALUES子句,每个子句对应一条记录。
```sql

INSERT INTO students (id, name, age, grade)
VALUES (3, 'Alice Johnson', 20, 'A'),
(4, 'Bob Brown', 21, 'B');
```
插入的数据类型必须与表中列的数据类型匹配,如果数据类型不匹配,将导致错误。
如果某些列有默认值或允许NULL值,可以在INSERT INTO语句中省略这些列,它们将自动填充默认值或NULL。
相关问题与解答:
1、Q: 如何在MySQL中使用INSERT INTO语句插入多行数据?
A: 可以通过在VALUES子句中列出多个值组合来插入多行数据,每个括号内的值组合代表一行数据。
```sql
INSERT INTO students (id, name, age, grade)
VALUES (5, 'Emily Davis', 22, 'C'),
(6, 'Michael Wilson', 23, 'B');

```
这将一次性插入两行数据到students表中。
2、Q: 如何避免SQL注入攻击?
A: 为了避免SQL注入攻击,应该使用预处理语句(Prepared Statements)而不是直接拼接字符串来构建SQL查询,预处理语句会将参数与SQL语句分开处理,确保参数不会被解释为SQL代码的一部分,使用PHP的MySQLi扩展进行预处理语句:
```php
$stmt = $mysqli->prepare("INSERT INTO students (id, name, age, grade) VALUES (?, ?, ?, ?)");
$stmt->bind_param("issi", $id, $name, $age, $grade);
$stmt->execute();
```
在这个例子中,问号(?)是占位符,通过bind_param方法绑定实际的参数值,从而避免了SQL注入的风险。