一晒奕、PostgreSQL是什么煮寡?
PostgreSQL是一個(gè)功能強(qiáng)大的開源對(duì)象關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)(ORDBMS)妆毕。 用于安全地存儲(chǔ)數(shù)據(jù); 支持最佳做法流强,并允許在處理請(qǐng)求時(shí)檢索它們痹届。
PostgreSQL(也稱為Post-gress-Q-L)由PostgreSQL全球開發(fā)集團(tuán)(全球志愿者團(tuán)隊(duì))開發(fā)。 它不受任何公司或其他私人實(shí)體控制打月。 它是開源的队腐,其源代碼是免費(fèi)提供的。
PostgreSQL是跨平臺(tái)的奏篙,可以在許多操作系統(tǒng)上運(yùn)行柴淘,如Linux迫淹,OS X和Microsoft Windows等。
二为严、PostgreSQL特點(diǎn)
跨平臺(tái)
支持文本敛熬、圖像、視頻第股、聲音等
并提供C/C++应民、Java、Perl夕吻、Python诲锹、Ruby放數(shù)據(jù)庫(kù)連接(ODBC)的編程接口。
支持SQL的許多功能涉馅,例如復(fù)雜的SQL查詢归园,子查詢,外鍵稚矿,觸發(fā)器庸诱,視圖,視圖盐捷,多進(jìn)程并發(fā)控制(MVCC)偶翅、異步復(fù)制。
在PostgreSQL中碉渡,表可以設(shè)置為從“父”表繼承其特征聚谁。
PostgreSQL是第一個(gè)實(shí)現(xiàn)多版本并發(fā)控制(MVCC)功能的數(shù)據(jù)庫(kù)管理系統(tǒng),甚至在Oracle之前滞诺。MVCC功能在Oracle中稱為快照隔離形导。
PostgreSQL是一個(gè)通用的對(duì)象 - 關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)。它允許您添加使用不同編程語(yǔ)言(如C / C ++习霹,Java等)開發(fā)的自定義函數(shù)朵耕。
PostgreSQL旨在實(shí)現(xiàn)可擴(kuò)展性。在PostgreSQL中淋叶,您可以定義自己的數(shù)據(jù)類型阎曹,索引類型,函數(shù)語(yǔ)言等煞檩。如果您不喜歡系統(tǒng)的任何部分处嫌,您可以隨時(shí)開發(fā)自定義插件以增強(qiáng)它以滿足您的要求,例如斟湃,添加新的優(yōu)化熏迹。
如果您需要任何支持,可以使用活躍的社區(qū)來(lái)提供幫助凝赛。您可以隨時(shí)找到PostgreSQL社區(qū)的答案注暗,以了解使用PostgreSQL時(shí)可能遇到的問(wèn)題坛缕。許多公司在您需要時(shí)提供商業(yè)支持服務(wù)。
三捆昏、PostgreSQL工具
psql:命令行工具赚楚,也是管理PostgreSQL的主要工具
pgAdmin:是PostgreSQL免費(fèi)開源的圖形化界面管理工具
四、PostgreSQL安裝
Linux 下安裝屡立、創(chuàng)建用戶和數(shù)據(jù)庫(kù)教程:https://www.cnblogs.com/weihengblog/p/10082570.html
官方下載地址:
1https://www.enterprisedb.com/downloads/postgres-postgresql-downloads
驗(yàn)證安裝
有幾種方法可以驗(yàn)證安裝直晨。您可以嘗試從任何客戶端應(yīng)用程序(例如psql和pgAdmin)連接到PostgreSQL數(shù)據(jù)庫(kù)服務(wù)器?。
驗(yàn)證安裝的快速方法是通過(guò)pgAdmin應(yīng)用程序膨俐。
首先勇皇,打開SQL shell(psql)
五、PostgreSQL數(shù)據(jù)庫(kù)命令
1.打開SQL shell(psql)焚刺,執(zhí)行以下創(chuàng)建語(yǔ)句
createdatabasemydb;
2.刪除數(shù)據(jù)庫(kù)命令:
dropdatabasemydb;
這個(gè)動(dòng)作將在物理上把所有與該數(shù)據(jù)庫(kù)相關(guān)的文件都刪除并且不可取消敛摘, 因此做這中操作之前一定要考慮清楚。
4.訪問(wèn)數(shù)據(jù)庫(kù)
運(yùn)行PostgreSQL的交互式終端程序乳愉,它被稱為psql跑慕, 它允許你交互地輸入甲捏、編輯和執(zhí)行SQL命令。
psql mydb;-- 用下面的命令為mydb數(shù)據(jù)庫(kù)激活它
5.查看數(shù)據(jù)庫(kù)
postgres=# \l-- l是L的小寫
6.選擇數(shù)據(jù)庫(kù),如果創(chuàng)建表的話付魔,前提是在哪個(gè)數(shù)據(jù)庫(kù)中:
\c mydb;-- 選擇mydb數(shù)據(jù)庫(kù)诅病,注意\c是小寫
7.如果要退出psql的話司澎,輸入
mydb=>\q
六物独、創(chuàng)建一個(gè)新表
?通過(guò)指定表的名字、所有列的名字以及其數(shù)據(jù)類型來(lái)創(chuàng)建新的表:
CREATETABLE weather (
? ? city? ? ? ? ? ? varchar(80),
? ? temp_lo? ? ? ? int,-- 最低溫度temp_hiint,-- 最高溫度prcpreal,-- 濕度? ? date? ? ? ? ? ? date
);
和mysql命令終端類似备闲,psql可以識(shí)別該命令直到分號(hào)結(jié)束晌端。SQL 是對(duì)關(guān)鍵字和標(biāo)識(shí)符大小寫不敏感的語(yǔ)言,只有在標(biāo)識(shí)符用雙引號(hào)包圍時(shí)才能保留它們的大小寫恬砂。兩個(gè)中橫線(--)表示注釋咧纠。
PostgreSQL支持標(biāo)準(zhǔn)的SQL類型int、smallint泻骤、real漆羔、double precision、char(N)狱掂、varchar(N)演痒、date、time符欠、timestamp和interval嫡霞,還支持其他的通用功能的類型和豐富的幾何類型瓶埋。PostgreSQL中可以定制任意數(shù)量的用戶定義數(shù)據(jù)類型希柿。因而類型名并不是語(yǔ)法關(guān)鍵字诊沪,除了SQL標(biāo)準(zhǔn)要求支持的特例外。
第二個(gè)例子將保存城市和它們相關(guān)的地理位置:
CREATETABLE cities (
? ? name? ? ? ? ? ? varchar(80),
? ? location? ? ? ? point
);
類型point就是一種PostgreSQL特有數(shù)據(jù)類型的例子曾撤。
刪除一張表:
droptabletablename;-- 刪除數(shù)據(jù)表
七端姚、添加記錄
insert語(yǔ)句用于向表中添加行:
INSERTINTOweatherVALUES('San Francisco',46,50,0.25,'1994-11-27');
需要注意的是:那些不是簡(jiǎn)單數(shù)字的值,通常使用單引號(hào)包裹挤悉,date類型實(shí)際上對(duì)可接收的格式相當(dāng)靈活渐裸,不過(guò)我們應(yīng)該堅(jiān)持使用這種清晰的格式。
point類型要求一個(gè)座標(biāo)對(duì)作為輸入装悲,如下:
INSERTINTOcitiesVALUES('San Francisco','(-194.0, 53.0)');
另一種方式是列出所有的列昏鹃,一個(gè)可選的語(yǔ)法允許你明確地列出列:
INSERTINTOweather (city, temp_lo, temp_hi, prcp, date)VALUES('San Francisco',43,57,0.0,'1994-11-29');
你可以用另外一個(gè)順序列出列或者是忽略某些列, 比如說(shuō)诀诊,我們不知道降水量:
INSERTINTOweather (date, city, temp_hi, temp_lo)VALUES('1994-11-29','Hayward',54,37);
你還可以使用COPY從文本文件中裝載大量數(shù)據(jù)洞渤。這種方式通常更快,因?yàn)镃OPY命令就是為這類應(yīng)用優(yōu)化的属瓣, 只是比INSERT少一些靈活性载迄。比如:
COPY weatherFROM'/home/user/weather.txt';
八、查詢數(shù)據(jù)
?使用DISTINCT運(yùn)算符選擇不同的行
使用where進(jìn)行過(guò)濾
使用order by進(jìn)行排序
根據(jù)between,in,like選擇不同的行
使用group by進(jìn)行分組
使用hving子句為 組應(yīng)用條件
使用inner join抡蛙、left join护昧、full outer join、cross join進(jìn)行連表查詢
postgresql的select例子
SELECT語(yǔ)法:
SELECT column_1,
column_2,
...FROM table_name;
首先粗截,指定要在select子句中查詢數(shù)據(jù)表的列惋耙,多個(gè)列使用逗號(hào)分隔,如果要查詢所有列慈格,使用星號(hào)(*)作為簡(jiǎn)寫怠晴;其次,在From之后指出表名浴捆。
使用星號(hào)(*)不是一個(gè)好習(xí)慣:
?使用星號(hào)(*)不是一個(gè)好習(xí)慣
LIMIT:PostgreSQL 中l(wèi)imit是select語(yǔ)句可選的子句蒜田,它獲取查詢返回的所有行的子集。
LIMIT語(yǔ)法:
SELECT* FROM table_name LIMIT n;
如果要在返回行之前跳過(guò)m行选泻,請(qǐng)使用offset子句:
SELECT*FROMtable LIMIT n OFFSET m;
由于數(shù)據(jù)庫(kù)表行的順序是不可預(yù)測(cè)的冲粤,因此在使用limit子句的時(shí)候,應(yīng)始終使用該order by子句來(lái)控制行的順序页眯。
我們經(jīng)常使用LIMIT子句來(lái)獲取表中最高或最低項(xiàng)的數(shù)據(jù)梯捕,例如,要獲得最貴的前十名電影窝撵,您可以按照售價(jià)按降序排序傀顾,并使用LIMIT條款獲得前10部電影:
select*fromfilmorderbyrental_ratedesclimit10;
ORDER BY:如何對(duì)查詢返回的結(jié)果集進(jìn)行排序
當(dāng)你從表中查詢數(shù)據(jù),PostgreSQL按照他們插入的順序返回行碌奉,需要對(duì)結(jié)果集進(jìn)行排序短曾,需要使用select的order by子句
select column_1,column_2fromtable_nameorderbycolumn_1ASC,column_2DESC;
首先寒砖,在order by子句中指定要排序的列,如果基于多個(gè)列對(duì)結(jié)果集進(jìn)行排序嫉拐,使用逗號(hào)分隔哩都。
使用ASC表示升序,DESC按照降序婉徘,如果省略漠嵌,默認(rèn)按照ASC。
DISTINCT:刪除結(jié)果集中重復(fù)行的子句
使用distinct語(yǔ)句可以從結(jié)果集中刪除重復(fù)的行盖呼,該distinct子句為每組重復(fù)項(xiàng)保留一行
selectdistinctcolumn_1fromtable_name;-- column_1列中的值用于評(píng)估重復(fù)項(xiàng)
selectdistinctcolumn_1,column_2fromtable_name;-- column_1列和column_2兩者的結(jié)合用于評(píng)估重復(fù)項(xiàng)
九儒鹿、過(guò)濾數(shù)據(jù)
where:根據(jù)指定的條件過(guò)濾行
limit:從查詢結(jié)果集中獲取子集
fetch:限制返回的行數(shù)
in:選擇與值列表中的任何值匹配的數(shù)據(jù)。
between:選擇一系列值的數(shù)據(jù)
like:根據(jù)模式匹配過(guò)濾結(jié)果集
is null:檢查值是否為null
https://www.cnblogs.com/weihengblog/p/9307666.html