1. 简介
1.1 安装
环境: Docker for MacOS
镜像: 官方镜像,https://hub.docker.com/r/library/postgres/
设置密码变量POSTGRES_PASSWORD
1.2 基本概念
PG(PostgreSQL 后面都这么表示)使用C/S模式。PG能够并发处理请求,每个链接都会fork一个新的进程来处理请求。
1.3 基本操作命令
1. 命令行连接PG,(也可以使用pgAdmin4工具去连接和管理PG数据库服务器):
$ psql -h localhost -U postgres -W
Password for user postgres:
psql (9.6.1)
Type "help" for help.
postgres=#
2. 创建数据库:
postgres=# create database mydb;
CREATE DATABASE
3. 显示数据库:
postgres=# \l
List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges
-----------+----------+----------+------------+------------+-----------------------
mydb | postgres | UTF8 | en_US.utf8 | en_US.utf8 |
postgres | postgres | UTF8 | en_US.utf8 | en_US.utf8 |
template0 | postgres | UTF8 | en_US.utf8 | en_US.utf8 | =c/postgres +
| | | | | postgres=CTc/postgres
template1 | postgres | UTF8 | en_US.utf8 | en_US.utf8 | =c/postgres +
| | | | | postgres=CTc/postgres
(4 rows)
4. 切换数据库:
mydb=# \c mydb
Password for user postgres:
You are now connected to database "mydb" as user "postgres".
5. 列出数据表
mydb=# \d
No relations found.
6. 退出登陆
mydb=# \q
2. SQL语言
PG支持标准的SQL语言类型
2.1 常用的数据类型
2.1.1 数值类型
名称 | 数据存储 | 描述 | 范围 |
---|---|---|---|
smallint | 2 字节 | 小范围整数 | -32768 到 +32767 |
integer | 4 字节 | 常用的整数 | -2147483648 到 +2147483647 |
bigint | 8 字节 | 大范围的整数 | -9223372036854775808 到 9223372036854775807 |
decimal | 变长 | 用户声明精度,精确 | 小数点前131072位,小数点后16383位 |
numeric | 变长 | 用户声明精度,精确 | 小数点前131072位,小数点后16383位 |
real | 4 字节 | 变精度,不精确 | 6 位十进制数字精度 |
double precision | 8 字节 | 变精度,不精确 | 15 位十进制数字精度 |
smallserial | 2 字节 | 自增整数 | 1 到 +32767 |
serial | 4 字节 | 自增整数 | 1 到 +2147483647 |
bigserial | 8 字节 | 大范围的自增整数 | 1 到 9223372036854775807 |
除了smallserial,serial,bigserial和一般数据库不同,其他数据类型在其他数据库中都有对应的实现。serial并不是一个真实的数据类型,主要用来作为自增长主键使用的,类似MySQL中的AUTO_INCREMENT
,用法也类似。
2.1.2 资金类型
与数据库变量lc_monetary
相关。
名称 | 数据存储 | 描述 | 范围 |
---|---|---|---|
money | 8 字节 | 资金数 | -92233720368547758.08到+92233720368547758.07 |
2.1.3 字符类型
名称 | 描述 |
---|---|
character varying(n), varchar(n) | 变长字符,有长度限制 |
character(n), char(n) | 定长字符,有长度限制 |
text | 变长字符,无长度限制 |
三种类型数据类型在PG中没有性能上的差别。varchar和char是character varying, character的别名。
2.1.4 日期/时间类型
名称 | 数据存储 | 描述 | 最小值 | 最大值 | 精度 |
---|---|---|---|---|---|
timestamp[(p)]不包含时区 | 8 字节 | 日期和时间 | 4713 BC | 294276 AD | 1毫秒/14位数字 |
timestamp[(p)]包含时区 | 8 字节 | 日期和时间 | 4713 BC | 294276 AD | 1毫秒/14位数字 |
date | 4 字节 | 日期(不包含时间) | 4713 BC | 5874897 AD | 1天 |
time[(p)] 不包含时区 | 8 字节 | 一天的时间(没有日期) ,不包含时区 | 00:00:00 | 24:00:00 | 1毫秒/14位数字 |
time[(p)] 不包含时区 | 12 字节 | 一天的时间(没有日期),包含时区 | 00:00:00+1459 | 24:00:00-1459 | 1毫秒/14位数字 |
interval[ fields ] [(p)] 不包含时区 | 16 字节 | 时间间隔 | -178000000 年 | 178000000 年 | 1毫秒/14位数字 |
2.1.5 Boolean类型
名称 | 数据存储 | 描述 |
---|---|---|
boolean | 1 字节 | true/false |
TRUE同义:
TRUE
't'
'true'
'y'
'yes'
'on'
'1'
FALSE同义:
FALSE
'f'
'false'
'n'
'no'
'off'
'0'