PostgreSQL的基本使用整理
Posted 小乔不掉发
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PostgreSQL的基本使用整理相关的知识,希望对你有一定的参考价值。
我是目录:
1、数据库操作;
(1)创建数据库
create database mydb;
(2)查看所有数据库
\\list(或\\l)
(3)切换当前数据库
\\c mydb
(4)删除数据库
drop database <dbname>
2、表操作:
创建数据库时每列都必须使用数据类型。PostgreSQL主要有三类数据类型:
- 数值数据类型
- 字符串数据类型
- 日期/时间数据类型
① 数值 常见的数据类型包括:
名字 | 存储长度 | 描述 | 范围 |
---|---|---|---|
smalint | 2字节 | 小范围整数 | -32768 到 +32767 |
integer | 4字节 | 常用的整数 | -2147483648 到 +2147483647 |
bigint | 8字节 | 大范围整数 | -9223372036854775808 到 +9223372036854775807 |
decimal | 可变长 | 用户指定的精度,精确 | 小数点前131072位;小数点后16383位 |
numeric | 可变长 | 用户指定的精度,精确 | 小数点前131072位;小数点后16383位 |
real | 4字节 | 可变精度,不精确 | 6位十进制数值精度 |
double | 8字节 | 可变精度,不精确 | 15位十进制数字精度 |
② 字符串 类型包括:
- char(size),character(size):固定长度字符串,size 规定了需存储的字符数,由右边的空格补齐;
- varchar(size),character varying(size):可变长度字符串,size 规定了需存储的字符数;
- text:可变长度字符串。
③ 日期/时间 的数据类型有:
- timestamp:日期和时间;
- data:日期,无时间;
- time:时间;
其他数据类型还有 布尔值boolean(true或false),货币数额money 和 几何数据等。
(1)创建表:
create table test(
id int,
body varchar(100)
);
(2)在表中插入数据:
insert into test(id,body) values(1,'hello');
(3)查看当前数据库下所有表:
\\d
(4)查看表结构,相当于desc:
\\d test
(5)修改表名:
alter table test rename to t2;
(6)删除表 [如果存在]:
drop table [if exists] test;
(7)主键约束:
id varchar(20) primary key
primary key(id)
(8)外键约束:
create table tb_user(
userid varchar(20),
classid varchar(20),
foreign key(classid) references class(classid)
);
(9)唯一约束;
name varchar(20) unique
(10)非空约束:
name varchar(20) not null
(11)默认值:
name varchar(20) default '帅哥'
3、Schema(模式):
PostgreSQL模式(schema)可以看着是一个 表的集合。
一个模式可以包含视图、索引、数据结构、函数和操作符等。
相同的对象名称可以被用于不同的模式中而不会出现冲突。
使用模式的优势:
- 允许多个用户使用一个数据库并且不会互相干扰
- 将数据库对象组织成逻辑组以便更容易管理
- 第三方应用的对象可以放在独立的模式中,这样他们就不会被其他对象的名称发生冲突。
(模式类似于操作系统层的目录,但是模式不能嵌套)
# 创建 schema:
create schema myschema;
create table myschema.company(
id int not null,
name varchar(20) not null,
age int
);
# 删除schema:
drop schema myschema;
# 删除一个模式以及其中包含的所有对象:
drop schema myschema cascade;
4、如何备份PG数据库:
(1)单数据库:pg_dump、psql
(必须对要备份的数据库具有读取权限的用户身份允许此命令)
以 postgres 用户身份登录:
sudo su - postgres
通过运行以下命令将数据库的内容存储到文件中。替换 dbname 为要备份的数据库名称。
pg_dump dbname > dbname.bak
生成的备份文件 dbname.bak 可以用 scp 传输到另一台主机,也可以存储在本地。
使用 psql 恢复数据库:
psql test < dbname.bak
备份文件有几种选择:
- *.bak:压缩二进制格式
- *.sql:明文转储
- *.tar:tarball
(2)所有数据库:
由于 pg_dump 一次只创建一个数据库的备份,因此它不会存储有关数据库角色或其他群集范围配置的信息。要存储此信息并同时备份所有数据库,使用 pg_dumpa11
创建备份文件:
pg_dumpa11 > pg_backup.bak
从备份还原所有数据库:
psql -f pg_backup.bak postgres
5、用户操作:
(1)创建用户并设置密码:(用户:test 密码:test)
create user test with password 'test';
(2)修改用户密码:
alter user test with password '123';
(3)数据库授权:
将数据库 mydb 权限授予 test
grant all privileges on database mydb to test;
但此时用户还是没有读写权限,需要继续授权表:(该语句必须在所要操作的数据库里执行)
grant all privileges on all tables in schema public to xxx;
(4)移除指定账户指定数据库所有权限
revoke all privileges on database mydb from test;
(5)删除用户:
drop user test;
(6)查看用户:
/du
6、常用命令总结:
- \\password(设置密码)
- \\q(退出)
- \\h:查看SQL命令的解释,比如 \\h select
- \\?:查看psql列表
- \\l:列出所有数据库
- \\c [database_name]:切换其他数据库
- \\d:列出当前数据库的所有表格
- \\d [table_name]:列出某一张表的结构
- \\du:列出所有用户
以上是关于PostgreSQL的基本使用整理的主要内容,如果未能解决你的问题,请参考以下文章