Postgresql常见操作指令
来源:互联网 发布:东莞房地产成交数据 编辑:程序博客网 时间:2024/05/17 08:55
Postgresql常见操作指令:
连接数据库, 默认的用户和数据库是postgres
psql -U user -d dbname
[postgres@chenxin ~]$ psql -U postgres -d postgres
psql (9.6.6)
Type "help" for help.
postgres=#
切换数据库,相当于mysql的use dbname
\c dbname
postgres=# \c ecp;
You are now connected to database "ecp" as user "postgres".
ecp=#
列举数据库,相当于mysql的show databases
\l
postgres=# \l
List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges
-----------+----------+----------+---------+-------+-----------------------
ecp | postgres | UTF8 | C | C |
postgres | postgres | UTF8 | C | C |
template0 | postgres | UTF8 | C | C | =c/postgres +
| | | | | postgres=CTc/postgres
template1 | postgres | UTF8 | C | C | =c/postgres +
| | | | | postgres=CTc/postgres
test | postgres | UTF8 | C | C |
test2 | postgres | UTF8 | C | C |
列举表,相当于mysql的show tables
\dt
test-# \dt
List of relations
Schema | Name | Type | Owner
--------+------+-------+----------
public | test | table | postgres
(1 row)
查看表结构,相当于desc tblname,show columns from tbname
\d tblname
test=# \d test
Table "public.test"
Column | Type | Modifiers
--------+---------+-----------
id | integer |
name | text |
test=#
创建数据库:
create database [数据库名];
postgres=# create database test3;
CREATE DATABASE
创建数据库指定用户:
create database [数据库名] owner [用户名];
postgres=# create database testtest owner postgres;
CREATE DATABASE
postgres=#
删除数据库:
drop database [数据库名];
postgres=# drop database testtest;
DROP DATABASE
*重命名一个表:
alter table [表名A] rename to [表名B];
alter table test rename to user;
*删除一个表:
test=# create table test2 as select * from test;
SELECT 1
test=# \d
List of relations
Schema | Name | Type | Owner
--------+-------+-------+----------
public | test | table | postgres
public | test2 | table | postgres
(2 rows)
drop table [表名];
test=# drop table test2;
DROP TABLE
*在已有的表里添加字段:
alter table [表名] add column [字段名] [类型];
test=# alter table test add column birth date;
ALTER TABLE
test=# \d test;
Table "public.test"
Column | Type | Modifiers
--------+---------+-----------
id | integer |
name | text |
birth | date |
*删除表中的字段:
alter table [表名] drop column [字段名];
test=# alter table test drop column birth;
ALTER TABLE
test=# \d test;
Table "public.test"
Column | Type | Modifiers
--------+---------+-----------
id | integer |
name | text |
test=#
*重命名一个字段:
alter table [表名] rename column [字段名A] to [字段名B];
test=# alter table test rename id to seq;
ALTER TABLE
test=# \d test;
Table "public.test"
Column | Type | Modifiers
--------+---------+-----------
seq | integer |
name | text |
*给一个字段设置缺省值:
alter table [表名] alter column [字段名] set default [新的默认值];
test=# alter table test alter column "name" set DEFAULT 'test';
ALTER TABLE
test=# select * from test;
seq | name
-----+------
1 | yixq
(1 row)
test=# insert into test(seq) values(2);
INSERT 0 1
test=# select * from test;
seq | name
-----+------
1 | yixq
2 | test
(2 rows)
*去除缺省值:
alter table [表名] alter column [字段名] drop default;
test=# alter table test alter column "name" drop DEFAULT;
ALTER TABLE
test=# select * from test;
seq | name
-----+------
1 | yixq
2 | test
(2 rows)
test=# insert into test(seq) values(3);
INSERT 0 1
test=# select * from test;
seq | name
-----+------
1 | yixq
2 | test
3 |
(3 rows)
角色
PostgreSQL使用角色的概念管理数据库访问权限。 根据角色自身的设置不同,一个角色可以看做是一个数据库用户,或者一组数据库用户。 角色可以拥有数据库对象(比如表)以及可以把这些对象上的权限赋予其它角色, 以控制谁拥有访问哪些对象的权限。
操作角色的语句:
create role db_role1; /*--创建角色*/
drop role db_role1; /*--删除角色*/
postgres=# create role db_role1;
CREATE ROLE
postgres=# drop role db_role1;
DROP ROLE
select rolname from pg_roles; /*--查看所有角色*/
postgres=# select rolname from pg_roles;
rolname
-------------------
pg_signal_backend
postgres
name
ecp
readonly
(5 rows)
角色的权限
一个数据库角色可以有很多权限,这些权限定义了角色和拥有角色的用户可以做的事情。
create role db_role1 LOGIN; --创建具有登录权限的角色db_role1
postgres=# create role db_role1 LOGIN;
CREATE ROLE
postgres=# drop role db_role1;
DROP ROLE
postgres=#
create role db_role2 SUPERUSER; --创建具有超级用户权限的角色
postgres=# create role db_role2 SUPERUSER;
CREATE ROLE
postgres=# drop role db_role2;
DROP ROLE
postgres=#
create role db_role3 CREATEDB; --创建具有创建数据库权限的角色
postgres=# create role db_role3 CREATEDB;
CREATE ROLE
postgres=# drop role db_role3;
DROP ROLE
postgres=#
create role db_role4 CREATEROLE --创建具有创建角色权限的角色
postgres=# create role db_role4 CREATEROLE;
CREATE ROLE
postgres=# drop role db_role4;
DROP ROLE
postgres=#
alter role db_role1 nologin nocreatedb; --修改角色取消登录和创建数据库权限
postgres=# create role db_role1 LOGIN;
CREATE ROLE
postgres=# alter role db_role1 nologin nocreatedb;
ALTER ROLE
postgres=#
postgres=# drop role db_role1;
DROP ROLE
其实用户和角色都是角色,只是用户是具有登录权限的角色。
create user db_user1 password '123'; --创建用户
postgres=# create user db_user1 password '123';
CREATE ROLE
postgres=# drop user db_user1;
DROP ROLE
postgres=#
create role db_user1 password '123' LOGIN; --同上一句等价
postgres=# create role db_user1 password '123' LOGIN;
CREATE ROLE
postgres=# drop role db_user1;
DROP ROLE
drop user db_user1; --删除用户
alter user db_user1 password '123456'; --修改密码
postgres=# create user db_user1 password '123';
CREATE ROLE
postgres=# alter user db_user1 password '123456';
ALTER ROLE
alter user db_user1 createdb createrole; --对用户授权
postgres=# alter user db_user1 createdb createrole;
ALTER ROLE
赋予角色控制权限
我们可以使用GRANT 和REVOKE命令赋予用户角色,来控制权限。
create user db_user1; --创建用户1
create user db_user2; --创建用户2
create role db_role1 createdb createrole; --创建角色1
grant db_role1 to db_user1,db_user2; --给用户1,2赋予角色1,两个用户就拥有了创建数据库和创建角色的权限
revoke db_role1 from db_user1; --从用户1移除角色1,用户不在拥有角色1的权限
postgres=# create role db_role1 createdb createrole;
CREATE ROLE
postgres=# grant db_role1 to db_user1;
GRANT ROLE
postgres=# revoke db_role1 from db_user1;
REVOKE ROLE
postgres=#
创建只读用户
1.创建一个用户名为readonly密码为ropass的用户
CREATE USER readonly WITH ENCRYPTED PASSWORD '123456';
2.用户只读事务
alter user readonly set default_transaction_read_only=on;
3.把所有库的语言的USAGE权限给到readonly
GRANT USAGE ON SCHEMA public to readonly;
4.授予select权限(这句要进入具体数据库操作在哪个db环境执行就授予那个db的权)
grant select on all tables in schema public to readonly;
注:
(1)标红部分为可自定义部分
(2)可使用gui工具(pgadmin/navicat)连接后数据库后在查询窗口中执行以上语句
- Postgresql常见操作指令
- PostgreSQL 常见操作
- PostgreSQL的常用操作指令
- postgresql数据库操作指令学习
- svn 常见操作指令
- redis 常见指令操作
- linux常见操作指令
- 关于postgresql——常用操作指令
- postgresql数据库命令行常用指令操作
- 常见Linux操作指令(上)
- Postgresql 常见数据库操作命令记录
- postgresql——常用操作指令(不定时更新)
- 常见的Nand Flash的指令操作
- [postgresql]postgresql操作记录
- 【PostgresQL】PostgresQL 基本操作
- 【PostgreSQL】PostgreSQL基础操作
- 【psql】PostgreSQL常用指令
- postgresql 操作
- tablayout_不能左右滑动问题小计
- 输入一些数(以-1为结束标志),按从小到大输出
- c# listView中imagelist的ImageSize属性大小重新设置后图标不显示?
- “不仅要救火,更是要防火”阿里是如何保障并提升系统稳定性的?
- “安全协议自动验证技术服务与工具开发”之AKA
- Postgresql常见操作指令
- hammer.js操作svg使达到平移,缩放
- vue 过滤器基本用法
- Servlet介绍(一)
- 逆向微信------给微信加上控件
- 源码解析之--ArrayList
- Anaconda Python OpenCV(OpenCV contrib)导入cv2出现找不到dll问题
- 最长公共子序列
- MyEclipse中的快捷键