什么是插入数据?
想象一下你开了一所大学。你有一个数据库,里面有一些表,比如 students 用来存学生的信息。现在你要公布录取名单,把学生数据加到表里。在 SQL 里,这就用 INSERT INTO 命令。它能让你往表里加一行新数据——就像你在 Excel 里手动填一行,只不过更快、更强大,还能用代码搞定!
插入数据不仅仅是基础操作。它到处都用得到——比如网店下单、银行存交易记录。大学的话,就是学生名单、老师名单,甚至课程表啥的。
INSERT INTO 命令的基础语法
在 SQL 里,INSERT INTO 命令就是往表里加新行的简单方法。来看下基础语法:
INSERT INTO table_name (column1, column2, column3, ...)
VALUES (value1, value2, value3, ...);
各部分说明:
table_name—— 你要加数据的表名。(column1, column2, column3, ...)—— 你要填值的列名列表。VALUES (value1, value2, value3, ...)—— 你想插入到对应列的值。
举个例子:往 students 表加个新学生。假设我们有这样一个表:
| id | name | age | course |
|---|---|---|---|
| 1 | Otto Song | 18 | 数学 |
现在用 INSERT INTO 加第二个学生:
INSERT INTO students (id, name, age, course)
VALUES (2, 'Anna Lin', 19, '计算机科学');
执行完后,表就变成这样:
| id | name | age | course |
|---|---|---|---|
| 1 | Otto Song | 18 | 数学 |
| 2 | Anna Lin | 19 | 计算机科学 |
往所有列插入数据
如果你想给表的所有列都插值,可以在 INSERT INTO 里省略列名。前提是你得按顺序给每一列都填上值。
语法:
INSERT INTO table_name
VALUES (value1, value2, value3, ...);
举个例子:再往 students 表加一个学生:
INSERT INTO students
VALUES (3, 'Dan Sim', 20, '物理');
结果:
| id | name | age | course |
|---|---|---|---|
| 1 | Otto Song | 18 | 数学 |
| 2 | Anna Lin | 19 | 计算机科学 |
| 3 | Dan Sim | 20 | 物理 |
不过这种写法有点危险,要是表结构变了就容易出错。所以建议还是写上列名,这样更安全。
实战:添加一个学生
来试试用 INSERT INTO 的全部威力,往 students 表加个新学生。
第1步:先查查现在的数据
开始前,最好先看看表里已经有啥。用 SELECT 命令:
SELECT * FROM students;
第2步:加新学生
现在加个学生 Peter Chi,他学“生物”,21岁:
INSERT INTO students (id, name, age, course)
VALUES (4, 'Peter Chi', 21, '生物');
第3步:确认数据加上了
再查一次所有数据:
SELECT * FROM students;
结果:
| id | name | age | course |
|---|---|---|---|
| 1 | Otto Song | 18 | 数学 |
| 2 | Anna Lin | 19 | 计算机科学 |
| 3 | Dan Sim | 20 | 物理 |
| 4 | Peter Chi | 21 | 生物 |
酷吧?Peter 现在已经加到我们大学了。
用 INSERT INTO 时常见的错误
列和数值数量不一致。 比如你写了4个列名,但只给了3个值,SQL 会报错:
INSERT INTO students (id, name, age)
VALUES (5, 'Eva Green', 22, '化学');
错误:列数和数值数不一致。
违反约束。 如果某列要求唯一(UNIQUE)或者必须有值(NOT NULL),不满足就会失败。
数据类型不对。
比如你想往数字字段里插文本,PostgreSQL 也会不高兴:
INSERT INTO students (id, name, age, course)
VALUES (5, 'Axel Linz', '二十', '化学');
实际项目里为啥要用这个?
会用 INSERT INTO 是个你几乎做所有数据库应用都要用到的技能。现实里你会用它来:
- 注册新用户。
- 网店下单。
- 支付系统里保存支付数据。
- 教育系统里每天更新学生、考勤、成绩等数据。
每次你的应用和用户或外部数据源打交道,INSERT INTO 就是把这些数据写进数据库的主力工具。
如果你搞 backend 应用,或者打算写处理数据的 API,学会用 SQL 插入数据——这是最基础但超级重要的技能!
GO TO FULL VERSION