PostgreSQL 简单查询

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

单表查询

简单查询开始,来看一个示例

select first_name,last_name
from employees;

有SQL基础的都能知道以上查询语句将会返回员工表(employees)中的名字(first_name)和姓氏(last_name)。SELECT之后是要返回的信息,比如字段名或表达式,多个值使用逗号分隔;FROM表示要查询哪个表;分号表示查询语句结束。SQL语句不分区大小写,但是通常将关键字(SELECT、FROM等)进行大写,其他内容使用小写,便于阅读。下面的查询通过一个表达式计算员工的年度薪水:

select first_name,last_name,salary * 12 as annual_income
from employees;

 其中,AS关键字用于为查询的结果指定一个别名,可以省略。如果想要查询某个表的全部字段,可以列出所有的字段名称,也可以使用星号(*)表示

在实际项目中,应该避免使用SELECT *,尽量按需查询,避免扫描全部字段浪费资源开销,而且表结构可能会发生改变,明确指定的字段名称可以减少不确定性。

无表查询

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

select 2*2*2 as three2

也就是省略了FROM子句的查询,这是PostgreSQL的扩展语法。这种查询通常用于返回系统信息,或者当作计算器使用。

消除重复结果

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

select department_id
from employees;

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

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

select distinct first_name,last_name
from employees;

使用注释

在PostgreSQL中,以两个连字符(--)开始,直到这一行结束的内容表示注释:

select distinct first_name,last_name --员工信息进行去重
from employees;

注释的内容会在语法分析之前替换成空格,因此不会被服务器执行。另外,PostgreSQL还支持C语言风格的注释方法(/* ... */)。例如:

select distinct first_name,last_name
/*员工信息进行去重
   SQL 多行注释啊 */
from employees;
posted @ 2023-07-08 16:39  晓枫的春天  阅读(201)  评论(0编辑  收藏  举报