INSERT INTO
是关系型数据库中用于向表中插入新数据的SQL语句。其基本语法结构如下:
INSERT INTO table_name (column1, column2, column3, ...)
VALUES (value1, value2, value3, ...);
-
table_name
:要插入数据的表名。 -
column1, column2, column3, ...
:要插入数据的列名,这些列名可以是表的一部分,也可以省略。如果省略,则插入的数据顺序必须与表中存储的列名顺序一致。 -
value1, value2, value3, ...
:要插入的具体数据值,这些值的排列顺序必须与INTO
子句后面的列名排列一致。
此外,INSERT INTO
语句还有以下几种常见的写法:
- 省略列名写法 :
INSERT INTO table_name VALUES (value1, value2, ...);
```
这种写法最简单,直接将数据按照表中列的顺序插入到对应的列中。插入的数据类型必须与表中相应列的数据类型相匹配,并且插入数据的数量必须与表中的列数相等。
2. **指定列名写法** <b class="card40_249__sup_c012" data-sup="sup">2</b>:
```sql
INSERT INTO table_name (column1, column2, ...)
VALUES (value1, value2, ...);
```
这种写法指定了插入数据的目标列,通过列名可以确保数据被插入到正确的位置。插入的数据顺序与列名的顺序可以不同,但是对于不指定值的列,需要注意其是否允许为空,如果不允许为空需要为其提供一个默认值或者使用`NULL`进行填充。
3. **插入查询结果写法** <b class="card40_249__sup_c012" data-sup="sup">2</b>:
```sql
INSERT INTO table_name (column1, column2, ...)
SELECT column1, column2, ...
FROM another_table
WHERE condition;
```
这种写法可以通过一个子查询将数据从另一个表插入到当前表中。
### 示例
假设有一个名为`employees`的表,结构如下:
```sql
CREATE TABLE employees (
id INT PRIMARY KEY,
first_name VARCHAR(50),
last_name VARCHAR(50),
age INT
);
以下是一些使用INSERT INTO
语句的示例:
- 插入一条记录 :
INSERT INTO employees (id, first_name, last_name, age)
VALUES (1, 'John', 'Doe', 30);
```
2. **插入多条记录** <b class="card40_249__sup_c012" data-sup="sup">5</b>:
```sql
INSERT INTO employees (id, first_name, last_name, age)
VALUES (2, 'Jane', 'Smith', 25),
(3, 'Alice', 'Johnson', 35);
```
3. **指定列名插入** <b class="card40_249__sup_c012" data-sup="sup">2</b>:
```sql
INSERT INTO employees (last_name, age)
VALUES ('Brown', 40),
('Green', 28);
```
4. **插入查询结果** <b class="card40_249__sup_c012" data-sup="sup">2</b>:
```sql
INSERT INTO employees (id, first_name, last_name, age)
SELECT id, first_name, last_name, age
FROM temp_employees
WHERE age > 30;
```
这些示例展示了如何使用`INSERT INTO`语句向表中插入新数据,包括插入一条记录、多条记录、指定列名插入以及插入查询结果<b class="card40_249__sup_c012" data-sup="sup">2</b>。根据具体需求选择合适的写法可以提高数据插入的效率和准确性。