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;
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;