| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 大数据 -> SQL问题复盘解析-2: -> 正文阅读 |
|
[大数据]SQL问题复盘解析-2: |
10-29?每日测试复盘: 1、检索所有比“王华”年龄大的学生姓名、年龄和性别。正确的SELECT语句是() 解析:SELECT sn,age,sex,FROM s where age>(selece age from s where sn="王华") 子查询必须是完整语句 2、开发人员决定需永久删除数据表waterinfo001表。选出符合要求的语句。 解析:DROP TABLE waterinfo001 drop是完全删除表,包括表结构; 1、处理效率:drop>trustcate>delete,2、drop删除整个表;trustcate删除全部记录,但不删除表;delete删除部分记录,3、delete不影响所用extent,高水线保持原位置不动;trustcate会将高水线复位。 3、运动会比赛信息的数据库,有如下三个表:运动员ATHLETE(运动员编号 Ano,姓名Aname,性别Asex,所属系名 Adep), 项目 ITEM (项目编号Ino,名称Iname,比赛地点Ilocation), 成绩SCORE (运动员编号Ano,项目编号Ino,积分Score)。写出目前总积分最高的系名及其积分,SQL语句实现正确的是:(? ? ? ) 解析:SELECT Adep,SUM(Score)FROM ATHLETE,SCORE? WHERE ATHLETE.Ano=SCORE.Ano GROUP BY Adep? HAVING SUM(Score)>=ALL (SELECT SUM(Score) FROM ATHLETE,SCORE? WHERE ATHLETE.Ano=SCORE.Ano GROUP BY Adep) All,any都是用于子查询的,All:对所有数据都满足条件,整个条件才成立;Any:只要有一条数据满足条件,整个条件成立;Some的作用和Any一样 . 4、有订单表orders,包含字段用户信息userid,字段产品信息productid,以下语句能够返回至少被订购过两次的productid?() 解析:SELECT productid FROM orders GROUP BY productid HAVING COUNT(productid)>1 5、在SQL中语法规范中,having子句的使用下面描述正确的是:(????) 解析:having子句即可包含聚合函数作用的字段也可包括普通的标量字段 having子句必须于group by 子句同时使用,不能单独使用 where在分组前过滤,having在分组后过滤,两者之间不冲突 having的作用是对分组查询的结果进行过滤,没有聚合函数的使用也可以用having过滤。 6、用一条SQL 语句查询出每门课都大于80 分的学生姓名,SQL语句实现正确的是:(? ? ? ) 解析:Select distinct name from score where name not in(Select name from score where grade <= 80); ?7、 有一张学生成绩表sc(sno 学号,class 课程,score 成绩)请问哪个语句可以查询出每个学生的英语、数学的成绩(行转列,一个学生输出一行记录,比如输出[1, 89, 90])? 解析:select sno, sum(if(class='english',score,0)) as english, sum( if(class='math',score,0) ) as math from sc where class in('english','math') group by sno 8、有两张表,问:用SQL查询 购买过goods_id 为1001的用户user_id() 解析:select user_id from A where order_id in (select order_id from B where goods_id = '1001') 在子表元素大于1时, 不能用= 要用in in(子表) 9、表结构如下: CREATE TABLE `score` ( ???`id`?int(11) NOT NULL AUTO_INCREMENT, ???`sno`?int(11) NOT NULL, ???`cno` tinyint(4) NOT NULL, ???`score` tinyint(4) DEFAULT NULL, ???PRIMARY KEY (`id`) ?) ;
所有的统计函数都会忽略空值(null)。 A :统计所有学生的平均分,就算成绩为空的学生,最后计算count(*)时也作为分母基数,计算得到所有学生的平均分。 B :与A一样,因为id主键非空,count(id)所得分母基数是所有学生。 C : 与B一样,非空属性sno。 D :由于score字段的值可能是空,空值在统计时忽略,所以count(score)和sum(score)统计的只是score不为空的学生,计算得到的平均分也只是有成绩的学生的平均分,无法计算所有学生的平均分。 E: count(1)与count(*)一样。 F:avg(score)会忽略空值,故计算结果为有成绩的学生的平均分。 A,B,C,E返回sum(score)除以行数;D,F返回sum(score)除以score不为null的行数 1、count(*)包括了所有的列,相当于行数,在统计结果的时候,不会忽略列值为NULL。 2、count(1)包括了忽略所有列,用1代表代码行,在统计结果的时候,不会忽略列值为NULL。 3、count(列名)只包括列名那一列,在统计结果的时候,会忽略列值为空 10、select语句完整语法如下: select? 目标表的列名或列表达式序列 from 基本表名和(或)视图序列 [where 行条件表达式] [group by? 列名序列 [having? 组条件表达式]] [order by 列名 [asc | desc]] 则sql语句的执行顺序是: 解析:执行顺序:from—join--on-where--group by—avg/sum--having--select—distinct--order by 就是select要放后面,如果有order by,则order by放最后,因为order by 是对结果进行排序 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/24 5:35:14- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |