使用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表。