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,但是我一向不靠谱啊,所以只能帮他们稍微梳理下基础的东西了啊,唉~学长只能帮你们到这里了~顺便就把自己这两 ...
随机推荐
- Angular changeDetction
ChangeDection 检测程序内部状态,然后反映到UI上. 引起状态变化:Events,XHR,Timers ApplicationRef监听NgZone的onTurnDone,然后执行检测. ...
- ImCash:论拥有靠谱数字钱包的重要性!
数字货币被盗已经不是什么新鲜事,前有交易所币安被黑客攻击,Youbit破产,后有“钓鱼邮件“盗号木马,安全对于数字货币用户来讲至关重要. 现行市场痛点: 2017年9月以太坊Parity钱包的漏洞 ...
- 欧朋Opera 浏览器(打不开百度)提示“您的连接不是私密连接”,解决办法
它网页报错SSL.提示“您的连接不是私密连接” 打开opera://net-internals/#hsts,操作如下图片,三步以后,ok 如果是其他外国浏览器,用这个办法也有效,可以把前面的 oper ...
- Tag Helpers 的使用介绍
什么是 Tag Helpers ? 在 Razor 文件中,Tag Helpers 能够让服务端代码参与创建和渲染 HTML 元素.例如,内置的ImageTagHelper能够在图像名称后面追加版本号 ...
- Activity 切换效果
Activity 切换效果 设置Activity 的 启动/退出时动画效果. 1.设置动画 通过方法 overridePendingTransition(enterAnim:Int,exitAnim: ...
- 1、初识Java
1.计算机发展过程 2.Java简史 lSUN公司是一家什么样的公司? 美国SUN(Stanford University Network)公司 在中国大陆的正式中文名为“太阳计算机系统(中国)有限公 ...
- IOS开发中关于runtime的认识
首先要知道我们写的代码在程序运行过程中都会被转化成runtime的C代码执行. runtime突出的一点就是OC中消息传递机制的应用.objc_msgsend(target,SEL); 首先我们先看一 ...
- 关于docker jenkins启动时失败的问题处理
最近在做持续集成,然后使用docker 运行jenkins docker run -d -p 8088:8080 -p 50000:50000 -v /home/docker/jenkins_hom ...
- JS与IOS、Android的交互
一.JS与Android 放在了assets文件夹下了(注意若使用的是AS这个IDE,assets文件夹应放在src/main目录下) <!DOCTYPE html> <html&g ...
- Deepin下配置JDK8
下载JDK 首先在http://www.oracle.com/technetwork/java/javase/downloads/index.html下载对应的JDK 本人下载的是JDK8 解压tar ...