暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

PostgreSQL 快速上手4使用psql和基本管理维护

原创 少年中国强56。 2023-01-04
357

前面,我们学会了如何手工编译PostgreSQL源代码的方式在Linux服务器安装数据库,也学会了如何正确的手工启停PostgreSQL数据库。

接下来,我们来看看一个交互式的PostgreSQL数据库管理工具的使用,psql。

一 psql工具的使用

1 用psql连接数据库

which psql
psql -h localhost -p 5432 -d postgres -U postgres

其中,
psql是PostgreSQL软件安装家目录下的bin路径下的可执行程序;
-h选项表示host,要连接数据库服务器名或者IP地址;如果要访问的数据库在远端,不在本地服务器上,则这里应该用那台机器的IP地址;如果是云服务器的话,则用云服务商提供的域名字符串即可;
-p选项表示port,数据库运行在哪个端口上,默认是5432,这个可以在postgres.conf配置文件里修改,但是需要restart数据库才生效;
-d选项表示database,我们要连接访问的数据库名;
-U选项表示username,我们以哪个用户来访问数据库。
因此,上述命令表示的是以postgres用户连接监听运行在本地机器上的5432的名为postgres的数据库。命令行上,并没有要求输入数据库密码,是因为我们的pg_hba.conf文件里配置了
在前面的那篇源码安装数据库里讲过。

另外,当前操作系统上有个postgres用户,当我们用这个用户安装数据库软件、初始化数据库的时候,默认在数据库里也创建了一个同名的数据库用户。比如,另外一套数据库环境

OS上有个名为pg13的用户,在我们以该用户安装、创建数据库之后,数据库内部会自动创建一个同名用户pg13,且该用户是数据库的超级管理员。也就是说,当我们以操作系统上的哪个用户来安装和创建数据库,默认会在数据库内部创建一个同名的数据库用户。当然,简单起见,我们通常以postgres这个用户来创建和初始化数据库。
当然,如果我们想快速的直接访问本地服务器上的数据库的话,可以直接一个psql命令即可:

2 关于psql工具的更多帮助

我们在shell命令行上直接执行psql –help,获取更多完整的帮助说明,这里不一一介绍。一个简单的例子,psql -l,list当前数据库集群里的所有数据库的信息。

3 psql中执行SQL语句

当我们以psql连接到PostgreSQL数据库服务器上,我们就可以在交互式环境下,执行所有我们想要执行的SQL语句,比如:

Data Definition Language(create|drop|truncate);

Data Control Language(grant|revoke);

Data Manipulate Language(insert|update|delete);

Transaction Control Language(commit|rollback|savepoint)。

需要注意的是

,psql命令行工具默认对DML语句是自动提交事务的。也就是说,默认情况下,是开启事务并自动提交的。如果我们在执行SQL语句时,想要手工控制事务的话,我们可以通过begin;来显示开启事务,然后执行SQL语句,通过end;或者commit;来提交事务,想回滚事务的话,则通过rollback;。注意,这里的命令后面的英文分号是必需的。自动提交事务跟Oracle数据库的SQL*PLUS命令行工具还是有明显差别的,熟悉Oracle的朋友,可能需要稍微注意一下。

执行外部SQL脚本的命令:

其中的\i是表示执行外部命令,!表示的是在psql命令行上临时执行shell命令;
Oracle数据库使用的是@跟sql脚本路径名,MySQL数据库使用的是”source 外部sql脚本路径名”

4 交互式SQL窗口中获取更多帮助
在psql交互式SQL窗口中,可以通过执行\h或者\help来获取完整的帮助信息。也可以执行类似\h create来查看更多关于create使用的帮助命令和解释说明。

二 数据库常用维护管理命令

1 查看数据库版本号:

select version()

2 查看所有数据库信息:

\l+

3 查看数据库启动时间信息:

select pg_postmaster_start_time();
pg_postmaster_start_time

4 查看用户信息:

\du

5 显示所有的表:

\c es_migrate es_migrate

6 查看表大小:

\dt+ emp

7 查看表结构:

\d emp

8 查看索引大小:

postgres=# create index idx_id_emp on emp(id);
CREATE INDEX
postgres=# \di
List of relations
Schema | Name | Type | Owner | Table
--------±-----------±------±---------±------
public | idx_id_emp | index | postgres | emp
(1 row)

postgres=# \di+ idx_id_emp

9 创建新用户:

postgres=# create user t_user login password ‘t_user’;
CREATE ROLE
postgres=#
创建1个新用户t_user,具有login访问数据库的权限,密码跟用户名相同。执行该命令的用户,必须得有create user的权限。

10 创建和使用数据库:

postgres=# create database testdb owner t_user;
CREATE DATABASE
postgres=# \c testdb t_user
You are now connected to database “testdb” as user “t_user”.
testdb=> \c
You are now connected to database “testdb” as user “t_user”.
testdb=> create table test_table(id int);
CREATE TABLE
testdb=>

创建名为testdb的数据库,其owner是上面创建的用户t_user。然后,以t_user来访问testdb数据库,并且创建了一张表。执行该命令的用户,必须得有create database的权限。

11 查看视图、函数、表空间

分别是\dv,\df,\db

三 小结

两个重要的帮助查看命令的方式。

操作系统上的shell命令行:psql –help

psql命令行上的\h掌握这2个快速查看帮助的方式,再查看官方文档,便可以快速上手PostgreSQL数据库。

最后修改时间:2023-01-06 20:54:49
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论