PostgreSQL基础知识分享
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基础知识分享的更多相关文章
- GO基础知识分享
目录 GO基础知识分享 go语言的基本事项 关键字 字符串的拼接和变量的定义方式 空白符 const常量 iota的用法 运算符 Go 没有三目运算符,不能适用?: 语言条件语句 for循环的方式 函 ...
- PostgreSQL基础知识与基本操作索引页
磨砺技术珠矶,践行数据之道,追求卓越价值 返回顶级页:PostgreSQL索引页 luckyjackgao@gmail.com 本页记录所有本人所写的PostgreSQL的基础知识和基本操作相关文摘和 ...
- XML的相关基础知识分享(二)
前面我们讲了一下XML相关的基础知识(一),下面我们在加深一下,看一下XML高级方面. 一.命名空间 1.命名冲突 XML命名空间提供避免元素冲突的方法. 命名冲突:在XML中,元素名称是由开发者定义 ...
- docker 基础知识分享ppt
给团队做的docker基础分享ppt, 见下面的附件. https://files.cnblogs.com/files/harrychinese/docker_intro.pptx
- Elasticsearch基础知识分享
1. Elasticsearch背景介绍 Elasticsearch 是一个基于 Lucene 的搜索服务器.它提供了一个分布式多用户能力的全文搜索引擎,基于 RESTful web 接口.Elast ...
- XML的相关基础知识分享
XML和Json是两种最常用的在网络中数据传输的数据序列化格式,随着时代的变迁,XML序列化用于网络传输也逐渐被Json取代,前几天,单位系统集成开发对接接口时,发现大部分都用的WebService技 ...
- 工作随笔—Java容器基础知识分享(持有对象)
1. 概述 通常,程序总是运行时才知道的根据某些条件去创建新对象.在此之前,不会知道所需对象的数量,甚至不知道确切的类型,为解决这个普遍的编程问题:需要在任意时刻和任意位置创建任意数量的对象,所以,就 ...
- asch相关的linux基础知识分享
本文针对的人群:会用putty.SecureCRT.xhsell等工具ssh连接到自己的asch服务器上,但不怎么会执行命令的人.高手请绕路~ 本文主要围绕受托人搭建.维护涉及相关的内容进行Linux ...
- Unity3D基础知识梳理
这段时间在做Unity的项目,这差不多是我的第一次实战啊~然后公司来了实习的童鞋要学Unity,但是我一向不靠谱啊,所以只能帮他们稍微梳理下基础的东西了啊,唉~学长只能帮你们到这里了~顺便就把自己这两 ...
随机推荐
- Go的安装
0. 环境:Ubuntu16.04 64位 1. 下载安装包,地址:https://golang.org/dl,以1.8版本为例,下载go1.8.linux-amd64.tar.gz 2. 解压 ...
- RabbitMQ通过Exchange.headers属性代替routekey,x-match实现队列精准匹配
消费者: static void Main(string[] args) { ConnectionFactory factory = new ConnectionFactory() { HostNam ...
- js_base_note
- numpy学习总结(重点讲解索引方式)
numpy思维导图 ndarray对象是什么 NumPy 最重要的一个特点是其 N 维数组对象 ndarray,它是一系列同类型数据的集合,以 0 下标为开始进行集合中元素的索引. ndarray 对 ...
- 多项式与三角函数求导——BUAA OO 第一单元作业总结
第一次作业 需求简要说明 针对符合规定的多项式表达式输出其符合格式规定的导函数多项式,格式错误输出WRONG FORMAT! 带符号整数 支持前导0的带符号整数,符号可省略,如: +02.-16> ...
- linux视频录制,推流处理
1.linux视频合成(视频后缀要一致) ffmpeg -i 1.mp4 -i 2.mp4 -i 3.mp4 -lavfi hstack=inputs=3 4.mp4 (input=3表示希望合并的视 ...
- nodejs, 阿里oss上传下载图片
const archiver = require('archiver')const send = require('koa-send')const oss = require('ali-oss').W ...
- 20181115 python-第一章学习小结part3
第一章,基本数据类型-------仅学三种,字符型,数字型,布尔型 仅学三种数据类型: 字符型,加了引号的都可以被认为是字符串,字符串可以拼接 数字型,int,float,long三种,可以进行运算 ...
- C++进阶:新人易入的那些坑 --1.常量、常指针和指针常量
声明:以下内容B站/Youtube学习笔记,https://www.youtube.com/user/BoQianTheProgrammer/ Advanced C++. /* why use con ...
- Web端常见问题总结
1.ES6箭头函数和普通函数的区别(至少3点) (1)箭头函数的this永远指向其上下文的 this,任何方法都改变不了其指向,如call(), bind(), apply(),普通函数的this指向 ...