1、架构

PostgreSQL是一个关系数据库,采用c/s架构。一个PostgreSQL会话包括:

服务端进程——postgres:用于管理数据库文件,并接受来自客户端的数据库连接, 同时代替客户端执行数据库操作。
客户端

2、命令

(1)创建数据库

createdb -U postgres mydb

(2)连接数据库

psql -U postgres mydb

(3)元命令(内部命令)

\h 可以查看SQL命令语法上的说明,后面不加SQL命令,会列出所有SQL命令
\? 可以查看所有的元命令
\l 查看所有数据库
\d 可以查看数据库的所有表
\c 连接到其他数据库
\q 退出psql

3、常用数据类型
3.1 数值类型

名称  别名 描述 取值范围
smallint int2 有符号位2字节整数 -32768 到 +32767
integer int, int4 有符号位4字节整数 -2147483648 到 +2147483647
bigint int8 有符号位8字节整数 -9223372036854775808 到 +9223372036854775807
smallserial serial2 自增长2字节整数 1 到 +32767
serial searial4 自增长4字节整数 1 到 +2147483647
bigserial int2 自增长八字节整数 1 到 9223372036854775807
real float4 4字节单精度浮点数  
double precision float8 8字节双精度浮点数  
numeric [(p, s)] decimal [(p, s)]  自定义精度浮点数  

:smallserial, serial, bigserial并不是真正的数据类型,它们只是便于快速创建自增长列的符号(类似于MySQL的AUTO_INCREMENT)。

CREATE TABLE test_table (
id SERIAL
);

与下面的SQL等价

CREATE SEQUENCE test_table_id_seq;
CREATE TABLE test_table (
id integer NOT NULL DEFAULT nextval('test_table_id_seq')
);
ALTER SEQUENCE test_table_id_seq OWNED BY test_table.id;

3.2 字符类型

名称 别名 描述
character [(n)] char [(n)] 定长字符串
character varying [(n)] varchar [(n)] 变长字符串
text   变长字符串

3.3 日期类型

名称 别名 描述
date   日期,包含年月日
time [()] [without time zone]   时间(不包含时区)(不包括日期)
time [()] with time zone timetz 时间,包含时区(不包括日期)
timestamp [()] [without time zone]   日期及时间(不包含时区)
timestamp [()] with time zone   日期及时间(包含时区)
interval [fields] [()]   时间间隔

3.4 金钱类型

名称 别名 描述
money   金额

3.5 布尔类型

名称 别名 描述
bool   布尔可以用"t, T, true, TRUE, y, yes, on, f, F, false, FALSE, n, no, off, 1, 0.....""表示

3.6 二进制字符串

名称 别名 描述
bytea   变长的二进制字符串

3.7 网络地址

名称 别名 描述
cidr   IPv4/IPv6网络地址
inet   IPv4/IPv6主机和网络
macaddr   mac地址,‘08:00:2b:02:03’,‘08-00-2b-01-02-03’…

:IPv4形式均为adress/y, inet不写y默认为32, cidr不写y按照IP地址分类来添加默认掩码。

3.8 bit串类型

名称 别名 描述
bit [(n)]   定长bit串
bit varying [(n)] varbit [(n)] 变长bit串

3.9 文字搜索类型

tsvector有序的无重复的语义集合。
tsquery存储用来搜索的语义字段,会处理逻辑运算。

3.10 其他字段

名称 别名 描述
json   json 数据
uuid   uuid
xml   xml
数组   数组

4、系统保留列

PostgreSQL的每张表都有系统保留列,都是系统隐式定义的。用户自定义的字段名不能与它们冲突。

名称 描述
oid  
tableoid   
xmin   
cmin   
xmax   
cmax   
ctid   

5、 MySQL与PostgreSQL一些差异

(1) 注释符号不同:MySQL使用#进行注释,PG使用— —。

(2) 引用值的符号不同:MySQL使用单引号或者双引号引用值(如,WHERE name = "john");PG只使用单引号引用值(WHERE name = 'john'),双引号用来引用系统标识符,字段名,表名等等。

(3) MySQL使用反引号来引用系统标识。

(4) PG针对字符串比较是大小写敏感的,"Smith"和"smith"不一样。合理使用转换函数,如lower();大小写不敏感的操作符,如like。

(5) PG中的数据库,表,字段和列名称与大小写无关,默认都会转化成小写的,除非使用双引号创建它们,在这种情况下会区分大小写;在MySQL中,表名称可以区分大小写,也可以不区分大小写,具体取决于使用的操作系统。

(6) MySQL使用C语言运算符进行逻辑运算(即'foo'||'bar'表示'foo'或'bar','foo'&&'bar'表示'foo'和'bar');PG使用|| 用于字符串连接('foo'||'bar'='foobar')。

都是相互学习得过程,希望大家能够共同交流,共同进步,谢谢。

PostgreSQL基础知识分享的更多相关文章

  1. GO基础知识分享

    目录 GO基础知识分享 go语言的基本事项 关键字 字符串的拼接和变量的定义方式 空白符 const常量 iota的用法 运算符 Go 没有三目运算符,不能适用?: 语言条件语句 for循环的方式 函 ...

  2. PostgreSQL基础知识与基本操作索引页

    磨砺技术珠矶,践行数据之道,追求卓越价值 返回顶级页:PostgreSQL索引页 luckyjackgao@gmail.com 本页记录所有本人所写的PostgreSQL的基础知识和基本操作相关文摘和 ...

  3. XML的相关基础知识分享(二)

    前面我们讲了一下XML相关的基础知识(一),下面我们在加深一下,看一下XML高级方面. 一.命名空间 1.命名冲突 XML命名空间提供避免元素冲突的方法. 命名冲突:在XML中,元素名称是由开发者定义 ...

  4. docker 基础知识分享ppt

    给团队做的docker基础分享ppt, 见下面的附件. https://files.cnblogs.com/files/harrychinese/docker_intro.pptx

  5. Elasticsearch基础知识分享

    1. Elasticsearch背景介绍 Elasticsearch 是一个基于 Lucene 的搜索服务器.它提供了一个分布式多用户能力的全文搜索引擎,基于 RESTful web 接口.Elast ...

  6. XML的相关基础知识分享

    XML和Json是两种最常用的在网络中数据传输的数据序列化格式,随着时代的变迁,XML序列化用于网络传输也逐渐被Json取代,前几天,单位系统集成开发对接接口时,发现大部分都用的WebService技 ...

  7. 工作随笔—Java容器基础知识分享(持有对象)

    1. 概述 通常,程序总是运行时才知道的根据某些条件去创建新对象.在此之前,不会知道所需对象的数量,甚至不知道确切的类型,为解决这个普遍的编程问题:需要在任意时刻和任意位置创建任意数量的对象,所以,就 ...

  8. asch相关的linux基础知识分享

    本文针对的人群:会用putty.SecureCRT.xhsell等工具ssh连接到自己的asch服务器上,但不怎么会执行命令的人.高手请绕路~ 本文主要围绕受托人搭建.维护涉及相关的内容进行Linux ...

  9. Unity3D基础知识梳理

    这段时间在做Unity的项目,这差不多是我的第一次实战啊~然后公司来了实习的童鞋要学Unity,但是我一向不靠谱啊,所以只能帮他们稍微梳理下基础的东西了啊,唉~学长只能帮你们到这里了~顺便就把自己这两 ...

随机推荐

  1. 【转载】详解一条sql语句的执行过程

    转载自 https://www.cnblogs.com/cdf-opensource-007/p/6502556.html SQL是一套标准,全称结构化查询语言,是用来完成和数据库之间的通信的编程语言 ...

  2. 啊 B树

    关于B树的阶 B树的阶(英语对应order)定义是不统一的: Unfortunately, the literature on B-trees is not uniform in its termin ...

  3. centos 下的 clamav 安装使用

    1.下载 www.clamav.net #官方网站wget https://www.clamav.net/downloads/production/clamav-0.101.2.tar.gz 2.安装 ...

  4. 575. Distribute Candies

    https://leetcode.com/problems/distribute-candies/description/ 题目比较长,总结起来很简单:有个整型数组,长度是偶数,把它分成两份,要求有一 ...

  5. 异步简析之BlockingCollection实现生产消费模式

    目前市面上有诸多的产品实现队列功能,比如Redis.MemCache等... 其实c#中也有一个基础的集合类专门用来实现生产/消费模式 (生产模式还是建议使用Redis等产品) 下面是官方的一些资料和 ...

  6. zookeeper(1)-简单介绍

    参考:  https://www.cnblogs.com/wuxl360/p/5817471.html   zookeeper集群搭建 zookeeper集群原理和搭建 zookeeper集群搭建3 ...

  7. sublime text 3 package Install 安装失败解决方法

    失败原因为官网地址被墙,导致channel_v3文件无法访问. 解决方法: 点击Preferences——>Package Settings——>Package Control——> ...

  8. 输出第n个丑数

    方法一:暴力法 代码如下: 判断是否是丑数 public static boolean isUgly(int n){ while(n!=1){ if(n%2 == 0){ n /= 2; }else ...

  9. VScode加文件头的方式

    在VScode中添加文件头,设置文件编辑者的方式,在软件中查询到file-header插件: 安装好,此时通过是可以生成默认的文件头.如果需要修改配置,在文件=>首选项=>设置中修改: 查 ...

  10. windows10 docker镜像存储位置修改

    =====================================下面做法无效,无法成功启动docker=================================== 安装Docker ...