SQL学习(持续更新)

1、having筛选分组

      正如where子名限制了select显示的行数,having限制了group by显示的分组数。where查询条件在分组产生前就被计算,而having搜索条件在分组产生之后才被应用。除了having子句可以包含聚合函数以外,having语法类似于where语法。having子句可以引用显示在select列表中的任何一项。

      总结:(1)where子句从from和join子句指定的运算结果中筛选行;(2)group by子句对where子句的输出进行分组;(3)having子句对分组后的结果筛选行。 

2、DBMS处理联结时,按照以下顺序执行整个查询 

(1)在join子句中应用联结条件。 

(2)在where子句中应用联结条件和查询条件。 

(3)按照group by子句对行分组。 

(4)在having子句中对分组应用搜索条件。  

(5)按照order by子句对结果排序。    

3、using子句 

      对于join语法,如果被联结的列有相同的名字且被用于比较是否相等,SQL标准定义了替代on子句的using子句。 

例如: 

select [name],[city] from [authors] inner join [publishers] using([city]);

4、使用all比较所有子查询的值 

      在子查询比较中,all修改了比较操作符,并且跟在=、<>、<、<=、>、>=之后, 表示等于、不等于、大于、小于子查询的结果中的所有值。

例如: 

select * from [table1] where [col1]>all (select [col1] from [table2]); 

5、使用any比较子查询的值 

      确定是否一个值等于、大于、小于子查询的结果中的某个值。 

6、使用exists检测存在性

       exists和not exists不比较值,而是在子查询结果中确定存在或不存在行。

例如: 

select [pub_name] from [publishers] p where exists (select * from [titles] t where t.[pub_id]=p.[pub_id] and [type]='biography'); 

7、集合操作 

(1)union返回两个查询返回的所有行,但会删除重复行。 

select_statement1 union [all]  select_statement2;

(2)intersect返回两个查询返回的所有共同行。

select_statement1 intersect select_statement2; 

(3)except返回第一个查询存在,但第二个查询中不存在的所有行,删除重复行。 

select_statement1 except select_statement2; 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值