PostgreSQL
前言
前段时间拿下了一个系统,但是数据库用的是PostgreSQL,奈何之前没接触过这个数据库,一时间竟只能现学现用。于是乎现在有空了来学习下PostgreSQL的用法。
遇到的小问题
- 安装好之后可以通过
psql
访问数据库,但我在客户端却无法连接到数据库。
报错:DBMS: PostgreSQL (no ver.)Case sensitivity: plain=mixed, delimited=exact尝试连线已失败。
解决:取消系统设置的socks5代理。
原理:暂时不详。
- 在连接创建数据库失败。
报错:createdb: error: connection to server on socket "/var/run/postgresql/.s.PGSQL.5432" failed: FATAL: role "xxx" does not exist
解决:createdb -U 用户名 testdb
原理:xxx不存在是指PostgreSQL中不存在xxx这个用户,使用一个存在的用户即可正常使用。
基础概念
PostgreSQL与MySQL一样是关系型数据库(RDBMS),但语法、输入合法性校验上更为严谨,
PostgreSQL的基础操作
连接数据库
1 | psql "数据库名" -U "用户名" |
Ps:链接数据库后的响应如果是数据库名=>
则表示是普通用户,是数据库名=#
则代表是管理员用户。
常用命令
\?
会显示全部帮助信息
\h
会显示SQL语句帮助信息
\q
退出psql
\i 1.sql
从1.sql中读取命令
\l
查询全部数据库
\c 数据库名
进入数据库
数据库相关操作
创建数据库
1 | shell |
1 | # psql |
删除数据库
1 | shell |
1 | drop database 数据库名; |
模式操作
PostgreSQL 模式(SCHEMA)可以看着是一个表的集合。
一个模式可以包含视图、索引、数据类型、函数和操作符等。
相同的对象名称可以被用于不同的模式中而不会出现冲突,例如 schema1 和 myschema 都可以包含名为 mytable 的表。
使用模式的优势:
- 允许多个用户使用一个数据库并且不会互相干扰。
- 将数据库对象组织成逻辑组以便更容易管理。
- 第三方应用的对象可以放在独立的模式中,这样它们就不会与其他对象的名称发生冲突。
模式类似于操作系统层的目录,但是模式不能嵌套。
创建模式
create schema 模式名
create table 模式名.表名(...)
删除模式
drop schema 模式名
表相关操作
PostgreSQL的表操作语法和MySQL基本一致。
COPY命令
COPY可以从文件系统中将数据自动插入到数据库表中。
COPY 目标表 from 文件路径