数据查询的知识

SELECT语句基本的语法如下:

SELECT   * | <列名 | 列表达式>[,<列名 | 列表达式>]……

FROM    <表名或视图名>[,<表名或视图名>]……

[ WHERE  <行条件表达式> ]

[ GROUP   BY  <分组列名1][,<分组列名2>]…… [ HAVING <组条件表达式> ] ]

[ ORDER  BY <排序列名1  [ ASC| DESC ]> [,<排序列名2  [ ASC| DESC ]>]……]

2.3.1  基本查询

1.SELECT子句的规定

SELECT子句用于描述输出值的列名或表达式,其形式如下:

  SELECT  [ ALL | DISTINCT]  * | <列名或列名表达式序列>

DISTINCT选项表示输出无重复结果的记录;ALL选项是默认的,表示输出所有记录,包括重复记录。

* 表示选取表中所有的字段。

2.使用WHERE子句指定查询条件

运算符名称 符号及格式 说 明

算术比较判断 <表达式1> θ <表达式2>

θ代表的符号有:<、<=、>、>=、<>或!=、= 比较两个表达式的值

逻辑比较判断 <比较表达式1> θ <比较表达式2>

θ代表的符号按其优先级由高到低的顺序为:

NOT、AND、OR 两个比较表达式进行非、与、或的运算

之间判断 <表达式> [NOT] BETWEEN <值1> AND <值2> 搜索(不)在给定范围内的数据

字符串模糊判断 <字符串>  [NOT]  LIKE  <匹配模式> 查找(不)包含给定模式的值

空值判断 <表达式>  IS  [NOT]  NULL 判断某值是否为空值

之内判断 <表达式>  IN  (<集合>) 判断表达式的值是否在集合内

3、  分组查询

聚合函数

函  数 说  明

COUNT(*)

COUNT(<列名>) 计算记录的个数

对一列中的值计算个数

SUM(<列名>) 求某一列值的总和

AVG(<列名>) 求某一列值的平均值

MAX(<列名>) 求一列值的最大值

MIN(<列名>) 求一列值的最小值

使用聚合函数时,需要注意以下几点:

聚合函数只能出现在所查询的列、ORDER BY子句、HAVING子句中,而不能出现在WHERE子句、GROUP BY子句中。

除了COUNT(*)之外,其他聚合函数(包括COUNT(<列名>))都忽略对列值为NULL值的统计。

4.使用GROUP  BY子句

1)按单列分组

【例2-24】查询emp表中每个部门的平均工资和最高工资,并按部门编号升序排序。

SELECT  deptno,AVG(sal) 平均工资,MAX(sal) 最高工资  FROM  emp

  GROUP BY  deptno

  ORDER BY  deptno;

2)按多列分组

【例2-25】查询emp表中每个部门、每种岗位的平均工资和最高工资。

SELECT deptno,job,AVG(sal) 平均工资,MAX(sal) 最高工资 FROM emp

   GROUP BY deptno,job

   ORDER BY deptno;

5.使用HAVING子句

【例2-26】查询部门编号在30以下的各个部门的部门编号、平均工资,要求只显示平均工资大于等于2000的信息。

SELECT deptno,AVG(sal) 平均工资 FROM emp

   WHERE deptno<30   GROUP BY deptno   HAVING  AVG(sal)>=2000;

HAVING后的AVG(sal)也可用查询列表中的别名平均工资来代替。

SELECT deptno,AVG(sal) 平均工资 FROM emp   WHERE deptno<30

   GROUP BY deptno

    HAVING 平均工资>=2000;

6. 子查询 

子查询的执行步骤如下:

(1)首先取外层查询中表的第一个记录,根据它与内层查询相关的列值进行内层查询的处理(如WHERE子句的处理),若处理结果为真,则取此记录放入结果集。

(2)然后再取外层表的下一个记录进行内层查询的处理。

(3)重复这一过程,直至外层查询中表的全部记录处理完为止。

1)返回单值的子查询

单值子查询向外层查询只返回一个值。

2)返回多值的子查询

(1)使用IN操作符的多值子查询

比较运算符IN的含义为子查询返回列表中的任何一个。IN操作符比较子查询返回列表中的每一个值,并且显示任何相等的数据行。

(2)使用ALL操作符的多值子查询

ALL操作符比较子查询返回列表中的每一个值。<ALL:为小于最小的;>ALL:为大于最大的。

(3)使用ANY操作符的多值子查询

ANY操作符比较子查询返回列表中每一个值。<ANY:为小于最大的;>ANY:为大于最小的。

(4)使用EXISTS操作符的多行查询

EXISTS操作符比较子查询返回列表的每一行。使用EXISTS时应注意:外层查询的WHERE子句格式为:WHERE  EXISTS;在内层子查询中必须有WHERE子句,给出外层查询和内层子查询所使用表的连接条件。

7.合并查询结果 

当两个SELECT查询结果的结构完全一致时,可以对这两个查询执行并的运算,运算符为UNION。

UNION的语法格式为:

SELECT 语句1

  UNION [ALL]

SELECT 语句2

UNION在连接数据表的查询结果时,结果中会删除重复的行,所有返回的行都是唯一的。使用UNION ALL的时候,结果中不会删除重复行。



 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值