如何在 Ubuntu 14.04 上安装和使用 PostgreSQL

介绍

关系数据库管理系统是许多网站和应用程序的关键组成部分,它们提供一个结构化的存储,组织和访问信息的方式。

PostgreSQL 或 Postgres 是一个关系式数据库管理系统,提供 SQL 查询语言的实现,它是许多小型和大型项目的受欢迎选择,具有符合标准的优势,具有许多先进的功能,如可靠的交易和无读锁的同步。

在本指南中,我们将展示如何在Ubuntu 14.04 VPS实例上安装Postgres,并通过一些基本的方法来使用它。

安装

Ubuntu 的默认存储库包含 Postgres 包,因此我们可以使用apt包装系统轻松安装它们。

由于我们最近没有更新我们的本地apt存储库,让我们现在这样做,然后我们可以获得Postgres包和一个贡献包,添加一些额外的实用程序和功能:

1sudo apt-get update
2sudo apt-get install postgresql postgresql-contrib

现在我们的软件已安装,我们可以看看它是如何工作的,以及它可能与您可能使用的类似数据库管理系统有何不同。

使用 PostgreSQL 角色和数据库

默认情况下,Postgres使用一个名为角色的概念来帮助验证和授权,这些在某种程度上类似于常规的Unix类型帐户,但Postgres不区分用户和群体,而更喜欢更灵活的术语角色

在安装时,Postgres设置为使用相同身份验证,这意味着它将Postgres角色与匹配的Unix/Linux系统帐户相关联。

安装过程创建了一个名为postgres的用户帐户,与默认的 Postgres 角色相关联。为了使用 Postgres,我们需要登录该帐户。

1sudo -i -u postgres

您将被要求提供您的正常用户密码,然后为postgres用户提供一个壳提示。

您可以通过键入立即获得 Postgres 提示:

1psql

您将自动登录并能够立即与数据库管理系统进行交互。

但是,我们将解释一下如何使用其他角色和数据库,以便您可以灵活地了解您想要使用的用户和数据库。

退出 PostgreSQL 提示通过键入:

1\q

你现在应该回到postgres的Linux命令提示。

创建新角色

postgres Linux 帐户,你有机会登录到数据库系统. 但是,我们也将展示如何创建额外的角色. 与 Postgres 管理角色相关的postgres Linux 帐户,可以访问一些实用程序来创建用户和数据库。

我们可以通过键入创建一个新的角色:

1createuser --interactive

这基本上是一个交互式壳脚本,它会调用正确的 Postgres 命令来创建用户,以满足您的规格。它只会问你两个问题:角色的名称和它是否应该是超级用户。你可以通过通过一些额外的旗帜获得更多的控制。通过查看页面查看选项:

1man createuser

创建新数据库

Postgres 默认设置的方式(由匹配系统帐户请求的身份验证角色)也伴随着假设一个匹配的数据库将存在于该角色连接。

因此,如果我有一个名为test1的用户,该角色将默认地尝试连接到名为test1的数据库。

您可以通过简单地将此命令称为postgres用户来创建相应的数据库:

createdb test1

与新用户连接到 Postgres

假设你有一个名为test1的Linux系统帐户(你可以通过键入adduser test1来创建一个帐户),并且你已经创建了一个名为test1的Postgres角色和数据库。

您可以通过键入更改为Linux系统帐户:

sudo -i -u test1

然后,您可以通过键入test1作为test1 Postgres 角色连接到test1数据库:

1psql

这将自动登录,假设所有组件都已配置。

如果您希望您的用户连接到不同的数据库,则可以通过这样指定数据库:

psql -d postgres

您可以通过键入获取有关您登录的 Postgres 用户以及您当前连接的数据库的信息:

1\conninfo

1You are connected to database "postgres" as user "postgres" via socket in "/var/run/postgresql" at port "5432".

这可以帮助提醒您当前设置,如果您连接到非默认数据库或非默认用户。

创建和删除表

现在你已经知道如何连接到PostgreSQL数据库系统,我们将开始讨论如何完成一些基本任务。

首先,让我们创建一个表格来存储一些数据,让我们创建一个表格来描述游乐场设备。

这个命令的基本语法是这样的:

CREATE TABLE table_name (
    column_name1 col_type (field_length) column_constraints,
    column_name2 col_type (field_length),
    column_name3 col_type (field_length)
);

正如您所看到的,我们给表一个名称,然后定义我们想要的列,以及列类型和字段数据的最大长度。

您可以了解更多关于 如何在 Postgres 中创建和管理表的信息。

为了我们的目的,我们将创建一个简单的表,如下:

1CREATE TABLE playground (
2    equip_id serial PRIMARY KEY,
3    type varchar (50) NOT NULL,
4    color varchar (25) NOT NULL,
5    location varchar(25) check (location in ('north', 'south', 'west', 'east', 'northeast', 'southeast', 'southwest', 'northwest')),
6    install_date date
7);

我们创建了一个游乐场表,库存我们所拥有的设备。这始于设备ID,即序列类型。这个数据类型是自动加倍的整数。我们给了这个列主要密钥的限制,这意味着值必须是唯一的,而不是零。

对于我们的两个列,我们没有给出一个字段长度,因为某些列类型不需要设置长度,因为长度是由类型暗示的。

然后我们为设备类型和颜色提供列,每个列都不能空白,然后我们创建一个位置列,并创建一个限制,要求该值是可能的八个值之一。

我们可以通过键入以下方式查看我们的新表:

1\d

1List of relations
2 Schema |          Name           |   Type   |  Owner   
3--------+-------------------------+----------+----------
4 public | playground              | table    | postgres
5 public | playground_equip_id_seq | sequence | postgres
6(2 rows)

正如你所看到的,我们有我们的游乐场桌,但我们也有一个叫做playground_equip_id_seq的东西,它是序列的类型。

如果您只想看到表格,您可以键入:

1\dt

1List of relations
2 Schema |    Name    | Type  |  Owner   
3--------+------------+-------+----------
4 public | playground | table | postgres
5(1 row)

添加、查询和删除表中的数据

现在我们已经创建了一个表,我们可以将一些数据插入其中。

我们通过呼叫我们想要添加的表,命名列,然后为每个列提供数据。

INSERT INTO playground (type, color, location, install_date) VALUES ('slide', 'blue', 'south', '2014-04-28');
INSERT INTO playground (type, color, location, install_date) VALUES ('swing', 'yellow', 'northwest', '2010-08-16');

首先,请记住,列名不应该引用,但您输入的列 values 需要引用。

另外要记住的是,我们不输入equip_id列的值,这是因为每当在表中创建一个新行时,它会自动生成。

然后我们可以通过键入返回我们添加的信息:

1SELECT * FROM playground;

1equip_id | type  | color  | location  | install_date 
2----------+-------+--------+-----------+--------------
3        1 | slide | blue   | south     | 2014-04-28
4        2 | swing | yellow | northwest | 2010-08-16
5(2 rows)

在这里,您可以看到我们的equip_id已成功填写,我们的所有其他数据均已正确组织。

如果我们的幻灯片破裂,我们将它从游乐场中移除,我们也可以通过键入从我们的桌子上移除行:

1DELETE FROM playground WHERE type = 'slide';

如果我们再次查询我们的表,我们会看到我们的幻灯片不再是表的一部分:

1SELECT * FROM playground;

1equip_id | type  | color  | location  | install_date 
2----------+-------+--------+-----------+--------------
3        2 | swing | yellow | northwest | 2010-08-16
4(1 row)

如何从表中添加和删除列

如果我们想要在创建表后更改表以添加额外的列,我们可以轻松地做到这一点。

我们可以添加一个列来显示每个设备的最后维修访问,输入:

ALTER TABLE playground ADD last_maint date;

如果您再次查看表信息,则会看到新列已添加(但未输入任何数据):

1SELECT * FROM playground;

1equip_id | type  | color  | location  | install_date | last_maint 
2----------+-------+--------+-----------+--------------+------------
3        2 | swing | yellow | northwest | 2010-08-16   | 
4(1 row)

如果我们发现我们的工作人员使用一个单独的工具来跟踪维护历史,我们可以通过键入以下方式来删除该列:

1ALTER TABLE playground DROP last_maint;

如何更新表中的数据

我们知道如何将记录添加到表中,以及如何删除它们,但我们尚未说明如何修改现有条目。

您可以通过查询您想要的记录来更新现有记录的值,并将列设置为您想要使用的值。我们可以查询旋转记录(这将匹配我们表中的每一个旋转),并将其颜色更改为红色

UPDATE playground SET color = 'red' WHERE type = 'swing';

我们可以通过重新查询我们的数据来验证操作是否成功:

1SELECT * FROM playground;

1equip_id | type  | color | location  | install_date 
2----------+-------+-------+-----------+--------------
3        2 | swing | red   | northwest | 2010-08-16
4(1 row)

正如你所看到的,我们的幻灯片现在注册为红色。

结论

现在你已经在 Ubuntu 14.04 服务器上安装了 PostgreSQL 了,但是,在 Postgres 中还有很多东西要学习,这里有更多关于如何使用 Postgres 的指南:

By Justin Ellingwood
Published At
Categories with 技术
Tagged with
comments powered by Disqus