postgresql常用的sql语句

时间:2021-05-24 00:06:16   收藏:0   阅读:0

一、数据库常用简写命令

1、登录

psql -U pname -d database  // pname 表示postgres的登录用户名,database 则表示要访问的数据库 

2、查看所有的数据库 \l

\l+   列出所有数据库 (加 "+" 获取更多的信息) 

技术图片

3、查看所有的表(这里的红色部分根据你要查看的数据库的名字来改变)

\ddatabasename(不能有空格)

postgres-# \dpostgres
 public | connection_alert_contents                    | table    |                   |                   | 
 public | connection_alert_contents_id_seq             | sequence |                   |                   | 
 public | connection_alert_settings                    | table    |                   |                   | 
 public | connection_alert_settings_id_seq             | sequence |                   |                   | 
 public | connection_groups                            | table    |                   |                   | 
 public | connection_groups_id_seq                     | sequence |                   |                   | 

\dt  只列出非系统表

# \dt
 public | database_performances                 | table | postgres
 public | deadlocks                             | table | postgres

4、查看表的结构(这里的红色部分根据你要查看的表的名字来改变)

\d tablename

postgres-# \d   学生信息表
 序号   | bigint                 |           | not null | 
 姓名   | character varying(255) |           | not null | 
 性别   | character varying(255) |           | not null | 
 班级   | character varying(255) |           | not null | 
 年级   | character varying(255) |           | not null | 
 身份证 | character varying(255) |           | not null | 

5、切换数据库

\c database

技术图片

6、\du  列出用户 

postgres-# \du
 postgres  | Superuser, Create role, Create DB, Replication, Bypass RLS | {}

7、\df  列出函数 
8、\di  只列出索引 
9、\do  只列出操作符 
10、\ds  只列出序列 
11、\dS  列出系统表和索引
12、\db  列出表空间 (加 "+" 获取更多的信息) 
13、\dg  列出组 
14、\dn  列出模式 (加 "+" 获取更多的信息) 
15、\do  列出操作符 
16、\dl  列出大对象, 和 \lo_list 一样 
17、\dp  列出表, 视图, 序列的访问权限

18、\dT  列出数据类型 (加 "+" 获取更多的信息)

二、增删改查、索引

1、 创建database

CREATE DATABASE database_name;

CREATE DATABASE 测试数据库
WITH 
OWNER = postgres
ENCODING = ‘UTF8‘
LC_COLLATE = ‘en_US.UTF-8‘
LC_CTYPE = ‘en_US.UTF-8‘
TABLESPACE = pg_default
CONNECTION LIMIT = -1;

postgres=# \l
 postgres   | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | 
 template0  | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres          +
            |          |          |             |             | postgres=CTc/postgres
 template1  | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres          +
            |          |          |             |             | postgres=CTc/postgres
 tinadb     | postgres | UTF8     | zh_CN.UTF-8 | zh_CN.UTF-8 | 
 zj         | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | 
 测试数据库 | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | 

2、创建表

CREATE TABLE "员工表"
(
"序号" bigint NOT NULL,
"姓名" character varying(255) COLLATE pg_catalog."default" NOT NULL,
"性别" character varying(255) COLLATE pg_catalog."default" NOT NULL,
"办公室" character varying(255) COLLATE pg_catalog."default" NOT NULL,
"职位类别" character varying(255) COLLATE pg_catalog."default" NOT NULL,
"身份证" character varying(255) COLLATE pg_catalog."default" NOT NULL,
PRIMARY KEY ("身份证")
);

3、创建schema(架构)

CREATE SCHEMA schema_name;

4、查看数据库下面所有的schema

select * from information_schema.schemata;

5、查看一个schema下面所有的表

select * from information_schema.tables where table_schema = ‘schema_name‘;

6、创建角色

CREATE ROLE role_name [...];

[...]为可多选角色属性参数,参数可分别为:

  1. 登陆(login):具有login属性的角色可以连接数据库,一个带有login属性的角色可以等同于“数据库用户”,因为数据库用户创建的时候默认自带login属性.
  2. 超级用户(superuser):超级用户拥有至高无上的权限,但是这个权限分配的时候,一定要小心,想要创建超级用户,必须使用带超级用户的角色去创建带“超级用户”的角色 .
  3. 创建数据库(createdb):创建数据库属性,顾名思义就是拥有“创建数据库”属性的角色可以创建数据库,对于超级用户的角色来说,自身可以创建数据库,不用带“创建数据库”属性 .
  4. 创建角色(createrole):带有“创建角色”属性的角色可以创建其他角色。一般带有“创建角色”属性的角色还可以删除和更改其他角色(删除和更改只限于普通用户) 
  5. 口令(password):只有在客户认证方法要求与数据库建立连接必须使用口令的时候, 口令才比较重要.

在创建好角色后,如果需要修改的话,可以使用alter role语句修改

7、权限设置

将名字为schema_name的schema的所有权限给予role_name角色;

grant all on schema schema_name to role_name;

将名字为schema_name的schema下面所有的表的操作权限给予role_name角色;

grant all on all tables in schema schema_name to role_name;

如果你不准备将所有的权限都给予role_name角色,可以给予部分的权限,每个权限值之间以逗号分隔,而权限的明细如下:

 三、常用脚本

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

https://github.com/digoal/blog/blob/master/202005/20200509_02.md

评论(0
© 2014 mamicode.com 版权所有 京ICP备13008772号-2  联系我们:gaon5@hotmail.com
迷上了代码!