同步操作将从 布客飞龙/lmpythw-zh 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
译者:飞龙
自豪地采用谷歌翻译
“管理”一词在数据库中重载了。它的意思是“确保 PostgreSQL 服务器保持运行”,或者是“为新软件的部署更改和迁移表”。在本练习中,我只介绍如何更改和迁移简单的纲要。管理完整数据库服务器不在本书的范围之内。
您已经遇到了DROP TABLE
作为删除表的方式。我将向您展示另一种使用方式,以及如何使用ALTER TABLE
在表中添加或删除列。
/* Only drop table if it exists. */
DROP TABLE IF EXISTS person;
/* Create again to work with it. */
CREATE TABLE person (
id INTEGER PRIMARY KEY,
first_name TEXT,
last_name TEXT,
age INTEGER
);
/* Rename the table to peoples. */
ALTER TABLE person RENAME TO peoples;
/* Add a hatred column to peoples. */
ALTER TABLE peoples ADD COLUMN hatred INTEGER;
/* Rename peoples back to person. */
ALTER TABLE peoples RENAME TO person;
.schema person
/* We don't need that. */
DROP TABLE person;
我正在对表进行一些虚假更改,来演示这些命令,但使用ALTER TABLE
和DROP TABLE
语句,这是你可以在 SQLite3 中执行的一切事情。我会讲解它,让你了解发生了什么:
ex21.sql:2
使用IF EXISTS
修饰符,仅当表已经存在时,才会丢弃。当你在没有表的新的数据库上运行你的.sql
脚本时,这抑制了错误。
ex21.sql:5
仅仅重新创建表来处理它。
ex21.sql:13
使用ALTER TABLE
来将其重命名为peoples
。
ex21.sql:16
向新命名的表peoples
中添加新的一列hatred
,它是个INTEGER
。
ex21.sql:19
将peoples
重命名回到person
,因为这对于表来说是个愚蠢的名称。
ex21.sql:21
转储person
的纲要,所以你可以看到,它拥有新的hatred
列。
ex21.sql:24
在这个练习之后,丢弃这个表来打扫干净。
我们来应用您学到的一些技巧。我会让你选取你的数据库,并将纲要“演进”成不同的形式。你需要确保你很好地了解了以前的练习,并且让你的code.sql
正常工作。如果你没有完成每一个这些东西,那么回去把所有东西都弄清楚。
为了确保你在正确的状态中尝试这个练习,当你运行你的code.sql
,你应该可以运行.schema
,像这样:
$ sqlite3 ex13.db < code.sql
$ sqlite3 ex13.db .schema
CREATE TABLE person (
id INTEGER PRIMARY KEY,
first_name TEXT,
last_name TEXT,
age INTEGER
);
CREATE TABLE person_pet (
person_id INTEGER,
pet_id INTEGER
);
CREATE TABLE pet (
id INTEGER PRIMARY KEY,
name TEXT,
breed TEXT,
age INTEGER,
dead INTEGER,
dob DATETIME
);
确保你的表像我的表。并且如果不是,返回去并且移除任何命令,它们在上一个练习之后执行ALTER TABLE
或者任何东西。
您所要完成的任务是数据库更改的以下列表:
person
添加dead
列,就像pets
中那样。person
添加phone_number
列。person
添加salary
列,它是float
。person
和pet
添加dob
列,它是DATETIME
。person_pet
添加purchased_on
列,它是DATETIME
。pet
添加parent
列,它是INTEGER
,并且持有它父母的id
。UPDATE
语句,使用新的列数据更新现有的数据库记录。不要忘记person_pet
关系表中的purchased_on
列,来表明这个人什么时候购买这个宠物。parent
列中。purchased_on
列将person_pet
映射到pet
和parent
。pet.parent
来实现它。实际上很简单,所以不要小题大做。code.sql
文件,你已经把所有的代码放了进去,让它使用DROP TABLE IF EXISTS
语法。ALTER TABLE
,向person
添加height
和weight
列,并将其放在你的code.sql
文件中。code.sql
脚本来重置数据库,你应该没有错误。您应该通过编写一个ex13.sql
文件来实现,文件里面是这些新的东西。然后通过使用code.sql
重置数据库来测试它,然后运行ex13.sql
来更改数据库,并执行SELECT
查询来确认您进行了正确的更改。
继续阅读DROP TABLE
和ALTER TABLE
的文档,然后访问 SQLite3 语言页面,并且阅读文档的其余CREATE
和DROP
语句。
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。