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,但是我一向不靠谱啊,所以只能帮他们稍微梳理下基础的东西了啊,唉~学长只能帮你们到这里了~顺便就把自己这两 ...
随机推荐
- JFinal Druid 配置
/** * 数据库密码加密,执行如下命令,生成加密密码 * java -cp druid-1.1.14.jar com.alibaba.druid.filter.config.ConfigTools ...
- PHP金钱数字转金钱大写
/* * 数字金额转换成中文大写金额的函数 * String Int $num 要转换的小写数字或小写字符串 * return 大写数字 */ function num_to_rmb($num){ $ ...
- mongodb导出数据到csv
mongo cws export.js > out.csv export.js // Date.prototype.getIOSDate = function () { return new D ...
- redis 集群 遇坑1
redis 集群 遇坑1 redis集群需要开2个端口 一个是客户端连接端口 一个是 集群总线端口 集群总线端口 是 客户端端口 + 10000 如 客户端端口是 6380 则集群总线端口 为 163 ...
- SOUI视频教程
第1讲-开发环境搭建 http://my.tv.sohu.com/us/282307706/89333168.shtml 第2讲- 基本应用程序框架代码解读 http://my.tv.sohu.com ...
- 使用Kazoo操作ZooKeeper服务治理
单机服务的可靠性及可扩展性有限,某台服务宕机可能会影响整个系统的正常使用:分布式服务能够有效地解决这一问题,但同时分布式服务也会带来一些新的问题,如:服务发现(新增或者删除了服务如何确保能让客户端知道 ...
- Shell编程-控制结构 | 基础篇
if-then-else分支结构 if-then-else是一种基于条件测试结果的流程控制结构.如果测试结果为真,则执行控制结构中相应的命令列表:否则将进行另外一个条件测试或者退出该控制结构. if- ...
- JAVA基础复习与总结<七> File类_基本的IO概念_输入输出
File类 1.操作目录 mkdir() 创建目录,必须确保父目录存在,如果不存在,创建失败 mkdirs() list() 文件:目录字符串形式 ,只返回目录和文件的名称 listFiles() ...
- 微信小程序之微信登陆 —— 微信小程序教程系列(20)
简介: 微信登陆,在新建一个微信小程序Hello World项目的时候,就可以看到项目中出现了我们的微信头像,其实这个Hello World项目,就有一个简化版的微信登陆.只不过是,还没有写入到咱们自 ...
- Flutter 获取服务器数据
文档 文档版本有些老 使用 dio 来获取数据 demo import 'dart:io'; import 'dart:convert'; import 'package:flutter/materi ...