pg快速入门--初步使用
Posted 进击的CJR
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了pg快速入门--初步使用相关的知识,希望对你有一定的参考价值。
登录数据库
psql -U postgres -h localhost -p 5432
表空间
创建表空间
postgres=# create tablespace tbs_data1 owner postgres location /home/postgres;
CREATE TABLESPACE
查看表空间
postgres=# \\db
List of tablespaces
Name | Owner | Location
------------+----------+----------------
pg_default | postgres |
pg_global | postgres |
tbs_data1 | postgres | /home/postgres
(3 rows)
删除表空间
postgres=# drop tablespace tbs_data1;
DROP TABLESPACE
select * from pg_tablespace;
如果我们不建立自己的表空间,建立表的时候,也不指定表空间。那么,PostgreSQL 不会建立你的表空间,所建立的表,都放入缺省表空间里。
数据库
列出数据库以及数据库编码
postgres=# \\l
List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges
-----------+----------+----------+------------+------------+-----------------------
postgres | postgres | UTF8 | en_US.utf8 | en_US.utf8 |
template0 | postgres | UTF8 | en_US.utf8 | en_US.utf8 | =c/postgres +
| | | | | postgres=CTc/postgres
template1 | postgres | UTF8 | en_US.utf8 | en_US.utf8 | =c/postgres +
| | | | | postgres=CTc/postgres
(3 rows)
select * from pg_database;
创建数据库
postgres=# create database mydb;
CREATE DATABASE
postgres=# \\l
List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges
-----------+----------+----------+------------+------------+-----------------------
mydb | postgres | UTF8 | en_US.utf8 | en_US.utf8 |
postgres | postgres | UTF8 | en_US.utf8 | en_US.utf8 |
template0 | postgres | UTF8 | en_US.utf8 | en_US.utf8 | =c/postgres +
| | | | | postgres=CTc/postgres
template1 | postgres | UTF8 | en_US.utf8 | en_US.utf8 | =c/postgres +
| | | | | postgres=CTc/postgres
(4 rows)
切换数据库
postgres=# \\c mydb;
You are now connected to database "mydb" as user "postgres".
查看当前的连接信息
\\conninfo
You are connected to database "mydb" as user "postgres" on host "localhost" (address "::1") at port "5432".
表
create table user_tbl(name varchar(20),signup_data DATE);
序列
创建序列
postgres=# CREATE SEQUENCE seqTest INCREMENT BY 1 START WITH 1 NO MAXvalue NO CYCLE CACHE 10;
CREATE SEQUENCE
查看序列
postgres=# select * from SEQTEST;
1 | 0 | f
获取下一个序列号
postgres=# select nextval(SEQTEST);
1
postgres=# select nextval(SEQTEST);
2
postgres=# select nextval(SEQTEST);
3
postgres=# select nextval(SEQTEST);
4
序列相关的表或者视图
select * from pg_sequence;
select * from pg_sequences;
select * from information_schema.sequences;
用户管理
PostgreSQL中,一个database下可以有多个schema。可以给schema指定一个owner,如果没有指定,那么当前用户就是schema的默认owner。
在Oracle数据库中不能直接新建一个schema,系统在创建一个用户的同时为这个用户创建一个同名的schem并作为该用户的缺省shcema。即schema的个数同user的个数相同,而且schema名字同user名字一一 对应并且相同。
在mysql中没有schema,所以创建一个database的效果和建立一个schema是相同的。我们可以简单的理解为,MySQL中的database就是schema。
创建一个用户
postgres=# create user sa with password sadmin;
CREATE ROLE
postgres=#
创建一个超级用户
postgres=# create user jdb with password sadmin superuser;
CREATE ROLE
postgres=#
查看用户
postgres=# \\du
jdb | Superuser |
postgres | Superuser, Create role, Create DB, Replication, Bypass RLS |
sa | |
修改用户密码
postgres=# alter user jdb with password oracle123;
ALTER ROLE
或者这样修改
postgres=# \\password sa
Enter new password for user "sa":
Enter it again:
将用户禁止登录
postgres=# alter user jdb with nologin;
ALTER ROLE
删除用户,首先要先将用户的对象删除,再删除用户
postgres=# drop owned by sa;
DROP OWNED
postgres=# \\du
jdb | Superuser, Cannot login |
postgres | Superuser, Create role, Create DB, Replication, Bypass RLS |
sa | |
postgres=# drop user sa;
DROP ROLE
查看用户
postgres=# \\du
jdb | Superuser, Cannot login |
postgres | Superuser, Create role, Create DB, Replication, Bypass RLS |
模式
一个数据库包含一个或多个命名模式,模式中包含着表。模式还包含其他类型的命名对象,包括数据类型、函数和操作符。
相同的对象名称可以被用于不同的模式中二不会出现冲突,例如schema1和myschema都可以包含名为mytable的表。和数据库不同,模式并不是被严格地隔离:一个用户可以访问他们所连接的数据库中的所有模式内的对象,只要他们有足够的权限。
下面是一些使用方案的原因:
• 允许多个用户使用一个数据库并且不会互相干扰。
• 将数据库对象组织成逻辑组以便更容易管理。
• 第三方应用的对象可以放在独立的模式中,这样它们就不会与其他对象的名称发生冲突。
模式类似于操作系统层的目录,但是模式不能嵌套。
创建一个用户
postgres=# create role sa with password sadmin login;
CREATE ROLE
切换到mydb库
postgres=# \\c mydb
You are now connected to database "mydb" as user "postgres".
查看模式
mydb=# \\dn
public | postgres
创建和用户同名的 schema
mydb=# create schema sa authorization sa;
CREATE SCHEMA
mydb=# \\dn
public | postgres
sa | sa
在sa schema下创建一个表school:
mydb=# create table sa.school(
mydb(# ID INT NOT NULL,
mydb(# NAME VARCHAR (25) NOT NULL,
mydb(# AGE INT NOT NULL,
mydb(# ADDRESS CHAR (25),
mydb(# SALARY DECIMAL (20, 2以上是关于pg快速入门--初步使用的主要内容,如果未能解决你的问题,请参考以下文章