利用SELECT检索数据

利用SELECT检索数据

工作一年多,由于一直使用的MongoDB,把在学校学的关系型数据库相关只是已经忘的差不多了,最近换了工作,使用的是Oracle,因此,趁着闲暇时间把以前的知识捡起来。之前学过,因此这里作为个人复习过程中的点滴记录,方便自己记忆。

GROUP BY 子句

GROUP BY 是统计数据时经常用的语句,使用该子句时,有以下几点需要注意:

  • 当查询中存在GROUP BY子句时,SELECT 列表中只能存在分组函数,或出现GRIUP BY 子句中的字段。
  • GROUP BY子句中不允许出现在WHERE 条件中,但允许出现其后,也就是可以和WHERE条件并列使用。

HAVING 子句

HAVING子句通常和GROUP BY子句一起使用,限制搜索条件。它和WHERE子句不一样,HAVING子句与组有关,而不是与单个的值有关。在GROUP BY子句中,它会作用于GROUP BY创建的组。
HAVING 的使用方式如下:
eg: 计算出不同类型产品的平均价格,并列出平均价格高于2000的数据,脚本如下:

SELECT category , AVG(productprice) 平均价格 FROM productinfo GROUP BY categpry HAVING AVG (productprice) > 2000;

子查询

如果子查询返回的值是多行值,那么需要用到IN关键字,此时IN的用法和前面介绍的方法一致。除此之外,也可以使用量化比较关键字SOME,ANY,ALL,这些需要配合<、 <=、 =、 > 、>= 使用.它们的含义如下:

  • ANY: 表示满足子查询结果的任何一个.和< , <=搭配,表示小于等于列表中的最大值; 而和> , >= 配合时表示大于等于列表中的最小值.
  • SOME: 可以认为和ANY 含义相同
  • ALL: 表示满足子查询结果的所有结果.和 <, <= 搭配,表示小于等于列表中的最小值;而和 > , >= 配合时,表示大于等于列表中的最大值.

IN示例:
查询产品表中产品类型为”电视”和”MP3″的数据.脚本如下:
SELECT productname,productprice FROM productinfo WHERE CATEGORY IN (SELECT caregory FROM catrgoryinfo WHERE categoryname = '电视' OR categoryname = 'MP3');

ANY示例:
从产品表PRODUCTINFO中查询出价格低于指定价格列表中的最大值.指定的价格列表就是指产品类型为”0100030002″的所有产品价格.脚本如下:
SELECT productname,productprice FROM productinfo WHERE productprice < ANY (SELECT productprice FROM productinfo WHERE category = '0100030002') AND category <> '0100030002';

SOME 示例:
SELECT productname,productprice FROM productinfo WHERE productprice = SOME (SELECT productprice FROM productinfo WHERE category = '0100030002') AND category <> '0100030002';
SOME用法和ANY用法一样,只不过ANY多用在非”=”环境中.SOME这里表示找出和子查询中任何价格相等的产品.

连接查询

连接分为内连接、外连接、和全连接,还有一种叫做自连接,其中最常用的是内连接和外连接。

内连接

内连接会把两个以上的表进行连接,只能查询出匹配的记录.内连接中最常用的就是等值连接和不等只连接.

分为两种写法如下所示:

SELECT p.productname,p.productprice,c.categoryname FROM productinfo p , categoryinfo c WHERE p.category = c.categoryid;
或者:
SELECT p.productname,p.productprice,c.categoryname FROM productinfo p INNER JOIN categoryinfo c ON p.category = c.categoryid;

内连接中的关键字”INNER JOIN” 可以直接写成”JOIN”,系统会把”JOIN”识别成内连接.但是”ON”关键字不能省略。

    原文作者:ccgogoing
    原文地址: https://www.jianshu.com/p/723dccd2390b
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞