15.3. Lesson: 将数据添加到模型
我们已经创建的模型现在需要填充它们想要包含的数据。
The goal for this lesson: 学习如何将新数据插入到数据库模型中。
15.3.1. INSERT语句
如何将数据添加到表中?The SQL INSERT 语句提供了以下功能:
insert into streets (name) values ('High street');
有几件事需要注意:
在表名之后 (streets ),列出要填充的列名(在本例中仅 name 列)。
后 values 关键字,则放置字段值列表。
字符串应使用单引号引起来。
请注意,我们没有为 id 列;这是因为它是一个序列,将自动生成。
如果您确实手动设置 id ,则可能会对数据库的完整性造成严重问题。
你应该看到 INSERT 0 1 如果它成功了。
您可以通过选择表中的所有数据来查看插入操作的结果:
select * from streets;
结果:
select * from streets;
id | name
----+-------------
1 | High street
(1 row)
Try Yourself
使用 INSERT 命令将新街道添加到 streets 桌子。
回答
您应该使用的SQL命令如下所示(您可以用您选择的名称替换街道名称):
insert into streets (name) values ('Low Road');
15.3.2. 根据约束对数据添加进行排序
15.3.3. Try Yourself
尝试将Person对象添加到 people 表中包含以下详细信息:
Name: Joe Smith
House Number: 55
Street: Main Street
Phone: 072 882 33 21
备注
回想一下,在本例中,我们将电话号码定义为字符串,而不是整数。
此时,如果您尝试在没有首先在中为Main Street创建记录的情况下执行此操作,则应该会收到错误报告 streets 桌子。
您还应该注意到:
您不能使用街道名称添加街道
不能使用街道添加街道 id 在街道表中首次创建街道记录之前
请记住,我们的两个表是通过主键/外键对链接的。这意味着在没有有效的相应街道记录的情况下,不能创建有效的人。
使用上述知识,将新人员添加到数据库中。
回答
以下是正确的SQL语句::
insert into streets (name) values('Main Road');
insert into people (name,house_no, street_id, phone_no)
values ('Joe Smith',55,2,'072 882 33 21');
如果您再次查看Streets表(像以前一样使用SELECT语句),您将看到 id 对于 Main Road
条目为 2 。
这就是为什么我们只能输入数字 2
上面。即使我们看不到 Main Road
完全写在上面的条目中,数据库将能够将其与 street_id 的价值 2 。
如果您已经添加了一个新的街道对象,您可能会发现新的 Main Road
有一个 id 的 3 不 2 。
15.3.4. 选择数据
我们已经向您展示了选择记录的语法。让我们再看几个例子:
select name from streets;
select * from streets;
select * from streets where name='Main Road';
在后面的会议中,我们将更详细地介绍如何选择和过滤数据。
15.3.5. 更新数据
如果您想对一些现有数据进行更改,该怎么办?例如,更改街道名称:
update streets set name='New Main Road' where name='Main Road';
使用此类UPDATE语句时要非常小心--如果有多条记录与您的 WHERE 子句,它们将全部更新!
更好的解决方案是使用表的主键引用要更改的记录:
update streets set name='New Main Road' where id=2;
它应该会回来 UPDATE 1 。
备注
这个 WHERE 语句条件区分大小写 Main Road 不等同于 Main road
15.3.6. 删除数据
若要从表中删除对象,请使用 DELETE 命令:
delete from people where name = 'Joe Smith';
现在让我们来看看我们的People表:
address=# select * from people;
id | name | house_no | street_id | phone_no
----+------+----------+-----------+----------
(0 rows)
15.3.7. Try Yourself
使用你学到的技能将一些新朋友添加到你的数据库中:
name | house_no | street_id | phone_no
-----------------+----------+-----------+--------------
Joe Bloggs | 3 | 2 | 072 887 23 45
Jane Smith | 55 | 3 | 072 837 33 35
Roger Jones | 33 | 1 | 072 832 31 38
Sally Norman | 83 | 1 | 072 932 31 32
15.3.8. In Conclusion
现在,您知道了如何向先前创建的现有模型添加新数据。请记住,如果您想要添加新类型的数据,您可能需要修改和/或创建新的模型来包含该数据。
15.3.9. What's Next?
现在您已经添加了一些数据,您将学习如何使用查询以各种方式访问这些数据。