编程要求 在右侧编辑器Begin-End处增补代码,查询门生结果表中1班同砚的所有信息并以结果降序的方式表现结果。 我们已经为你提供了门生结果表: tb_score表数据:
stu_idclass_idnamescore12Jack8121David7431Mason9242Ethan8951Gina65 分析 利用 order by 字句对筛选出来的结果进行排序,基本用法: select 字段名 from 表名 order by 字段名 (DESC) 假如不加 desc 则默以为升序
USE School;
#请在此处添加实现代码
########## Begin ##########
########## 查询1班同学的所有信息以成绩降序的方式显示结果 ##########
select *
from tb_score
where class_id=1
order by score desc;
########## End ##########
复制代码
第二关:分组查询
编程要求 在右侧编辑器Begin-End处增补代码,对班级表中的班级名称进行分组查询。 我们已经为你提供了班级表信息: tb_class表数据:
stu_idclass_idname1367Jack2366David3366Mason4367Ethan5366Gina 分析 利用 group by 字句进行分组查询,基本用法为 select 字段名 from 表名 group by 字段名
select stu.name as studentName, score, cla.name as className
from tb_student as stu, tb_class as cla
-- 如果列名不会引起误解,则可以省略表名
where score > 90 && class_id = cla.id;
########## End ##########
复制代码
1-8 MySQL数据库 - 子查询
第一关:带比力运算符的子查询
编程要求 在右侧编辑器增补代码,查询大于所有均匀年岁的员工姓名与年岁。 我们为你提供了tb_emp表,数据如下:
idnameage1Mary232Allen213kevin254Tom335Nancy28 分析 这个题涉及到了子查询的知识,子查询指的是在 select 语句中出现了其他的 select 语句,这个语句既可以作为数据出现在 where 的限制条件中,也可以作为一个临时表出现在 from 背面,利用子查询可以办理很多问题。
USE Company;
#请在此处添加实现代码
########## Begin ##########
#1.查询大于所有平均年龄的员工姓名与年龄
select name, age
from tb_emp
where age > (select avg(age) from tb_emp);
########## End ##########
复制代码
第二关:关键字子查询
编程要求 我们为你提供了如下数据表: tb_salary表数据:
idpositionsalary1Java80002Java84003Java90004Python65005Python10000 根据提供的数据,在右侧编辑器中增补代码: 1)查询薪资表中比Java最高工资高的所有员工职位名称和薪资; 2)查询薪资表中比Java最低工资高的所有员工职位名称和薪资; 3)查询薪资表中职位为Java的所有员工职位名称和薪资。 分析 这个题涉及到了查询的关键字,适用于多行查询,all 表示所有,有些环境下可以用 max 的单行子查询代替,any 有些环境下可以用 min 的单行子查询来代替,可以把查询出来的表看作一个数据的聚集来再次带入查询语句进行查询,
USE Company;
#请在此处添加实现代码
########## Begin ##########
#1.使用 ALL 关键字进行查询
select `position`, salary
from tb_salary
where salary > all(select salary from tb_salary where `position` = 'Java');
#2.使用 ANY 关键字进行查询
select `position`, salary
from tb_salary
where salary > any(select salary from tb_salary where `position` = 'Java');
#3.使用 IN 关键字进行查询
select `position`, salary
from tb_salary
where id in (select id from tb_salary where `position` = 'Java');
########## End ##########
复制代码
1-9 MySQL数据库 - 复杂查询(一)
第一关:交换工资
编程要求 给定一张 tb_Salary 表,如下所示,有 m = 男性 和 f = 女性的值。 交换所有的 f 和 m 值(比方,将所有 f 值更改为 m,反之亦然)。
idnamesexsalary1Elonf70002Donnyf80003Careym60004Karinf90005Larisam55006Soram500 要求只利用一句更新update语句,且不答应含有任何select语句完成任务。 分析 这个题运用到了 update 语句,以及 if 语句或者 case 语句。 先来回首一下 update 语句,它的基本语法是 update 表名 set 列名 = 新元素。 再来说一下 if 语句的利用,相当于 Java 中的三元运算符,if(条件, 值1, 值2),假如满足条件则返回第一个值,否则返回第二个值。 再来说一下 case 的用法,基本结构为 casewhen 条件1 then 值1when 条件2 then 值2else 值3end 可以用于不止一个条件的筛选,背面可以跟多个 when 语句。
#请在此添加实现代码
########## Begin ##########
update tb_Salary
set sex = if(sex='f', 'm', 'f');
########## End ##########
复制代码
第二关:换座位
编程要求 本关任务:改变相邻俩门生的座位。 小美是一所中学的信息科技老师,她有一张 tb_Seat座位表,平常用来储存门生名字和与他们相对应的座位 id。 tb_Seat表结构数据如下:
idname1Elon2Donny3Carey4Karin5Larisa 现在小美想改变相邻俩门生的座位(若门生人数为奇数,则无需改变最后一位同砚的座位),现在需要你编写SQL输出小美想要的的结果。 分析 查询语句的综合利用,先确定思绪,分为两种环境,一种是最后一位是奇数,另一种是最后一位是偶数,假如是偶数的话则处理惩罚方式相同,假如是奇数的话则因该不变,因此应该写三条 case 语句,假如是偶数的话,将 id - 1,假如是奇数且不是最后一个则 id + 1,最后一种环境就是假如是奇数且是最后一位的话,则 id 不变。
#请在此添加实现代码
########## Begin ##########
select (case
-- 当当前id是奇数并且不是最后一个id时,id+1
when mod(id,2)!=0 and id!=counts then id+1
-- 当当前id是奇数并且是最后一个id时,id不变
when mod(id,2)!=0 and id=counts then id
-- 否则,当前id是偶数,id-1
else id-1 end)
as id, name
from tb_Seat, (select max(id) as counts from tb_Seat) as tb_Seat_counts