- PostgreSQL 创建表时,最后一个 column 不能加上逗号。(像函数参数那样理解)
- 关键字 COPY 函数指示服务端从文件复制内容到数据表,需要 superuser 权限
- 命令 \copy 指示客户端,如 psql 从文件复制内容到数据表
- COPY 命令从文本文件复制内容到表时,默认使用 \t tab 作为不同列的分割符号
- COPY 命令详细解释文档:https://www.postgresql.org/docs/14/sql-copy.html
- 在使用 JOIN 时,常用
table.column
这样的格式来指定选择的 COLUMN ,防止拼接使用的 table 有相同 column 名而出现冲突
WHERE
和 HAVING
的区别: WHERE
在聚合函数查询之前过滤 row,而 HAVING
在聚合函数和 GROUP
作用之后再过滤
transaction
保证一系列的数据库操作要么全部执行完毕,要么一个都不执行。这样可以保证数据库不会因为突发错误而部分更新,导致数据不一致。
transaction
中的所有操作都会被记录并持久化保存。以供恢复先前数据。
- 一次
transaction
里的单次操作对其他 transaction
是不可见也不可获取的,所有的 transaction
都是原子操作,只有在 transaction
完全完成之后,其他操作才能看到更新。
- 实际上在 PostgreSQL 里,即使你没有显示声明,每个数据库操作也都是一次
transaction
。使用 BEGIN
;COMMIT
; ROLLBACK
关键字包住的一系列数据库操作被称为 transaction block
.
- 一些 PostgreSQL 的语言库会自动包上
BEGIN
和 COMMIT
,最好确认一下自己用的依赖有没有帮你自动做 transaction。
- 一些保持 pgsql 健康的建议:https://www.crunchydata.com/blog/five-tips-for-a-healthier-postgres-database-in-the-new-year