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;
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,491评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,856评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,745评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,196评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,073评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,112评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,531评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,215评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,485评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,578评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,356评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,215评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,583评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,898评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,174评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,497评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,697评论 2 335

推荐阅读更多精彩内容

  • SQL与MySQL简介 数据库基础 从SQL的角度来看,数据库就是一个以某种有组织的方式存储的数据集合。我们可以采...
    heming阅读 3,035评论 1 8
  • 前言 读《sql必知必会 第四版》随手做的笔记,写的比较乱,可读性并不好,读的是中文版,翻译过来的感觉有点怪怪的。...
    _老徐_阅读 615评论 0 0
  • SQL 语法大全 标签(空格分隔): SQL DB2 SQL语法大全 SQL SELECT SQL SELECT ...
    lumicinta阅读 12,491评论 3 196
  • 1. 简介 1.1 什么是 MyBatis ? MyBatis 是支持定制化 SQL、存储过程以及高级映射的优秀的...
    笨鸟慢飞阅读 5,398评论 0 4
  • 合伙创业,分的不是纸面上的股权比例,而是能力、利益、人性! 身边接触过很多中小企业,失败的,不夸张地说有60%都是...
    江湾三叔读法阅读 4,197评论 0 4