PostgreSQL語法、連接

博客地址:https://ask.hellobi.com/blog/zhiji 歡迎大家來交流學習。

本文總結與:PostgreSQL教程

1.語法

1.插入數據(INSERT語句)
在PostgreSQL中,INSERT
查詢用于在表中插入新行。 可以一次插入單行或多行到表中。

  • 語法:
INSERT INTO TABLE_NAME (column1, column2, column3,...columnN)  
VALUES (value1, value2, value3,...valueN);


INSERT INTO EMPLOYEES(  ID, NAME, AGE, ADDRESS, SALARY)  
VALUES
(1, 'xsl', 23, '上海市浦東', 11000.00 ), 
(2, 'xlm', 22, '上海市閔行', 8000.00 ), 

注意:column1, column2, column3,...columnN是要插入數據的表中的列的名稱。

2.查詢數據(SELECT語句)
在PostgreSQL中,SELECT語句用于從數據庫表中檢索數據。 數據以結果表格的形式返回。 這些結果表稱為結果集。

  • 語法:
SELECT "column1", "column2".."column" FROM "table_name";


SELECT id,name FROM EMPLOYEES;

這里,column1,column2,.. columnN指定檢索哪些數據的列。 如果要從表中檢索所有字段,則必須使用以下語法:

SELECT * FROM "table_name";

3.更新數據(UPDATE語句)
在PostgreSQL中,UPDATE語句用于修改表中現有的記錄。 要更新所選行,您必須使用WHERE子句,否則將更新所有行。

  • 語法:
UPDATE table_name  
SET column1 = value1, column2 = value2...., columnN = valueN  
WHERE [condition];


UPDATE employ  
SET  age = 23,salary=11000  
WHERE id=1;

4.刪除數據(DELETE語句)
DELETE語句用于從表中刪除現有記錄。 “WHERE”子句用于指定刪除所選記錄的條件,如是不指定條件則將刪除所有記錄。

  • 語法:
DELETE FROM table_name  
WHERE [condition];


DELETE FROM EMPLOYEES  
WHERE ID = 1;


5.數據排序(ORDER BY子句)
PostgreSQL ORDER BY子句用于按升序或降序對數據進行排序。數據在一列或多列的基礎上進行排序。

  • 語法:
SELECT column-list  
FROM table_name  
[WHERE condition]  
[ORDER BY column1, column2, .. columnN] [ASC | DESC];

參數說明:

  • column_list:它指定要檢索的列或計算。
  • table_name:它指定要從中檢索記錄的表。FROM子句中必須至少有一個表。
  • WHERE conditions:可選。 它規定必須滿足條件才能檢索記錄。
  • ASC:也是可選的。它通過表達式按升序排序結果集(默認,如果沒有修飾符是提供者)。
  • DESC:也是可選的。 它通過表達式按順序對結果集進行排序。
#升序排序 - ORDER BY [field] ASC
SELECT *   
FROM EMPLOYEES  
ORDER BY AGE ASC;


#降序排序 - ORDER BY [field] DESC
SELECT *   
FROM EMPLOYEES 
ORDER BY name DESC;

6.分組(GROUP BY子句)
PostgreSQL GROUP BY子句用于將具有相同數據的表中的這些行分組在一起。 它與SELECT語句一起使用。
GROUP BY子句通過多個記錄收集數據,并將結果分組到一個或多個列。 它也用于減少輸出中的冗余。

  • 語法:
SELECT column-list  
FROM table_name  
WHERE [conditions ]  
GROUP BY column1, column2....columnN  
ORDER BY column1, column2....columnN


SELECT NAME, SUM(SALARY)   
FROM EMPLOYEES   
GROUP BY NAME;

注意:在GROUP BY多個列的情況下,您使用的任何列進行分組時,要確保這些列應在列表中可用。

7.Having子句
在PostgreSQL中,HAVING子句與GROUP BY子句組合使用,用于選擇函數結果滿足某些條件的特定行。

  • 語法:
SELECT column1, column2  
FROM table1, table2  
WHERE [ conditions ]  
GROUP BY column1, column2  
HAVING [ conditions ]  
ORDER BY column1, column2


#顯示名稱(name)數量小于2的記錄
SELECT NAME   
FROM EMPLOYEES  
GROUP BY NAME HAVING COUNT (NAME) < 2;

8.條件查詢
PostgreSQL條件的列表:

  • AND 條件
  • OR 條件
  • AND & OR 條件
  • NOT 條件
  • LIKE 條件
  • IN 條件
  • NOT IN 條件
  • BETWEEN 條件

語法:

  • and 條件
SELECT column1, column2, ..... columnN    
FROM table_name    
WHERE [search_condition]    
AND [search_condition];

SELECT *  
FROM EMPLOYEES  
WHERE SALARY > 120000  
AND ID <= 4;
  • or 條件
SELECT column1, column2, ..... columnN    
FROM table_name    
WHERE [search_condition]    
OR [search_condition];

SELECT *  
FROM  EMPLOYEES 
WHERE NAME = 'Minsu'  
OR ADDRESS = 'Noida';
  • and & or 條件
SELECT column1, column2, ..... columnN    
FROM table_name    
WHERE [search_condition]  AND [search_condition]     
OR [search_condition];

SELECT *  
FROM EMPLOYEES  
WHERE (NAME = 'Minsu' AND ADDRESS = 'Delhi')  
OR (ID>= 8);
  • not 條件
SELECT column1, column2, ..... columnN    
FROM table_name    
WHERE [search_condition] NOT [condition];

SELECT *  
FROM EMPLOYEES  
WHERE address IS NOT NULL ;

SELECT *  
FROM EMPLOYEES  
WHERE age NOT IN(21,24) ;
  • LIKE 條件
SELECT column1, column2, ..... columnN    
FROM table_name    
WHERE [search_condition] LIKE [condition];

#查詢名字以Ma開頭的數據記錄
SELECT *   
FROM EMPLOYEES   
WHERE NAME LIKE 'Ma%';

#查詢地址中含有大道的數據記錄
SELECT *   
FROM EMPLOYEES   
WHERE address LIKE '%大道%';
  • IN條件
SELECT column1, column2, ..... columnN    
FROM table_name    
WHERE [search_condition] IN [condition];

#查詢employee表中那些年齡為19,21的員工信息
SELECT *  
FROM EMPLOYEES  
WHERE AGE IN (19, 21);
  • BETWEEN條件
SELECT column1, column2, ..... columnN    
FROM table_name    
WHERE [search_condition] BETWEEN [condition];

#查詢employees表中年齡在24~27之間(含24,27)的數據信息
SELECT *   
FROM EMPLOYEES   
WHERE AGE BETWEEN 24 AND 27;

2.連接

在PostgreSQL中,有以下類型的連接:

  • 內連接(INNER JOIN)
  • 左外連接(LEFT OUTER JOIN)
  • 右外連接(RIGHT OUTER JOIN)
  • 全連接(FULL OUTER JOIN)
  • 跨連接(CROSS JOIN)

1.INNER JOIN

語法:

SELECT table1.columns, table2.columns  
FROM table1  
INNER JOIN table2  
ON table1.common_filed = table2.common_field;


SELECT EMPLOYEES.ID, EMPLOYEES.NAME, DEPARTMENT.DEPT  
FROM EMPLOYEES   
INNER JOIN DEPARTMENT  
ON EMPLOYEES.ID = DEPARTMENT.ID;

2.左外連接

左外連接返回從“ON”條件中指定的左側表中的所有行,只返回滿足條件的另一個表中的行。

語法:

SELECT table1.columns, table2.columns  
FROM table1  
LEFT OUTER JOIN table2  
ON table1.common_filed = table2.common_field;


SELECT EMPLOYEES.ID, EMPLOYEES.NAME, DEPARTMENT.DEPT  
FROM EMPLOYEES 
LEFT OUTER JOIN DEPARTMENT  
ON EMPLOYEES.ID = DEPARTMENT.ID;

3.右外連接

右外連接返回從“ON”條件中指定的右側表中的所有行,只返回滿足條件的另一個表中的行。

語法:

SELECT table1.columns, table2.columns  
FROM table1  
RIGHT OUTER JOIN table2  
ON table1.common_filed = table2.common_field;


SELECT EMPLOYEES.ID, EMPLOYEES.NAME, DEPARTMENT.DEPT  
FROM EMPLOYEES 
RIGHT OUTER JOIN DEPARTMENT  
ON EMPLOYEES.ID = DEPARTMENT.ID;

4.全外連接

FULL外連接從LEFT手表和RIGHT表中返回所有行。 它將NULL置于不滿足連接條件的位置。

語法:

SELECT table1.columns, table2.columns  
FROM table1  
FULL OUTER JOIN table2  
ON table1.common_filed = table2.common_field;

SELECT EMPLOYEES.ID, EMPLOYEES.NAME, DEPARTMENT.DEPT  
FROM EMPLOYEES 
FULL OUTER JOIN DEPARTMENT  
ON EMPLOYEES.ID = DEPARTMENT.ID;

5.跨連接(CROSS JOIN)
PostgreSQL跨連接(CROSS JOIN)將第一個表的每一行與第二個表的每一行相匹配。 它也被稱為笛卡兒積分。 如果table1具有“x”列,而table2具有“y”列,則所得到的表將具有(x + y)列。

語法:

SELECT coloums   
FROM table1   
CROSS JOIN table2

SELECT NAME, DEPT 
FROM EMPLOYEES  
CROSS JOIN DEPARTMENT;
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • SQL與MySQL簡介 數據庫基礎 從SQL的角度來看,數據庫就是一個以某種有組織的方式存儲的數據集合。我們可以采...
    heming閱讀 3,169評論 1 8
  • 前言 讀《sql必知必會 第四版》隨手做的筆記,寫的比較亂,可讀性并不好,讀的是中文版,翻譯過來的感覺有點怪怪的。...
    _老徐_閱讀 651評論 0 0
  • SQL 語法大全 標簽(空格分隔): SQL DB2 SQL語法大全 SQL SELECT SQL SELECT ...
    lumicinta閱讀 13,018評論 3 196
  • 1. 簡介 1.1 什么是 MyBatis ? MyBatis 是支持定制化 SQL、存儲過程以及高級映射的優秀的...
    笨鳥慢飛閱讀 5,671評論 0 4
  • 合伙創業,分的不是紙面上的股權比例,而是能力、利益、人性! 身邊接觸過很多中小企業,失敗的,不夸張地說有60%都是...
    江灣三叔讀法閱讀 4,252評論 0 4