PostgreSQL-psql命令
程序员文章站
2024-03-21 10:08:10
...
psql
元命令
# 查看数据库
\l
# 查看表空间
\db
# 查看表
\d
# 查看表定义
\d tablename
# 查看表大小
\dt+ tablename
# 查看索引大小
\di+ tablename
# 查看函数代码 \sf random_range
\sf functionName
\sf functionName(integer,integer)
# 设置查询结果输出
\x
# 获取元命令对应的SQL代码:-E
psql -E dbname user
# 查看所有元命令
\?
# 查看SQL命令语法
\h
\h create database
日常维护语句
# 查询活动会话(active_session)
select pid,usename,datname,query,client_addr from pg_stat_activity where pid <> pg_backend_pid() and state='active' order by query;
# 查询等待事件(wait_event)
select pid,usename,datname,query,client_addr,wait_event_type,wait_event FROM pg_stat_activity WHERE pid<>pg_kackend_pid() AND wait_event is not null ORDER BY wait_event_type;
用户
# 创建用户
#CREATE USER和CREATE ROLE的区别在于,CREATE USER指令创建的用户默认是有登录权限的,而CREATE ROLE没有
create role rolename;
create user username;
# 创建带密码的用户
create role admin with encrypted password 'admin';
#创建用户时设定用户属性
#基本语法格式
CREATE ROLE role_name WITH optional_permissions;
#在创建用户时设定登录权限
CREATE ROLE username WITH LOGIN;
# 查看全部可设置的管理权限
\h CREATE ROLE
#修改用户属性
# 给用户设置密码
ALTER USER gisuser WITH PASSWORD '123456' ;
#修改权限的命令格式
ALTER ROLE username WITH attribute_options;
#禁止用户登录
ALTER ROLE username WITH NOLOGIN;
# 修改数据库所有者
ALTER DATABASE gis OWNER TO gisuser;
# 修改表的所有者
alter table test_1 owner to gisuser;
# 设置访问权限
GRANT permission_type ON table_name TO role_name;
# 示例
# 赋予demo_role demo表的update权限
GRANT UPDATE ON demo TO demo_role;
# 赋予demo_role所有表的SELECT权限
GRANT SELECT ON ALL TABLES IN SCHEMA PUBLIC to demo_role;
# 特殊符号:ALL代表所访问权限,PUBLIC代表所有用户
# 赋给用户所有权限
GRANT ALL ON demo TO demo_role;
# 将SELECT权限赋给所有用户
GRANT SELECT ON demo TO PUBLIC;
\z或\dp指令显示用户访问权限。
\h GRANT显示所有可设置的访问权限
# 撤销用户访问权限
# 语法格式如下:
REVOKE permission_type ON table_name FROM user_name;
# 其中permission_type和table_name含义与GRANT指令中相同。
# 用户组
# 在postgres中用户实际上是role,同时组也是role。 包含其他role的role就是组。
# 创建组示例:
CREATE ROLE temporary_users;
GRANT temporary_users TO demo_role;
GRANT temporary_users TO test_user;
# 切换ROLE
# 切换到role_name用户
SET ROLE role_name;
# 切换回最初的role
RESET ROLE;
# INHERIT权限:该属性使组成员拥有组的所有权限
# ALTER ROLE test_user INHERIT;
# 删除用户和组
# 删除用户和组很简单:
DROP ROLE role_name;
DROP ROLE IF EXISTS role_name;
# 应用
create user zabbix ;
create database zabbix owner zabbix;
alter user zabbix password zabbix;
grant all on DATABASE zabbix to zabbix;
COMMENT ON DATABASE zabbix is 'used for zabbix data store';
# 查看数据库所有的用户
\du
# 查看当前连接的用户名
select * from current_user;
select user;
数据库
# 查看数据库
\l
# 创建数据库
create database dbname;
# 删除数据库
DROP DATABASE runoobdb;
# 进入数据库
\c runoobdb
# psql
psql -h localhost -p 5432 -U postgress runoobdb
表格
# 创建表格
CREATE TABLE COMPANY(
ID INT PRIMARY KEY NOT NULL,
NAME TEXT NOT NULL,
AGE INT NOT NULL,
ADDRESS CHAR(50),
SALARY REAL
);
# 查看数据库中的表
\d
# 查看表的详细信息
\d tablename
# 删除表
DROP TABLE table_name;
模式
# 创建模式
create schema myschema;
# 在制定模式创建表
reate table myschema.company(
ID INT NOT NULL,
NAME VARCHAR (20) NOT NULL,
AGE INT NOT NULL,
ADDRESS CHAR (25),
SALARY DECIMAL (18, 2),
PRIMARY KEY (ID)
);
# 删除一个为空的模式(其中的所有对象已经被删除):
DROP SCHEMA myschema;
# 删除一个模式以及其中包含的所有对象:
DROP SCHEMA myschema CASCADE;
上一篇: PostgreSQL psql继承
下一篇: C语言预处理与宏定义以及内联函数
推荐阅读
-
PostgreSQL-psql命令
-
SQL Server常用SQL及命令 博客分类: 数据库 Sql Serversql命令
-
MySQL常用SQL及命令 博客分类: 数据库 mysqlsql命令
-
SQL Server常用SQL及命令 博客分类: 数据库 Sql Serversql命令
-
windows常用命令 博客分类: 常用命令
-
Oracle常用SQL及命令 博客分类: 数据库 oraclesql命令常用
-
Linux/unix常用命令 博客分类: 常用命令
-
MySQL常用SQL及命令 博客分类: 数据库 mysqlsql命令
-
windows常用命令 博客分类: 常用命令
-
运维工程师常用的Oracle经典语句——4.使用命令查看Oracle数据库编码、存储过程、所有的表及表结构等信息