SQL笔试题
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笔试题目:
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 笔试题,题目涵盖了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题及答案解析~今天这篇文章,是关于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笔试题及答案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
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笔试题及答案一、选择题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中查询特定条件下的数据,应使用______子句。
SQL常考笔试题
订单:#订单编号,总价,订购日期;
订单子项: #子项编号,订单编号,产品编号,订购数量;
该表最高符合第()范式。C
A. 一
B. 二
C. 三
D. 未规范化的
14. 创建sql语句如下:
create table userInfo
(
userId int identity(-1,1), 第1行
针对以下题目请选择正确答案(每道题目有一个或多个正确的答案)。针对每一道题目,所有答案都选对,则该题得分,否则不得分。
1. 数据库设计的最终目标不包括()。 (选择两项)BD
A. 高效
B. 满足范式要求
C. 安全
D. 表现设计者的技术实力
E. 易用
F. 便于将来扩展功能和容量
2. 有关数据冗余说法错误的是()。(选择一项)C
userName nvarchar(20) not null, 第2行
cardNO char not null, 第3行
age smallint(2), 第4行
address ntext(300) 第5行
)
执行时,会在第()行出现错误。(选择两项)DE
A. 1
A. exec scoreproc 1,@myscore output
print @myscore
B. exec scoreproc @id = 1,@myscore output
print @myscore
C. declare @myscore numeric(4,2)
exec scoreproc 1,@myscore output
数据库笔试题答案
XXXX感谢您对本套试题的回答,首先请您填写上您的姓名(____________),本套试题将作为XXXX入职的参考,多谢您的重视。
本套试题分三部分:填空题(10分)、选择题(20分),SQL基础题(30)、简答题(20)、综合题(30)。
时间60分钟,满分110分。
一、填空题(每题2分,共10分)1. 索引字段值不唯一,应该使用的索引类型为( 普通索引)2. 只有满足联接条件的记录才包含在查询结果中,这种联接为( 内联接)3. E-R模型的组成包括那些元素( 实体)( 属性)( 关系)4. 事务所具有的特性有( 原子性)( 一致性)( 隔离性)( 持久性)5、结构化程序设计的三种基本逻辑结构是(顺序结构),(选择结构),(循环结构)。
二、选择提(每题1分,共20分)1、在删除整表数据,同时保留表结构时,采用( C )的效率比(A )要高;A. deleteB. drop tableC. truncate Table2、数据库管理系统中,能实现对数据库中的数据进行插入/修改/删除的功能称为(C);A.数据定义功能B.数据管理功能C.数据操作功能D.数据控制功能3、24、在关系模型中,实现"关系中不允许出现相同的元组"的约束是通过(B)。
A:候选键B:主键C:外键D:超键4、数据库管理系统DBMS S是(D);A.信息管理的应用软件B.数据库系统+应用程序C.管理中的数据库D.管理数据的软件5、关系数据库中,实现表与表之间的联系是通过(B)。
A、实体完整性规B、参照完整性规则C、用户自定义的完整性D、值域6、设有部门和职员两个实体,每个职员只能属于一个部门,一个部门可以有多名职员,则部门与职员实体之间的联系类型(B)。
A、m:nB、1:mC、m:1D、1:17、设有课程和学生两个实体,每个学生可以选修多个课程,一个课程可以有多名学生选修,则课程与学生实体之间的联系类型( A )。
sql经典笔试题一(含答案)
二编写SQL语句(5分/题)501) 创建一张学生表,包含以下信息,学号,姓名,年龄,性别,家庭住址,联系电话2) 修改学生表的结构,添加一列信息,学历3) 修改学生表的结构,删除一列信息,家庭住址4) 向学生表添加如下信息:学号姓名年龄性别联系电话学历1 A 22 男123456 小学2 B 21 男119 中学3 C 23 男110 高中4 D 18 女114 大学5) 修改学生表的数据,将电话号码以11开头的学员的学历改为“大专”6) 删除学生表的数据,姓名以C开头,性别为‘男’的记录删除7) 查询学生表的数据,将所有年龄小于22岁的,学历为“大专”的,学生的姓名和学号示出来9) 查询出所有学生的姓名,性别,年龄降序排列10) 按照性别分组查询所有的平均年龄三填空(3分/题) 361)索引分为___聚簇索引__和_ 非聚簇索引___2) TRUNCATE TABLE(删除所有,不能回滚)命令是什么含义?和Delete from(删除一个或者多个记录,能回滚)表名有什么区别?2)说出以下聚合数的含义:avg ,sum ,max ,min , count ,count(*)Avg 求平均值Sum 求和Max 最大值Min 最小值Count 返回满足条件的记录Count(*)函数返回表中所有记录数:8) 视图可以更新吗?会影响到实际表吗?视图是可以更新的,视图只是基于基本表上的虚拟表,对视图的更新会直接影响到实际表create table student(stu_no varchar(4) primary key,stu_name varchar(10) not null,stu_age decimal(3,0),stu_sex char(2),stu_address varchar(255),stu_tel number(20))select * from studentalter table student add stu_xl varchar(20)alter table student drop column stu_addressinsert into student(stu_no,stu_name,stu_age,stu_sex,stu_tel,stu_xl) values('1','A','22','ÄÐ','123456','Сѧ')insert into student(stu_no,stu_name,stu_age,stu_sex,stu_tel,stu_xl) values('2','B','21','ÄÐ','119','ÖÐѧ');insert into student(stu_no,stu_name,stu_age,stu_sex,stu_tel,stu_xl) values('3','C','23','ÄÐ','110','¸ßÖÐ');insert into student(stu_no,stu_name,stu_age,stu_sex,stu_tel,stu_xl) values('4','D','18','Å®','114','´óѧ');insert into student(stu_no,stu_name,stu_age,stu_sex,stu_tel,stu_xl) values('5','D','18','Å®','114','´óѧ');update student set stu_xl='´óר'where stu_tel like'11%'delete from student where stu_sex='ÄÐ'and stu_name like'C%'select stu_no,stu_name from student where stu_xl='´óר'and stu_age <'22'select stu_name,stu_sex from student order by stu_age descselect avg(stu_age),stu_sex from student where stu_sex='ÄÐ'group by stu_sex查询重复个数select stu_name,count(*) from student group by stu_name having count(*)>1。
sql数据库基础知识笔试题
sql数据库基础知识笔试题1. 什么是SQL数据库?SQL(Structured Query Language)是一种用于管理关系数据库管理系统(RDBMS)的编程语言。
它用于创建、修改和管理数据库中的数据,并可以执行查询和数据操作。
2. SQL数据库的常见类型有哪些?常见的SQL数据库类型包括:- MySQL:开源的关系数据库管理系统,支持跨平台使用,被广泛应用于Web 开发。
- Oracle:一个全功能的关系数据库管理系统,适用于大型企业级应用。
- Microsoft SQL Server:由微软开发的关系数据库管理系统,适用于Windows 环境。
- PostgreSQL:开源的关系数据库管理系统,拥有很强的扩展性和兼容性。
- SQLite:嵌入式关系数据库管理系统,适用于小型应用或移动设备。
3. SQL数据库的基本操作有哪些?SQL数据库的基本操作包括:- 创建数据库:CREATE DATABASE database_name;- 删除数据库:DROP DATABASE database_name;- 创建表:CREATE TABLE table_name (column1 datatype, column2 datatype, ...);- 删除表:DROP TABLE table_name;- 插入数据:INSERT INTO table_name (column1, column2, ...) VALUES (value1, value2, ...);- 更新数据:UPDATE table_name SET column1 = value1, column2 = value2, ... WHERE condition;- 删除数据:DELETE FROM table_name WHERE condition;- 查询数据:SELECT column1, column2, ... FROM table_name WHERE condition;4. SQL数据库中的数据类型有哪些?SQL数据库中常见的数据类型包括:- 整数类型:INT, SMALLINT, BIGINT- 浮点数类型:FLOAT, DOUBLE- 字符串类型:CHAR, VARCHAR- 日期和时间类型:DATE, TIME, DATETIME- 布尔类型:BOOLEAN5. 什么是SQL语句的约束?SQL语句的约束用于限制对数据库中数据的操作。
SQL高级复习题笔试
SQL高级复习题类型:(笔试)范围:内测/月考日期:时长:1小时总分数:100 分姓名:准考证号:证件号码:理论部分注意:考试结束试卷必须交回,答案填写在答题卡上1.( )不属于任何文件组。
(选一项)A、次数据文件B、主数据文件C、日志文件D、其他2.E-R图中,关系集用下面( )来表示。
(选一项)A、矩形B、椭圆形C、菱形D、圆形3.SQL Server数据库有2种登录认证方式。
其中在( )方式下,需要客户端应用程序连接时提供登录时需要的用户标识和密码。
(选一项)A、Windows身份验证。
B、以超级用户身份登录时。
C、SQL Server 身份验证。
D、以系统身份登录时。
4.SQL Server数据库中,下列不属于T-SQL事务管理语句的是(选一项)A、BEGIN TRANSACTION;B、END TRANSACTION;C、COMMIT TRANSACTION;D、ROLLBACK TRANSACTION;5.Sql server中,( )命令用来删除表对象。
(选一项)A、DropB、RemoveC、TruncateD、Delete6.SQLServer2005中,已知执行语句:select count(score),sum(score)from score返回的结果是10和750,那么执行语句:select avg(score) from score,返回的结果是(选一项)A、10B、75C、750D、75007.SQLSever 2005中数据库中,关键字()标志着批处理的结束。
(选一项)A、ENDB、GOC、FINISHD、PRINT8.UNIQUE约束和主键约束也是哪种完整性的体现(选一项)A、域完整性B、引用完整性C、实体完整性D、其他9.对于下面的存储过程:CREATE PROCEDURE Myp1 @p Int AsSelect Studentname,Age from Students where Age=@p假如你要在Students表中查找年龄是18岁的学生,()可以正确的调用这个存储过。
常见SQL笔试题
常见S Q L笔试题(总9页) -CAL-FENGHAI.-(YICAI)-Company One1-CAL-本页仅作为文档封面,使用请直接删除SQL笔试题1.统计查询SQL练习数据库中表结构如下,字段分别任rg(日期),shengfu(胜负),考察group by 语句的使用:2005-05-09 胜2005-05-09 胜2005-05-09 负2005-05-09 负2005-05-10 胜2005-05-10 负2005-05-10 负如果要生成下列结果, 该如何写sql 语句?胜负2005-05-09 2 22005-05-10 1 2答案:1)select rq, sum(case when shengfu='胜' then 1 else 0 end)'胜',sum(case when shengfu='负'then 1 else 0 end)'负' from #tmp group by rq2) select N.rq,N.胜,M.负from (select rq,胜=count(*) from #tmp where shengfu='胜'group by rq)N inner join(select rq,负=count(*) from #tmp where shengfu='负'group by rq)M on N.rq=M.rq3)select a.col001,a.a1 胜,b.b1 负from(select col001,count(col001) a1 from temp1 where col002='胜' group by col001) a,(select col001,count(col001) b1 from temp1 where col002='负' group by col001) bwhere a.col001=b.col0012.条件判断SQL练习表中有A B C 三列,用SQL 语句实现:当A 列大于B 列时选择A 列否则选择B 列,当B 列大于C 列时选择B 列否则选择C 列答案:select (case when a>b then a else b end ),(case when b>c then b esle c end)from table_name3.日期统计SQL练习请取出tb_send 表中日期(SendTime 字段) 为当天的所有记录(SendTime 字段为datetime 型,包含日期与时间)答案:select * from tb where datediff(dd,SendTime,getdate())=04.统计查询SQL练习有一张表,里面有3 个字段:语文,数学,英语。
T-SQL内部测试笔试题和答案1
T-SQL内部测试笔试题和答案1《MySchool数据库设计优化》内部测试-笔试试卷1)在SQLServer中,为数据库表建立索引能够()。
A.防止非法的删除操作B.防止非法的插入操作C.提高查询性能D.节约数据库的磁盘空间2)在SQLSERVER中,创建一个表使用()语句。
A.INSERTB.DROPC.CREATED.ALERT3)在SQLSERVER中,下面关于视图说法错误的是()。
A.对查询执行的大多数操作也可以在视图上进行B.使用视图可以增加数据库的安全性C.不能利用视图增加,删除,修改数据库中的数据D.视图使用户更灵活的访问所需要的数据4)在数据库设计中,用E-R图来描述信息结构但不涉及信息在计算机中的表示,它是数据库设计的()阶段。
A.需求分析B.概要设计C.逻辑设计D.物理设计5)在SQLServer数据库中,如果强制要求grade表中的学员必须是Student表中存在的学员,以下描述正确的是()。
A.在grade表中创建外键约束B.在grade表中创建检查约束C.在grade表中创建唯一约束D.在grade表中创建默认约束6)在SQLServer数据库中,下面的T-SQL语句段执行第三句时出现错误,数据库中的内容修改情况是()。
BEGINTRANSACTIONROLLBACKTRANSACTIONELSECOMMITTRANSACTION7)A.B.C.D.Account表中id为1的记录中balance字段的值被修改为7800Account表中id为1的记录中balance字段的值被修改为9000Account表中id为1的记录中balance字段的值不变不可能发生这种情况8)9)UPDATEtuMarkSETwrittenE某am=writtenE某am+5WHEREwrittenE某am<60ELSEBREAKSELECTtuNo,成绩=CASEWHENwrittenE某am<60THEN'不及格'ELSE'及格'ENDFROMtuMarkA.给不及格的学员反复提5分直到通过为止,最后展示所有学员是否及格的情况信息B.给不及格的学员提10分,最后展示所有学员是否及格的情况信息C.给不及格的学员提5分,提分后仍不及格的学员再提5分,最后展示所有学员是否及格的情况信息在SQLSERVER中,下面关于子查询的说法你认为正确的是()。
hive sql笔试题
hive sql笔试题Hive SQL是一种用于处理大规模数据集的数据仓库工具,它类似于传统的关系型数据库,但是可以在Hadoop集群上运行。
在实际应用中,Hive SQL被广泛应用于大数据分析和数据处理任务中。
本文将介绍一些常见的Hive SQL笔试题,并提供详细的解答和解释。
1.在Hive中创建一个数据库解答:在Hive中,可以使用CREATE DATABASE语句来创建一个数据库。
例如,要创建一个名为test的数据库,可以执行以下命令:CREATE DATABASE test;2.在Hive中创建一个表解答:在Hive中,可以使用CREATE TABLE语句来创建一个表。
例如,要创建一个名为employees的表,包含id、name和salary列,可以执行以下命令:CREATE TABLE employees (id INT。
name STRING。
salary DECIMAL(10, 2));3.将数据从HDFS加载到Hive表中解答:可以使用LOAD DATA INPATH语句将数据从HDFS加载到Hive表中。
假设数据位于HDFS的/user/data目录下,要将数据加载到名为employees的表中,可以执行以下命令:LOAD DATA INPATH '/user/data' INTO TABLE employees;4.查看Hive表中的数据解答:可以使用SELECT语句查看Hive表中的数据。
例如,要查看employees 表中的所有数据,可以执行以下命令:SELECT * FROM employees;5.在Hive中删除一个表解答:可以使用DROP TABLE语句删除一个Hive表。
例如,要删除名为employees的表,可以执行以下命令:DROP TABLE employees;6.在Hive中插入一条数据解答:可以使用INSERT INTO语句向Hive表中插入一条数据。
SQL笔试题
1 : This symbol, When you put infront of a line in the parameter file, signifiesa comment1. $2. @3. #4. !答案【3】2 : When you change a parameter value in the parameter file, when will that change takes affect?1. Immediately after saving the parameter file2. At the first CHECKPOINT after saving the paramter file3. When the DBWR finishes writing all the dirty buffers to the disk4. At the next instance startup答案【4】3 : ALTER SYSTEM DEFFERED command modifies the global parameters for1. existing sessions after a certain amount of time2. new sessions only3. existing and new sessions4. depends on the SPIN_COUNT initialization parameter答案【2】4 : The location where debugging trace files for back ground processes are written, is specified by1. LOGFILE_DEST2. ORACLE_HOME3. BACKGROUND_DUMP_DEST4. CORE_DUMP_DEST答案【3】5 : In case of heavy contention for latches,set the LOG_SIMULTANEOUS_COPIES initialization parameter to1. Twice the number of CPUs2. Same as the DB Block Buffers3. Same as the Shared Pool Size4. None of the above答案【4】6 : What is the first step in manually creating a new database1. Startup an instance2. Start SQL*Plus and connect to Oracle as SYSDBA3. Check the instance identifier for your system4. Create a parameter file答案【4】7 : Which of the following is true regarding control files1. Oracle recommeds atleast two control files stored on two separate disks2. Oracle recommeds atleast two control files stored on one disk3. Oracle recommeds to store one control file4. One control file is not enough to run a database答案【1】8 : Tom created a database with a DB_BLOCK_SIZE of 2k, he wants to increase this to 4k, what is his next step1. Issue ALTER SYSTEM SET DB_BLOCK_SIZE=4k command2. recreate the database with the new setting3. It can be done in both the ways4. the DB_BLOCK_SIZE cannot be 4k答案【2】9 : How many rollback segments are required for Oracle to startup apart from SYSTEM rollback segment1. Oracle can start with just the system rollback segment2. Oracle Needs at least 3 rollback segments before it can start3. Oracle Needs a Temp Rollback Segment before it can start4. None of the above答案【1】10 : The unit of measurement for DB_BLOCK_SIZE intialization parameter is1. BLOCKS2. BYTE3. PAGE4. ROW答案【2】11 : This table space is a must before you run the database instance1. ROLLBACK2. TOOLS3. TEMP4. SYSTEM答案【4】12 : Which initialization parameter determines the rollback segments that can be used by Oracle1. ROLLBACKS2. LOGFILE GROUP3. ROLLBACK_SEGMENTS4. DBA_ROLLBACK_SEGS答案【3】13 : Which of the following is a valid but undocumented parameter in Oracle1. _CORRUPT_RBS2. _CORRUPT_REDO3. _CORRUPT_ROLLBACK_SEGMENTS4. None of the above答案【3】14 :Physical Disk Resources in an Oracle Database are1. Control Files2. Redo Log Files3. Data Files4. All of the above答案【4 】15 :What is a Schema1. A Physical Organization of Objects in the Database2. A Logical Organization of Objects in the Database3. A Scheme Of Indexing4. None of the above答案【2 】16:Oracle Instance is1. Oracle Memory Structures2. Oracle I/O Structures3. Oracle Background Processes4. All of the Above答案【4】17.关系数据库中的视图属于4 个数据抽象级别中的(A )A 外部模型B 概念模型C 逻辑模型D 物理模型18.在下列关于关系的陈述中,错误的是(B )A 表中任意两行的值不能相同B 表中任意两列的值不能相同C 行在表中的顺序无关紧要D 列在表中的顺序无关紧要19.为了防止一个用户的工作不适当地影响另一个用户,应该采取(C )A 完整性控制B 安全性控制C 并发控制D 访问控制20.关系数据库中,实现实体之间的联系是通过表与表之间的(D )A 公共索引B 公共存储C 公共元组D 公共属性21.在MS SQL Server 中,用来显示数据库信息的系统存储过程是(D)A sp_ dbhelpB sp_ dbC sp_ helpD sp_ helpdb22.下面系统中不属于关系数据库管理系统的是(C )A OracleB MS SQL ServerC IMSD DB223.SQL 语言中,删除一个表的命令是(B)A DELETEB DROPC CLEARD REMORE24.如果在关系的分片过程中使用了选择操作,则不可能是(B )A 水平分片B 垂直分片C 导出分片D 混合分片25.在一个实体集中,一个实体实例(一行)与另外多个实例(多行)相关,则这个实体称为(A)A 递归实体B 弱实体C 复合实体D 联系实体26.存在一个等待事务集{T0,T1,⋯,T n},其中T0 正等待被T1 锁住的数据项,T1 正等待被T2 锁住的数据项,T n-1 正等待被T n 锁住的数据项,且T n 正等待被T0 锁住的数据项,则系统的工作状态处于(D )A 并发处理B 封锁C 循环D 死锁27.在分布式数据库中,若存取数据时只需指出片段名称,不必指出片段地址,则称系统具有(B )A 片段透明性B 地址透明性C 局部映象透明性D 异地透明性28.某学校规定,每一个班级至多有50 名学生,至少有10 名学生;每一名学生必须属于一个班级。
mysql笔试题写sql语句
mysql笔试题写sql语句
好的,以下是一些MySQL笔试题的SQL语句示例:
1.查询表格A中所有学生的姓名和年龄,并按照年龄升序排列:
Sql*
SELECT name, age FROM A ORDER BY age ASC;
2.查询表格A中年龄大于等于18岁的学生的姓名和年龄,并按年龄降序排列:
Sql*
SELECT name, age FROM A WHERE age >= 18ORDER BY age DESC;
3.查询表格A中年龄最大的学生的姓名和年龄:
Sql*
SELECT name, MAX(age) FROM A;
4.查询表格A中年龄最小的学生的姓名和年龄:
Sql*
SELECT name, MIN(age) FROM A;
5.查询表格A中姓为“张”的学生的人数:
Sql*
SELECT COUNT(*) FROM A WHERE name LIKE'张%';
6.查询表格A中姓为“张”且年龄小于等于20岁的学生的人数:
Sql*
SELECT COUNT(*) FROM A WHERE name LIKE'张%'AND age <= 20;。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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. 关于聚集索引,以下()说法是错误的。