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. 【JavaScript】 使用Async 和 Promise 完美解决回调地狱

    很久以前就学习过Async和Promise,但总是一知半解的. 今天在写NodeJS的时候,发现好多第三方库使用回调,这样在实际操作中会出现多重回调,这就是传说中的JS回调地狱. 举个例子 有一个方法 ...

  2. FreeBSD 与中文

    $ setenv LC_ALL en_US.UTF- 然后用 locale 检查 en_US 不是重点,重点是 UTF-8 . 然后用 putty,原因是默认终端又没有中文字体...然后就能输入输出中 ...

  3. 关于定时脚本crontab的坑

    需求: 每分钟执行一次程序,将处理后的数据写入mongodb 最初做法: 1):写crontab没有响应,于是打算通过shell脚本的while true来执行 当时sb,没控制时间内,而且我还是用n ...

  4. 大数据学习之Linux基础01

    大数据学习之Linux基础 01:Linux简介 linux是一种自由和开放源代码的类UNIX操作系统.该操作系统的内核由林纳斯·托瓦兹 在1991年10月5日首次发布.,在加上用户空间的应用程序之后 ...

  5. UOJ#449. 【集训队作业2018】喂鸽子 min-max容斥,FFT

    原文链接www.cnblogs.com/zhouzhendong/p/UOJ449.html 题解 设 f(i) 表示给 i 只鸽子喂食使得至少一只鸽子被喂饱的期望次数,先 min-max容斥 一下. ...

  6. 史上最全的select加锁分析(Mysql)

    引言 大家在面试中有没遇到面试官问你下面六句Sql的区别呢 select * from table where id = ? select * from table where id < ? s ...

  7. Python3-Cookbook总结 - 第二章:字符串和文本

    第二章:字符串和文本 几乎所有有用的程序都会涉及到某些文本处理,不管是解析数据还是产生输出. 这一章将重点关注文本的操作处理,比如提取字符串,搜索,替换以及解析等. 大部分的问题都能简单的调用字符串的 ...

  8. 20175305张天钰《java程序设计》第五周学习总结

    <java程序设计>第五周学习总结 接口与实现 知识小点: (1)用Arrays.sort方法对所有实现Comparable接口的对象进行排序 (2)接口体现了has-a关系,继承体现了i ...

  9. babel分析

    现在都用 ES6 新语法以及 ES7 新特性来写应用了,但是浏览器和相关的环境还不能友好的支持,需要用到 Babel 转码器来转换成 ES5 的代码 相信大家都看到过如下的名词: babel-pres ...

  10. MySQL索引背后的数据结构及算法原理(转)

    转自:http://blog.codinglabs.org/articles/theory-of-mysql-index.html 摘要 本文以MySQL数据库为研究对象,讨论与数据库索引相关的一些话 ...