PostgreSQL是一个功能强大的开源对象关系数据库管理系统(ORDBMS)。 用于安全地存储数据; 支持最佳作法,并容许在处理请求时检索它们。html
PostgreSQL(也称为Post-gress-Q-L
)由PostgreSQL全球开发集团(全球志愿者团队)开发。 它不受任何公司或其余私人实体控制。 它是开源的,其源代码是免费提供的。mysql
PostgreSQL是跨平台的,能够在许多操做系统上运行,如Linux,OS X和Microsoft Windows等。sql
PostgreSQL是第一个实现多版本并发控制(MVCC)功能的数据库管理系统,甚至在Oracle以前。MVCC功能在Oracle中称为快照隔离。shell
PostgreSQL是一个通用的对象 - 关系数据库管理系统。它容许您添加使用不一样编程语言(如C / C ++,Java等)开发的自定义函数。数据库
PostgreSQL旨在实现可扩展性。在PostgreSQL中,您能够定义本身的数据类型,索引类型,函数语言等。若是您不喜欢系统的任何部分,您能够随时开发自定义插件以加强它以知足您的要求,例如,添加新的优化。编程
若是您须要任何支持,可使用活跃的社区来提供帮助。您能够随时找到PostgreSQL社区的答案,以了解使用PostgreSQL时可能遇到的问题。许多公司在您须要时提供商业支持服务。安全
Linux 下安装、建立用户和数据库教程: http://www.javashuo.com/article/p-dseatofr-gq.html服务器
官方下载地址:并发
https://www.enterprisedb.com/downloads/postgres-postgresql-downloads
有几种方法能够验证安装。您能够尝试从任何客户端应用程序(例如psql和pgAdmin)链接到PostgreSQL数据库服务器 。异步
验证安装的快速方法是经过pgAdmin应用程序。
首先,打开SQL shell(psql)
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';
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;
当你从表中查询数据,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子句为每组重复项保留一行
select distinct column_1 from table_name; -- column_1列中的值用于评估重复项
select distinct column_1,column_2 from table_name; -- column_1列和column_2二者的结合用于评估重复项
(2019年1月8日 继续完善...)