PostgreSQL总结(1) - 数据库简介及安装

来源:互联网 发布:亚马逊云 centos root 编辑:程序博客网 时间:2024/05/22 14:38

PostgreSQL简介

        PostgreSQL是以加州大学伯克利分校计算机系开发的 POSTGRES,现在已经更名为PostgreSQL。PostgreSQL支持大部分 SQL标准并且提供了许多其他现代特性:复杂查询、外键、触发器、视图、事务完整性、MVCC。同样,PostgreSQL 可以用许多方法扩展,比如, 通过增加新的数据类型、函数、操作符、聚集函数、索引。PostgreSQL 是一个自由的对象-关系数据库服务器(数据库管理系统)。

  • 优点

        PostgreSQL 的特性覆盖了 SQL-2/SQL-92 和 SQL-3/SQL-99,首先,它包括了可以说是目前世界上最丰富的数据类型的支持,其中有些数据类型可以说连商业数据库都不具备, 比如 IP 类型和几何类型等;其次,PostgreSQL 是全功能的自由软件数据库,很长时间以来,PostgreSQL 是唯一支持事务、子查询、多版本并行控制系统(MVCC)、数据完整性检查等特性的唯一的一种自由软件的数据库管理系统。

  • 缺点

        PostgreSQL 的确还欠缺一些比较高端的数据库管理系统需要的特性,比如数据库集群,更优良的管理工具和更加自动化的系统优化功能 等提高数据库性能的机制等。

==(注意:以下对于PostgreSQL的介绍基于9.4.9版本)==

PostgreSQL安装(ubuntu14.04)

  • 添加源
    创建文件/etc/apt/sources.list.d/pgdg.list,在文件中添加以下信息:
deb http://apt.postgresql.org/pub/repos/apt/ trusty-pgdg main
  • 更新软件包列表
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | \  sudo apt-key add -sudo apt-get update 
  • 安装PostgreSQL服务
sudo apt-get install postgresql-9.4 
  • 安装图形化管理工具

padmin: 这个工具目前只支持9.3,感觉不怎么好用

sudo apt-get install pgadmin3

dbeaver:

下载地址:http://dbeaver.jkiss.org/download/

  • 添加新用户和新数据库

新建一个Linux新用户,用于连接数据库,这里为 pguser。

sudo adduser pguser

然后切换到 postgres 用户。

sudo su - postgres

然后使用psql命令登录PostgreSQL控制台。

psql

这时相当于系统用户postgres以同名数据库用户的身份,登录数据库,这是不用输入密码的。如果一切正常,系统提示符会变为”postgres=#”,表示这时已经进入了数据库控制台。以下的命令都在控制台内完成。

使用\password命令,为postgres用户设置一个密码。

\password postgres

创建数据库用户 pguser(刚才创建的是Linux系统用户),并设置密码。

CREATE USER pguser WITH PASSWORD 'password';

创建用户数据库,这里为exampledb,并指定所有者为 pguser。

CREATE DATABASE exampledb OWNER pguser;

将exampledb数据库的所有权限都赋予 pguser,否则 pguser 只能登录控制台,没有任何数据库操作权限。

GRANT ALL PRIVILEGES ON DATABASE exampledb to pguser;

还有一种方式是使用shell命令添加心用户和新的数据库,如下:
创建数据库用户pguser,并指定其为超级用户。

sudo -u postgres createuser --superuser pguser

然后,登录数据库控制台,设置dbuser用户的密码,完成后退出控制台。

sudo -u postgres psql\password pguser\q

创建数据库exampledb,并指定所有者为 pguser。

sudo -u postgres createdb -O pguser exampledb
  • 登录数据库
psql -U pguser -d exampledb -h localhost -p 5432

PostgreSQL数据类型

PostgreSQL具有最丰富的数据类型,如下:

Name Aliases Description bigint int8 signed eight-byte integer bigserial serial8 autoincrementing eight-byte integer bit [ (n) ] fixed-length bit string bit varying [ (n) ] varbit variable-length bit string boolean bool logical Boolean (true/false) box rectangular box on a plane bytea binary data (“byte array”) character [ (n) ] char [ (n) ] fixed-length character string character varying [ (n) ] varchar [ (n) ] variable-length character string cidr IPv4 or IPv6 network address circle circle on a plane date calendar date (year, month, day) double precision float8 double precision floating-point number (8 bytes) inet IPv4 or IPv6 host address integer int, int4 signed four-byte integer interval [ fields ] [ (p) ] time span json textual JSON data jsonb binary JSON data, decomposed line infinite line on a plane lseg line segment on a plane macaddr MAC (Media Access Control) address money currency amount numeric [ (p, s) ] decimal [ (p, s) ] exact numeric of selectable precision path geometric path on a plane pg_lsn PostgreSQL Log Sequence Number point geometric point on a plane polygon closed geometric path on a plane real float4 single precision floating-point number (4 bytes) smallint int2 signed two-byte integer smallserial serial2 autoincrementing two-byte integer serial serial4 autoincrementing four-byte integer text variable-length character string time [ (p) ] [ without time zone ] time of day (no time zone) time [ (p) ] with time zone timetz time of day, including time zone timestamp [ (p) ] [ without time zone ] date and time (no time zone) timestamp [ (p) ] with time zone timestamptz date and time, including time zone tsquery text search query tsvector text search document txid_snapshot user-level transaction ID snapshot uuid universally unique identifier xml XML data

数据库基本操作

        对于基本的数据库操作就不在这里赘述,由于自己也刚开始接触这个数据哭,这里只是简单介绍一下对于PostgreSQL特有的数据类型array和json的操作以及需要注意的问题。

  1. 新建表person
CREATE TABLE person(    id bigserial, --主键,这里的bigserial类型,会自动生成一个名为"[table_name]_id_seq"的sequence    name text, --姓名    hobby _text, --爱好    detail json, --详细介绍    CONSTRAINT person_pk PRIMARY KEY (id));

以上建表语句执行结果如下:

              List of relations Schema |     Name      |   Type   |  Owner   --------+---------------+----------+---------- public | person        | table    | duanjian public | person_id_seq | sequence | duanjian(2 rows)
  1. 插入数据

执行以下插入语句插入一条数据:

INSERT INTO person (name, hobby, detail)VALUES('zhangsan', array['football', 'basketball', 'pingpong'], '{"age":18, "sex":"男"}'::json);

查看person表中的数据:

=>SELECT * FROM person; id |   name   |             hobby              |         detail         ----+----------+--------------------------------+------------------------  1 | zhangsan | {football,basketball,pingpong} | {"age":18, "sex":"男"}(1 row)

        目前笔者也是刚开始使用这个数据库,感觉数据库确实很强大,只是相关的图形化工具不敢恭维。这一部分就先介绍到这里,后续还会进一步介绍。

0 0
原创粉丝点击