postgresql存图片字段类型_PostgreSQL 入门

f9d40d30e227fba391eb2d4ade1fd54a.png
安装、设置、创建和开始使用 PostgreSQL 数据库。
-- Greg Pittman(作者)

每个人或许都有需要在数据库中保存的东西。即使你执着于使用纸质文件或电子文件,它们也会变得很麻烦。纸质文档可能会丢失或混乱,你需要访问的电子信息可能会隐藏在段落和页面的深处。

在我从事医学工作的时候,我使用 PostgreSQL 来跟踪我的住院患者名单并提交有关住院患者的信息。我将我的每日患者名单打印在口袋里,以便快速了解患者房间、诊断或其他细节的任何变化并做出快速记录。

我以为一切没问题,直到去年我妻子决定买一辆新车,我“接手”了她以前的那辆车。她保留了汽车维修和保养服务收据的文件夹,但随着时间的流逝,它变得杂乱。与其花时间筛选所有纸条以弄清楚什么时候做了什么,我认为 PostgreSQL 将是更好的跟踪此信息的方法。

安装 PostgreSQL

自上次使用 PostgreSQL 以来已经有一段时间了,我已经忘记了如何使用它。实际上,我甚至没有在计算机上安装它。安装它是第一步。我使用 Fedora,因此在控制台中运行:

dnf list postgresql*

请注意,你无需使用 sudo 即可使用 list 选项。该命令返回了很长的软件包列表。看了眼后,我决定只需要三个:postgresql、postgresql-server 和 postgresql-docs。

为了了解下一步需要做什么,我决定查看 PostgreSQL 文档。文档参考内容非常丰富,实际上,丰富到令人生畏。幸运的是,我发现我在升级 Fedora 时曾经做过的一些笔记,希望有效地导出数据库,在新版本上重新启动 PostgreSQL,以及导入旧数据库。

设置 PostgreSQL

与大多数其他软件不同,你不能只是安装好 PostgreSQL 就开始使用它。你必须预先执行两个基本步骤:首先,你需要设置 PostgreSQL,第二,你需要启动它。你必须以 root 用户身份执行这些操作(sudo 在这里不起作用)。

要设置它,请输入:

postgresql-setup –initdb

这将确定 PostgreSQL 数据库在计算机上的位置。然后(仍为 root)输入以下两个命令:

systemctl start postgresql.service
systemctl enable postgresql.service

第一个命令为当前会话启动 PostgreSQL(如果你关闭机器,那么 PostgreSQL 也将关闭)。第二个命令使 PostgreSQL 在随后的重启中自动启动。

创建用户

PostgreSQL 正在运行,但是你仍然不能使用它,因为你还没有用户。为此,你需要切换到特殊用户 postgres。当你仍以 root 身份运行时,输入:

su postgres

由于你是以 root 的身份执行此操作的,因此无需输入密码。root 用户可以在不知道密码的情况下以任何用户身份操作;这就是使其强大而危险的原因之一。

现在你就是 postgres 了,请运行下面两个命令,如下所示创建用户(创建用户 gregp):

createuser gregp
createdb gregp

你可能会看到错误消息,如:Could not switch to /home/gregp。这只是意味着用户 postgres不能访问该目录。尽管如此,你的用户和数据库已创建。接下来,输入 exit 并按回车两次,这样就回到了原来的用户下(root)。

设置数据库

要开始使用 PostgreSQL,请在命令行输入 psql。你应该在每行左侧看到类似 gregp=> 的内容,以显示你使用的是 PostgreSQL,并且只能使用它理解的命令。你自动获得一个数据库(我的名为 gregp),它里面完全没有内容。对 PostgreSQL 来说,数据库只是一个工作空间。在空间内,你可以创建。表包含变量列表,而表中的每个变量是构成数据库的数据。

以下是我设置汽车服务数据库的方式:

CREATE TABLE autorepairs (date            date,repairs         varchar(80),location        varchar(80),cost            numeric(6,2)
);

我本可以在一行内输入,但为了更好地说明结构,并表明 PostgreSQL 不会解释制表符和换行的空白,我分成了多行。字段包含在括号中,每个变量名和数据类型与下一个变量用逗号分隔(最后一个除外),命令以分号结尾。所有命令都必须以分号结尾!

第一个变量名是 date,它的数据类型也是 date,这在 PostgreSQL 中没关系。第二个和第三个变量 repairslocation 都是 varchar(80) 类型,这意味着它们可以是最多 80 个任意字符(字母、数字等)。最后一个变量 cost 使用 numeric 类型。括号中的数字表示最多有六位数字,其中两位是小数。最初,我尝试了 real 类型,这将是一个浮点数。real 类型的问题是作为数据类型在使用时,在遇到 WHERE 子句,类似 WHERE cost = 0 或其他任何特定数字。由于 real 值有些不精确,因此特定数字将永远不会匹配。

输入数据

接下来,你可以使用 INSERT INTO 命令添加一些数据(在 PostgreSQL 中称为):

INSERT INTO autorepairs VALUES ('2017-08-11', 'airbag recall', 'dealer', 0);

请注意,括号构成了一个值的容器,它必须以正确的顺序,用逗号分隔,并在命令末尾加上分号。datevarchar(80) 类型的值必须包含在单引号中,但数字值(如 numeric)不用。作为反馈,你应该会看到:

INSERT 0 1

与常规终端会话一样,你会有输入命令的历史记录,因此,在输入后续行时,通常可以按向上箭头键来显示最后一个命令并根据需要编辑数据,从而节省大量时间。

如果出了什么问题怎么办?使用 UPDATE 更改值:

UPDATE autorepairs SET date = '2017-11-08' WHERE repairs = 'airbag recall';

或者,也许你不再需要表中的行。使用 DELETE

DELETE FROM autorepairs WHERE repairs = 'airbag recall';

这将删除整行。

最后一件事:即使我在 PostgreSQL 命令中一直使用大写字母(在大多数文档中也这么做),你也可以用小写字母输入,我也经常如此。

输出数据

如果你想展示数据,使用 SELECT

SELECT * FROM autorepairs ORDER BY date;

没有 ORDER BY 的话,行将不管你输入的内容来显示。例如,以下就是我终端中输出的我的汽车服务数据:

SELECT date, repairs FROM autorepairs ORDER BY date;date   |                             repairs                             
-----------+-----------------------------------------------------------------
2008-08-08 | oil change, air filter, spark plugs
2011-09-30 | 35000 service, oil change, rotate tires/balance wheels
2012-03-07 | repl battery
2012-11-14 | 45000 maint, oil/filter
2014-04-09 | 55000 maint, oil/filter, spark plugs, air/dust filters
2014-04-21 | replace 4 tires
2014-04-21 | wheel alignment
2016-06-01 | 65000 mile service, oil change
2017-05-16 | oil change, replce oil filt housing
2017-05-26 | rotate tires
2017-06-05 | air filter, cabin filter,spark plugs
2017-06-05 | brake pads and rotors, flush brakes
2017-08-11 | airbag recall
2018-07-06 | oil/filter change, fuel filter, battery svc
2018-07-06 | transmission fl, p steering fl, rear diff fl
2019-07-22 | oil & filter change, brake fluid flush, front differential flush
2019-08-20 | replace 4 tires
2019-10-09 | replace passenger taillight bulb
2019-10-25 | replace passenger taillight assembly
(19 rows)

要将此发送到文件,将输出更改为:

o autorepairs.txt

然后再次运行 SELECT 命令。

退出 PostgreSQL

最后,在终端中退出 PostgreSQL,输入:

quit

或者它的缩写版:

q

虽然这只是 PostgreSQL 的简要介绍,但我希望它展示了将数据库用于这样的简单任务既不困难也不费时。


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/529436.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ibm服务器 p5 硬盘,IBM虚拟化实战之p5服务器逻辑分区解读

创建 AIX 分区现在您将创建一个 AIX 分区,它使用 VIO Server 的 SEA 来访问网络。它还将其 rootvg 寄宿在 VIO LPAR 上。创建 AIX 服务器分区和概要除了下面的变化以外,创建 AIX 分区和概要的步骤与创建VIO Server 分区和概要部分中的步骤完全相同。1. 在…

cad动态块制作翻转_装X必学,手把手教你做CAD动态属性块

最近很多粉丝后台问熊大,如何制作CAD动态属性块,这个问题把我难到了。因为这个不是一句两句话能够说得清楚的,于是我拿出珍藏的“西蜀鄙夫”写的教程,并通过与我们设计过程的实际需要给大家说说。干货文章,大家耐心看完…

云服务器怎么执行sql文件在哪里,总结帝国CMS下在PHP文件中怎么调用数据库类执行SQL语句实例...

总结帝国CMS下在PHP文件中怎么调用数据库类执行SQL语句实例发布时间:2020-10-19 14:58:08来源:亿速云阅读:83作者:小新这篇文章将为大家详细讲解有关总结帝国CMS下在PHP文件中怎么调用数据库类执行SQL语句实例,小编觉得…

网和aoe网的区别_运动内衣与普通内衣有什么区别?运动内衣里面还需要穿文胸吗? 小家生活网20201002 11:03:04...

阅读本文前,请您先点击上面的“蓝色字体可以说爱情就是他们最大的软肋。不会在双鱼女那出现。在对于周边的亲戚时。她们那种温柔大方的气势。更符合妈妈的需求。整双腿没有视觉连贯性。但唯独感情这件事一直是水瓶们的知识盲区。他们双商超高。可能最开始还是会去挽…

机器人无限火力无限e符文_LOL:无限火力开黑指南 三大玩法让你快乐加倍

无限火力上线以来受到大家的热烈追捧,今天给大家介绍几个主流的系列,让你在峡谷能够感受到双倍的快乐!超强控制流这一类英雄都是带有强力控制的,无限火力的80%减CD,能够让女坦等英雄可以打出长达几秒的完美控制技能。首…

ps3无线无法与服务器通信,psp上网出现无法与服务器通信(8001006F)

满意答案引用:一:自己网络配置:大亚db102 adsl拨号上网。INTEL网卡。神卡:Zydas 54M 同时支持PSP 和NDS的无线USB网卡三:安装过程中出现的问题DNS错误(8041040F)四、总结出现问题的关键:并非DNS设置错误,主…

bootstrap-table toolbar图标换文字_iPhone 也能随意换字体啦~

呔咯昨天从老大手里喜提一台 iPhone XS Max ,终于让表妹从安卓阵营转入苹果,嘻嘻~当她拿着 iPhone 的时候,一脸懵的问我:iPhone 自带字体也太丑了吧,还我的输入法!!!呔咯&#xff1a…

网络服务器分为文件服务器通信服务器和,近代中国落后、贫困的根本原因是()...

近代far, find, lights, minutes, to, right, tellA: Excuse me. Could you ____ me the way ____ the bookshop?B: Ok. Go along this road and turn____ at the traffic ____. Then go straight on. Youll ____ it next to the post office.A: Is it ____ from here?B: No,…

搭建bitwarden_Docker轻松部署Bitwarden私有密码管理系统服务

0x01. 什么是Bitwarden?开源免费的密码管理器,Bitwarden的原理是使用高强度的AES256 算法对你的个人数据进行本地加密,然后再传输到云端服务器来实现网络同步。bitwarden使用的是微软的Azure云服务器,利用PBKDF2 加密主密码,而且…

取文件 shell_webshell文件上传分析溯源

由于最近比较忙,暂时没有时间更新,所以分享分享一些其他博主文章,大家敬请谅解摘要: dirbuster扫描目录发现几个有用的东东/admin/upload.php/admin/upload1.php/admin/upload2.php访问的时候最后都会跳转到/admin/upload...dirbu…

web系统数据库服务器,Web Gateway

字段名称SPB 关键字描述*目的地目录DMS.Destination您希望 Web Gateway 服务器文件所处的目录的全限定路径。缺省值是:对于 Solaris 与 Linux,是 /opt/TivTwg对于 AIX,是 /usr/TivTwg对于 Windows,是 c:\Program Files\TivTwg*…

java socket发送定长报文_一个基于TCP协议的Socket通信实例

原标题:一个基于TCP协议的Socket通信实例1. 前言一般接口对接多以http/https或webservice的方式,socket方式的对接比较少并且会有一些难度。正好前段时间完成了一个socket的接口的对接需求,现将实现的思路做一个整理。2. 需求概述2.1 需要提供…

7系统软raid_使用图形界面来配置RAID

RAID 配置起来要比 LVM 方便,因为它不像 LVM 那样分了物理卷、卷组和逻辑卷三层,而且每层都需要配置。我们在图形安装界面中配置 RAID 1和 RAID 5,先来看看 RAID 1 的配置方法。RAID 1 配置配置 RAID 1 时同样需要启动图形安装程序&#xff0…

python字典的内置函数_python – 用于字典转换的特殊方法名称的内置函数

我一直在深入研究Python类中的运算符重载和特殊方法,并且我注意到许多内置函数具有等效的特殊方法名称:> int(x)调用x .__ int __()> next(x)在Python 2中调用x .__ next __()或x.next()但是,一些函数,即tuple()和dict(),没有任何等价物.我知道对于这种特殊方…

合并相同数据的行_R语言笔记(六):数据框重塑(reshape2)

数据处理主要内容包括:1. 特殊值处理1.1 缺失值1.2 离群值1.3 日期2. 数据转换(base vs. dplyr)2.1 筛选(subset vs. filter/select/rename)2.2 排序(order vs. arrange)2.3 转换(tr…

华为交换机s2700怎么重置_华为交换机忘记console的密码,怎么恢复出厂设置

展开全部1、启动时,32313133353236313431303231363533e58685e5aeb931333366303064按CtrlB进入BOOTROM目录2、输入BOOTROM的密码盒式交换机的某些款型支持使用快捷键“CtrlE”进入BootROM主菜单,请根据设备的界面提示操作。盒式交换机在V100R006C03之前的…

启动linux_使用 UEFI 双启动 Windows 和 Linux | Linux 中国

这是一份在同一台机器上设置 Linux 和 Windows 双重启动的速成解释,使用统一可扩展固件接口(UEFI)。来源:https://linux.cn/article-12891-1.html作者:Alan Formy-duval译者:郑(本文字数&#x…

域控下发脚本_域用户登陆脚本

如何为一个域用户设置登陆脚本?- BAT可否作为登陆脚本?- 在域用户“属性”中,应如何指定登陆脚本名?"D:\x.bat"还是"\\srv\x.bat"?还是其它?- 脚本应该放在何处?- 还有没有…

mysql增量脚本_mysql全量和增量备份脚本

全量:[rootmaster leo]# cat DBfullBak.sh#!/bin/bash#use mysqldump to fully backup mysql dataBakDir/root/leo/fullLogFile/root/leo/full/bak.logDatedate %Y%m%dBegindate "%Y年%m月%d日 %H:%M:%S"cd $BakDirDumpFile$Date.sqlGZDumpFile$Date.sql.…

mysql 事务 引擎_mysql引擎和事务

对于应用程序和用户来说,同样一张表的数据无论用什么引擎来存储,看到的数据都是一样的,只是不同的引擎在功能、占用空间大小、读取性能等方面可能有所差别。mysql最常用的存储引擎为Innodb、MyISAM和全文索引5.5.5以前默认存储引擎为MyISAM&a…