1、(单选)有表 song(id,song_name,album,play_count,fav_count)分别表示歌曲的主键id、歌曲名、专辑名、播放次数和收藏次数,以下与order by相关的sql错误的是:
解析: C、order by 与 where 的先后顺序不对,先写where子句再写order by子句。
2、(单选)以下关于distinct的描述,正确的是:
解析: A、分组是group by,distinct是列出唯一的不同值
3、(多选)有表 song(id,song_name,album,play_count,fav_count)分别表示歌曲的主键id、歌曲名、专辑名、播放次数和收藏次数。要求查询超过两首歌的专辑与其歌曲数,并且按专辑名排序;有同学给出如下sql语句:
select id,count(*) from song order by album group by album having
count(*)>2 ;
这个sql错误的地方是:
解析: A、order by子句不能在group by的前面。 B、题干要求查询专辑,所以album需要select出来。
4、(单选)结合《SQL语言进阶篇》课程中介绍的歌单表play_list,下面这个sql实现了何种功能:
select userid from play_list group by userid having max(trackcount) > 10;
5、(单选)delimiter在MySQL中的作用是:
6、(单选)下列关于触发器的说法,正确的是:
解析: B、对于update,5.5版本只能在before和after update的时候各自建一个触发器。 C、触发器不能更新自身表的数据。 D、可以的,只要有权限。
7、(单选)一个班级有N个学生,每个学生有M门课程的成绩,假设成绩表结构为(学生ID,课程,成绩),要查询出总成绩最高的前K名学生,不需要用到的SQL关键字有:
解析: A、总成绩,需要sum;根据学生分组,需要group by;最高的,需要order by
select 学生id,sum(成绩) from table group by 学生id order by sum(成绩) desc limit K
8、(单选)下面这个语句有什么问题?
SELECT
* FROM Orders WHERE OrderID = (SELECT OrderID FROM OrderItems WHERE ItemQty
> 50)
9、(单选)有表tab(name varchar(20), id int, sal int)分别表示员工姓名、员工号、薪水,如何查找出薪水第二高的员工的薪水?
解析: C、可能是第一高的,因为第一高可能有2个人是一样的。
10、(多选)能被select * from tbl where col like '%b%e%' 查询出来的条件有: