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表中那些年龄为1921的员工信息 SELECT * FROM EMPLOYEES WHERE AGE IN (19, 21);
  • BETWEEN条件
SELECT column1, column2, ..... columnN FROM table_name WHERE [search_condition] BETWEEN [condition]; #查询employees表中年龄在24~27之间(2427)的数据信息 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;
点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

2020年前端实用代码段,为你的工作保驾护航

有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )

oracle查询表数据并重新插入到本表

oracle查询表数据并重新插入到本表CreateTime2018年5月17日10:30:10Author:Marydon1.情景描述查询表中数据SELECTFROMat_aut