互联网SQL面试真题来啦

互联网SQL面试真题来啦


【面试题】这是某互联网公司的面试题。


表a和表b如下,相同字段为ID,如何通过查询完成下列各项任务?

互联网SQL面试真题来啦



问题1:表a、表b的交集

问题2:表a、表b的并集

问题3:存在表a、但不存在表b的元素,同时存在表b,但不存在表a的元素


【问题1解题思路】:

表a、表b的交集

此题主要考察的是表与表之间内部联结方法,用inner…join…on语句联结,此题SQL代码为:

互联网SQL面试真题来啦

问题1 SQL运行结果:


ID

2

3


【本题考点】

1、内部联结的应用

内部联结,用”…inner…join … on 条件…“语句,内部联结取两个表的交集,图示如下:中间的部分为交集:

互联网SQL面试真题来啦




此题的交集为:

互联网SQL面试真题来啦



2、表别名的用法


表的别名,用 as 定义别名,缩短了SQL语句,让查询语句比较简洁,并且可以多次使用。



【问题2解题思路】:

表a、表b的并集

此题考察的是表的并集union的用法,使用union把两个表并起来。

互联网SQL面试真题来啦

问题2 SQL运行结果

ID

1

2

3

4

5

6


【本题考点】

1、此题重点考察的是组合查询的union的用法

2、union的使用规则:

1) 必须有2个以上的select 语句组成,中间用union联结

2) union前后的select 语句必须是相同的列,表达式、聚集函数

3、union与union all的区别(如下图示)

union把查询结果相同的行自动去除了,本题用的union,表a、表b中共同的元素2、3,各保留了一个。union all 返回满足所有条件的元素。


互联网SQL面试真题来啦



【问题3解题思路】:

存在表a、但不存在表b的元素,同时存在表b,但不存在表a的元素

这个题有两种解法


(一)用left join、right join。详细用法见内部、外部联结。先选出存在表a,不存在表b的元素


互联网SQL面试真题来啦

sql运行结果:

ID

1

4


即:


互联网SQL面试真题来啦



然后再选出存在表b,不存在表a的元素

互联网SQL面试真题来啦

sql运行结果

ID

5

6


即:


互联网SQL面试真题来啦



最后用union合并在一起

互联网SQL面试真题来啦

sql运行结果

ID

1

4

5

6


(二)用not 排除法


1、“存在表a,但不存在表b”,把属于表b的元素排除掉。

互联网SQL面试真题来啦

2、题意中要求“…… 同时 ……“,把存在表a,不存在表b的元素,”与“存在表b,不存在表a的元素”的两个并列条件,用union联结起来

互联网SQL面试真题来啦

SQL运行结果

ID

1

4

5

6


【本题考点】

1、not 排除后面的条件,一般与in联用,in指定范围

2、union的用法,见问题2,此题的图示为:

互联网SQL面试真题来啦



3、子查询,从里到外处理,里面的查询结果是外层的条件。



【此面试题的总结】:

此面试题比较简单,主要考察表的内联结、表的并集,子查询、not in的用法,虽然比较简单,但是是SQL的最基础的用法,需要打实功底。

互联网SQL面试真题来啦


互联网SQL面试真题来啦



发表评论
留言与评论(共有 0 条评论) “”
   
验证码:

相关文章

推荐文章