PostgreSQL基礎知識之SQL操作符實踐指南_PostgreSQL

來源:腳本之家  責任編輯:小易  

一、創建測試表david=# create table emp (david(# id int,david(# name varchar);CREATE TABLEdavid=# 二、插入測試數據復制代碼david=# insert into emp values (1, 'david');INSERT 0 1david=# insert into emp values (1, 'david');INSERT 0 1david=# insert into emp values (1, 'david');INSERT 0 1david=# insert into emp values (2, 'sandy');INSERT 0 1david=# insert into emp values (2, 'sandy');INSERT 0 1david=# insert into emp values (3, 'renee'); INSERT 0 1david=# insert into emp values (4, 'jack'); INSERT 0 1david=# insert into emp values (5, 'rose'); INSERT 0 1david=# 復制代碼三、查詢初始化數據復制代碼david=# select ctid, * from emp;ctid | id | name -------+----+-------(0,1) | 1 | david(0,2) | 1 | david(0,3) | 1 | david(0,4) | 2 | sandy(0,5) | 2 | sandy(0,6) | 3 | renee(0,7) | 4 | jack(0,8) | 5 | rose(8 rows)david=# 復制代碼查詢重復數據數復制代碼david=# select distinct id, count(*) from emp group by id having count(*) > 1;id | count ----+-------1 | 32 | 2(2 rows)david=# 復制代碼查詢出 id 為1的記錄有3條,id 為2的記錄有2條。四、查詢要保留的數據以 min(ctid) 或 max(ctid) 為準。復制代碼david=# select ctid, * from emp where ctid in (select min(ctid) from emp group by id);ctid | id | name -------+----+-------(0,1) | 1 | david(0,4) | 2 | sandy(0,6) | 3 | renee(0,7) | 4 | jack(0,8) | 5 | rose(5 rows)david=# 復制代碼五、刪除重復數據david=# delete from emp where ctid not in (select min(ctid) from emp group by id);DELETE 3david=# 六、查看最后結果復制代碼david=# select ctid, * from emp;ctid | id | name -------+----+-------(0,1) | 1 | david(0,4) | 2 | sandy(0,6) | 3 | renee(0,7) | 4 | jack(0,8) | 5 | rose(5 rows)david=# 復制代碼說明:如果表中已經有標明唯一的序列主鍵值,可以把該值替換上述的ctid直接刪除。七、其他方法也可以使用以下SQL刪除重復數據。復制代碼david=# delete from emp adavid-# where a.ctid <>david-# (david(# select min(b.ctid) from emp bdavid(# where a.id = b.iddavid(# );DELETE 3david=# 復制代碼說明:在表數據量較大的情況下,這種刪除方法效率很高www.anxorj.tw防采集請勿采集本網。

前言

操作符是數據庫具有的運算特性,對文本字符和一些標簽字符的處理,使用操作符可以簡化SQL代碼,同時也可以節省開發時間和提高開發效率。

pg_class where relname='test_ctime'; relname | relfilenode | reltablespace ------------+-------------+--------------- test_ctime | 24650 | 0 (1 row) 備注:在 PostgreSQL 的

比較操作符

在pgAdminIII的Query窗口中執行SQL語句: create extension dblink; 它會創建dblink的擴展(默認是沒有的),然后就可以在數據庫的“拓展"中看到dblink了, 然后,就可以使用

在PostgreSQL中,所有的數據類型都可以使用比較操作符,比較操作符運算結果返回一個布爾值。即 TRUE 或者 FALSE。比較操作符為雙目操作符,因此被比較的兩個值的數據類型必須是相同的數據類型或者在彼此之間可以進行隱式類型轉換。在PostgreSQL中,提供的比較操作符有 > 、< 、<= 、>= 、= 、<> 或者 != 。在 PostgreSQL中,類似 a > b > c的操作是非法的,因為布爾值和數值之間無法做比較。

PostgreSQL是以加州大學伯克利分校計算機系開發的 POSTGRES,現在已經更名為PostgreSQL,版本 4.2為基礎的對象關系型數據庫管理系統(ORDBMS)。PostgreSQL支持大

示例:

教育部批準了69所高等學校開展現代遠程教育試點,對這69所高校培養的達到本、?飘厴I要求的網絡教育學生,由學校按照國家有關規定頒發高等教育學歷證書,學歷證書電子

hrdb=\# SELECT 2 > 1 AS result; result \-------- t(1 row)hrdb=\# SELECT 'a' = 'a' AS result; result \-------- t(1 row)hrdb=\# SELECT 'a' <> 'b' AS result; result \-------- t(1 row)hrdb=\# SELECT 'a' != 'b' AS result; result \-------- t(1 row)hrdb=\# SELECT '@' > '!' AS result; result \-------- t(1 row)hrdb=\# SELECT ascii('@'),ascii('!'); ascii | ascii \-------+------- 64 | 33(1 row)hrdb=\# SELECT '@' > 'a' AS result; result \-------- f(1 row)hrdb=\# SELECT ascii('@'),ascii('a'); ascii | ascii \-------+------- 64 | 97

sql基礎肯定得學了。根據要注入的網站類型學習該網站使用的編程語言,比如PHP、JS 知識,比如MySQL、Oracle、PostgreSQL等等。

在PostgreSQL中,除了比較的操作符以外,還有比較的謂詞。有如下。

1、通過命令行查詢 d 數據庫 —— 得到所有表的名字 d 表名 —— 得到表結構 2、通過SQL語句查詢 "select * from pg_tables" —— 得到當前db中所有表的信息

hrdb=> --BETWEEN AND謂詞,表示范圍。用法為某個指定的字符是否在此之間hrdb=> SELECT 5 BETWEEN 1 AND 6 AS result; result -------- t(1 row)hrdb=> --上述等價于hrdb=> SELECT 5 > 1 AND 5 < 6 AS result; result -------- t(1 row)hrdb=> --NOT BETWEEN AND ,表示不在某個范圍hrdb=> SELECT 5 NOT BETWEEN 7 AND 10 AS result; result -------- t(1 row)hrdb=> --BETWEEN SYMMETRIC AND,表示排序后比較hrdb=> --該謂詞的用法通常發生在BETWEEN AND之間出現倒序的情況hrdb=> --如使用 SELECT 5 BETWEEN 10 AND 10; 將會返回FALSEhrdb=> --因此要想返回TRUE需要按照如下使用hrdb=> SELECT 5 BETWEEN SYMMETRIC 10 AND 1 AS result; result -------- t(1 row)hrdb=> --NOT BETWEEN SYMMETRIC AND與上述 BETWEEN SYMMETRIC AND 相反hrdb=> --IS DISTINCT FROM 不等于,null 返回TRUEhrdb=> SELECT 'a' IS DISTINCT FROM 'b' AS result; result -------- t(1 row)hrdb=> SELECT null IS DISTINCT FROM 'b' AS result; result -------- t(1 row)hrdb=> --IS NOT DISTINCT FROM 等于,null返回FALSEhrdb=> SELECT 'a' IS NOT DISTINCT FROM 'b' AS result; result -------- f(1 row)hrdb=> SELECT null IS NOT DISTINCT FROM 'b' AS result; result -------- f(1 row)hrdb=> --IS NULL 判斷為空hrdb=> SELECT 'a' IS NULL AS result; result -------- f(1 row)hrdb=> SELECT '' IS NULL AS result; result -------- f(1 row)hrdb=> --IS NOT NULL 判斷不為空hrdb=> SELECT 'a' IS NOT NULL AS result; result -------- t(1 row)hrdb=> SELECT '' IS NOT NULL AS result; result -------- t(1 row)hrdb=> --ISNULL 判斷為空 (非標準語法)hrdb=> --NOTNULL 判斷不為空(非標準語法)hrdb=> SELECT 'a' ISNULL as result; result -------- f(1 row)hrdb=> SELECT '' NOTNULL AS result; result -------- t(1 row)hrdb=> --IS TRUE 判斷是否為TRUEhrdb=> SELECT 'A' > 'B' IS TRUE AS result; result -------- f(1 row)hrdb=> --IS NOT TRUE 判斷是否為FALSE hrdb=> SELECT 'A' > 'B' IS NOT TRUE AS result; result -------- t(1 row)hrdb=> --IS FALSE 判斷是否為 FALSEhrdb=> SELECT 'A' > 'B' IS FALSE AS result; result -------- t(1 row)hrdb=> --IS NOT FALSE 判斷是否不為FALSEhrdb=> SELECT 'A' > 'B' IS NOT FALSE AS result; result -------- f(1 row)--IS UNKNOWN 未知hrdb=> SELECT NULL IS UNKNOWN AS result; result -------- t--IS NOT UNKNOWN SELECT 'a' > 'b' IS NOT UNKNOWN AS result;

它的主要用戶群體和Oracle目前沖突不大,而目前市場上MySQL的高級人才奇缺,因此,許多人認為MySQL的前途還是很光明的;PostgreSQL也是一款很不錯的開源數據庫系統,但

溫馨提示

使用下面的命令即可查詢安裝的版本:psql --version PostgreSQL是以加州大學伯克利分校計算機系開發的 POSTGRES,現在已經更名為PostgreSQL,版本 4.2為基礎的對象

字符之間的比較通常使用ascii值比較大小。同時,UNKNOWN 和 NOT UNKNOWN 通常和IS NULL 和IS NOT NULL類似。在PostgreSQL中,還有比較函數, num_nonnulls(VARIADIC "any"),表示返回一個非空輸入字符的總個數。num_nulls(VARIADIC "any"),表示返回一個null值的總個數。如下:

Select * from (Select * from 表名) 括號內為第一個查詢。

hrdb=> SELECT num_nonnulls(1,null,2) AS total_nonnulls; total_nonnulls ---------------- 2(1 row)hrdb=> SELECT num_nonnulls('PostgreSQL','MySQL','','null',null) AS total_nonnulls; total_nonnulls ---------------- 4(1 row)hrdb=> SELECT num_nulls(1,null,2) AS total_nulls; total_nulls ------------- 1(1 row)hrdb=> SELECT num_nulls('PostgreSQL','MySQL','','null',null) AS total_nulls; total_nulls ------------- 1

特別針對多CPU、云、網絡應用與高并發進行了優化。 PostgreSQL PostgreSQL標榜自己是世界上最先進的開源數據庫。PostgreSQL的一些粉絲說它能與Oracle相媲美,而且

邏輯操作符

創建和編輯PostgreSQL數據庫對象。EMS PostgreSQL Manager允許你運行SQL腳本語言,可視化數據庫設計以及管理用戶及其權限。使用EMS PostgreSQL Manager你將能

在PostgreSQL中,邏輯操作符有 AND、 OR 和 NOT,邏輯操作符返回的結果通常為一個布爾值或者NULL,即 TRUE、FALSE或者NULL。其中NULL表示運算結果未知。同時對于邏輯操作符都有優先級順序,AND 、OR 和 NOT的優先級順序為: NOT > AND >OR。

在項目中,本人就遇到過這樣的情況,一番摸索過后發現終于發現其中的奧秘,首先,Postgresql 安裝時,會往用戶組中添加一個postgresql用戶,而這個用戶就是阻止你密碼驗證不能

對于邏輯操作符的之間的運算結果參考下表:

介紹:PostgreSQL內部的概覽,可以結合上面的pg代碼結構來閱讀 《PostgreSQL 中的 Json —從使用到源碼》 介紹:PostgreSQL 中的 Json —從使用到源碼 《PostgreSQL鎖

示例:

教育部批準了69所高等學校開展現代遠程教育試點,對這69所高校培養的達到本、?飘厴I要求的網絡教育學生,由學校按照國家有關規定頒發高等教育學歷證書,學歷證書電子

hrdb=> --2 > 1 為 TRUE, 'a' < 'b' 為TRUE,那么 AND 返回TRUEhrdb=> SELECT 2 > 1 AND 'a' < 'b' AS result; result -------- t(1 row)hrdb=> --1 < 2 為 TRUE, 2 > 1為FALSE,那么 AND 的結果為 FALSEhrdb=> SELECT 1 < 2 AND 2 > 1 AS result; result -------- t(1 row)hrdb=> -- NULL 和 2 > 1 為TRUE做比較,那么 AND 返回NULLhrdb=> SELECT NULL AND 2 > 1 AS result; result -------- (1 row)hrdb=> --2 < 1 為 FALSE,'b' < 'a' 為FALSE,那么 AND 返回 FALSE hrdb=> SELECT 2 < 1 AND 'b' < 'a' AS result; result -------- f(1 row)hrdb=> -- NULL 和 1 > 2 為FALSE做比較,那么 AND 返回FALSEhrdb=> SELECT NULL AND 1 > 2 AS result; result -------- f(1 row)hrdb=> --NULL 和 NULL AND 的結果為 NULL hrdb=> SELECT NULL AND NULL AS result; result -------- (1 row)hrdb=> --2 > 1 為 TRUE, 'a' < 'b' 為TRUE,那么 OR 返回TRUEhrdb=> SELECT 2 > 1 AND 'a' < 'b' AS result; result -------- t(1 row)hrdb=> --1 < 2 為 TRUE, 2 > 1為FALSE,那么 OR 的結果為 TRUEhrdb=> SELECT 1 < 2 AND 2 > 1 AS result; result -------- t(1 row)hrdb=> hrdb=> -- NULL 和 2 > 1 為TRUE做比較,那么 OR 返回 TRUEhrdb=> SELECT NULL AND 2 > 1 AS result; result -------- (1 row)hrdb=> --2 < 1 為 FALSE,'b' < 'a' 為FALSE,那么 OR 返回 FALSEhrdb=> SELECT 2 < 1 AND 'b' < 'a' AS result; result -------- f(1 row)hrdb=> -- NULL 和 1 > 2 為FALSE做比較,那么 OR 返回 NULLhrdb=> SELECT NULL AND 1 > 2 AS result; result -------- f(1 row)hrdb=> --NULL 和 NULL 那么 OR 的結果為 NULLhrdb=> SELECT NULL AND NULL AS result; result --------

主鍵是表中的一個或多個字段,它的值用于惟一地標識表中的某一條記錄.;使用索引可快速訪問數據庫表中的特定信息。 索引是對數據庫表中一列或多列的值進行排序的一種

關于 NOT 結果,在這里不做示例,有興趣的可以下去自行驗證。

算數操作符

PostgreSQL中的算數操作符號有 +(加法) 、-(減法) 、* (乘法)、/(除法) 、%(取余)、^(冪運算符)、|/(平方根)、||/(立方根)、!(階乘[后綴])、!!(階乘[前綴])、@(絕對值)、&(按位與)、|(按位或)、#(按位異或)、~(按位取反)、<<(左移)、>>(右移)操作符,這些操作符簡化了數學運算方式。

示例:

加減乘除示例在此略。此示例重點介紹一下后面的操作符號。

hrdb=> --%取余操作符,5 除以 3 ,返回余數 2hrdb=> SELECT 5 % 3 AS result; result -------- 2(1 row)hrdb=> --^求冪操作,3 的 4次方為81hrdb=> SELECT 3^4 AS result; result -------- 81(1 row)hrdb=> --|/平方根,25的平方根為 5hrdb=> SELECT |/ 25 AS result; result -------- 5(1 row)hrdb=> --||/立方根,27 的立方根為 3hrdb=> SELECT ||/ 27 AS result; result -------------------- 3.0000000000000004(1 row)hrdb=> --!階乘后綴,5的階乘為 120hrdb=> SELECT 5 ! AS result; result -------- 120(1 row)hrdb=> --!!階乘前綴,5的階乘為 120hrdb=> SELECT !! 5 AS result; result -------- 120(1 row)hrdb=> [email protected]絕對值,-1的絕對值為 1hrdb=> SELECT @ -1 AS result; result -------- 1(1 row)hrdb=> --& 按位與,5 & 3的值為 1hrdb=> --計算過程hrdb=> --5 用二進制表示 0000 0101hrdb=> --3 用二進制表示 0000 0011hrdb=> --按位與操作,同時為1則為1,否則為0hrdb=> --按位與操作,同時為1則為1,否則為0hrdb=> -- 5 & 3 0000 0001 再轉換為10進制為 1hrdb=> SELECT 5 & 3 AS result; result -------- 1(1 row)hrdb=> --| 按位或,6 | 3 的值為 7hrdb=> --計算過程hrdb=> --6 用二進制表示 0000 0110hrdb=> --3 用二進制表示 0000 0011hrdb=> --按位或操作,只要有一個為1則為1hrdb=> --6 | 3 0000 0111 轉換為10進制為7hrdb=> SELECT 6 | 3 AS result; result -------- 7(1 row)hrdb=> --# 按位異或,8 # 5 的值為13hrdb=> --計算過程hrdb=> --8 用二進制表示 0000 1000hrdb=> --5 用二進制表示 0000 0101hrdb=> --按位異或操作,不同為1,相同為0hrdb=> --8 # 5 0000 1101 轉換為10進制為 13hrdb=> SELECT 8 # 5 AS result; result -------- 13(1 row)hrdb=> --~按位取反,7 按位取反的值為 16hrdb=> --計算過程 hrdb=> --7 用二進制表示 0000 0111hrdb=> --按位取反,最高位為0 取 1表示符號,其余按位取反hrdb=> --~7 1000 1000 轉換為10進制為-8hrdb=> SELECT ~7 AS result; result -------- -8(1 row)hrdb=> --<<左移,4 左移 2位的值為:hrdb=> --計算過程hrdb=> --4用二進制表示 0000 0100hrdb=> --4左移兩位 000001 0000 位數不足用 0 補位hrdb=> --轉換為10進制后為 16。因此左移類似于平方操作,但是效率比平方高hrdb=> SELECT 4 << 2 AS result; result -------- 16(1 row)hrdb=> -->>右移,8 右移 3 位的值為1hrdb=> --8 用二進制表示 0000 1000hrdb=> --8 >> 3 , 0 0001000 多出的0去掉轉換為10進制,為1hrdb=> SELECT 8 >> 3 AS result; result -------- 1(1 row)

總結

在PostgreSQL 中,除了以上三種操作符為關系型數據庫中常用的操作符外,還有其它的操作符為PostgreSQL中獨有的操作符,比如文本查找操作符,@@(tsvector類型與tsquery類型字符是否匹配),@>(tsquery類型之間是否包含),<@(tsquery類型之間是否被包含)操作符。網絡地址操作符如<<=(表示包含于或者等于),>>=(包含或者等于)。幾何操作符如@[email protected](表示圖形的周長或者長度),@@(表示圓心),<->(表示圓心距),&&(表示圖形是否重疊)等,感興趣的同學下去自行驗證。

到此這篇關于PostgreSQL基礎知識之SQL操作符實踐的文章就介紹到這了,更多相關PostgreSQL之SQL操作符實踐內容請搜索真格學網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持真格學網!

你系統中應該沒有安裝postgresql數據庫(它不是系統自帶的)內容來自www.anxorj.tw請勿采集。


  • 本文相關:
  • postgresql教程(七):函數和操作符詳解(3)
  • postgresql教程(五):函數和操作符詳解(1)
  • postgresql教程(六):函數和操作符詳解(2)
  • postgresql主從異步流復制方案的深入探究
  • postgresql中關閉死鎖進程的方法
  • postgresql 安裝和簡單使用
  • postgresql教程(十八):客戶端命令(2)
  • postgresql error: invalid escape string 解決辦法
  • linux centos 7源碼編譯安裝postgresql9.5
  • postgresql教程(十九):sql語言函數
  • postgresql實現一個通用標簽系統
  • windows上postgresql安裝配置教程
  • sql server數據遷移至postgresql出錯的解釋以及解決方案
  • postgresql
  • 在PostgreSQL中如何刪除重復記錄
  • centos7怎么打開postgresql
  • 如何啟動postgresql windows
  • 如何找到PostgreSQL數據庫上次更新的時間
  • CI框架下執行postgresql dblink函數沒反應,也不報錯。
  • greenplum version 4.3使用的postgresql是哪個版本
  • 哪里可以學習postgresql,最好是網絡授課,網上好像很少有相關...
  • 零基礎學習sql注入 需要學習哪些基礎知識
  • 如何查PostgreSQL 數據庫中所有的表
  • SQL Server 與 PostgreSQL 區別
  • linux 如何查詢PostgreSQL的版本
  • postgresql 如何將查詢結果作為另一個表的名字來使用
  • MySQL與PostgreSQL比較 哪個數據庫更好
  • EMS SQL Manager 破解版 for PostgreSQL好不好
  • 如何實現Postgresql數據庫的重裝與postgres密碼重置
  • PostgreSQL 有哪些經典入門書籍
  • 為什么選擇PostgreSQL而不是MySQL
  • Postgresql如何引用具有多個唯一主鍵的表
  • 如何列出所有PostgreSQL數據庫和表
  • 網站首頁網頁制作腳本下載服務器操作系統網站運營平面設計媒體動畫電腦基礎硬件教程網絡安全mssqlmysqlmariadboracledb2mssql2008mssql2005sqlitepostgresqlmongodbredisaccess數據庫文摘數據庫其它首頁postgresql教程(七):函數和操作符詳解(3)postgresql教程(五):函數和操作符詳解(1)postgresql教程(六):函數和操作符詳解(2)postgresql主從異步流復制方案的深入探究postgresql中關閉死鎖進程的方法postgresql 安裝和簡單使用postgresql教程(十八):客戶端命令(2)postgresql error: invalid escape string 解決辦法linux centos 7源碼編譯安裝postgresql9.5postgresql教程(十九):sql語言函數postgresql實現一個通用標簽系統windows上postgresql安裝配置教程sql server數據遷移至postgresql出錯的解釋以及解決方案postgresql 角色與用戶管理介紹windows下postgresql數據庫的下載windows下postgresql安裝圖解15個postgresql數據庫實用命令分postgresql中的oid和xid 說明postgresql alter語句常用操作小windows postgresql 安裝圖文教程postgresql 安裝和簡單使用postgresql 創建表分區postgresql新手入門教程解決postgresql服務啟動后占用100% cpu卡postgresql教程(十五):系統表詳解初識postgresql存儲過程postgresql 如何獲取當前日期時間及注意事postgresql教程(十三):數據庫管理詳解postgresql管理工具phppgadmin入門指南postgresql 角色與用戶管理介紹linux centos 7源碼編譯安裝postgresql9.postgresql圖(graph)的遞歸查詢實例postgresql教程(四):數據類型詳解
    免責聲明 - 關于我們 - 聯系我們 - 廣告聯系 - 友情鏈接 - 幫助中心 - 頻道導航
    Copyright © 2017 www.anxorj.tw All Rights Reserved
    陕西快乐10分下载