介绍
关系数据库管理系统是许多网站和应用程序的关键组成部分,它们提供一个结构化的存储,组织和访问信息的方式。
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 的指南: