postgresql存图片字段类型_PostgreSQL 入门 | Linux 中国

每个人或许都有需要在数据库中保存的东西。即使你执着于使用纸质文件或电子文件,它们也会变得很麻烦。纸质文档可能会丢失或混乱,你需要访问的电子信息可能会隐藏在段落和页面的深处。
在我从事医学工作的时候,我使用 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 中没关系。第二个和第三个变量 repairs
和 location
都是 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);
请注意,括号构成了一个值的容器,它必须以正确的顺序,用逗号分隔,并在命令末尾加上分号。date
和 varchar(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 的简要介绍,但我希望它展示了将数据库用于这样的简单任务既不困难也不费时。
via: https://opensource.com/article/19/11/getting-started-postgresql
作者:Greg Pittman 选题:lujun9972 译者:geekpi 校对:wxy
本文由 LCTT 原创编译,Linux中国 荣誉推出

相关文章:

关于ES6中Promise的应用-顺序合并Promise,并将返回结果以数组的形式输出
1.Promise 基础知识梳理 创建一个Promise实例 const promise new Promise(function(resolve, reject) {if (success){resolve(value);} else {reject(error);} }); Promise构造函数接受一个函数作为参数,该函数的两个参数分别是resolve和reject。它们是两个函数&am…

Java计算两个字符串日期之间的天数差
Java计算两个字符串日期之间的天数差 调用方法: public static void main(String[] args) throws ParseException {String a "2017-12-01"; // 时间字符串String b "2017-12-31";Long between_dayInteger between_days(a, b);System.out.pri…

java file_Java IO: File
原文链接 作者: Jakob Jenkov 译者: 李璟(jlee381344197gmail.com)Java IO API中的FIle类可以让你访问底层文件系统,通过File类,你可以做到以下几点:检测文件是否存在读取文件长度重命名或移动文件删除文件检测某个路径是文件还是目录读取目录…

数学建模优化模型简单例题_数学建模之优化模型:存储模型
点击上方「蓝字」关注我们最近,为申报市级精品课程,我为我校“数学建模与科学计算”课程录制了讲课视频,下面是3.1节优化模型的第一个例子:存储模型。敬请大家批评指正!优化模型是数学建模里比较简单、但也非常常用的建…

shiro异常类型
<!-- 身份认证异常 --> <!-- 身份令牌异常,不支持的身份令牌 --> org.apache.shiro.authc.pam.UnsupportedTokenException <!-- 未知账户/没找到帐号,登录失败 --> org.apache.shiro.authc.UnknownAccountException <!-- 帐号锁定 --&…

生产环境下Centos 6.5优化配置 (装载)
本文 centos 6.5 优化 的项有18处: 1、centos6.5最小化安装后启动网卡 2、ifconfig查询IP进行SSH链接 3、更新系统源并且升级系统 4、系统时间更新和设定定时任 5、修改ip地址、网关、主机名、DNS 6、关闭selinux,清空iptables 7、创建普通用户并进行sudo授权管理 8…

java this final_Java this、final等关键字总结
this关键字this引用对象自身。它也可以在构造方法内部用于调用同一个类的其他构造方法。隐藏的静态变量可以通过”类.静态变量”来引用,而隐藏的实例变量就需要使用”this.实例变量”来引用。调用一个重载的构造方法this引用是必须的。this是个隐式参数,…

档案盒正面标签制作_2020昆明大学档案盒价格价格行情
2020昆明大学档案盒价格价格行情背景技术档案盒是企业、单位部门或财务部门整理和装订储存文件的不可缺少的办公用具,主要是对档案材料、财务凭证等进行收集、查找等。目前需要查找档案时需要将所有的档案材料取出,然后一一查找,工作效率低&a…

jQuery效果:隐藏、显示、切换、滑动、淡入淡出、动画
jQuery效果 隐藏、显示、切换、滑动、淡入淡出、以及动画1、隐藏与显示(改变:display:none;) hide()——隐藏 show()——显示toggle()方法:可以使用它来切换hide()与show()方法 eg1:显示 <style type"text/css"> …

《C和指针》pdf
下载地址:网盘下载 本书提供与C语言编程相关的全面资源和深入讨论。本书通过对指针的基础知识和高级特性的探讨,帮助程序员把指针的强大功能融入到自己的程序中去。 全书共18章,覆盖了数据、语句、操作符和表达式、指针、函数、数组、字符串、…

linux 用户java_linux之用户管理
linux是多用户多任务的系统。每个用户都有一个账户。账户不能重复,密码允许重复。成功验证,则进入系统和自己的主目录(也就是家目录里面)。用户-----用户账号,添加、删除、修改以及用户密码管理。用户组------用户组管理。注意三个文件/etc/p…

k均值聚类图像分割matlab代码_用K均值聚类法为人类拍摄的首张黑洞照片进行分割...
众所周知,人类最近拍摄了首张黑洞照片。网友们纷纷表示,这明明就是一个甜甜圈嘛!以前以为黑洞是这个世界上最最高冷的存在,而此刻突然现出真身,形象却是如此的人畜无害!不但如此,还勾起了网友的…

else 策略模式去掉if_设计模式(三)——简单的状态模式代替if-else
博主将会针对Java面试题写一组文章,包括J2ee,SQL,主流Web框架,中间件等面试过程中面试官经常问的问题,欢迎大家关注。一起学习,一起成长。前言大多数开发人员现在还在使用if else的过程结构,曾看…

bzoj 3598 [ Scoi 2014 ] 方伯伯的商场之旅 ——数位DP
题目:https://www.lydsy.com/JudgeOnline/problem.php?id3598 数位DP...东看西看:http://www.cnblogs.com/Artanis/p/3751644.html https://www.cnblogs.com/MashiroSky/p/6399095.html 好巧妙的思路啊!这样统计的东西就变得很简单了&#x…

OSI模型第四层传输层--TCP协议
1.传输层2个协议tcp和udp 2.tcp的可靠性(挂号信)。 面向链接的:类似寄挂号信,对方收到了并且能够确认。所以也是可靠的传输。 最大报文传输:两端可以协商传输报文大小。(协商一个报文的大小) 传输确认机制&…

evt参数是干啥用的_http连接池中非常关键的两个参数,到底是干啥用的?
作者简介:大厂一线资深开发。从crud开发到资深开发,再到研究员兼技术经理。《资深开发讲技术》 从一线实战中总结有故事,有背景的案例,希望带给大家一系列技术盛宴。求关注,欢迎技术交流。友情提醒,往期的文…

java 匿名类调用方法_java – 从匿名类调用新定义的方法
好问题.答案是否你不能直接调用date.someMethod();我们先来了解这是什么.Date date new Date() { ... };以上是延续Date类的匿名(没有名称)子类.当你看到代码,Runnable r new Runnable() {public void run() {}};这意味着您已经定义了正在实现(不扩展)Runnable接口的匿名(没有…

传图识字有次数限制吗_5岁娃识字3000?别羡慕!过早逼娃认字,后果很严重
在开始科普前,先祝大家“新年快乐”!2021年,科大大也会用更优质的育儿科普知识,回馈科粉们的支持和喜爱。话说回来,大家有什么新年flag呢?科大大发现,家长们比起给自己立flag,更愿意…

3des java 库_java 3DES 加密
public class DESCode {private String algorithm "DESede/CBC/PKCS7Padding";//加密方法/运算模式/填充模式private String charset "UTF-8";//编码private Cipher encCipher;//加密cipherprivate Cipher decCipher;//解密cipher…

[JSOI2008]魔兽地图
树上背包 题目传送门 首先,有没有哪位dalao 愿意告诉我为什么合成高级装备不需要附加金币,, 好吧,这个不重要 明确表示装备合成路线可以用一棵树来表示。一颗?傻乎乎的在下之前每次就只dp一棵树,不出意外的…

重大要素改变中的机会选择包括_财务人员专业胜任能力要素及框架
陈珏莹【本文导图】专业胜任能力要素框架的思维导图【概要】专业胜任能力要素构成了能力框架,因此,在构建各层次财务人才专业胜任能力框架之前要先界定能力要素。本文按照专业知识、职业技能和职业价值观三大部分简单介绍了各能力要素的概念。一个测评财…

tomcat部署 修改域名和访问域名时去掉项目名
修改域名和访问域名时去掉项目名 1、修改端口为80端口 因为80端口是为HTTP(HyperText Transport Protocol)即超文本传输协议开放的,浏览网页服务默认的端口号都是80,因此只需输入网址(或IP地址)即可。 打开tomcat安装目…

插入始终是1_40分!1分钟4次!大JB太硬了!
不得不说,巴爵士对赛事的预测还是稳如死狗昨儿他在节目中表示:热火赢不了雄鹿不过,话说出来可能就后悔了,表示如果爪机对血布能占上风,雄鹿还是有点麻烦。真的,巴爵士不再是我们印象中的那个自信的巴毒奶老…

一维卷积filter_从零开始学Pytorch(七)之卷积神经网络
卷积神经网络基础我们介绍卷积神经网络的卷积层和池化层,并解释填充、步幅、输入通道和输出通道的含义。import torch from torch.autograd import Variable aVariable(torch.FloatTensor([[2.,4.]]),requires_gradTrue) btorch.zeros(1,2) b[0,0]a[0,0]**2a[0,1] b…

nodejs配置nginx 以后链接mongodb数据库
服务器 :windows server2008 R2 反向代理 :nginx 1.15.1 for window 64位 数据库:mongodb 4 64位 使用框架express 首先下载nodejs 在官网或者中文网下载都可以 https://nodejs.org/zh-cn/ 然后将写好的项目打包成zip 上传 一定要带上 pac…

android切图尺寸_安卓设计尺寸规范
画布尺寸:如果想一稿适配ios,那就新建7201280 分辨率72,像素/英寸。如果单独设计安卓MD新规范的,那就新建10801920 分辨率72,像素/英寸。单位和度量 Units and measurementsdpi 屏幕宽度(或高度)像素 / 屏幕宽度(或高…

Vue.js使用前
下载安装 node,npm,git 安装cnpm 淘宝cnpm镜像https://npm.taobao.org/,-g表示进行全局安装 npm install -g cnpm --registryhttps://registry.npm.taobao.org # 全局安装 vue-cli$ npm install --global vue-cli# 创建一个基于 webpack 模板的新项目$ vue init web…

无法解析 list 中的方法 iterator_Python-list中的append()和extend()方法区别
一、append()和extend()方法都是用来添加数据到list末尾的,两者的区别:append()添加的时候会把添加的数据当成一个整体进行添加,允许添加任意类型的数据extend()添加的时候会把添加的数据迭代进行添加,只允许添加可迭代对象数据&a…

牛客网多校训练第一场 B - Symmetric Matrix(dp)
链接: https://www.nowcoder.com/acm/contest/139/B 题意: 求满足以下条件的n*n矩阵A的数量模m:A(i,j) ∈ {0,1,2}, 1≤i,j≤n.A(i,j) A(j,i), 1≤i,j≤n.A(i,1) A(i,2) ... A(i,n) 2, 1≤i≤n.A(1,1) A(2,2) ... A(n,n) 0.其中1≤n…

接口访问次数_系统运行缓慢,CPU 100%,Full GC次数过多,这一招帮你全搞定
处理过线上问题的同学基本上都会遇到系统突然运行缓慢,CPU 100%,以及Full GC次数过多的问题。当然,这些问题的最终导致的直观现象就是系统运行缓慢,并且有大量的报警。本文主要针对系统运行缓慢这一问题,提供该问题的排…