练题第一天:数据结构CSS
错题编号4.
1.MySQL是一种( )数据库管理系统。
A层次型
B联盟链
C关系型
D对象型
正确答案:C
官方解析:MySQL是一种关系型数据库。
关系型数据库的代表包括Oracle, Sql Server, MySQL。
知识点:数据库、产品、2019、SQL
MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件。
2.在STUDENT表中按class_type统计数据行数分组情况后,筛选出数据行数为大于10行的组
A SELECT class_type,COUNT(*) FROM STUDENT GROUP BY class_type HAVING COUNT(*)>10
B SELECT class_type,COUNT(*) FROM STUDENT GROUP BY class_type WHERE COUNT(*)=10
C SELECT class_type,COUNT(*) FROM STUDENT HAVING COUNT(*)>10 GROUP BY class_type
D SELECT class_type,COUNT(*) FROM STUDENT WHERE COUNT(*) >10 GROUP BY class_type
正确答案:A
官方解析:
由题意得,若要筛选出数据行数大于10的,第一时间肯定会想到WHERE子句,但是由于使用GROUP BY后COUNT应该写在HAVING后,因此选A,BCD均属于用法错误,故排除
知识点:数据库、SQL
COUNT,HAVING,GROUP BY是个啥?
WHERE不能接聚合函数(MAX、MIN、COUNT、SUM、AVG等);
HAVING后可以接聚合函数;
WHERE用在GROUP BY前,先过滤后分组;
HAVING用在GROUP BY之后,先分组后过滤,且使用HAVING一定要用到GRUOP BY,但用到GROUP BY 不一定有HAVING。
这题就是考察where和having的区别是使用
Shopee真题
3. 2022 shopee Java
以下排序算法时间效率从高到低(时间复杂度从低到高)排列正确的是
时间效率,时间复杂度计算与比较?
4.Mysql中表student_table(id,name,birth,sex),score_table(stu_id,subject_name,score),查询没有英语分数的学生明细记录,如下SQL正确的是()?
A select * from student_table where id in (
select stu_id from score_table where subject_name <> '英语');
B select * from student_table where id not in (
select stu_id from score_table where subject_name = '英语');
C select * from student_table where id not in (
select stu_id from score_table where subject_name <> '英语');
D select * from student_table where id in (
select stu_id from score_table where subject_name = '英语');
正确答案:B
你的答案:A
官方解析:
AC的结果均错误。D的结果是有英语分数的学生。
正确选B。
知识点:数据库、SQL
不是特别懂,没有英语分数,没考英语,英语分数为null?他们三个在这道题分别有什么含义?
查询没有考英语的同学。
子查询为选择考了英语的同学,not in除去这些同学 则为没有考英语的同学。
5.Mysql中表student_table(id,name,birth,sex),插入如下记录:
('1001' , '' , '2000-01-01' , '男');
('1002' , null , '2000-12-21' , '男');
('1003' , NULL , '2000-05-20' , '男');
('1004' , '张三' , '2000-08-06' , '男');
('1005' , '李四' , '2001-12-01' , '女');
执行 select * from student_table where length(name) >= 0 的结果行数是()?
A 1
B 2
C 3
D 4
正确答案:C
官方解析:结果是1001,1004,1005共3行;length无法对null做筛选!
知识点:数据库、SQL
区分空字符串和NULL!
按照插入语句,结果如下:
id name
1001
1002 NULL
1003 NULL
1004 张三
1005 李四
注意:1001和1002是不一样的,一个是空字符串,一个是NULL。针对这两种数据使用length()函数结果是不相同的。
针对1001 length(name)结果是0,针对1002、1003 length(name)结果是空值NULL
因此题干where length(name) >= 0 会筛选出 1001、1004、1005三条数据
#每日刷题#