笨办法学 Python · 续 练习 43:SQL 管理
来源:互联网 发布:易语言电视直播源码 编辑:程序博客网 时间:2024/05/21 17:00
练习 43:SQL 管理
原文:Exercise 43: SQL Administration
译者:飞龙
协议:CC BY-NC-SA 4.0
自豪地采用谷歌翻译
“管理”一词在数据库中重载了。它的意思是“确保 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 .schemaCREATE 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
列,来表明这个人什么时候购买这个宠物。 - 再增加四个人和五个宠物,并为它们分配从属关系,以及哪个宠物是父母。在最后一部分,请记住,您获取父母的 ID,然后将其设置在
parent
列中。 - 写一个查询,寻找 2004 年以后购买的所有宠物及其所有者的名字。关键是基于
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
语句。
- 笨办法学 Python · 续 练习 43:SQL 管理
- 笨办法学 Python · 续 练习 38:SQL 简介
- 笨办法学 Python · 续 练习 40:SQL 读取
- 笨办法学 Python · 续 练习 39:SQL 创建
- 笨办法学 Python · 续 练习 41:SQL 更新
- 笨办法学 Python · 续 练习 42:SQL 删除
- 笨办法学 Python · 续 练习 5:`cat`
- 笨办法学 Python · 续 练习 6:`find`
- 笨办法学 Python · 续 练习 8:`cut`
- 笨办法学 Python · 续 练习 7:`grep`
- 笨办法学 Python · 续 练习 9:`sed`
- 笨办法学 Python · 续 练习 10:`sort`
- 笨办法学 Python · 续 练习 11:`uniq`
- 笨办法学 Python · 续 练习 12:复习
- 笨办法学 Python · 续 练习 3:质量
- 笨办法学 Python · 续 练习 2:创造力
- 笨办法学 Python · 续 练习 13:单链表
- 笨办法学 Python · 续 练习 14:双链表
- C# Regex类详解
- fzu2231平行四边形数
- Js+css3实现图片画廊总结
- adapter
- 创建并运行Java运行时代码的三种方式
- 笨办法学 Python · 续 练习 43:SQL 管理
- 回顾Linux、Git 之父Linus Torvalds的传奇技术人生
- python _、__和__xx__的区别
- java中接口的用法
- solr6.6定时实时重建索引和增量更新
- 采用管道函数创建有名管道,使用select函数替代使用poll函数实验多路复用
- Apache POI读合并单元格
- WebView 加载空白问题
- Bluehost服务器虚拟化