PostgreSQL 从入门到出门 第 9 篇 简单查询

版权声明:本站不全为博主原创文章,欢迎转载,转载记得标明出处。^-^ https://blog.csdn.net/horses/article/details/89452947

文章目录

我们对于数据库中数据的常见操作,简单来说可以称为增删改查(CRUD,Create、Retrieve、Update、Delete)。其中,使用最多,也最复杂的功能当属数据查询。根据 SQL 标准,查询语句使用SELECT关键字表示。

本文以及后续示例使用的表和数据来源于《SQL 从入门到出门 示例数据库》。

如果想要了解 SQL:2016(ISO/IEC 9075:2016)标准,以及六种主流数据库中的实现及差异,包括:Oracle、MySQL、Microsoft SQL Server、PostgreSQL、Db2、SQLite,可以参考系列文章《SQL 从入门到出门》。

我们先从简单查询开始,来看一个示例。

SELECT first_name,
       last_name
  FROM employees;

基本上不用解释,我们都能知道以上查询语句将会返回员工表(employees)中的名(first_name)和姓(last_name )。

SELECT后面是要返回的信息,比如字段名或表达式,多个值使用逗号分隔;FROM表示要查询哪个表;分号表示查询语句结束。

SQL 语句不分区大小写,但是通常将关键字(SELECTFROM等)进行大写,其他内容使用小写,便于阅读。

如果想要查询某个表的全部字段,可以一一列出字段名称,也可以使用星号(*)表示:

SELECT *
  FROM employees;

通常,我们只在快速查询时使用星号;在实际项目中,应该避免使用SELECT *,因为应用程序可能并不需要全部的字段,而且表结构可能会发生改变,明确指定的字段名称可以减少不确定性。

有的时候,我们可能会遇到这样的查询语句:

SELECT 2 + 3;

也就是省略了FROM子句的查询,这是 PostgreSQL 的扩展语法。这种查询通常用于返回系统信息,或者当作计算器使用。需要注意的是,并非所有的关系数据库都支持这种写法,因此它并不具有可移植性。

现实生活中,存在许多名字相同的人。在执行数据库查询时,也可能会返回重复的值,例如,以下语句查询员工表中的部门编号:

SELECT department_id 
  FROM employees;
 department_id 
---------------
            90
            90
            90
           100
           100
           100
           100
           100
           100
           ...
(107 rows)

由于一个部门可以存在多个员工,查询结果中包含了大量重复的数据。如果想要知道员工表中存在多少个不同的部门编号,需要针对以上结果进行去重操作。SQL 提供了消除查询结果重复值的DISTINCT关键字。例如:

SELECT DISTINCT department_id 
  FROM employees;
 department_id 
---------------
            70
            80
            20
            10
              
            90
           100
           110
            30
            50
            40
            60
(12 rows)

查询结果只有不重复的 12 条数据。DISTINCT也可以针对多个字段进行去重操作,例如:

SELECT DISTINCT first_name,
       last_name
  FROM employees;

表示查询姓和名组合不重复的数据。

SELECT ... FROM返回表中的全部数据(DISTINCT基于这些数据再进行处理),如果想要返回满足特定条件的结果,比如某个部门的员工,需要使用 SQL 中的条件过滤,即WHERE子句。当然,这是下一篇的主题。

人生本来短暂,你又何必匆匆!点个赞再走吧!

猜你喜欢

转载自blog.csdn.net/horses/article/details/89452947
今日推荐