博客地址: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.左外連接
語法:
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.右外連接
語法:
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.全外連接
語法:
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;