数据库 PostgreSQL 常用命令
PostgreSQL
是一个免费的对象-关系数据库服务器(ORDBMS),在灵活的BSD许可证下发行。
简介
- PostgreSQL 是一个免费的对象-关系数据库服务器(ORDBMS),在灵活的BSD许可证下发行。
- PostgreSQL 开发者把它念作 post-gress-Q-L。
- PostgreSQL 的 Slogan 是 “世界上最先进的开源关系型数据库”。
- 官网:https://www.postgresql.org
- 参考文档:PostgreSQL 10.1 手册
ORDBMS 术语
在我们开始学习 PostgreSQL 数据库前,让我们先了解下 ORDBMS 的一些术语:
- 数据库: 数据库是一些关联表的集合。
- 数据表: 表是数据的矩阵。在一个数据库中的表看起来像一个简单的电子表格。
- 列: 一列(数据元素) 包含了相同的数据, 例如邮政编码的数据。
- **行:**一行(=元组,或记录)是一组相关的数据,例如一条用户订阅的数据。
- 冗余:存储两倍数据,冗余降低了性能,但提高了数据的安全性。
- 主键:主键是唯一的。一个数据表中只能包含一个主键。你可以使用主键来查询数据。
- **外键:**外键用于关联两个表。
- 复合键:复合键(组合键)将多个列作为一个索引键,一般用于复合索引。
- **索引:**使用索引可快速访问数据库表中的特定信息。索引是对数据库表中一列或多列的值进行排序的一种结构。类似于书籍的目录。
- 参照完整性: 参照的完整性要求关系中不允许引用不存在的实体。与实体完整性是关系模型必须满足的完整性约束条件,目的是保证数据的一致性。
PostgreSQL 特征
- 函数:通过函数,可以在数据库服务器端执行指令程序。
- 索引:用户可以自定义索引方法,或使用内置的 B 树,哈希表与 GiST 索引。
- 触发器:触发器是由SQL语句查询所触发的事件。如:一个INSERT语句可能触发一个检查数据完整性的触发器。触发器通常由INSERT或UPDATE语句触发。 多版本并发控制:PostgreSQL使用多版本并发控制(MVCC,Multiversion concurrency control)系统进行并发控制,该系统向每个用户提供了一个数据库的"快照",用户在事务内所作的每个修改,对于其他的用户都不可见,直到该事务成功提交。
- 规则:规则(RULE)允许一个查询能被重写,通常用来实现对视图(VIEW)的操作,如插入(INSERT)、更新(UPDATE)、删除(DELETE)。
- 数据类型:包括文本、任意精度的数值数组、JSON 数据、枚举类型、XML 数据 等。
- 全文检索:通过 Tsearch2 或 OpenFTS,8.3版本中内嵌 Tsearch2。
- NoSQL:JSON,JSONB,XML,HStore 原生支持,至 NoSQL 数据库的外部数据包装器。
- 数据仓库:能平滑迁移至同属 PostgreSQL 生态的 GreenPlum,DeepGreen,HAWK 等,使用 FDW 进行 ETL。
下载与安装
- 其中不同系统下载不同的安装包安装即可
常用命令
命令 | 含义 |
---|---|
psql --help | 帮助信息 |
psql -U username | 访问本机DB服务器 |
\q | 退出脚本 |
\c dbname | 切换数据库 |
\l | 列举数据库 |
\dt | 列举表 |
\d tblname | 查看表结构 |
\di | 查看索引 |
create database [数据库名] | 创建数据库 |
drop database [数据库名] | 删除数据库 |
alter table [表名A] rename to [表名B] | 重命名一个表 |
drop table [表名] | 删除一个表 |
alter table [表名] add column [字段名] [类型] | 在已有的表里添加字段 |
alter table [表名] drop column [字段名] | 删除表中的字段 |
alter table [表名] rename column [字段名A] to [字段名B] | 重命名一个字段 |
alter table [表名] alter column [字段名] set default [新的默认值] | 给一个字段设置缺省值 |
alter table [表名] alter column [字段名] drop default | 去除缺省值 |
insert into 表名 ([字段名m],[字段名n],......) values ([列m的值],[列n的值],......) | 在表中插入数据 |
update [表名] set [目标字段名]=[目标值] where [该行特征] | 修改表中的某行某列的数据 |
delete from [表名] where [该行特征]; <br/>delete from [表名];--删空整个表 | 删除表中某行数据 |
create table ([字段名1] [类型1] ;,[字段名2] [类型2],......<,primary key (字段名m,字段名n,...)>;) | 创建表 |
SQL 语句 (SELECT * FROM "table1";) | 可以执行 SQL 语句 |
参考资料
相关文章
- SPL 实现电力高频时序数据实时存储统计
- PyTorch 1.11 发布,带来 TorchData 和 functorch 两个新库
- 一文看懂Next.js渲染方法:CSR、SSR、SSG和ISR
- 温故知新:从计算机体系结构看操作系统
- 振弦采集模块多通道专用寄存器
- 聊一聊 SQLSERVER 的行不能跨页
- 得物交易域数据仓库数据质量保障体系建设
- 传说阿里禁止使用存储过程?
- 聊聊接口性能优化的十一个小技巧
- 配置热更新/支持 Reload、QUIC 桥接再升级
- DeepKit —— 赋予 TypeScript 更多可能性
- SpringBoot 如何统计、监控 SQL运行情况?
- v2.3 发布,新增西门子 Fetch/Write 驱动
- Innodb的RR到底有没有解决幻读?看不懂你打我!
- MQ保证读写消息不丢失,这个你都不会就等着被开除吧...
- 推荐这款接口管理神器,集成了Swagger和postman,mock的功能
- 完爆90%的性能毛病,数据库优化八大通用绝招!
- 连接格式优化,支持自定义
- 【生信技能树培训笔记】R语言基础(20230112更新)
- 故障分析 | MySQL 主从延时值反复跳动