安装、设置、创建和开始使用PostgreSQL数据库。每个人可能都有一些东西需要保存在数据库中。即使您坚持使用纸质或电子文件,它们也会变得很麻烦。纸质文档可能会丢失或弄乱,您需要访问的电子信息可能深藏在段落和页面中。在我的医疗实践中,我使用PostgreSQL来跟踪我的住院病人名册并提交有关住院病人的信息。我在口袋里打印出每天的患者名单,以快速了解患者房间、诊断或其他细节的任何变化,并做一个快速记录。我以为一切都很好,直到去年我妻子决定买一辆新车,而我“得到”了她以前的车。她保留了一个汽车维修和保养服务收据文件夹,但随着时间的推移,它变得杂乱无章。与其花时间筛选所有纸条来弄清楚什么时候做了什么,我认为PostgreSQL是跟踪这些信息的更好方法。安装PostgreSQL好久没用PostgreSQL了,忘记怎么用了。事实上,我什至没有在我的电脑上安装它。安装它是第一步。我使用的是Fedora,所以在控制台运行:dnflistpostgresql*注意,你不需要使用sudo来使用list选项。该命令返回了一长串软件包。快速浏览后,我决定只需要三个:postgresql、postgresql-server和postgresql-docs。为了了解下一步该做什么,我决定查看PostgreSQL文档。文档参考非常丰富,事实上,丰富得令人生畏。幸运的是,我找到了我在升级Fedora时做的一些笔记,希望能够有效地导出数据库,在新版本上重启PostgreSQL,并导入旧数据库。设置PostgreSQL与大多数其他软件不同,您不能只安装PostgreSQL并开始使用它。您必须预先执行两个基本步骤:首先,您需要设置PostgreSQL,其次,您需要启动它。您必须是root才能执行这些操作(sudo在这里不起作用)。要设置它,请输入:postgresql-setup--initdb这将确定PostgreSQL数据库在您计算机上的位置。然后(仍然以root身份)输入以下两个命令:systemctlstartpostgresql.servicesystemctlenablepostgresql.service第一个命令为当前会话启动PostgreSQL(如果关闭机器,PostgreSQL也将关闭)。第二个命令使PostgreSQL在随后的重新启动时自动启动。创建用户PostgreSQL正在运行,但您仍然无法使用它,因为您还没有用户。为此,您需要切换到特殊用户postgres。当您仍然以root身份运行时,输入:supostgres因为您是以root身份执行此操作,所以不需要输入密码。root用户可以在不知道密码的情况下作为任何用户进行操作;这是使它强大和危险的原因之一。现在您是postgres,请运行以下两个命令来创建用户(createusergregp),如下所示:createusergregpcreatedbgregp您可能会看到错误消息,例如:Couldnotswitchto/home/gregp。这只是意味着用户postgres无法访问该目录。尽管如此,您的用户和数据库已创建。接下来,键入exit并按enter两次,这样您就回到了原始用户(root)下。设置数据库要开始使用PostgreSQL,请在命令行输入psql。您应该在每行的左侧看到类似gregp=>的内容,表明您正在使用PostgreSQL并且只能使用它理解的命令。您会自动获得一个完全空的数据库(我的数据库称为gregp)。对于PostgreSQL,数据库只是一个工作空间。在空间内,您可以创建表。一个表包含一个变量列表,表中的每个变量都是组成数据库的数据。以下是我设置汽车服务数据库的方法:CREATETABLEautorepairs(datedate,repairsvarchar(80),locationvarchar(80),costnumeric(6,2));我本可以把它放在一行中,但为了更好地说明结构,并表明PostgreSQL不解释制表符和换行空格,我分成多行。字段用括号括起来,每个变量名和数据类型用逗号分隔(最后一个除外),命令以分号结尾。所有命令必须以分号结尾!第一个变量名是date,它的数据类型也是date,在PostgreSQL中是可以的。第二个和第三个变量repairs和location都是varchar(80)类型,这意味着它们最多可以是80个任意字符(字母、数字等)。最后一个可变成本使用数字类型。括号中的数字表示最多六位数字,其中两位是小数。最初,我尝试了真正的类型,它是一个浮点数。实际类型的问题是当用作数据类型时,遇到WHERE子句,如WHEREcost=0或任何其他特定数字。由于实际值有些不精确,因此具体数字永远不会匹配。输入数据接下来,您可以使用INSERTINTO命令添加一些数据(在PostgreSQL中称为行):INSERTINTOautorepairsVALUES('2017-08-11','airbagrecall','dealer',0);请注意,括号构成了值的容器,必须按正确的顺序排列,用逗号分隔,并以分号结尾。date和varchar(80)类型的值必须用单引号括起来,而numeric等数值则不需要。作为反馈,您应该看到:INSERT01与常规终端会话一样,您将拥有输入命令的历史记录,因此在输入后续行时,您通常可以按向上箭头键显示最后一条命令并编辑它作为需要的数据,节省了大量时间。如果事情不顺利怎么办?使用UPDATE更改值:UPDATEautorepairsSETdate='2017-11-08'WHERErepairs='airbagrecall';或者,您可能不再需要表中的行。使用DELETE:DELETEFROMautorepairsWHERErepairs='airbagrecall';这将删除整行。最后一件事:尽管我一直在PostgreSQL命令中使用大写字母(而且我在大部分文档中都这样做),但您也可以输入小写字母,而且我经常这样做。输出数据如果要显示数据,使用SELECT:SELECT*FROMautorepairsORDERBYdate;如果没有ORDERBY,无论您输入什么,都会显示该行。例如,这是我的终端中输出的汽车服务数据:SELECTdate,repairsFROMautorepairsORDERBYdate;日期|维修----------+-----------------------------------------------------------------2008-08-08|换机油、空滤、火花塞2011-09-30|35000服务,换油,旋转轮胎/平衡轮2012-03-07|更换电池2012-11-14|机油/滤清器2014-04-09|55000维护、机油/过滤器、火花塞、空气/灰尘过滤器2014-04-21|更换4个轮胎2014-04-21|车轮定位2016-06-01|65000公里服务,换机油2017-05-16|换油,更换机油滤清器外壳2017-05-26|轮换轮胎2017-06-05|空气滤清器、空调滤清器、火花塞2017-06-05|刹车片和转子,齐平刹车2017-08-11|07-06|更换机油/滤清器、燃油滤清器、电池svc2018-07-06|变速箱fl、p转向fl、后差速器fl2019-07-22|更换机油和滤清器、冲洗制动液、冲洗前差速器2019-08-20|更换4个轮胎2019-10-09|更换乘客er尾灯灯泡2019-10-25|replacepassengertaillightassembly(19rows)要将其发送到文件,请将输出更改为:\oautorepairs.txt然后再次运行SELECT命令以退出PostgreSQL最后,在要退出PostgreSQL的终端中输入:quit或其缩写:\q虽然这只是对PostgreSQL的简要介绍,但我希望它能证明使用数据库完成如此简单的任务既不困难也不费时。
