一、PostgreSQL是什么?

PostgreSQL是一个功能强大的开源对象关系数据库管理系统(ORDBMS)。 用于安全地存储数据; 支持最佳做法,并允许在处理请求时检索它们。

PostgreSQL(也称为Post-gress-Q-L)由PostgreSQL全球开发集团(全球志愿者团队)开发。 它不受任何公司或其他私人实体控制。 它是开源的,其源代码是免费提供的。

PostgreSQL是跨平台的,可以在许多操作系统上运行,如Linux,OS X和Microsoft Windows等。

二、PostgreSQL特点

  1. 跨平台
  2. 支持文本、图像、视频、声音等
  3. 并提供C/C++、Java、Perl、Python、Ruby放数据库连接(ODBC)的编程接口。
  4. 支持SQL的许多功能,例如复杂的SQL查询,子查询,外键,触发器,视图,视图,多进程并发控制(MVCC)、异步复制。
  5. 在PostgreSQL中,表可以设置为从“父”表继承其特征。

PostgreSQL是第一个实现多版本并发控制(MVCC)功能的数据库管理系统,甚至在Oracle之前。MVCC功能在Oracle中称为快照隔离。

PostgreSQL是一个通用的对象 - 关系数据库管理系统。它允许您添加使用不同编程语言(如C / C ++,Java等)开发的自定义函数。

PostgreSQL旨在实现可扩展性。在PostgreSQL中,您可以定义自己的数据类型,索引类型,函数语言等。如果您不喜欢系统的任何部分,您可以随时开发自定义插件以增强它以满足您的要求,例如,添加新的优化。

如果您需要任何支持,可以使用活跃的社区来提供帮助。您可以随时找到PostgreSQL社区的答案,以了解使用PostgreSQL时可能遇到的问题。许多公司在您需要时提供商业支持服务。

三、PostgreSQL工具

  1. psql:命令行工具,也是管理PostgreSQL的主要工具
  2. pgAdmin:是PostgreSQL免费开源的图形化界面管理工具

四、PostgreSQL安装

Linux 下安装、创建用户和数据库教程: https://www.cnblogs.com/weihengblog/p/10082570.html

官方下载地址:

https://www.enterprisedb.com/downloads/postgres-postgresql-downloads

验证安装

有几种方法可以验证安装。您可以尝试从任何客户端应用程序(例如psql和pgAdmin)连接到PostgreSQL数据库服务器 

验证安装的快速方法是通过pgAdmin应用程序。

首先,打开SQL shell(psql)

五、PostgreSQL数据库命令

1.打开SQL shell(psql),执行以下创建语句

create database mydb;

2.删除数据库命令:

drop database mydb;

这个动作将在物理上把所有与该数据库相关的文件都删除并且不可取消, 因此做这中操作之前一定要考虑清楚。

4.访问数据库

运行PostgreSQL的交互式终端程序,它被称为psql, 它允许你交互地输入、编辑和执行SQL命令。

psql mydb; -- 用下面的命令为mydb数据库激活它

5.查看数据库

postgres=# \l   -- l是L的小写

6.选择数据库,如果创建表的话,前提是在哪个数据库中:

\c mydb; -- 选择mydb数据库,注意\c是小写

7.如果要退出psql的话,输入

mydb=> \q

六、创建一个新表

通过指定表的名字、所有列的名字以及其数据类型来创建新的表:

CREATE TABLE weather (
city varchar(80),
temp_lo int, -- 最低温度
temp_hi int, -- 最高温度
prcp real, -- 湿度
date date
);

和mysql命令终端类似,psql可以识别该命令直到分号结束。SQL 是对关键字和标识符大小写不敏感的语言,只有在标识符用双引号包围时才能保留它们的大小写。两个中横线(--)表示注释。

PostgreSQL支持标准的SQL类型intsmallintrealdouble precisionchar(N)varchar(N)datetimetimestampinterval,还支持其他的通用功能的类型和丰富的几何类型。PostgreSQL中可以定制任意数量的用户定义数据类型。因而类型名并不是语法关键字,除了SQL标准要求支持的特例外。

第二个例子将保存城市和它们相关的地理位置:

CREATE TABLE cities (
name varchar(80),
location point
);

类型point就是一种PostgreSQL特有数据类型的例子。

删除一张表:

drop table tablename; -- 删除数据表

七、添加记录

insert语句用于向表中添加行:

INSERT INTO weather VALUES ('San Francisco', 46, 50, 0.25, '1994-11-27');

需要注意的是:那些不是简单数字的值,通常使用单引号包裹,date类型实际上对可接收的格式相当灵活,不过我们应该坚持使用这种清晰的格式。

point类型要求一个座标对作为输入,如下:

INSERT INTO cities VALUES ('San Francisco', '(-194.0, 53.0)');

另一种方式是列出所有的列,一个可选的语法允许你明确地列出列:

INSERT INTO weather (city, temp_lo, temp_hi, prcp, date) VALUES ('San Francisco', 43, 57, 0.0, '1994-11-29');

你可以用另外一个顺序列出列或者是忽略某些列, 比如说,我们不知道降水量:

INSERT INTO weather (date, city, temp_hi, temp_lo) VALUES ('1994-11-29', 'Hayward', 54, 37);

你还可以使用COPY从文本文件中装载大量数据。这种方式通常更快,因为COPY命令就是为这类应用优化的, 只是比 INSERT少一些灵活性。比如:

COPY weather FROM '/home/user/weather.txt';

八、查询数据

  • 使用DISTINCT运算符选择不同的行
  • 使用where进行过滤
  • 使用order by进行排序
  • 根据between,in,like选择不同的行
  • 使用group by进行分组
  • 使用hving子句为 组应用条件
  • 使用inner join、left join、full outer join、cross join进行连表查询

postgresql的select例子

SELECT语法:

SELECT
column_1,
column_2,
...
FROM
table_name;

首先,指定要在select子句中查询数据表的列,多个列使用逗号分隔,如果要查询所有列,使用星号(*)作为简写;其次,在From之后指出表名。

使用星号(*)不是一个好习惯:

-- 在SELECT语句中使用星号(*)不是一个好习惯  。想象一下,你有一个包含许多列的大表,SELECT带有星号(*)的语句将从整列中检索所有数据,这可能不是必需的。此外,从表中检索不必要的数据会增加数据库服务器和应用程序之间的流量。因此,您的应用程序将变得缓慢且可扩展性降低。因此,最好在SELECT子句中明确指定列名,以便只从表中获取所需的数据。

使用星号(*)不是一个好习惯

LIMIT:PostgreSQL 中limit是select语句可选的子句,它获取查询返回的所有行的子集。

LIMIT语法:

SELECT * FROM table_name LIMIT n;

如果要在返回行之前跳过m行,请使用offset子句:

SELECT *FROM table LIMIT n OFFSET m;

由于数据库表行的顺序是不可预测的,因此在使用limit子句的时候,应始终使用该order by子句来控制行的顺序。

我们经常使用LIMIT子句来获取表中最高或最低项的数据,例如,要获得最贵的前十名电影,您可以按照售价按降序排序,并使用LIMIT条款获得前10部电影:

select * from film order by rental_rate desc limit 10;

ORDER BY:如何对查询返回的结果集进行排序

当你从表中查询数据,PostgreSQL按照他们插入的顺序返回行,需要对结果集进行排序,需要使用select的order by子句

select column_1,column_2 from table_name order by column_1 ASC,column_2 DESC;

首先,在order by子句中指定要排序的列,如果基于多个列对结果集进行排序,使用逗号分隔。

使用ASC表示升序,DESC按照降序,如果省略,默认按照ASC。

DISTINCT:删除结果集中重复行的子句

使用distinct语句可以从结果集中删除重复的行,该distinct子句为每组重复项保留一行

select distinct column_1 from table_name; -- column_1列中的值用于评估重复项
select distinct column_1,column_2 from table_name; -- column_1列和column_2两者的结合用于评估重复项

九、过滤数据

  • where:根据指定的条件过滤行
  • limit:从查询结果集中获取子集
  • fetch:限制返回的行数
  • in:选择与值列表中的任何值匹配的数据。
  • between:选择一系列值的数据
  • like:根据模式匹配过滤结果集
  • is null:检查值是否为null

(2019年1月8日 继续完善...)

PostgreSQL快速入门的更多相关文章

  1. PolarDB PostgreSQL 快速入门

    什么是PolarDB PostgreSQL PolarDB PostgreSQL(下文简称为PolarDB)是一款阿里云自主研发的云原生数据库产品,100%兼容PostgreSQL,采用基于Share ...

  2. OpenStack云计算快速入门之二:OpenStack安装与配置

    原文:http://blog.chinaunix.net/uid-22414998-id-3265685.html OpenStack云计算----快速入门(2) 该教程基于Ubuntu12.04版, ...

  3. 私有仓库GitLab快速入门篇

    私有仓库GitLab快速入门篇 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 安装文档请参考官网:https://about.gitlab.com/installation/#ce ...

  4. 第一章 使用开发者模式快速入门 Odoo 12

    本文为最好用的免费ERP系统Odoo 12开发手册系列文章第一篇. Odoo提供了一个快速应用开发框架,非常适合创建商业应用.这类应用通常用于保留业务记录,增删改查操作.Odoo 不仅简化了这类应用的 ...

  5. Python快速入门PDF高清完整版免费下载|百度云盘

    百度云盘:Python快速入门PDF高清完整版免费下载 提取码:w5y8 内容简介 这是一本Python快速入门书,基于Python 3.6编写.本书分为4部分,第一部分讲解Python的基础知识,对 ...

  6. MySQL数据库快速入门与应用实战(阶段一)

    MySQL数据库快速入门与应用实战(阶段一) 作者 刘畅 时间 2020-09-02 实验环境说明: 系统:centos7.5 主机名 ip 配置 slavenode3 172.16.1.123 4核 ...

  7. Nodejs ORM框架Sequelize快速入门

    Nodejs ORM框架Sequelize快速入门 什么是ORM? 简单的讲就是对SQL查询语句的封装,让我们可以用OOP的方式操作数据库,优雅的生成安全.可维护的SQL代码.直观上,是一种Model ...

  8. Web Api 入门实战 (快速入门+工具使用+不依赖IIS)

    平台之大势何人能挡? 带着你的Net飞奔吧!:http://www.cnblogs.com/dunitian/p/4822808.html 屁话我也就不多说了,什么简介的也省了,直接简单概括+demo ...

  9. SignalR快速入门 ~ 仿QQ即时聊天,消息推送,单聊,群聊,多群公聊(基础=》提升)

     SignalR快速入门 ~ 仿QQ即时聊天,消息推送,单聊,群聊,多群公聊(基础=>提升,5个Demo贯彻全篇,感兴趣的玩才是真的学) 官方demo:http://www.asp.net/si ...

随机推荐

  1. Leetcode 21. Merge Two Sorted Lists(easy)

    Merge two sorted linked lists and return it as a new list. The new list should be made by splicing t ...

  2. Centos7 利用crontab定时执行任务及配置方法

    crond是什么? crond 和crontab是不可分割的.crontab是一个命令,常见于Unix和类Unix的操作系统之中,用于设置周期性被执行的指令.该命令从标准输入设备读取指令,并将其存放于 ...

  3. js-高级(原型与原型链、作用域与作用域链、闭包)

    ## 原型与原型链 * 所有函数都有一个特别的属性:   * `prototype` : 显式原型属性 * 所有实例对象都有一个特别的属性:   * `__proto__` : 隐式原型属性 * 显式 ...

  4. linux rzsz(lrzsz)安装

    lrzsz 官网入口:https://ohse.de/uwe/software/lrzsz.html lrzsz是一个unix通信套件提供的X,Y,和ZModem文件传输协议,可以用在windows与 ...

  5. 记录一下各个用过 IDE 以及 其他工具 的实用快捷键(持续更新)

    通用: win10锁屏:win + L win10查看服务:win+R,输入services.msc即可 Shift + Tab:多行缩进 Shift + Space:切换输入法 全/半角 Shift ...

  6. springdata 使用plql更新时候注意点 ?2 表示从方法中获取第二个形参的值 ?1表示从方法中获取第一个值

    1.query表示的是查询 需要在操作update的方法上再次添加一个注解modifying 2.plql不是springdatajpa自带的sql功能自带的功能 自动有事务: 所以需要我们手动在se ...

  7. Python量化交易

    资料整理: 1.python量化的一个github 代码 2.原理 + python基础 讲解 3.目前发现不错的两个量化交易 学习平台: 聚宽和优矿在量化交易都是在15年线上布局的,聚宽是15年的新 ...

  8. Go语言中的string知识点

    1.Go语言String的本质就是一个[]byte,所以他们之间可以互相转换,byte数组的长度就是字符串的长度. func StringTest1() { str := "Hello,Wo ...

  9. Luogu5290 十二省联考2019春节十二响(贪心+启发式合并)

    考虑链的做法,显然将两部分各自从大到小排序后逐位取max即可,最后将根计入.猜想树上做法相同,即按上述方式逐个合并子树,最后加入根.用multiset启发式合并即可维护.因为每次合并后较小集合会消失, ...

  10. Codeforces484 A. Bits

    题目类型:位运算 传送门:>Here< 题意:求区间\([L,R]\)内二进制中1的个数最多的那个数,如果有多解输出最小解 解题思路 想了15min就一遍A了 我们可以贪心地在\(L\)的 ...