If you're seeing this message, it means we're having trouble loading external resources on our website.

如果你被网页过滤器挡住,请确保域名*.kastatic.org*.kasandbox.org 没有被阻止.

主要内容

使用 SQL 更新数据库

正如我们在课程中提到的,我们可能会很多次发现自己在数据库中使用 SQL 或者类似 SQL 的查询语言。我们可以将某些用途视为“只读操作”,将其他用途视为“读/写操作”。
“只读操作”的一个例子是对一些应用程序或研究的数据取出来进行数据分析。例如,如果我是一名专门分析每日打卡记录的数据科学家,我可能会查询在同一天跑步运动了的用户中吃了冰淇淋的人的百分比,以此了解运动是否会让人们想要奖励自己:
SELECT * FROM diary_logs WHERE
       food LIKE "%ice cream%" AND activity LIKE "%running%";
如果我做一个这样的数据分析,那么很可能我会用 SELECT - 这个是只读的。我们不会添加新的数据,我们只是查询现有数据。我们需要熟练使用 SELECT 语句,但我们并不需要知道如果创建表格,更新行等等。
“读/写操作”的一个例子是为网页应用创建后端的软件工程师。例如,如果我是一个从事健康状况追踪工作的软件工程师,在用户每次提交表单时,我可能需要写出能在数据库中插入新的每日日志的代码:
INSERT INTO diary_logs (id, food, activity)
            VALUES (123, "ice cream", "running");
我可能会从服务器端语言内部发出该 SQL 命令,有可能会调用程序库(Library)来更轻松地构建命令。这就是当我用Python调用SQLALchemy 库时插入命令的写法:
diary_logs.insert().values(id=123, food="ice cream", activity='running')
如果用户编辑了他们的日志,删除了日志,甚至是删除了他们的账号,我还需要编写SQL来修改数据库。如果团队决定增加更多的功能到用户的日志里,例如情绪列,来跟踪当用户吃冰淇淋和跑步时有多开心(我猜测是:非常开心),我会需要编写SQL来修改表格的结构。
这些都是“写操作”,而当我们需要使用数据库来储存和更新app的数据时这些是很必要的。INSERT是相对安全的操作,因为它只增加数据,但像UPDATEDELETEDROP,或 ALTER 这样的操作会更危险,因为他们会修改现有的数据。这就是为什么清楚了解,并谨慎使用这些命令是很重要的。请继续学习如何使用它们吧!