数据库-查询练习

基本查询练习

-- 1,在学生信息表中选择出所有的学生学号。
select Sname,Sid from t_student;

-- 2,在学生信息表中选择出学生姓名和高考分数。
select Sname,Sscore from t_student ;

-- 3,在学生信息表中选择出所有的学生年龄,并且不能重复。
select distinct(Sage ) from t_student ;

-- 4,在学生信息表中选择出所有学生的学号,姓名,生日。
select Sid as 学号,Sname as 姓名, Sscore as 成绩 from t_student ;

-- 5,在分数信息表中选择出所有信息。
select * from t_score;

-- 6,系主任表中选择出所有系主任的姓名。
select Mname from t_man;

-- 7,在分数信息表中选择出所有学生学号和体育成绩。
select Sid as 学号,体育 as 体育成绩 from t_score;

-- 8,在系部信息表中选择出所有的系编号和系名字。
select Did as 系编号,Dname as 系名字 from t_dept;

-- 9,在分数信息表中选择出所有英语和数学成绩。
select 英语 as 英语成绩,数学 as 数学成绩 from t_score;

-- 10,在学生信息表中选择出所有的年龄,班级,系编号,并且不允许重复。
select distinct Sage as 年龄 ,Sclass as 班级,Did as 系编号 from t_student;

-- 11,在学生信息表中选择出第一个到第十个的人的姓名。
select Sname,Sid from t_student where Sid<1217 and Sid>1202;

-- 12,在分数信息表中选择出第三个到第十二个人的语文成绩。
select 语文 as 语文成绩 from t_score where Sid>=1203 and Sid<=1210;

-- 13,从学生信息管理表中选出所有学生的姓名、英文名、电话,并去掉重复行,在结果中取前8个结果。

select distinct Sname,Sename,Sphone from t_student where Sid<1212;


-- 14,在分数信息表中输出所有学生体育成绩加上50的结果,并去掉重复行。
select distinct(体育)+20 from t_score;

-- 15,在分数信息表中输出所有学生的学号及语数外三课的成绩和。
select Sid ,语文+数学+英语 from t_score ;

-- 16,在学生信息表中输出十年后学生的年龄及高考减100分的结果,在结果中取第4到第8行结果。
select Sage+10,Sscore-100 from t_student where Sid>=1206 and Sid<=1209;

-- 17,在学生信息表中输出所有学生的高考成绩,如果有空值则输出111。
select Sscore,ifnull(Sscore,111) from t_student;

-- 18,在系部信息表中输出系的编号和人数的乘积的结果。
select Did*Dnumber from t_dept;

-- 19,在学生信息表中输出年龄加班级编号加系编号加高考成绩的和,如果高考成绩没有则为0。
select Sage+Sid+Did+Sscore,ifnull(Sscore,0) from t_student;

-- 20,在学生信息表中输出所有学生的姓名并重命名为“姓名”。
select Sname as 姓名 from t_student;

-- 21,使用concat函数在系主任表中输出“系主任的电话是”,将结果取别名“信息”。
select concat(concat(Dname,"主任的电话是"),Dnumber) as 信息 from t_dept;

-- 22,在学生信息表中输出所有学生10年前的年龄并重命名为“年轻 十岁”。
select Sage-10 as "年轻 十岁" from t_student;
-- 23,找出学生姓名和高考分数加100后的结果,并将高考分数加100取别名“最终分数”,如果高考分数为空就设置为100,去掉结果中的重复项,并取第二到第七个的结果
select distinct Sname ,Sscore,ifnull(Sscore,0)+100 as 最终分数 from t_student where Sid>1203 and Sid<1211;
-- 24,使用concat函数在学生信息表中输出所有“莫某高考成绩是***”。
select concat(concat(Sname,"高考成绩是"),Sscore) as 成绩信息 from t_student;

-- 25,使用concat函数在系部信息表中输出所有“某某系的系主任是***”。
select concat(concat(Dname,"的系主任是"),t_man.Mname) as 系主任 from t_dept,t_man where t_dept.Mid=t_man.Mid;

-- 26,系主任管理表中使用concat输出“系主任的编号是,他的电话是,他十年以前的年龄是”;
select concat(concat(concat(concat(concat(concat(concat("系主任",Mname),"的编号是"),Mid),"他的电话是"),Mphone),"他十年以前的年龄是"),Mage-10)as 系主任编号 from t_man;

-- 27,在学生信息表中使用concat输出信息:“我的名字叫 sname,我的性别是**,今年岁,我是班,我的分数是,我的英文名字是,我的电话是*” 取别名“个人信息” (如果有属性为空则给默认值0);
select IFNULL(concat(concat(concat(concat(concat(concat(concat(concat(concat(concat(concat(concat(concat(concat(concat("我的名字叫:",Sname)," 我的性别是:"),Ssex)," 今年"),Sage),"岁")," 我是"),Sclass),"班")," 我的分数是:"),Sscore)," 我的英文名字是:"),Sename)," 我的电话是:"),Sphone),0) as 个人信息 from t_student;

-- 28,在学生信息表中输出所有学生的姓名和高考成绩并按照高考成绩的升序排列。
select sname ,sscore from t_student order by sscore asc ;

-- 29,在分数信息表中输出学生的学号和体育成绩并按照英语成绩的降序排列,并取前5位数据。
select sid ,体育 from t_score order by 体育 desc limit 5;
-- 30,在学生信息表中输出所有学生的姓名和高考成绩并按照年龄的降序排列。
select sname ,sscore,sage from t_student order by sage desc;
-- 31,在学生信息表中输出所有学生的姓名和学号并按照学号的降序排列。
select sname ,sid from t_student order by sid desc;
-- 32,在学生信息表中输出所有学生的姓名和生日成绩并按照生日的升序排列。
select sname ,sscore,sbir from t_student order by sbir asc;
-- 33,在学生信息表中输出所有学生的信息并按照年龄的升序和高考成绩的降序排列。
select * from t_student order by sage , sscore desc;
-- 34,在学生信息表中输出所有学生姓名和生日并按照班级的降序和年龄的降序及成绩的升序排列。
select sname ,sbir ,sclass,sscore,sage from t_student order by sclass desc,sscore asc,sage desc;
-- 35,在分数信息表中输出所有学生的学号和各门课成绩的总和,并按照成绩总和的降序排列。
select sid,sum(语文+英语+数学+体育)as 成绩总和 from t_score group by sid
order by 成绩总和 desc;
-- 36,在学生信息表中用concat函数输出"的生日是",并按照年龄的降序排列。
select concat(concat(sname,'的生日是'),sbir) from t_student order by sage
desc ;
-- 37,在学生信息表中所有学生的姓名和电话,并给电话去别名"电 话",并按照年龄和班级升序排序,取第二个到第八个数据。
select sname ,sphone as 电话 from t_student order by sage ,sclass asc limit 2;
-- 38,在学生信息表中找出所有学生的信息,并按照班级编号的升序和年龄的降序排列。
select * from t_student order by sclass asc,sage desc ;
-- 39,在学生信息表中找出所有学生的信息,并按照系部编号的升序和班级编号的降序和年龄的升序排列,并取前八个数据。
select * from t_student order by did asc,sclass desc,sage asc limit 8;
-- 40,在分数信息表中输出最高分学生的学号。
select sid,sum(语文+英语+体育+数学)as 总成绩 from t_score group by sid order by 总成绩 desc limit 1;
-- 41,在学生信息表中找出最大年龄的学生的信息。
select * from t_student order by sage desc limit 1;

-- ------------------------------4月15号--------------------------------------------------------------

-- 42,在学生信息表中找出英文名是 Sweet的学生的姓名和生日。
select sname ,sbir,sename from t_student where sename = ' Sweet' ;
-- 43,在分数信息表中找出学号是1212的学生的四门成绩的总和。
select sid,sum(语文+英语+数学+体育)as 成绩总和 from t_score where sid=1212;
-- 44,在系部表中找出建筑系的全系的人数。
select dnumber from t_dept where dname='建筑系';
-- 45,在学生信息表中找出***的年龄和生日并给生日重命名为“出生日期”。
select sage, sbir as 出生日期 from t_student ;
-- 46,在学生信息表中输出所有学生的信息并按照年龄的升序和高考成绩的降序排列。
select * from t_student order by sage asc,sscore desc ;
-- 47,在学生信息表中输出所有学生姓名和生日并按照班级的降序和年龄的降序及成绩的升序排列。
select sname, sbir from t_student order by sscore asc,sclass,sage desc ;
-- 48,在学生信息表中找出年龄是20岁的人的所有学生的姓名和高考分数,并按照班级升序排列。
select sname ,sscore ,sclass from t_student where sage='20' order by sclass asc ;
-- 49,在分数信息表中找出学号是1210的体育成绩和数学成绩。
select sid ,体育,数学 from t_score where sid=1210;
-- 50,在学生信息表中输出英文名是Apple的学生的学号和20年后的年龄并重命名为“中年”
select sid,sage+20 as 中年 from t_student where sename like '%App%' ;

-- 51,在学生信息表中找出高考成绩为空的学生的所有信息。
select from t_student where sscore is null;
-- 52,在学生信息表中找出1990年以后出生的学生并去掉重复项,并按照学号降序排列。
select distinct
from t_student order by sid desc;
-- 53,在分数信息表中找出数学成绩不及格的学生。
select * from t_score where 数学<60;
-- 54,在分数信息表中找出语文成绩90以上且数学成绩80以上且英语成绩70以上的学生的学号。
select * from t_score where 数学>80 and 英语>70 and 语文>90;
-- 55,在分数信息表中找出至少有一门成绩不及格的学生的学号。
select * from t_score where 数学<60 or 英语<60 or 语文<60 or 体育<60;

-- 56,在学生信息表中找出3班的且高考成绩大于500的 或者 1班的学生的所有信息。
SELECT *from t_student where sclass='3' and sscore>500 or sclass='1';
-- 57,在学生信息表中找出1992年以后出生且所在系的编号为4的学生的所有信息。
SELECT *from t_student where sbir>='1992-01-01' and did='4';

-- 58,在分数信息表中找出语文分数在70到90之间的学生的英语成绩。

select 英语 from t_score where 语文>70 and 语文<90 ;

-- 59,在分数信息表中找出体育不及格或者数学不及格的学生的学号。

select sid from t_score where 数学<60 or 体育<60;

-- 60,在学生信息表中找出500分以下的学生,并按照年龄降序排列,然后取第2个到第4个值。
SELECT *from t_student where sscore<500 order by sage desc limit 1,3 ;

-- 61,在学生信息表中找出学号小于1210的学生的姓名和生日,取前5个人。
select sname ,sbir from t_student where sid<1210 limit 5 ;

-- 62,在学生信息表中找出年龄大于等于18且是3班且学号小于等于1211的学生所有信息,并按照成绩降序排列并取前两个人。
select * from t_student where sage>=10 and sclass='3' and sid<'1211'
order by sscore desc limit 2 ;

--

--

带条件查询

--
-- 63,在分数表中英语成绩不及格,或数学成绩不及格或语文及体育成绩都不及格的学生的学号。
select sid from t_score where 英语<60 or 数学<60 or 体育<60 and 语文<60;
-- 64,在学生信息表中找出学号为1204、1210、1230 或者年龄为20、21、22岁的学生姓名(取别名)。
select sname as 姓名 from t_student where sid in('1204', '1210', '1230' )
or sage in('20','21' , '22');
-- 65,在学生信息表中找出Apple、Fish、Coffee三个人的所有信息。
select * from t_student where sename in('App',' Fish' ,'Coffee');
-- 66,在学生信息表中找出系编号为1、3、4的所有学生的信息并按照年龄的升序和分数的降序排列。
select * from t_student where did in('1' ,'3','4') order by sage asc;
-- 67,在分数信息表中找出数学分数是68、88、91、98的学生的学号并按照学号的降序排列。
select * from t_score where 数学 in('68','88','91','98') order by sid desc;
-- 68,在学生信息表中找出除和Yellow和Coffee以外的其他学生的所有年龄和班级并去掉重复行。
select distinct sage ,sclass from t_student where sename not in('Yellow','Coffee');

-- 69,在分数信息表中找出除了英语分67、77、87以外的分数的所有学生学号和体育成绩并且将体育成绩重命名为“abc”。
select sid ,体育 as abc from t_score where 英语 not in ('67' ,'77' ,'87');
-- 70,在学生信息表中使用like找出名字中含有“丽”字的所有学生的信息。
select *from t_student where sname like '%丽%';
-- 71,在学生信息表中使用like找出英文名字中以“C”开头的学生的所有信息。
select *from t_student where sename like 'C%';
-- 72,在学生信息表中使用like找出英文名字中含有“ee”且是3班的学生的所有信息。
select *from t_student where sename like '%e%e%' and sclass='3';
-- 73,在学生信息表中使用like找出英文名字中以“e”结尾且有5位字符的学生的所有信息。
select *from t_student where length(sename)=5 and sename like '%e' ;

-- 74,在学生信息表中使用like找出姓王的学生或者名字只有两个字的学生的姓名和学号,并按照分数的降序排列。
select *from t_student where length(sname)=6 or sname
like '王%' ;
-- 75,在学生信息表中输出学号和他们的四门课的分数总和并重命名为总成绩。
select sid,sscore as 总成绩 from t_student;
-- 76,在学生信息表中使用like找出英文名含有“ff”或“ee”或“oo”的学生的所有信息,并按照年龄降序排列。
select *from t_student where sename like '%ff%' or sename like '%ee%' or sename like '%oo%';
-- 77,在学生信息表中使用like找出英文名含有字母“e”和“a”的且这两个字母都不在名字的首尾 的学生的姓名和英文名。
select sname ,sename from t_student where sename like '%e%a%';
-- 78,在学生信息表中使用like找出中文名字是两个字且英文名字含有“e”的学生的姓名和英文名。
select sname ,sename from t_student where sename like '%e%'
and length(sname)='6';

-- 79,在学生信息表中使用like找出中文名字三个字且英文名字6个字符的学生的所有信息。
select *from t_student where length(sename) =6
and length(sname)=9;

--

--

like查询练习-去空格-排序-去重复

-- 80,在学生信息表中使用like找出电话号码以13开头以01结尾的学生姓名、电话。
select sname,sphone from t_student where sphone like '13%01';
-- 81,在学生信息表中找出名字为三个字且是1990年以后出生的学生的信息。
select * from t_student where length(sname)=9
and sbir>='1990-01-01';

-- 82,在学生信息表中找出高考分数大于500、英文名以字母“S”开头的女生的姓名和学号。
select sname,sid from t_student where sename like 'S%'
and sscore>500 and ssex='女';

-- 83,在系主任表中找出每个系主任的姓(重命名)、编号、电话。
select left(Mname,1)as 姓,MID,mphone from t_MAN ;
-- 84,在学生信息表中找出所有人的英文名字和中文名字并用函数将英文名字字母都转换成大写的。
select sname,upper(sename) from t_student ;
-- 85,在学生信息表中找出所有人的英文名字的首字母(如果有空格要去掉空格),并重命名为“FirstWord”。
select sname,left(ltrim(sename),1)as FirstWord from t_student ;

-- 86,在学生信息表中找出所有人的姓和学号,并按照学号的降序排列。
select sname,sid from t_student order by sid desc;

-- 87,在学生信息表中找出所有人的英文名字的第3个字母并转换成大写字母,并按照分数的降序排列。
select upper(substring(sename,3,1)),sscore from t_student order by sscore desc;
-- 88,在学生信息表中找出所有人的学号和姓,并用连接符输出连接效果如:“1201的姓是*”。
select concat(concat(sid,"的姓是"),left(sname,1))
from t_student ;

-- 89,在学生信息表中找出所有人的英文名字的长度并去掉重复项。
select distinct char_length(sename)as 英文名长度
from t_student ;
-- 90,在学生信息表中找出所有人的英文名字第3到第5个字符并重命名。
select substring(sename,3,3)as 英文名字第3到第5个
from t_student ;
-- 91,在学生信息表中找出所有人的英文名字并去掉左边和右边的空格,并全部转换为大写。
select upper(rtrim(ltrim(sename)))
from t_student ;
-- 92,在学生信息表中找出所有男生的姓名、英文名、英文名的最后一个字母(重命名为末尾字符)。
select sname,right(sename,1)as末尾字符 from t_student where ssex='男';

-- 93,在学生信息表中找出姓名为两个字的学生的姓 和 和英文名的长度(空格不计算长度)。
select sname,length(ltrim(rtrim(sename)))as英文名的长度
from t_student ;
-- 94,在学生信息表中找出英文名长度为3个字符的学生的姓名、电话。
select sphone,sename from t_student where length(sename)=3 ;

-- 110,用函数获取当前日期和当前时间。
select curdate()as 当前日期 ,curtime()as 当前时间;
-- 111,在学生信息表中找出所有人的姓名和他出生的月份,并按照他们的月份的升序排列。
select sname,month(sbir) as 出生的月份 from t_student
order by 出生的月份 asc;
-- 112,在学生信息表中找出所有人的学号和他们出生的星期几(英文)。
select sid,dayname(sbir) from t_student ;
-- 113,在学生信息表中找出所有人中文名和英文名字及英文名字的第2个和第4个字母。
select sname,sename,substring(sename,2,1),substring(sename,4,1) from t_student ;
-- 114,在学生信息表中找出所有人中文名和英文名字及英文名字最后一个字母的大写。
select sname,sename,upper(right(sename,1)) from t_student ;
-- 115,在学生信息表中找出所有人中文名和英文名字及英文名字的长度。
select sname,sename,length(sename) from t_student ;

-- 116,在学生信息表中找出所有人中文名和英文名字及英文名字字母倒序。
select sname,sename,reverse(sename) from t_student ;

-- 117,在学生信息表中找出英文名字中第三字母是“a”,且高考分数500一下,且性别是女的学生的姓名和电话,并按照学号升序排列。
select sname,sphone,sename from t_student
where substring(sename,3,1)='a' and sscore<500
and ssex='女' order by sid asc;

-- 118,在学生信息表中找出年龄数字以“8”结尾的学生的学号和姓名。
select sid ,sname ,SAGE from t_student where SAGE like '%8';
-- 119,在学生信息表中找出英文名字以“A”开头,以“k”结尾的学生的中文名和英文名,并按照学号降序排列。
select sname,sename from t_student where sename like 'A%'
and sename like '%k' order by sid desc;
-- 120,在学生信息表中输出每个学生的姓名和生日,以及他们是一年中第几个星期出生的数字,并按照此数字排序。
select sname,sbir,weekofyear(sbir)as 数字 from t_student order by 数字 asc;
-- 121,在学生信息表中输出当前星期的英文,及当前日期的月份,及当前日期是今年第多少个星期,并分别取别名。

select dayname(sbir)as 星期,month(sbir)as 月份,weekofyear(sbir)
as 今年第多少个星期 from t_student ;
-- 122,在学生信息表中输出手机号中含有三个“6”的学生的生日和出生的月份。
select sbir ,month(sbir) from t_student where sphone like '%6%6%6%';
-- 123,在学生信息表中输出手机号中含有两个“1”和两个“0”的学生的生日和出生日期是当前年的第几周。
select sbir ,weekofyear(sbir) from t_student where sphone like '%1%1%' and sphone like '%0%0%' ;

--

--

单标查询练习-函数-日期-字符串截取

--
-- 124,在学生信息表中找出所有人的姓名和他出生的月份的英文、星期的英文并取前10个结果。
select sname ,monthname(sbir),dayname(sbir) from t_student limit 10;
-- 125,在学生信息表中找出所有人的姓名和他的生日加上100天后的日期及生日减去100天后的日期。
select sname ,sbir,ADDDATE(sbir,100),adddate(sbir,-100) from t_student;
-- 126,在学生信息表中找出所有人的姓名和他的生日跟今天日期相减的数。
select sname ,sbir, datediff(NOW(),sbir) from t_student;

-- 127,在学生信息表中找出所有人的姓名和他的生日,并且生日按照格式“1990-09-21”。
select sname ,date_format(sbir,'%Y-%m-%d')AS 生日 from t_student;
-- 128,在学生信息表中找出所有人的姓名和他的生日,并且生日按照格式“1990年/09月/21日”。
select sname ,date_format(sbir,'%Y年/%m月/%d日')AS 生日 from t_student;

-- 129,在学生信息表中找出所有人的姓名和他的生日,并且生日按照格式“1990年/September/Monday”。
select sname ,date_format(sbir,'%Y年/%M/%W')
AS 生日 from t_student;

-- 130,将今天的日期按照“日-月-年”输出。
select date_format(now(),'%d-%m-%Y');

-- 131,在学生信息表中输出所有学生的姓名和生日,生日按照'%m-%d-%Y'的格式输出,且结果按年龄降序排列。
select sname ,date_format(sbir,'%d-%m-%Y') from t_student order by sage desc;

-- 132,在学生信息表中输出所有学生的姓名和他们的生日加上10天后的日期。
select sname ,sbir ,adddate(sbir,10) from t_student;

-- 133,在学生信息表中输出所有学生的姓名和他们的生日减去一个月后的日期并重命名为“虚生日”,且结果按照学号降序排列。
select sname ,sbir ,adddate(sbir,interval 1 month)AS 虚生日 from t_student;

-- 134,在学生信息表中输出以学生年龄为半径圆的面积,并从小到大排序后取前8个数。
select format(sagesage3.14,2) as 圆的面积 from t_student order by 圆的面积 asc limit 8 ;

-- 135,在学生信息表中输出姓名和用date_format函数用英文输出学生生日的月,日。并取第5到10个数据出来。
select sname ,date_format(sbir,'%Y年-%M月-%D日') AS 生日 from t_student limit 4,6;

-- 136,在分数信息表中求出语文、数学、英语的平均成绩,并重命名为“语文平均”、“数学平均”、“英语平均”。
select avg(语文) as 语文平均,avg(英语) as 英语平均 ,avg(数学) 数学平均 from t_score;
-- 137,在学生信息表中输出所有学生的平均年龄和平均分数。
select avg(sage), avg(sscore) from t_student;
-- 138,在学生信息表中计算出年龄在18到22随之间且成绩大于500分的共有多少人。
select count(*) from t_student where sage>18 and sage<22 and sscore>500;
-- 139,在系部管理表中计算出人数在500以上的系的所有系的平均人数。
select avg(dnumber) from t_dept where dnumber >500;

-- 140,在分数信息表中求出每门课的最高成绩和最低成绩。
select max(语文),min(语文),max(数学),min(数学),max(英语),min(英语),max(体育),min(体育)
from t_score;
-- 141,在分数信息表中求出每门课的总成绩并重命名为全班总成绩。
select sum(语文),sum(英语),sum(体育),sum(数学) as 全班总成绩 from t_score;
-- 142,在学生信息表中计算出1990年以后出生的学生的最高分并重命名。
select max(sscore) as 90后最高分 from t_student where sbir>'1990-01-01';
-- 143,在学生信息表中计算出分数大于500且年龄小于20且是1班的学生一共有多少个。
select count(*) from t_student where sscore>500 and sage<20 and sclass='1';

-- 144,在学生信息表中输出年龄最大的学生的姓名和年龄。
select sname,sage from t_student where sage=(
select max(sage) from t_student);
-- 145,在学生信息表中统计出一共有多少个班(去掉重复)。
select distinct sclass from t_student group by sclass ;

-- 146,在学生信息表中输出平均年龄,平均分数,并分别去别名“平均年龄”、“平均分数”。
select avg(sage)as 平均年龄, avg(sscore) as 平均分数 from t_student;

-- 147,在学生信息表中计算出共有多少个不同的年龄。
select count(distinct sage) from t_student ;

-- 148,在学生信息表中计算出所有学生成绩的和并去掉相同项。
select sum(distinct sscore) from t_student ;

-- 149,在学生信息表中计算出20岁以下学生的分数总和,相同的分数只计算一遍。
select sum(sscore) from t_student where sage<20;

-- 150,在学生信息表中输出每个班的班号和最高分,取前2名。
select sclass ,max(sscore) from t_student group by sclass limit 2;

-- 151,在学生信息表中输出每个班的班号和人数并按照班号降序排列。
select sclass ,count(*) from t_student group by sclass order by sclass desc;
-- 152,在学生信息表中输出每个系的系编号和系里面最小的一位学生的年龄,并重命名,结果按照系编号降序排列。
select did,min(sage) as 最小学生年龄 from t_student group by did order by did desc;
-- 153,在学生信息表中输出每个班的班号和平均分数及最低分和最高分并重命名。
select sclass ,avg(sscore),max(sscore),min(sscore) from t_student group by sclass ;

-- 154,在学生信息表中输出每个系的系编号及18岁以上有多少人,并按照系编号降序排列。
select sclass ,avg(sscore) as 班级平均分,max(sscore) as 班级最高分,min(sscore) as 班级最低分 from t_student group by sclass ;

-- 155,在学生信息表中输出每个班的班级编号及班上名字是3个字的学生的个数并重命名,按照学生的个数的降序排列。
select sclass ,count() from t_student where sname like '___'
group by sclass order by count(
) desc;

-- 156,在学生信息表中输出每个系的系编号及系里面手机号是以“15”开头的学生的个数,按照系编号降序排列。
select did ,count() from t_student where sphone like '15%'
group by did order by did desc;
-- 157,在学生信息表中输出17,19,20的年龄各有多少人,并按照人数的降序排列。
select sage ,count(
) from t_student where sage in('17','19','20') group by sage
order by count() desc;
-- 158,在学生信息表中输出每个班的班级编号及每个班有学号大于1208且年龄小于20且名字是两个字的学生的个数。
select sclass ,count(
) from t_student where sid>1208 and sage<20 and sname like '__'
group by sage ;
-- 159,在学生信息表中输出每个系里面的每个班的系编号、班级编号、最高分、最低分。
select did,sclass,max(sscore),min(sscore) from t_student group by did ,sclass;
-- 160,在学生信息表中将450分以上的学生按照年龄分组,输出每个组的年龄和总人数,并按照年龄的降序排列
select sage,count(*) from t_student group by sage order by sage desc;

-- 161,在学生信息表中将男生按照班级分组,输出班级编号、每个班平均年龄、最高分数。
select sclass,avg(sage),max(sscore) from t_student where ssex='男' group by sclass ;

-- 162,在学生信息表中将分数是450分以上的学生按照班级和年龄分组,输出每个组的人数,并用rollup统计。
-- with rollup 统计满足所有条件的所有班级总人数
select sclass,sage,count(*) from t_student where sscore>450 group by sclass,sage with rollup;

-- 163,在学生信息表中将19岁以上且分数是460分以上的学生按照系编号分组,并用rollup统计。
select did,count(*) from t_student where sscore>460 and sage>19 group by did with rollup ;

-- 164,在学生信息表中统计出每个班的最大年龄,并将最大年龄大于19岁的班级输出班级编号和最大年龄,并按班级的降序排列。
select sclass,max(sage) from t_student where sage>19 group by sage order by sclass;
-- 165,在学生信息表中统计出每个系的平均分数和平均年龄,并将平均分数小于550的结果输出来。
select avg(sscore), avg(sage) from t_student where sscore<550 ;

-- 166,在老师信息表中统计出男女各有多少人,并按照人数降序排列。
select ssex,count() from t_student group by ssex order by count() desc ;
-- 167,在学生信息表中将1990年以后出生的学生且有系编号有班级编号的学生按照系编号、班级编号分组,统计出每个组的人数。输出每个组的系编号、班级编号和人数并按照人数升序排列取前3个结果。
select did,sclass,count() from t_student group by did,sclass order by count() asc limit 3 ;

--

多表查询及联表查询

--
-- 168,在学生信息表中查找出跟“Apple”在同一个班的学生的个数。
select count(*)from t_student where sclass=(
select sclass from t_student where sename='App');

-- 169,在学生信息表中查找出最高分的学生的姓名和电话号。
select sname,sphone from t_student where sscore=(
select max(sscore) from t_student )

-- 170,在学生信息表中查找出考试分数在平均分以下的学生的学号和姓名,并按学号的降序排列。
select sclass,sname,sscore from t_student where sscore<(
select avg(sscore) from t_student )
-- 171,在学生信息表中查找出年龄比Orange小但分数比App高的学生的姓名和电话号,并按照电话号降序排列,并取前两个值。
select sname,sphone from t_student where sage < (
select sage from t_student where sename='Orange')and sscore>(
select sscore from t_student where sename='App')
-- 172,在学生信息表中查找出班级平均分比全校平均分低的班级编号,最高分,最低分,平均分,并按班级编号降序排列。
select sclass,max(sscore),min(sscore),avg(sscore) from t_student group by sclass
having avg(sscore) <(select avg(sscore) from t_student ) ;

-- 173,在学生信息表中将学生按年龄分组,统计每个组有多少人,筛选出人数正好等于3班人数 的组。
select sage ,count() from t_student group by sage having count()=(
select count(*) from t_student where sclass=2 );
-- 174,在学生信息表中查找出与1201和1203和1205号学生相同年龄的学生的学号、姓名、年龄,并按照学号降序排列。
select sid,sname,sage from t_student where sid in(
select sid from t_student where sid in('1201','1203','1205')) order by sid desc;
-- 175,在学生信息表中查找出与系编号为1的学生的年龄都不相同的学生的姓名、分数,并按照分数升序排列取前5个结果。
select sname,sscore from t_student where sage not in(
select sage from t_student where did='1') order by sscore asc;
-- 176,在学生信息表中查找出比 500分以上的学生的年龄大的学生姓名 或者 比1992年以前出生的学生分数高的学生姓名。
select sname from t_student where sage >all(
select sage from t_student where sscore>500) or sscore>all(
select sscore from t_student where sbir<'1993-01-01')

-- 177,在学生信息表和系部管理表中查找出学号为1210、1213、1217的学生的姓名和他的系的名字。
select sname ,dname from t_student as t1 ,t_dept as t2 where t1.did=t2.did and sid in(
select sid from t_student where sid in('1210','1213','1217'))

-- 178,系部管理表和系主任管理表中输出每个系的编号和系所对应的系主任的编号和名字。
select did,t_man.mid ,mname from t_man ,t_dept where t_man.mid=t_dept.mid
-- 179,在学生信息表和分数表中输出每个学生的学号、姓名、体育成绩(取别名体育成绩)、英语成绩(取别名英语成绩)。
select s.sid sname,体育 as 体育成绩, 英语 as 英语成绩 from t_student as s ,t_score as sc
where s.sid=sc.sid;
-- 180,在学生信息表和系部管理表中输出每个系的编号和系名字及每个系在学生信息表中的人数。
select d.did ,dname,count(sid)from t_student as s ,t_dept as d where s.did=d.did group by did;

-- 181,使用联结在学生信息表和分数表中输出每个学生的姓名和他们的各门课的成绩。
select sname ,语文,英语,数学,体育 from t_student as s,t_score as sc where s.sid=sc.sid;

-- 182,使用联结在学生信息表和系部表中输出每个学生的姓名和他们的系名。
select sname ,dname from t_student as s,t_dept as d where s.did=d.did;
-- 183,使用联结在系部表和系主任表中输出每个系的编号、系名字、系主任名字,并按照系编号降序排列。
select d.did,dname,mname from t_dept as d,t_man as m where d.mid=m.mid order by did desc;
-- 184,使用联结在系部表和学生信息表中输出分数最高的学生的姓名和他所在系的名字。
select max(sscore),sname,dname from t_student as s,t_dept as d where s.did=d.did
group by dname;

posted @ 2020-11-18 12:05  落雨♡̶初晴  阅读(1045)  评论(0编辑  收藏  举报