本文主要介绍下 postgreSQL
的一些简单的语法。
假设目前有表 cd.facilities
、cd.members
、cd.bookings
,具体表内信息,可进入任务页面,通过 SELECT * FROM 表名;
查询表内所有内容,此处不一一赘述。
-
SELECT name,membercost FROM cd.facilities;
:从表cd.facilities
中只列出name
、memberconst
字段信息。 -
SELECT * FROM cd.facilities WHERE membercost > 0;
: 使用where
条件筛选,筛选出表中membercost > 0
的数据。 -
SELECT facid,name,member,monthlymaintaince FROM cd.facilities WHERE membercost > 0 AND membercost < monthlymaintaince / 50;
:使用 AND 连接筛选条件,满足membercost > 0
并且membercost < monthlymaintaince / 50
。 -
SELECT facid,name,membercost,monthlymaintenance / 50 as avg FROM cd.facilities WHERE membercost > 0 AND membercost < monthlymaintenance / 50;
:以上表的另一种写法,使用AS
,此时筛选出来的数据不再包含monthlymaintance
字段,以avg
取代,且值为monthlymaintance / 50
。 -
SELECT * FROM cd.facilities WHERE name LIKE '%Tennis%';
:使用LIKE
查询表中name
包含Tennis
的数据,双%
表示只要包含Tennis
即可,%Tennis
表示以此结尾,反之以此开头。 -
SELECT * FROM cd.facilities WHERE facid = 1 OR facid = 5;
:使用OR
实现或逻辑。筛选条件还可写为:WHERE facid = (1,5)
。此语句的意思是获取到 facid = 1 或者 = 5 的数据。可使用NOT IN
来获取非 1 非 5 的数据。 -
SELECT name, case WHEN (monthlymaintenance > 100) THEN 'expensive' ELSE 'cheap' END AS cost from cd.facilities;
:当 monthlymaintenance > 100 时返回expensive
,小于 100 时返回 'cheap',将返回值传入 cost -
SELECT memid,surname,firstname,joindate FROM cd.members WHERE joindate >= '2012-09-01';
:日期条件筛选,筛选的日期格式为xxxx-xx-xx
。 -
SELECT distinct surname FROM cd.members order by surname limit 10;
:关键字distinct
用来实现去重,limit
实现条数限制。 -
SELECT surname FROM cd.members union SELECT name FROM cd.facilities;
:使用关键字union
获取cd.members
中的 surname 数据 和 cd.facilities 中的所有 name 合并组成的表。 -
SELECT max(joindate) as latest from cd.members;
: max(xxx) 表示取最大值 -
select firstname, surname, joindate from cd.members where joindate = (select max(joindate) from cd.members);
:筛选出最后存入表中的用户 firstname、surname 、joindate。语句中的 where 条件使用 select 语句实现。
大部分内容主要来自PostgreSQL Exercises。
网友评论