您好,欢迎访问三七文档
createtabledept(deptnovarchar(10)primarykey,dnamevarchar(10));createtableemp(empnovarchar(10)primarykey,enamevarchar(10),jobvarchar(10),mgrvarchar(10),salvarchar(10),deptnovarchar(10)referencesdept(deptno));insertintodeptvalues('1','事业部');insertintodeptvalues('2','销售部');insertintodeptvalues('3','技术部');insertintoempvalues('01','jacky','clerk','tom','1000','1');insertintoempvalues('02','tom','clerk','','2000','1');insertintoempvalues('07','biddy','clerk','','2000','1');insertintoempvalues('03','jenny','sales','pretty','600','2');insertintoempvalues('04','pretty','sales','','800','2');insertintoempvalues('05','buddy','jishu','canndy','1000','3');insertintoempvalues('06','canndy','jishu','','1500','3');select*fromdept;select*fromemp;--1列出emp表中各部门的部门号,最高工资,最低工资selectdeptnoas部门号,max(sal)as最高工资,min(sal)as最低工资fromempgroupbydeptno;--2列出emp表中各部门job为'CLERK'的员工的最低工资,最高工资selectmax(sal)as最高工资,min(sal)as最低工资,deptnoas部门号fromempwherejob='clerk'groupbydeptno;--3对于emp中最低工资小于2000的部门,列出job为'CLERK'的员工的部门号,最低工资,最高工资selectb.deptnoas部门号,max(sal)as最高工资,min(sal)as最低工资fromempasbwherejob='clerk'and(selectmin(sal)fromempasawherea.deptno=b.deptno)2000groupbyb.deptno;--4根据部门号由高而低,工资有低而高列出每个员工的姓名,部门号,工资selectenameas姓名,deptnoas部门号,salas工资fromemporderbydeptnodesc,salasc;--5列出'buddy'所在部门中每个员工的姓名与部门号selectb.enameas姓名,b.deptnoas部门号fromempasbwhereb.deptno=(selecta.deptnofromempasawherea.ename='buddy');--6列出每个员工的姓名,工作,部门号,部门名selectenameas姓名,jobas工作,dept.deptnoas部门号,dept.dnameas部门名fromemp,deptwhereemp.deptno=dept.deptno;--7列出emp中工作为'CLERK'的员工的姓名,工作,部门号,部门名selectenameas姓名,jobas工作,dept.deptnoas部门号,dept.dnameas部门名fromemp,deptwhereemp.deptno=dept.deptnoandjob='clerk';--8对于emp中有管理者的员工,列出姓名,管理者姓名(管理者外键为mgr)selecta.deptnoas部门号,a.enameas员工,b.enameas管理者fromempasa,empasbwherea.mgrisnotnullanda.mgr=b.ename;--9对于dept表中,列出所有部门名,部门号,同时列出各部门工作为'CLERK'的员工名与工作selecta.deptnoas部门号,a.dnameas部门名,b.enameas员工名,b.jobas工作fromdeptasa,empasbwherea.deptno=b.deptnoandb.job='clerk';--10对于工资高于本部门平均水平的员工,列出部门号,姓名,工资,按部门号排序selectb.deptnoas部门号,b.enameas姓名,b.salas工资fromempasbwhereb.sal(selectavg(a.sal)fromempasawherea.deptno=b.deptno)orderbyb.deptno;--11对于emp,列出各个部门中工资高于本部门平均工资的员工数和部门号,按部门号排序selecta.deptnoas部门号,count(a.sal)as员工数fromempasawherea.sal(selectavg(b.sal)fromempasbwherea.deptno=b.deptno)groupbya.deptnoorderbya.deptno;--12对于emp中工资高于本部门平均水平,人数多与1人的,列出部门号,人数,平均工资,按部门号排序selectcount(a.empno)as员工数,a.deptnoas部门号,avg(sal)as平均工资fromempasawhere(selectcount(c.empno)fromempascwherec.deptno=a.deptnoandc.sal(selectavg(sal)fromempasbwherec.deptno=b.deptno))1groupbya.deptnoorderbya.deptno;--13对于emp中低于自己工资至少5人的员工,列出其部门号,姓名,工资,以及工资少于自己的人数selecta.deptnoas部门号,a.enameas姓名,a.salas工资,(selectcount(b.ename)fromempasbwhereb.sala.sal)as人数fromempasawhere(selectcount(b.ename)fromempasbwhereb.sala.sal)=5/*题目2问题描述:为管理学员培训信息,建立3个表:S(SID,SN,SD,SA)SID,SN,SD,SA分别代表学号、学员姓名、所属单位、学员年龄C(CID,CN)CID,CN分别代表课程编号、课程名称SC(SID,CID,G)S#,C#,G分别代表学号、所选修的课程编号、学习成绩*/createtables(sidVARCHAR(10)PRIMARYKEY,snvarchar(10),sdvarchar(10),savarchar(10));createtablec(cidvarchar(10)primarykey,cnvarchar(10));createtablesc(sidVARCHAR(10)REFERENCESS(SID),cidVARCHAR(10)REFERENCESC(CID),gint);insertintosvalues('001','汪洋','计算机学院','25');insertintosvalues('002','王世俊','计算机学院','23');insertintosvalues('003','王鑫','软件学院','22');insertintosvalues('004','陈桂超','化学学院','23');insertintosvalues('005','通讯生','软件学院','25');select*froms;insertintocvalues('01','化学');insertintocvalues('02','语文');insertintocvalues('03','数学');insertintocvalues('04','英语');select*fromc;insertintoscvalues('001','01',70);insertintoscvalues('001','02',80);insertintoscvalues('001','03',90);insertintoscvalues('001','04',100);insertintoscvalues('002','01',80);insertintoscvalues('002','02',90);insertintoscvalues('003','01',60);insertintoscvalues('004','02',70);insertintoscvalues('003','03',50);insertintoscvalues('004','04',60);select*fromsc;1.使用标准SQL嵌套语句查询选修课程名称为‘语文’的学员学号和姓名和单位--实现代码:selectsidas学号,sdAS单位,snAS姓名fromswheresidin(selectsidfromc,scwherec.cid=sc.cidandc.cn='语文');2.使用标准SQL嵌套语句查询选修课程编号为’02’的学员姓名和所属单位--实现代码:selectsnas姓名,sdas单位froms,scwheres.sid=sc.sidandsc.cid='02';3.使用标准SQL嵌套语句查询不选修课程编号为’02’的学员姓名和所属单位--实现代码:selectsnas姓名,sdas单位fromswheresidnotin(selectsidfromscwheresc.cid='02');4.使用标准SQL嵌套语句查询选修全部课程的学员姓名和所属单位--实现代码:selectsn,sdfromswheresidin(selectsidfromscgroupbysidhavingcount(*)=(selectcount(*)fromc));5.查询选修了课程的学员人数--实现代码:selectcount(distinctsid)as人数fromsc;6.查询选修课程超过2门的学员学号,
本文标题:MySQL试题
链接地址:https://www.777doc.com/doc-5872426 .html