PostgreSQL入门-安装与基本使用(Ubuntu16)
PostgreSQL入门-安装与基本使用(Ubuntu)
PostgreSQL 是一个免费的对象-关系数据库服务器(ORDBMS),号称是 "世界上最先进的开源关系型数据库"。
PostgreSQL 是以加州大学计算机系开发的 POSTGRES 4.2版本为基础的对象关系型数据库。
今天在Ubuntu系统上,我们一起来安装并简单使用一下PostgreSQL数据库。
1.查看当前系统版本:
$ cat /etc/issue Ubuntu 16.04.6 LTS \n \l $ sudo lsb_release -a LSB Version: core-9.20160110 ubuntu0.2-amd64:core-9.20160110 ubuntu0.2-noarch:security-9.20160110 ubuntu0.2-amd64:security-9.20160110 ubuntu0.2-noarch Distributor ID: Ubuntu Description: Ubuntu 16.04.6 LTS Release: 16.04 Codename: xenial
系统是 Ubuntu 16.04.6 LTS。
2.安装 PostgreSQL
$ sudo apt-get install postgresql
执行实例如下:
$ sudo apt-get install postgresql Reading package lists... Done Building dependency tree Reading state information... Done The following additional packages will be installed: libpq5 postgresql-9.5 postgresql-client-9.5 postgresql-client-common postgresql-common postgresql-contrib-9.5 ssl-cert … … Creating config file /etc/postgresql-common/createcluster.conf with new version Creating config file /etc/logrotate.d/postgresql-common with new version Building PostgreSQL dictionaries from installed myspell/hunspell packages... Removing obsolete dictionary files: Setting up postgresql-9.5 (9.5.19-0ubuntu0.16.04.1) ... Creating new cluster 9.5/main ... config /etc/postgresql/9.5/main data /var/lib/postgresql/9.5/main locale en_US.UTF-8 socket /var/run/postgresql port 5432 update-alternatives: using /usr/share/postgresql/9.5/man/man1/postmaster.1.gz to provide /usr/share/man/man1/postmaster.1.gz (postmaster.1.gz) in auto mode Setting up postgresql (9.5+173ubuntu0.2) ... Setting up postgresql-contrib-9.5 (9.5.19-0ubuntu0.16.04.1) ... Processing triggers for libc-bin (2.23-0ubuntu11) ... Processing triggers for ureadahead (0.100.0-19.1) ... Processing triggers for systemd (229-4ubuntu21.21) ...
默认已经安装了 postgresql 的服务器(postgresql-9.5)和客户端(postgresql-client-9.5)。
2019年10月03日,已经发布了PostgreSQL 12,如果想安装最新版的,需要更新一下源,参加 PostgreSQL Apt Repository
可以使用 psql --version
来查看当前安装的版本:
$ psql --version psql (PostgreSQL) 9.5.19
安装后会默认生成一个名为 postgres
的数据库和一个名为postgres
的数据库用户。
同时还生成了一个名为 postgres
的 Linux 系统用户。
可以使用以下命令查看:
#查看用户 $ cat /etc/passwd #查看用户组 $ cat /etc/group
3.使用PostgreSQL控制台修改 postgres 数据库用户密码
默认生成的 postgres 的数据库用户没有密码,现在我们使用 postgres Linux用户的身份来登录到管理控制台中。
# 切换到postgres用户。 $ sudo su - postgres postgres@iZm5e8p54dk31rre6t96xuZ:~$ postgres@iZm5e8p54dk31rre6t96xuZ:~$ whoami postgres
Linux 用户 postgres 以同名的 postgres 数据库用户的身份登录,不用输入密码的。
postgres@iZm5e8p54dk31rre6t96xuZ:~$ psql psql (9.5.19) Type "help" for help. postgres=#
使用 \password
命令,为 postgres
用户设置一个密码
postgres=# postgres=# CREATE USER db_user WITH PASSWORD 'PWD123456'; CREATE ROLE postgres=#
创建用户数据库,这里为testdb,并指定所有者为db_user。
postgres=# CREATE DATABASE testdb OWNER db_user; CREATE DATABASE postgres=#
将 testdb 数据库的所有权限都赋予 db_user 数据库用户, 否则 db_user 只能登录控制台,没有数据库操作权限。
postgres=# GRANT ALL PRIVILEGES ON DATABASE testdb TO db_user; GRANT
使用 \du
查看当前的数据库用户:
postgres=# \du; List of roles Role name | Attributes | Member of -----------+------------------------------------------------+----------- db_user | | {} postgres | Superuser,Create role,Create DB,Replication,Bypass RLS | {}
最后,使用 \q
命令退出控制台, 并使用 exit
命令退出当前 db_user
Linux用户。
postgres=# \q postgres@iZm5e8p54dk31rre6t96xuZ:~$ postgres@iZm5e8p54dk31rre6t96xuZ:~$ exit logout
4.数据库基本操作实例
创建数据库与删除数据库:
# 创建数据库 postgres=# CREATE DATABASE lusiadas; CREATE DATABASE # 删除数据库 postgres=# DROP DATABASE lusiadas; DROP DATABASE
使用 \c
切换数据库:
postgres=# CREATE DATABASE testdb; CREATE DATABASE postgres=# \c testdb; SSL connection (protocol: TLSv1.3, cipher: TLS_AES_256_GCM_SHA384, bits: 256, compression: off) You are now connected to database "testdb" as user "postgres".
新建表与删除表:
# 创建一个表 tb_test:(两个字段,其中id 为自增ID) testdb=> CREATE TABLE tb_test(id bigserial, name VARCHAR(20)); CREATE TABLE # 删除一个表 tb_test testdb=> DROP table tb_test; DROP TABLE
增删改查操作:
# 创建一个用户表 tb_users(三个字段,其中id 为自增ID) testdb=> CREATE TABLE tb_users(id bigserial, age INT DEFAULT 0, name VARCHAR(20)); CREATE TABLE # 使用 INSERT 语句插入数据 testdb=> INSERT INTO tb_users(name, age) VALUES('张三丰', 212); INSERT 0 1 testdb=> INSERT INTO tb_users(name, age) VALUES('李四光', 83); INSERT 0 1 testdb=> INSERT INTO tb_users(name, age) VALUES('王重阳', 58); INSERT 0 1 # 查询数据 testdb=> select * from tb_users; id | age | name ----+-----+-------- 1 | 212 | 张三丰 2 | 83 | 李四光 3 | 58 | 王重阳 (3 rows) testdb=> select * from tb_users WHERE id=3; id | age | name ----+-----+-------- 3 | 58 | 王重阳 (1 row) # 更新数据 (执行后输出更新的条数,第二次执行失败所以输出为`UPDATE 0`) testdb=> UPDATE tb_users set name = '全真派王重阳' WHERE name = '王重阳'; UPDATE 1 testdb=> UPDATE tb_users set name = '全真派王重阳' WHERE name = '王重阳'; UPDATE 0 # 插入2条数据 testdb=> INSERT INTO tb_users(name, age) VALUES('赵四', 0); INSERT 0 1 testdb=> INSERT INTO tb_users(name, age) VALUES('赵五娘', 0); INSERT 0 1 # 模糊查询 testdb=> SELECT * FROM tb_users WHERE name LIKE '赵%'; id | age | name ----+-----+-------- 4 | 0 | 赵五娘 5 | 0 | 赵四 (2 rows) # 修改表结构: 新增字段 testdb=# ALTER TABLE tb_users ADD email VARCHAR(50); ALTER TABLE # 修改表结构: 修改字段 testdb=# ALTER TABLE tb_users ALTER COLUMN email TYPE VARCHAR(100); ALTER TABLE # 删除字段 testdb=# ALTER TABLE tb_users DROP COLUMN email; ALTER TABLE # 删除记录 testdb=> DELETE FROM tb_users WHERE id = 5; DELETE 1
使用 pg_database_size() 查看数据库的大小:
testdb=# select pg_database_size('testdb'); pg_database_size ------------------ 7991967 (1 row) testdb=# select pg_size_pretty(pg_database_size('testdb')); pg_size_pretty ---------------- 7805 kB (1 row)
5.PostgreSQL 的 timestamp 类型
查询 current_timestamp
testdb=# select current_timestamp; current_timestamp ------------------------------- 2019-11-11 08:33:35.369887+00 (1 row)
使用 current_timestamp(0) 定义时间类型精度为0:(有时区)
testdb=# select current_timestamp(0); current_timestamp ------------------------ 2019-11-11 08:31:08+00 (1 row)
使用 current_timestamp(0) 定义时间类型精度为0:(去掉时区)
testdb=# select current_timestamp(0)::timestamp without time zone; current_timestamp --------------------- 2019-11-11 08:31:20 (1 row) testdb=# select cast (current_timestamp(0) as timestamp without time zone); current_timestamp --------------------- 2019-11-11 08:32:26 (1 row)
时间戳:
testdb=# select extract(epoch from now()); date_part ------------------ 1573461495.47821 (1 row)
设置数据库时区:
视图 pg_timezone_names 保存了所有可供选择的时区:
# 查看时区 select * from pg_timezone_names;
比如可以选择上海 Asia/Shanghai
或重庆 Asia/Chongqing
, 最简单的直接 PRC
:
testdb=# set time zone 'PRC'; SET testdb=# show time zone; TimeZone ---------- PRC (1 row) testdb=# SELECT LOCALTIMESTAMP(0); localtimestamp --------------------- 2019-11-11 16:42:54 (1 row)
Reference
https://www.postgresql.org/docs/8.4/sql-altertable.html
http://www.ruanyifeng.com/blog/2013/12/getting_started_with_postgresql.html
[END]
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Jenkins 2019 年 Board 和 Officer positions 选举更新
本文首发于:Jenkins 中文社区 原文链接作者:Tracy Miranda 译者:wenjunzhangp Jenkins 社区正在进行 2019 年 Board 和 Officer positions 的选举活动,我们诚恳的邀请您参加并且投出您宝贵的一票。 Jenkins 社区正在进行 2019 年 Board 和 Officer positions 的选举。提名征集已经结束。我们征集到了很多提名。根据愿意接受提名的人和无可争议的 Officer Positions,我们将有 3 票: 投票选举 3 名board members 投票选举 Jenkinssecurity officer 投票选举 Jenkinsevents officer 候选人 每位候选人都提供了一份声明,以帮助指导选民为什么要为候选人投票。有关更多详细信息,请参阅候选人宣言。竞选 board members 的候选人为: Alex Earl Oliver Gondza Ullrich Hafner Oleg Nenashev Mark Waite 赵晓杰(Rick) 竞选 security officer 的...
- 下一篇
go-mir v1.0.2 发布,用 Go 结构体标签定义 handler 路由信息的辅助库
go-mir v1.0.2发布了,推荐使用。 小版本更新 主要更新依赖包 预告下一版本开发计划 前段时间忙于公司业务,go-mir断更了好长时间,现在有闲余时间,正在筹划着go-mir的升级。 go-mir v1的架构大体是这样: 这套架构主要是使用了golang的反射机制对struct tag解析然后注册路由信息到web engine,只影响启动时间,不会有运行时损耗,总体来说,方便了接口定义,对代码组织很有益处。 go-mir v2版本正在筹划中,已经开始敲代码了,大体架构如下: v2版本将升级采用代码生成的方式生成接口代码,同样也是采用golang内置的struct tag定义路由信息,但不同于v1版本在引擎启动时解析后注册路由信息到web引擎,这里参考grpc的接口生成方式,生成接口定义文件,业务逻辑只要实现了接口,注册接口实现的对象到相应的web引擎,启动后就可以对外通过RESTfull接口获取服务。 go-mir v3版本将会直接使用OpenAPI v3定义接口,大体架构如下: v3版本将使用OpenApi v3.0的定义文件直接生成接口代码,后面的逻辑和v2保持一致。使用...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Windows10,CentOS7,CentOS8安装Nodejs环境
- Docker安装Oracle12C,快速搭建Oracle学习环境
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- CentOS8编译安装MySQL8.0.19
- MySQL8.0.19开启GTID主从同步CentOS8
- CentOS8安装Docker,最新的服务器搭配容器使用
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- SpringBoot2整合Redis,开启缓存,提高访问速度
- CentOS7,8上快速安装Gitea,搭建Git服务器
- Docker使用Oracle官方镜像安装(12C,18C,19C)