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

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具有最丰富的数据类型,如下:

NameAliasesDescription
bigintint8signed eight-byte integer
bigserialserial8autoincrementing eight-byte integer
bit [ (n) ]fixed-length bit string
bit varying [ (n) ]varbitvariable-length bit string
booleanboollogical Boolean (true/false)
boxrectangular box on a plane
byteabinary data (“byte array”)
character [ (n) ]char [ (n) ]fixed-length character string
character varying [ (n) ]varchar [ (n) ]variable-length character string
cidrIPv4 or IPv6 network address
circlecircle on a plane
datecalendar date (year, month, day)
double precisionfloat8double precision floating-point number (8 bytes)
inetIPv4 or IPv6 host address
integerint, int4signed four-byte integer
interval [ fields ] [ (p) ]time span
jsontextual JSON data
jsonbbinary JSON data, decomposed
lineinfinite line on a plane
lsegline segment on a plane
macaddrMAC (Media Access Control) address
moneycurrency amount
numeric [ (p, s) ]decimal [ (p, s) ]exact numeric of selectable precision
pathgeometric path on a plane
pg_lsnPostgreSQL Log Sequence Number
pointgeometric point on a plane
polygonclosed geometric path on a plane
realfloat4single precision floating-point number (4 bytes)
smallintint2signed two-byte integer
smallserialserial2autoincrementing two-byte integer
serialserial4autoincrementing four-byte integer
textvariable-length character string
time [ (p) ] [ without time zone ]time of day (no time zone)
time [ (p) ] with time zonetimetztime of day, including time zone
timestamp [ (p) ] [ without time zone ]date and time (no time zone)
timestamp [ (p) ] with time zonetimestamptzdate and time, including time zone
tsquerytext search query
tsvectortext search document
txid_snapshotuser-level transaction ID snapshot
uuiduniversally unique identifier
xmlXML 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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值