SQL笔试题

合集下载

sql-hive笔试题整理1(学生表-成绩表-课程表-教师表)

sql-hive笔试题整理1(学生表-成绩表-课程表-教师表)

sql-hive笔试题整理1(学⽣表-成绩表-课程表-教师表)题记:⼀直在写各种sql查询语句,最长的有⼀百多⾏,⾃信什么需求都可以接,可。

,想了想,可能⼀直在固定的场景下写,平时也是以满⾜实际需求为⽬的,竟不知道应试的题都是怎么出的,⼜应该怎么做。

遂找来⼀些笔试题来练习。

有四张表如下格式存储:--1、查询“001”课程⽐“002”课程成绩⾼的所有学⽣的学号;select t1.s# from(select s#,c#,score from sc where c# = 001) t1 inner join (select s#,c#,score from sc where c# = 002) t2on t1.s#=t2.s#where t1.score > t2.score--2、查询平均成绩⼤于60分的同学的学号和平均成绩;select s#,avg(score)from scgroup by s# having avg(score)>60--3、查询所有同学的学号、姓名、选课数、总成绩;select student.s#,student.sname,count(sc.c#),sum(sc.score)from student left join sc on student.s#=sc.s#group by student.s#,student.sname--4、查询姓“李”的⽼师的个数;select count(t#)from teacherwhere tname like '李%'--5、查询没学过“叶平”⽼师课的同学的学号、姓名;select t1.s#,t1.snamefrom student t1left join sc t2 on t1.s#=t2.s#left join course t3 on t2.c#=t3.c#left join teacher t4 on t3.t#=t4.t#where t4.tname != '叶平'--6、查询学过“001”并且也学过编号“002”课程的同学的学号、姓名;select t0.s#,t0.snamefrom student t0inner join (select s#,c#,score from sc where c# = 001) t1on t0.s#=t1.s#inner join (select s#,c#,score from sc where c# = 002) t2on t0.s#=t2.s#--7、查询学过“叶平”⽼师所教的所有课的同学的学号、姓名;select t1.s#,t1.snamefrom student t1left join sc t2 on t1.s#=t2.s#left join course t3 on t2.c#=t3.c#left join teacher t4 on t3.t#=t4.t#where t4.tname = '叶平'--8、查询课程编号“002”的成绩⽐课程编号“001”课程低的所有同学的学号、姓名;select t0.s#,t0.snamefrom student t0inner join (select s#,c#,score from sc where c# = 001) t1on t0.s#=t1.s#inner join (select s#,c#,score from sc where c# = 002) t2on t0.s#=t2.s#where t2.score<t1.score--9、查询所有课程成绩⼩于60分的同学的学号、姓名;select t1.s#,t1.snamefrom student t1inner join (select s#,count(c#),count(if(score<60,c#,null)) from sc group by s# having count(c#) = count(if(score<60,c#,null))) t2on t1.s#=t2.s#--10、查询没有学全所有课的同学的学号、姓名;select t1.s#,t1.snamefrom student t1 inner join sc t2 on t1.s#=t2.s#group by t1.s#,t1.snamehaving count(c#) < (select count(c#) from course)--11、查询⾄少有⼀门课与学号为“1001”的同学所学相同的同学的学号和姓名;select distinct t1.s#,t1.snamefrom student t1 inner join sc t2 on t1.s#=t2.s#left semi join (select c# from sc where s#=1001) t3 on t2.c#=t3.c#--12、查询⾄少学过学号为“001”同学所有⼀门课的其他同学学号和姓名;--13、查询和“1002”号的同学学习的课程完全相同的其他同学学号和姓名;select t1.s#,t3.snamefrom sc t1inner join sc t2on t1.c#=t2.c#left join student t3on t1.s#=t3.s#where t2.s#=1002group by t1.s#having count(distinct t1.c#) = count(distinct t2.c#)--14、查询各科成绩最⾼和最低的分:以如下形式显⽰:课程ID,最⾼分,最低分select c#,max(score),min(score)from scgroup by c#--15、按各科平均成绩从低到⾼和及格率的百分数从⾼到低顺序select c#,ave,count_g/count_allfrom (select c#,average(score) ave,count(if(score>=60,s#,null)) count_g,count(s#) count_allfrom scgroup by c#) t1order by ave,count_g/count_all desc--16、查询如下课程平均成绩和及格率的百分数(⽤"1⾏"显⽰): 企业管理(001),马克思(002),OO&UML (003),数据库(004)select c#,ave,count_g/count_allfrom(select c#,average(score) ave,count(if(score>=60,s#,null)) count_g,count(s#) count_allfrom scwhere c# in (001,002,003,004)group by c#) t1--17、查询不同⽼师所教不同课程平均分从⾼到低显⽰select ame,t3.tname,avg(t1.score)from sc t1inner join course t2 on t1.c#=t2.c#inner join teacher t3 on t2.t#=t3.t#group by ame,t3.tnameorder by avg(t1.score) desc--18、查询如下课程成绩第 3 名到第 6 名的学⽣成绩单:企业管理(001),马克思(002),UML (003),数据库(004)select * from(select t1.s#,t1.sname,t2.c#,t2.score,row_number() over(partition by t2.c# order by t2.score desc) numfrom student t1inner join sc t2 on t1.s#=t2.s#where c# in (001,002,003,004)) twhere t.num >=3 and t.num<=6--19、统计列印各科成绩,各分数段⼈数:课程ID,课程名称,[100-85],[85-70],[70-60],[ <60]select t1.c#,ame,case when t1.score >=85 then [100-85] when (t1.score <85 and t1.score >=70) then [85-70] when (t1.score <70 and t1.score >=60) then [70-60] when t1.score <60 then [ <60] end as score, count(t1.s#)from sc t1inner join course t2 on t1.c#=t2.c#group by t1.c#,ame--20、查询学⽣平均成绩及其名次select t1.s#,t1.sname,avg(t2.score),row_number() over(order by avg(t2.score)) as rankingfrom student t1inner join sc t2 on t1.s#=t2.s#--21、查询各科成绩前三名的记录:(不考虑成绩并列情况)select * from(select t1.s#,t1.sname,t2.c#,t2.score,row_number() over(partition by t2.c# order by t2.score desc) numfrom student t1inner join sc t2 on t1.s#=t2.s#) twhere t.num <=3--22、查询每门课程被选修的学⽣数select c#,count(s#)from sc group by c#--23、查询出只选修了⼀门课程的全部学⽣的学号和姓名select t1.s#,t2.snamefrom sc t1inner join student t2 on t1.s#=t2.s#where count(t1.c#)=1group by t1.s#,t2.sname--24、查询男⽣、⼥⽣⼈数select ssex,count(s#)from student group by ssex--25、查询姓“张”的学⽣名单select s#,snamefrom studentwhere sname like '张%'--26、查询同名同性学⽣名单,并统计同名⼈数select sname,count(s#)from studentwhere count(s#)>1group by sname--27、1981年出⽣的学⽣名单(注:Student表中Sage列的类型是datetime)select s#,snamefrom studentwhere datediff(year,today,sage)=1981--28、查询每门课程的平均成绩,结果按平均成绩升序排列,平均成绩相同时,按课程号降序排列 select c#,avg(score) from scgroup by c# order by avg(score),c# desc--29、查询平均成绩⼤于85的所有学⽣的学号、姓名和平均成绩select t1.s#,t2.sname,avg(t1.score)from sc t1 inner join student t2 on t1.s#=t2.s#group by t1.s# having avg(t1.score)>85--30、查询课程名称为“数据库”,且分数低于60的学⽣姓名和分数select t0.sname,t1.scorefrom student t0inner join sc t1 on t0.s#=t1.s#inner join course t2 on t1.c#=t2.c#where ame = '数据库' and t1.score<60--31、查询所有学⽣的选课情况;select t1.s#,t1.sname,t2.c#,amefrom student t1left join sc t2 on t1.s#=t2.s#inner join course t3 on t2.c#=t3.c#--32、查询任何⼀门课程成绩在70分以上的姓名、课程名称和分数;select t1.sname,ame,t2.scorefrom student t1inner join sc t2 on t1.s#=t2.s#inner join course t3 on t2.c#=t3.c#where t2.score>70--33、查询不及格的课程,并按课程号从⼤到⼩排列select c#,avg(score)from scgroup by c#order by avg(score) deschaving avg(score)<60--34、查询课程编号为003且课程成绩在80分以上的学⽣的学号和姓名;select t1.s#,t1.snamefrom student t1inner join sc t2 on t1.s#=t2.s#inner join course t3 on t2.c#=t3.c#where t3.c#=003 and t2.score>80--35、求选了课程的学⽣⼈数select count(distinct s#)from sc--36、查询选修“叶平”⽼师所授课程的学⽣中,成绩最⾼的学⽣姓名及其成绩select t1.sname,max(t2.score)from student t1 inner join sc t2 on t1.s#=t2.s#inner join course t3 on t2.c#=t3.c#inner join teacher t4 on t3.t#=t4.t#where t4.tname='叶平'group by t1.sname--37、查询各个课程及相应选修⼈数select c#,count(s#)from scgroup by c#--38、查询不同课程成绩相同的学⽣的学号、课程号、学⽣成绩select t1.s#,t1.c#,t2.c#,t1.scorefrom sc t1inner join sc t2 on t1.s#=t2.s#where t1.score=t2.score and t1.c#<>t2.c#--39、查询每门课程成绩最好的前两名select c#,s# from(select c#,s#,score,row_number() over(partition by c# order by score desc) numfrom sc) twhere t.num=2--40、统计每门课程的学⽣选修⼈数(超过10⼈的课程才统计)。

面试sql笔试题目

面试sql笔试题目

面试sql笔试题目
好的,以下是一份可能的SQL笔试题目:
1. 写出查询所有学生成绩的SQL语句。

2. 写出查询学生表中年龄大于等于18岁的学生记录的SQL语句。

3. 写出查询学生表中年龄小于18岁且姓“张”的学生记录的SQL语句。

4. 写出查询学生表中年龄等于18岁且姓“李”的学生记录的SQL语句。

5. 写出查询学生表中年龄等于18岁或姓“李”的学生记录的SQL语句。

6. 写出查询学生表中年龄等于18岁或姓“李”且成绩大于等于90分的学生记录的SQL语句。

7. 写出查询学生表中年龄等于18岁或姓“李”且成绩大于等于90分,并按成绩从高到低排序的学生记录的SQL语句。

8. 写出查询学生表中年龄等于18岁或姓“李”且成绩大于等于90分,并取出前5条记录的SQL语句。

9. 写出查询学生表中年龄等于18岁或姓“李”且成绩大于等于90分,并取出最后一条记录的SQL语句。

10. 写出查询学生表中年龄等于18岁或姓“李”且成绩大于等于90分,并取出第3条至第5条记录的SQL语句。

shopee sql笔试题

shopee sql笔试题

shopee sql笔试题
以下是一份简单的Shopee SQL 笔试题,题目涵盖了SQL 查询的基本知识和技能。

请根据需要进行修改和扩展。

1. 用户表(User):
2. 订单表(Order):
3. 商品表(Product):
题目:
1.编写SQL 查询,显示每个用户的用户名和注册日期。

2.编写SQL 查询,显示订单总金额超过60.00 的用户ID 和订
单日期。

3.编写SQL 查询,列出每个用户的总订单数和订单总金额。


果应包括用户ID、用户名、总订单数、总金额,并按总金额降序排序。

4.编写SQL 查询,列出商品名称、价格以及被用户Alice 购买
的数量。

如果用户Alice 没有购买该商品,则显示数量为0。

注意:请根据Shopee 数据库的实际情况进行适当的调整和修改。

这只是一个简单的示例。

SQL笔试I经典44题及答案解析~

SQL笔试I经典44题及答案解析~

SQL笔试I经典44题及答案解析~今天这篇文章,是关于44道经典SQL测试题:01建表语句createtableStudent(sidvarchar(10),snamevarchar(10),s agedatetime,ssexnvarchar(10));insertintoStudentvalues('01','赵雷','1990-01-01','男');insertintoStudentvalues('02','钱电','1990-12-21','男');insertintoStudentvalues('03','孙风','1990-05-20','男');insertintoStudentvalues('04','李云','1990-08-06','男');insertintoStudentvalues('05','周梅','1991-12-01','女');insertintoStudentvalues('06','吴兰','1992-03-01','女');insertintoStudentvalues('07','郑竹','1989-07-01','女');insertintoStudentvalues('08','王菊','1990-01-20','女');createtableCourse(cidvarchar(10),cnamevarchar(10),ti dvarchar(10));insertintoCoursevalues('01','语文','02');insertintoCoursevalues('02','数学','01');insertintoCoursevalues('03','英语','03');createtableTeacher(tidvarchar(10),tnamevarchar(10));insertintoTeachervalues('01','张三'); insertintoTeachervalues('02','李四'); insertintoTeachervalues('03','王五');createtableSC(sidvarchar(10),cidvarchar(10),scoredeci mal(18,1));insertintoSCvalues('01','01',80); insertintoSCvalues('01','02',90); insertintoSCvalues('01','03',99); insertintoSCvalues('02','01',70); insertintoSCvalues('02','02',60); insertintoSCvalues('02','03',80); insertintoSCvalues('03','01',80); insertintoSCvalues('03','02',80); insertintoSCvalues('03','03',80); insertintoSCvalues('04','01',50); insertintoSCvalues('04','02',30); insertintoSCvalues('04','03',20);insertintoSCvalues('05','01',76);insertintoSCvalues('05','02',87);insertintoSCvalues('06','01',31);insertintoSCvalues('06','03',34);insertintoSCvalues('07','02',89);insertintoSCvalues('07','03',98);02表结构预览--学生表Student(SId,Sname,Sage,Ssex)--SId学生编号,Sname学生姓名,Sage出生年月,Ssex学生性别--课程表Course(CId,Cname,TId)--CId课程编号,Cname课程名称,TId教师编号--教师表Teacher(TId,Tname)--TId教师编号,Tname教师姓名--成绩表SC(SId,CId,score)--SId学生编号,CId课程编号,score分数1.查询“01”课程比“02”课程成绩高的所有学生的学号;selectdistinctt1.sidassidfrom(select*fromscwherecid='01')t1leftjoin(select*fromscwherecid='02')t2ont1.sid=t2.sidwheret1.score>t2.score2.查询平均成绩大于60分的同学的学号和平均成绩;selectsid,avg(score)fromscgroupbysidhavingavg(score)>603.查询所有同学的学号、姓名、选课数、总成绩selectstudent.sidassid,sname,count(distinctcid)course_cnt,sum(score)astotal_scorefromstudentleftjoinsconstudent.sid=sc.sidgroupbysid,sname4.查询姓“李”的老师的个数;selectcount(distincttid)asteacher_cnt fromteacherwheretnamelike'李%'5.查询没学过“张三”老师课的同学的学号、姓名;selectsid,snamefromstudentwheresidnotin(selectsc.sidfromteacherleftjoincourseonteacher.tid=course.tidleftjoinsconcourse.cid=sc.cidwhereteacher.tname='张三')6.查询学过“01”并且也学过编号“02”课程的同学的学号、姓名;selectt.sidassid,snamefrom(selectsid,count(if(cid='01',score,null))ascount1,count(if(cid='02',score,null))ascount2fromscgroupbysidhavingcount(if(cid='01',score,null))>0andcount(if(cid ='02',score,null))>0)tleftjoinstudentont.sid=student.sid7.查询学过“张三”老师所教的课的同学的学号、姓名;selectstudent.sid,snamefrom(selectdistinctcidfromcourseleftjointeacheroncourse.tid=teacher.tidwhereteacher.tname='张三')courseleftjoinsconcourse.cid=sc.cidleftjoinstudentonsc.sid=student.sidgroupbystudent.sid,sname8.查询课程编号“01”的成绩比课程编号“02”课程低的所有同学的学号、姓名;selectt1.sid,snamefrom(selectdistinctt1.sidassidfrom(select*fromscwherecid='01')t1leftjoin(select*fromscwherecid='02')t2ont1.sid=t2.sidwheret1.score>t2.score)t1leftjoinstudentont1.sid=student.sid9.查询所有课程成绩小于60分的同学的学号、姓名;selectt1.sid,snamefrom(selectsid,max(score)fromscgroupbysidhavingmax(score<60))t1leftjoinstudentont1.sid=student.sid10.查询没有学全所有课的同学的学号、姓名;selectt1.sid,snamefrom(selectcount(cid),sidfromscgroupbysidhavingcount(cid)<(selectcount(distinctcid)fromcourse) )t1leftjoinstudentont1.sid=student.sid11.查询至少有一门课与学号为“01”的同学所学相同的同学的学号和姓名;distinctsc.sidfrom(selectcidfromscwheresid='01')t1leftjoinscont1.cid=sc.cid12.查询和"01"号的同学学习的课程完全相同的其他同学的学号和姓名#注意是和'01'号同学课程完全相同但非学习课程数相同的,这里我用左连接解决这个问题selectt1.sid,snamefrom(sc.sid,count(distinctsc.cid)from(selectcidfromscwheresid='01')t1#选出01的同学所学的课程leftjoinscont1.cid=sc.cidgroupbysc.sidhavingcount(distinctsc.cid)=(selectcount(distinctcid)fr omscwheresid='01'))t1leftjoinstudentont1.sid=student.sidwheret1.sid!='01'13.把“SC”表中“张三”老师教的课的成绩都更改为此课程的平均成绩;#暂跳过update题目14.查询没学过"张三"老师讲授的任一门课程的学生姓名selectsnamefromstudentwheresidnotin(selectdistinctsidfromscleftjoincourseonsc.cid=course.cidleftjointeacheroncourse.tid=teacher.tidwheretname='张三')15.查询两门及其以上不及格课程的同学的学号,姓名及其平均成绩selectt1.sid,sname,avg_scorefrom(selectsid,count(if(score<60,cid,null)),avg(score)asavg_scorefromscgroupbysidhavingcount(if(score<60,cid,null))>=2)t1leftjoinstudentont1.sid=student.sid16.检索"01"课程分数小于60,按分数降序排列的学生信息selectsid,if(cid='01',score,100)fromscwhereif(cid='01',score,100)<60orderbyif(cid='01',score,100)desc17.按平均成绩从高到低显示所有学生的平均成绩selectsid,avg(score)fromscgroupbysidorderbyavg(score)desc18.查询各科成绩最高分、最低分和平均分:以如下形式显示:课程ID,课程name,最高分,最低分,平均分,及格率selectsc.cid,cname,max(score)asmax_score,min(score)asmin_score,avg(score)asavg_score,count(if(score>=60,sid,null))/count(sid)aspass_ratefromscleftjoincourseonsc.cid=course.cidgroupbysc.cid19.按各科平均成绩从低到高和及格率的百分数从高到低顺序#这里先按照平均成绩排序,再按照及格百分数排序,selectcid,avg(score)asavg_score,count(if(score>=60,sid,null))/count(sid)aspass_rate fromscgroupbycidorderbyavg_score,pass_ratedesc20.查询学生的总成绩并进行排名selectsid,sum(score)assum_scorefromscgroupbysidorderbysum_scoredesc21.查询不同老师所教不同课程平均分从高到低显示selecttid,avg(score)asavg_scorefromcourseleftjoinsconcourse.cid=sc.cidgroupbytidorderbyavg_scoredesc22.查询所有课程的成绩第2名到第3名的学生信息及该课程成绩selectsid,rank_num,score,cidfrom(selectrank()over(partitionbycidorderbyscoredesc)asrank_nu m,sid,score,cidfromsc)twhererank_numin(2,3)23.统计各科成绩各分数段人数:课程编号,课程名称,[100-85],[85-70],[70-60],[0-60]及所占百分比selectsc.cid,cname,count(if(scorebetween85and100,sid,null))/count(sid),count(if(scorebetween70and85,sid,null))/count(sid),count(if(scorebetween60and70,sid,null))/count(sid),count(if(scorebetween0and60,sid,null))/count(sid)fromscleftjoincourseonsc.cid=course.cid groupbysc.cid,cname24.查询学生平均成绩及其名次selectsid,avg_score,rank()over(orderbyavg_scoredesc) from(selectsid,avg(score)asavg_scorefromscgroupbysid)t25.查询各科成绩前三名的记录selectsid,cid,rank1from(selectcid,sid,rank()over(partitionbycidorderbyscoredesc)asrank1 fromsc)twhererank1<=326.查询每门课程被选修的学生数selectcount(sid),cidfromscgroupbycid27.查询出只选修了一门课程的全部学生的学号和姓名selectsidfromscgroupbysidhavingcount(cid)=128.查询男生、女生人数selectssex,count(distinctsid)fromstudentgroupbyssex 29.查询名字中含有"风"字的学生信息selectsid,snamefromstudentwheresnamelike'%风%'30.查询同名同性学生名单,并统计同名人数selectssex,sname,count(sid)fromstudentgroupbyssex,snamehavingcount(sid)>=231.查询1990年出生的学生名单(注:Student表中Sage列的类型是datetime)selectsid,sname,sagefromstudentwhereyear(sage)=199032.查询每门课程的平均成绩,结果按平均成绩升序排列,平均成绩相同时,按课程号降序排列selectcid,avg(score)asavg_scorefromscgroupbycidorderbyavg_score,ciddesc33.查询不及格的课程,并按课程号从大到小排列selectcid,sid,scorefromscwherescore<60orderbyciddesc,sid34.查询课程编号为"01"且课程成绩在60分以上的学生的学号和姓名;selectsid,cid,scorefromscwherecid='01'andscore>6035.查询选修“张三”老师所授课程的学生中,成绩最高的学生姓名及其成绩selectsc.sid,sname,cname,scorefromscleftjoincoursestyle="font-weight:600;">=course.cidleftjointeacherstyle="font-weight:600;">=teacher.tidleftjoinstudentstyle="font-weight:600;">=student.sidwheretname='张三'orderbyscoredesclimit1;36.查询每门功课成绩最好的前两名selectcid,sid,rank1from(selectcid,sid,rank()over(partitionbycidorderbyscoredesc)asrank1fromsc)twhererank1<=237.统计每门课程的学生选修人数(超过5人的课程才统计)。

sql笔试题及答案

sql笔试题及答案

sql笔试题及答案1. 题目1:查询员工表中工资大于5000的员工信息,并按照工资降序排列。

答案:SELECT * FROM 员工表 WHERE 工资 > 5000 ORDER BY 工资DESC;解析:使用SELECT语句查询员工表中满足工资大于5000的记录,并使用ORDER BY子句按照工资字段降序排列。

2. 题目2:统计订单表中每个客户的订单总数,并按照订单总数升序排列。

答案:SELECT 客户, COUNT(订单编号) AS 订单总数 FROM 订单表GROUP BY 客户 ORDER BY 订单总数 ASC;解析:使用SELECT语句查询订单表中每个客户的订单总数,并使用GROUP BY子句按照客户字段进行分组,COUNT函数用于统计订单编号,AS关键字用于为统计结果起别名,ORDER BY子句按照订单总数字段升序排列。

3. 题目3:查询学生表中不重复的学生姓名和对应的年龄。

答案:SELECT DISTINCT 学生姓名, 年龄 FROM 学生表;解析:使用SELECT DISTINCT语句查询学生表中不重复的学生姓名和对应的年龄。

4. 题目4:查询订单表中订单金额最大的订单信息。

答案:SELECT * FROM 订单表 WHERE 订单金额 = (SELECT MAX(订单金额) FROM 订单表);解析:使用SELECT语句查询订单表中订单金额等于最大订单金额的订单信息,使用子查询和MAX函数找出最大订单金额。

5. 题目5:查询销售表中每个月份的总销售金额。

答案:SELECT DATE_FORMAT(销售日期, '%Y-%m') AS 月份, SUM(销售金额) AS 总销售金额 FROM 销售表 GROUP BY DATE_FORMAT(销售日期, '%Y-%m');解析:使用SELECT语句查询销售表中每个月份的总销售金额,使用DATE_FORMAT函数将销售日期格式化成年月的形式,并使用SUM函数统计销售金额,使用GROUP BY子句按照月份进行分组。

数据开发常见笔试题

数据开发常见笔试题

数据开发常见笔试题
数据开发是一个涉及数据处理、数据存储和数据分析的领域,
因此在笔试中可能涉及多个方面的问题。

以下是一些常见的数据开
发笔试题:
1. SQL基础知识,笔试中通常会涉及SQL语言的基础知识,包
括对于SELECT、UPDATE、DELETE、INSERT等基本语句的理解和应用,以及对于JOIN、GROUP BY、HAVING等高级语句的理解和运用能力。

2. 数据结构与算法,数据开发人员需要具备一定的数据结构和
算法基础,因此笔试中可能会涉及对于数组、链表、栈、队列等数
据结构的理解,以及对于排序、查找、递归等算法的应用能力。

3. 数据库设计与优化,在笔试中可能会涉及数据库设计的相关
问题,包括对于范式的理解、索引的优化、查询性能的优化等方面
的知识。

4. 数据处理工具,数据开发人员通常需要熟悉一些数据处理工具,如Hadoop、Spark、Flink等,因此笔试中可能会涉及对于这些
工具的基本原理和应用能力的考察。

5. 数据建模与ETL,在笔试中可能会涉及对于数据建模和ETL 过程的理解,包括对于维度建模、事实表与维表的设计理念,以及对于ETL过程中数据抽取、转换、加载的流程和工具的应用能力。

总之,数据开发领域的笔试题目涵盖了SQL基础、数据结构与算法、数据库设计与优化、数据处理工具和数据建模与ETL等多个方面的知识和能力要求。

希望这些内容能够对你有所帮助。

SQL笔试题2

SQL笔试题2

1、查找整个职员表的所有内容。

select *from employees2、查看雇员名字(last_name)。

select last_namefrom employees3、查看雇员编号、名字和工种。

select last_name,job_id,employee_idfrom employees4、显示所有雇员的姓名、工资并将DEPARTMENT_ID显示为(Department_Id)。

select last_name,salary,DEPARTMENT_ID as Department_Idfrom employees5、查找在60号部门工作的雇员。

select last_name+first_name name,department_idfrom employeeswhere departmet_id=606、要求查找职位为SH_CLERK和SA_MAN的雇员姓名(last_name)。

select last_name job_idfrom employeeswhere job_id in (’sh_clerk’,’sa_man’)7、查找职位不是SH_CLERK和SA_MAN的雇员工种及姓名。

将姓名显示为(first_name+last_name命名为”Name”)。

select first_name+last_name Name, job_idfrom employeeswhere job_id not in (’sh_clerk’,’sa_man’)8、查找哪些雇员的工资在2000到3000之间select *from employeeswhere salary between 2000 and 30009、查找哪些雇员的工资不在3000到5000之间select *from employeeswhere salary not between 3000 and 500010、查找first_name以D开头,后面仅有三个字母的雇员信息。

sql笔试题及答案

sql笔试题及答案

sql笔试题及答案一、选择题1. SQL中的INNER JOIN和OUTER JOIN有什么区别?A. INNER JOIN用于查询两个表中有关联的数据,而OUTER JOIN用于查询所有数据,包括没有关联的数据。

B. INNER JOIN只能查询单个表,OUTER JOIN可以查询多个表。

C. INNER JOIN和OUTER JOIN没有区别,只是不同的命名方式。

D. 以上都不是。

答案:A2. 如何在SQL中创建一个新表?A. 使用CREATE TABLE语句。

B. 使用INSERT INTO语句。

C. 使用SELECT INTO语句。

D. 使用UPDATE语句。

答案:A3. 在SQL中,如何删除表中的重复记录?A. 使用DELETE语句。

B. 使用DROP语句。

C. 使用DISTINCT关键字。

D. 使用GROUP BY语句。

答案:C4. 以下哪个SQL语句用于查询表中的数据?A. SELECT * FROM table_name;B. INSERT INTO table_name (column1, column2) VALUES (value1, value2);C. UPDATE table_name SET column1 = value1 WHERE condition;D. DELETE FROM table_name WHERE condition;答案:A5. 如何在SQL中对查询结果进行排序?A. 使用ORDER BY子句。

B. 使用GROUP BY子句。

C. 使用HAVING子句。

D. 使用COUNT()函数。

答案:A二、填空题1. 在SQL中,______关键字用于从表中选择唯一的值。

答案:DISTINCT2. 若要在SQL中查询某个字段的平均值,应使用______函数。

答案:AVG()3. ______语句可以用来向数据库表中添加新的数据行。

答案:INSERT INTO4. 若要在SQL中查询特定条件下的数据,应使用______子句。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

针对以下题目请选择正确答案(每道题目有一个或多个正确的答案)。

针对每一道题目,所有答案都选对,则该题得分,否则不得分。

1. 数据库设计的最终目标不包括()。

(选择两项)BDA. 高效B. 满足范式要求C. 安全D. 表现设计者的技术实力E. 易用F. 便于将来扩展功能和容量2. 有关数据冗余说法错误的是()。

(选择一项)CA. 数据库中,数据存在副本的现象,就是数据冗余。

B. 通过分类存储,可以有效减少数据冗余,但是会增加数据查找的复杂性。

C. 在数据库设计阶段,一定要尽最大可能避免数据冗余,最好做到无数据冗余。

D. 数据冗余通常是由于数据库设计引起的。

3. 用于表示数据库实体之间的关系图是()。

AA. 实体关系图B. 数据模型图C. 实体分类图D. 以上都不是4. 假定有一个用户表,表中包含字段:userid (int)、username (varchar)、password(varchar)等,该表需要设置主键,以下说法正确的是()。

(选择两项)ABA. 如果不能有同时重复的username和password,那么username和password可以组合在一起作为主键。

B. 此表设计主键时,根据选择主键的最小性原则,最好采用userid作为主键。

C. 此表设计主键时,根据选择主键的最小性原则,最好采用username和password作为组合键。

D. 如果采用userid作为主键,那么在userid列输入的数值,允许为空。

5. 语句alter table userinfo add constraint uq_userid unique(userid)执行成功后,为userinfo表的()字段添加了()约束。

BA. userid 主键B. userid 唯一C. uq_userid 外键D. uq_userid 检查6. 运行如下T-SQL,结果返回包含()的记录集。

Acreate table scores(scoreid int identity(1,2),score numeric(4,2) not null,courseid int)insert int scores values(90.5,null);insert into scores values(78.234,2);select * from scores;A. 1 90.50 NULL3 78.23 2B. 1 78.23 2C. 1 90.50D. 1 90.502 78.23 27. 关于子查询,以下说法正确的是()。

(选择两项)ACA. 一般来说,表连接都可以用子查询替换。

B. 一般来说,子查询都可以用表连接替换。

C. 相对于表连接,子查询适合于作为查询的筛选条件。

D. 相对于表连接,子查询适合于查看多表的数据。

8. 创建存储过程如下:create procedure scoreproc@scoreid int,@score numeric(4,2) outputasselect @score = score from scores where scoreid=@scoreid正确的调用是:CA. exec scoreproc 1,@myscore outputprint @myscoreB. exec scoreproc @id = 1,@myscore outputprint @myscoreC. declare @myscore numeric(4,2)exec scoreproc 1,@myscore outputprint @myscoreD. declare @myscore numeric(4,2)exec scoreproc @id = 1,@myscore outputprint @myscore9. 假设需要设计一张表,记录各个作者著作的所有图书信息,表的结构如下:作者(作者名称,图书1,版本1,书价1,图书二,版本2,书价2,…),该表最多符合第()范式。

AA. 一B. 二C. 三D. 不符合任何范式10. 一个学生只能就读于一个班级,而一个班级可以同时容纳多个学生,学生与班级之间是()的关系。

CA. 一对一B. 一对多C. 多对一D. 多对多11. E-R图中,关系集用下面()来表示。

BA. 矩形B. 椭圆形C. 菱形D. 圆形12. 有如下表结构,#号打头字段代表主键或组合主键,一份订单可以订购多种产品。

产品:#产品编号,产品名称,产品价格;订单:#订单编号,#产品编号,订购日期,订购数量;(订单编号与产品编号是组合主键)该表最高符合第()范式。

BA. 一B. 二C. 三D. 未规范化的13. 有如下表结构,#号打头字段代表主键或组合主键,一份订单可以订购多种产品。

产品:#产品编号,产品名称,产品价格;订单:#订单编号,总价,订购日期;订单子项:#子项编号,订单编号,产品编号,订购数量;该表最高符合第()范式。

CA. 一B. 二C. 三D. 未规范化的14. 创建sql语句如下:create table userInfo(userId int identity(-1,1), 第1行userName nvarchar(20) not null, 第2行cardNO char not null, 第3行age smallint(2), 第4行address ntext(300) 第5行)执行时,会在第()行出现错误。

(选择两项)DEA. 1B. 2C. 3D. 4E. 515. 以下关于规范设计的描述正确的是()。

(选择两项)ADA. 规范设计的主要目的是消除数据冗余。

B. 规范设计往往会增加数据库的性能。

C. 设计数据库时,规范化程度越高越好。

D. 在规范化数据库时,易于维护数据库的完整性。

16. 关于存储过程,以下说法正确的是()。

(选择一项)AA. 不能在存储过程中使用CREA TE VIEW命令。

B. T-SQL批代码的执行速度要快于存储过程。

C. 存储过程必须带有参数。

D. 存储过程不能返回结果集。

17. 已知有scores表,scoreid为主键,现在表中共有10条记录,其中一条scoreid=21。

创建视图:create view view_scoresasselect * from scores执行如下命令:delete from view_scores where (scoreid = 21)再执行如下命令:select * from scoresselect * from view_scores假定上述命令全部执行成功,将各自返回()()行记录。

DA. 10,10B. 10,9C. 9,10D. 9,918. 设计用户表时,身份证号为固定18位长,对该字段最好采用()数据类型。

(选择一项)BA. intB. charC. varcharD. text19. 授予用户someone对scores表的一些权限,正确的授权语句是()。

(选择一项)CA. grant insert , update to talbe scores on someoneB. grant insert and update to table scores on someoneC. grant insert , update on scores to someoneD. grant insert and update on scores to someone20. 建立如下数据库表:create talbe Department(departID int not null primary key,deptName varchar(20) not null)create table Employee(employeeID int not null,deptID int not null,name varchar(20) not null)要想保证Employee表中每一个雇员(employee)是唯一的,且只能属于在Department表中已经存在的部门,最有的做法是()。

(选择一项)BA. 把employeeID和deptID设为组合主键。

B. 把employeeID设为主键,同时在deptID列上创建一个外键约束。

C. 把employeeID设为主键,同时在deptID列上创建一个检查约束。

D. 在deptID列上创建一个唯一约束,同时在deptID列上创建一个外键约束。

21. 建立一张员工表,当向表中插入数据时,若不提供入职时间,就把系统当前时间作为员工入职时间插入数据库,以下说法正确的是()。

(选择一项)DA. 约束不能使用各种函数,所以无法实现要求的功能。

B. 可以使用CHECK约束实现,默认值采用日期函数getDate()。

C. 入职时间必须设为日期类型。

D. 可以使用DEFAULT约束实现,默认值采用日期函数getDate()。

22. 为了加快对某表查询的速度,应对此表建立()。

(选择一项)DA. 约束B. 存储过程C. 规则D. 索引23. 假设有表student(学生)的设计如下:id () 标识列name () 学生姓名address () 学生地址department () 所属院系departmentHead () 学院主管该表最高满足()范式。

(选择一项)BA. 一B. 二C. 三D. 不满足任何范式24. 为数据库中一个或者多个表中的数据提供另外一种查看方式的逻辑表被称为()。

(选择一项)CA. 存储过程B. 数据库关系图C. 视图D. 表25. 要建立一个教师表,包含姓名、职称、级别等字段。

若插入数据时,级别字段如果不输入,缺省值为“讲师”,最合适的实现方式是()。

AA. 为“级别”字段建立default约束。

B. 为“级别”字段建立check约束。

C. 为教师表数据输入编写一个存储过程进行控制。

26. 现有订单表orders,包含数据如下表。

若查询既订购了产品p01,又订购了产品p02的顾客编号,可以执行以下()sql语句。

(选择两项)CDA. select distinct (cid) from orders ol where ol.pid in ('p01','p02')B. select distinct (cid) from orders ol where ol.pid = 'p01' and ol.pid = 'p02'C. select distinct (o1.cid) from orders o1,orders o2 where o1.pid='p01' and o2.pid='p02' and o2.cid = o1.cidD. select distinct(cid) from orders where pid = 'p01' and cid in(select cid from orders where pid='p02')27. 关于聚集索引,以下()说法是错误的。

相关文档
最新文档