PostgreSQL快速入门
一、PostgreSQL是什么?
PostgreSQL是一个功能强大的开源对象关系数据库管理系统(ORDBMS)。 用于安全地存储数据; 支持最佳做法,并允许在处理请求时检索它们。
PostgreSQL(也称为Post-gress-Q-L
)由PostgreSQL全球开发集团(全球志愿者团队)开发。 它不受任何公司或其他私人实体控制。 它是开源的,其源代码是免费提供的。
PostgreSQL是跨平台的,可以在许多操作系统上运行,如Linux,OS X和Microsoft Windows等。
二、PostgreSQL特点
- 跨平台
- 支持文本、图像、视频、声音等
- 并提供C/C++、Java、Perl、Python、Ruby放数据库连接(ODBC)的编程接口。
- 支持SQL的许多功能,例如复杂的SQL查询,子查询,外键,触发器,视图,视图,多进程并发控制(MVCC)、异步复制。
- 在PostgreSQL中,表可以设置为从“父”表继承其特征。
PostgreSQL是第一个实现多版本并发控制(MVCC)功能的数据库管理系统,甚至在Oracle之前。MVCC功能在Oracle中称为快照隔离。
PostgreSQL是一个通用的对象 - 关系数据库管理系统。它允许您添加使用不同编程语言(如C / C ++,Java等)开发的自定义函数。
PostgreSQL旨在实现可扩展性。在PostgreSQL中,您可以定义自己的数据类型,索引类型,函数语言等。如果您不喜欢系统的任何部分,您可以随时开发自定义插件以增强它以满足您的要求,例如,添加新的优化。
如果您需要任何支持,可以使用活跃的社区来提供帮助。您可以随时找到PostgreSQL社区的答案,以了解使用PostgreSQL时可能遇到的问题。许多公司在您需要时提供商业支持服务。
三、PostgreSQL工具
- psql:命令行工具,也是管理PostgreSQL的主要工具
- 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类型int、smallint、real、double precision、char(N)、varchar(N)、date、time、timestamp和interval,还支持其他的通用功能的类型和丰富的几何类型。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快速入门的更多相关文章
- PolarDB PostgreSQL 快速入门
什么是PolarDB PostgreSQL PolarDB PostgreSQL(下文简称为PolarDB)是一款阿里云自主研发的云原生数据库产品,100%兼容PostgreSQL,采用基于Share ...
- OpenStack云计算快速入门之二:OpenStack安装与配置
原文:http://blog.chinaunix.net/uid-22414998-id-3265685.html OpenStack云计算----快速入门(2) 该教程基于Ubuntu12.04版, ...
- 私有仓库GitLab快速入门篇
私有仓库GitLab快速入门篇 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 安装文档请参考官网:https://about.gitlab.com/installation/#ce ...
- 第一章 使用开发者模式快速入门 Odoo 12
本文为最好用的免费ERP系统Odoo 12开发手册系列文章第一篇. Odoo提供了一个快速应用开发框架,非常适合创建商业应用.这类应用通常用于保留业务记录,增删改查操作.Odoo 不仅简化了这类应用的 ...
- Python快速入门PDF高清完整版免费下载|百度云盘
百度云盘:Python快速入门PDF高清完整版免费下载 提取码:w5y8 内容简介 这是一本Python快速入门书,基于Python 3.6编写.本书分为4部分,第一部分讲解Python的基础知识,对 ...
- MySQL数据库快速入门与应用实战(阶段一)
MySQL数据库快速入门与应用实战(阶段一) 作者 刘畅 时间 2020-09-02 实验环境说明: 系统:centos7.5 主机名 ip 配置 slavenode3 172.16.1.123 4核 ...
- Nodejs ORM框架Sequelize快速入门
Nodejs ORM框架Sequelize快速入门 什么是ORM? 简单的讲就是对SQL查询语句的封装,让我们可以用OOP的方式操作数据库,优雅的生成安全.可维护的SQL代码.直观上,是一种Model ...
- Web Api 入门实战 (快速入门+工具使用+不依赖IIS)
平台之大势何人能挡? 带着你的Net飞奔吧!:http://www.cnblogs.com/dunitian/p/4822808.html 屁话我也就不多说了,什么简介的也省了,直接简单概括+demo ...
- SignalR快速入门 ~ 仿QQ即时聊天,消息推送,单聊,群聊,多群公聊(基础=》提升)
SignalR快速入门 ~ 仿QQ即时聊天,消息推送,单聊,群聊,多群公聊(基础=>提升,5个Demo贯彻全篇,感兴趣的玩才是真的学) 官方demo:http://www.asp.net/si ...
随机推荐
- Python第一天:你必须要知道的Python擅长领域以及各种重点学习框架(包含Python在世界上的应用)
目录 Python5大擅长领域 WEB开发 网络编程 科学运算 GUI图形开发 运维自动化 Python在世界上的知名应用 国外 谷歌 CIA NASA YouTube Dropbox Instagr ...
- python部署lvs
lvs-dr-rr import paramiko vip = '192.168.254.250' ds = '192.168.254.17' rs1 = '192.168.254.37' rs2 = ...
- Python之使用转义序列 \n 和 \t 跟 expandtabs 函数输出表格
示例: text = "username\temail\tpassword\nashdfh\tfiodfh@q.com\ty567\nsdfiuh\tadfhisoj@163.com\t42 ...
- C语言 课堂随记
1.codeblocks中的pow函数会有误差. 自定义pow函数: int pow(int x,int y) { ; ; i<=y; i++) t=t*x; return t; } 2.C库函 ...
- axios拦截器
import axios from "axios"; axios.interceptors.response.use(response => { //=>设置响应拦截器 ...
- Redisson 分布式锁
Redisson_百度百科https://baike.baidu.com/item/Redisson/20856570 redission 分布式锁 - 穆穆兔兔 - 博客园https://www.c ...
- 数据标记系列——图像分割 & PolygonRNN++(二)
实践 1.export PATH=~/anaconda3/bin:$PATH 2.Anaconda3 中创建新环境 Conda create –name=labelme_polyrnn_pp pyth ...
- Python进阶4---Python的文件IO
文件操作 体存储单元,包括随机存储器(RAM),只读存储器(ROM),以及高速缓存(CACHE).只不过因为RAM是其中最重要的存储器. 通常所说的内存即指电脑系统中的RAM.RAM要求每时每刻都不 ...
- 关于mysql主从架构master宕机后,请求转移问题解决办法
mysql架构:一主一从 问题一:有两台mysql数据库,已做好主从.如果运行某一天master服务器mysql故障导致前端请求无法处理怎么办? 答:将前端需要数据库处理的请求转移到slave机上. ...
- 清明培训 清北学堂 DAY1
今天是李昊老师的讲授~~ 总结了一下今天的内容: 1.高精度算法 (1) 高精度加法 思路:模拟竖式运算 注意:进位 优化:压位 程序代码: #include<iostream>#in ...