此postgresql版本是psql (PostgreSQL) 9.6rc1
此文章中若出现ricky,为用户名;mydb,为数据库名;
-h:数据库IP
-U:登录用户
-d:登录的数据库
-p:登录端口
1、命令行登录数据库
psql -U 用户名 -d 数据库名
[还可以填上服务器地址和端口5432]
如:psql -U ricky -d mydb
如果psql 数据库名
则默认使用登陆系统的用户名连接数据库,如果系统的默认用户名和数据库名相同直接可以省掉数据库名,直接psql
登陆成功后可能出现两种提示符:
数据库名=# 超级用户
数据库名=> 普通用户
2、使用图形界面管理数据库
可以使用pgAdmin图形界面管理工具,这个工具在安装数据库的同时就可以安装。
3、退出shell
使用\q
退出
mydb=> \q
4、反斜杠
psql程序中有些不属于SQL命令,是以反斜杠开头。
比如\h
可以查看帮助信息。
基础操作
- 查看所有用户
xxxx=#my_db=# \du
角色列表
角色名称 | 属性 | 成员属于
----------+--------------------------------------------+----------
postgres | 超级用户, 建立角色, 建立 DB, 复制, 绕过RLS | {}
ricky | 超级用户, 建立角色, 建立 DB | {}
- 更改密码
my_db=# \password 数据库名 这里修改了用户的密码
输入新的密码:
新密码
-
删除用户
my_db=# drop user 用户名;
错误: 当前用户不能被删
之所以会出现这样的错误是因为使用当前数据库的用户正要被删除,这样是不允许的。应该使用超级管理员登录数据库系统,然后删除该用户。 -
创建用户
xxxx=#create user 用户名;
CREATE ROLE
xxxx=#alter user 用户名 password'密码';
ALTER ROLE
xxxx=#\du
(此步骤用来查看所有用户)
- 创建数据库
mydb=#CREATE DATABASE 用户名;
CREATE DATABASE
mydb=#GRANT ALL PRIVILEGES ON DATABASE 数据库名 to 用户名;
将数据库的权限给用户
GRANT
mydb=#\c 数据库名
连接到刚刚创建的数据库
查看所有的数据库
注:template0是不可修改的空白数据库
testdb=# \l
数据库列表
名称 | 拥有者 | 字元编码 | 校对规则 | Ctype | 存取权限
-----------+----------+----------+--------------------------------+--------------------------------+-----------------------
mydb | ricky | UTF8 | Chinese (Simplified)_China.936 | Chinese (Simplified)_China.936 |
postgres | postgres | UTF8 | Chinese (Simplified)_China.936 | Chinese (Simplified)_China.936 |
template0 | postgres | UTF8 | Chinese (Simplified)_China.936 | Chinese (Simplified)_China.936 | =c/postgres +
| | | | | postgres=CTc/postgres
template1 | postgres | UTF8 | Chinese (Simplified)_China.936 | Chinese (Simplified)_China.936 | =c/postgres +
| | | | | postgres=CTc/postgres
testdb | ricky | UTF8 | Chinese (Simplified)_China.936 | Chinese (Simplified)_China.936 | =Tc/ricky +
| | | | | ricky=CTc/ricky
(5 行记录)
- 查看表
mydb=# \d
关联列表
架构模式 | 名称 | 类型 | 拥有者
----------+----------+--------+--------
public | user_tbl | 数据表 | ricky
public | yser_tbl | 数据表 | ricky
- 查看表结构
mydb=# \d user_tbl; \d 加上表名
数据表 "public.user_tbl"
栏位 | 类型 | 修饰词
------------+-----------------------+--------
name | character varying(20) |
signp_date | date
- 其他常用命令
切换数据库,相当于mysql的use dbname
\c dbname
列举数据库,相当于mysql的show databases
\l
列举表,相当于mysql的show tables
\dt
查看表结构,相当于desc tblname,show columns from tbname
\d tblname
\password 设置密码。
\q 退出。
\h 查看SQL命令的解释,比如\h select。
\? 查看psql命令列表。
\l 列出所有数据库。
\c [database_name] 连接其他数据库。
\d 列出当前数据库的所有表格。
\d [table_name] 列出某一张表格的结构。
\du 列出所有用户。
\e 打开文本编辑器。
\conninfo 列出当前数据库和连接的信息。
end
参考博客:
https://blog.csdn.net/yunqishequ1/article/details/77323647
https://www.jianshu.com/p/21a9a1d0488a