插入数据
使用INSERT将行插入(或添加)到数据库表。
插入完整的行
Students表:
| id | class_id | name | gender | score |
| --- | -------- | ---- | ------ | ----- |
| 1 | 1 | 小明 | M | 90 |
| 2 | 1 | 小红 | F | 95 |
| 3 | 1 | 小军 | M | 88 |
| 4 | 1 | 小米 | F | 73 |
| 5 | 2 | 小白 | F | 81 |
| 6 | 2 | 小兵 | M | 55 |
| 7 | 2 | 小林 | M | 85 |
| 8 | 3 | 小新 | F | 91 |
| 9 | 3 | 小王 | M | 89 |
| 10 | 3 | 小丽 | F | 88 |
INSERT INTO
Students (class_id, name, gender, score)
VALUES
(4, '小刘', 'F', 91);
SELECT * FROM Students;
+----+----------+------+--------+-------+
| id | class_id | name | gender | score |
+----+----------+------+--------+-------+
| 1 | 1 | 小明 | M | 90 |
| 2 | 1 | 小红 | F | 95 |
| 3 | 1 | 小军 | M | 88 |
| 4 | 1 | 小米 | F | 73 |
| 5 | 2 | 小白 | F | 81 |
| 6 | 2 | 小兵 | M | 55 |
| 7 | 2 | 小林 | M | 85 |
| 8 | 3 | 小新 | F | 91 |
| 9 | 3 | 小王 | M | 89 |
| 10 | 3 | 小丽 | F | 88 |
| 11 | 4 | 小刘 | F | 91 |
+----+----------+------+--------+-------+
这个例子将一个新学生插入到Students表中,表名后的括号里给出了列名。
列的数据在VALUES子句中给出,必须给每一列提供一个值,并且必须以列名的顺序指定值。
省略列
在INSERT操作中是可以省略某些列的,该列定义为允许NULL值(无值或空值)或在表定义中给出了默认值。
插入多行
INSERT INTO
Students (class_id, name, gender, score)
VALUES
(4, '小刘', 'F', 91),(4, '小吴', 'M', 85);
SELECT * FROM Students;
+----+----------+------+--------+-------+
| id | class_id | name | gender | score |
+----+----------+------+--------+-------+
| 1 | 1 | 小明 | M | 90 |
| 2 | 1 | 小红 | F | 95 |
| 3 | 1 | 小军 | M | 88 |
| 4 | 1 | 小米 | F | 73 |
| 5 | 2 | 小白 | F | 81 |
| 6 | 2 | 小兵 | M | 55 |
| 7 | 2 | 小林 | M | 85 |
| 8 | 3 | 小新 | F | 91 |
| 9 | 3 | 小王 | M | 89 |
| 10 | 3 | 小丽 | F | 88 |
| 11 | 4 | 小刘 | F | 91 |
| 12 | 4 | 小吴 | M | 85 |
+----+----------+------+--------+-------+
插入检索出的数据
INSERT还可以将SELECT语句的检索结果插入表中,这就是所谓的INSERT SELECT。
Classes表:
| id | name |
|----|------|
| 1 | 一班 |
| 2 | 二班 |
| 3 | 三班 |
| 4 | 四班 |
INSERT INTO
Students (class_id, name, gender, score)
VALUES
(
(
SELECT
id
FROM
Classes
WHERE
name = '四班'
),
'小刘',
'F',
91
);
SELECT * FROM Students;
这个例子从一个名为Classes的表中读出数据并插入到Students表。