欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    sql练习题及答案.docx

    • 资源ID:29897311       资源大小:36.01KB        全文页数:18页
    • 资源格式: DOCX        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    sql练习题及答案.docx

    (一) 新建以下几个表student(学生表):snosnamesexdeptbirthage其中约束如下:(1) 学号不能存在相同的(2) 名字为非空(3) 性别的值只能是男或女(4) 系包括这几个:信息系,计算机科学系,数学系,管理系,中文系,外语系,法学系(5) 出生日期为日期格式(6) 年龄为数值型,且在0100之间create table student(sno smallint constraint a primary key,-设置学生学号为student的主键sname varchar(10) not null,sex varchar(2) constraint b check(sex in('男','女'),-检查约束性别的值只能是男或女dept varchar(20) constraint c check(dept in('信息系','计算机科学系','数学系','管理系','中文系','外语系','法学系'),-检查约束系包括这几个:信息系,计算机科学系,数学系,管理系,中文系,外语系,法学系birth datetime,age smallint constraint d check(age between 0 and 100)-检查约束年龄为数值型,且在100之间)cs(成绩表):snocnocj其中约束如下:(1)sno和cno分别参照student和course表中的sno,cno的字段(2)cj(成绩)只能在0100之间,可以不输入值create table cs(sno smallint not null references student(sno),-定义成外键cno smallint not null references course(cno),-定义成外键cj smallint constraint e check(cj between 0 and 100),-检查约束cj(成绩)只能在100之间,可以不输入值constraint f primary key(sno,cno)-定义学生学号和课程号为sc表的主键)course(课程表)cnocname其约束如下:(1)课程号(cno)不能有重复的(2)课程名(cname)非空create table course(cno smallint not null constraint g primary key,-设置课程号为course的主键cname varchar(20) not null)(三)针对学生课程数据库查询(1) 查询全体学生的学号与姓名。Select sno,sname from student(2) 查询全体学生的姓名、学号、所在系,并用别名显示出结果。Select sname as '姓名',sno as '学号',dept as '所在地' from student(3) 查询全体学生的详细记录。select * from student(4) 查全体学生的姓名及其出生年份。select sname,birth from student(5) 查询学校中有哪些系。select distinct dept from student(6) 查询选修了课程的学生学号。select sno from cs where cno is not null(7) 查询所有年龄在20岁以下的学生姓名及其年龄。select sname,age from student where age < 20(8) 查询年龄在2023岁(包括20岁和23岁)之间的学生的姓名、系别和年龄。select sname,dept,age from student where age between 20 and 23(9) 查询年龄不在2023岁之间的学生姓名、系别和年龄。select sname,dept,age from student where age<20 or age>23(10) 查询信息系、数学系和计算机科学系生的姓名和性别。select sname,sex from student where dept='信息系' or dept='数学系' or dept='计算机科学系'(11) 查询既不是信息系、数学系,也不是计算机科学系的学生的姓名和性别。select sname,sex from student where dept!='信息系' and dept!='数学系' and dept!='计算机科学系'(12) 查询所有姓刘学生的姓名、学号和性别。select sname,sno,sex from student where sname like('刘%')(13) 查询学号为2009011的学生的详细情况。(具体的学号值根据表中数据确定)select * from student where sno=5(14) 查询姓“欧阳”且全名为三个汉字的学生姓名select sname from student where sname like('欧阳_')(15) 查询名字中第2个字为“晨”字的学生的姓名和学号select sname,sno from student where sname like('_晨')(16) 查询所有不姓刘的学生姓名。select sname,sno from student where sname not like('刘%')(17) 查询sql课程的课程号和学分。select cno from course where cname='sql'(18) 查询以"DB_"开头,且倒数第3个字符为 i的课程的详细情况。select * from course where cname like('DB_%i_')(19) 查询缺少成绩的学生的学号和相应的课程号。select sno,cno from cs where cj is null(20) 查所有有成绩的学生学号和课程号。select sno,cno from cs where cj is not null(21) 查询计算机系年龄在20岁以下的学生姓名。select sname from student where age < 20 and dept='计算机科学系'(22) 查询信息系、数学系和计算机科学系学生的姓名和性别。(使用多个条件表达式)select sname,sex from student where dept='信息系' or dept='数学系' or dept='计算机科学系'(23) 查询年龄在2023岁(包括20岁和23岁)之间的学生的姓名、系别和年龄。(使用多个条件表达式)select sname,dept,age from student where age between 20 and 23 (24) 查询选修了3号课程的学生的学号及其成绩,查询结果按分数降序排列。select sno,cj from cs where cno=3 order by cj desc(25) 查询全体学生情况,查询结果按所在系的系号升序排列,同一系中的学生按年龄降序排列。select * from student order by dept asc,age desc(26) 查询学生总人数。select count(*) from student(27) 查询选修了课程的学生人数。select count(sno) from cs where cno is not null(28) 计算1号课程的学生平均成绩。select avg(cj) from cs where cno=1(29) 查询选修1号课程的学生最高分数。select max(cj) from cs where cno=1(30) 求各个课程号及相应的选课人数。select o,count(cs.sno) from course left join cson o=o group by o(31) 查询选修了3门以上课程的学生学号。select sno, count(cno) from cs group by sno having count(cno)>3(32) 查询有3门以上课程是90分以上的学生的学号及(90分以上的)课程数。select sno, count(cno) as '课程数' from cs where cj>90 group by sno having count(cno)>=3(33) 查询学生2006011选修课程的总学分。select sum(course) from course,cs where o=cs.sno and cs.sno=2006011(34) 查询每个学生选修课程的总学分。select sno,sum(cj)from cs,coursewhere o=ogroup by snounionselect sno, 0 from studentwhere sno not in (select sno from cs) (35) 查询每个学生及其选修课程的情况。select cs.sno,course.* from cs,course where o=o (36) 查询选修2号课程且成绩在90分以上的所有学生的学号、姓名select sno,sname from student where sno=(select sno from cs where cno=2 and cj>90)(37) 查询每个学生的学号、姓名、选修的课程名及成绩。select student.sno,sname,course.course,cs.cj from student,course,cs where student.sno=cs.sno and o=o(38) 查询与“刘晨”在同一个系学习的学生(分别用嵌套查询和连接查询)-嵌套查询select * from student where dept in(select dept from student where sname='刘晨')-连接查询select stu1.* from student as stu1,student as stu2 where stu1.dept=stu2.dept and stu2.sname='刘晨'-exists查询select * from student s1 where exists(select * from student s2 where s1.dept=s2.dept ands2.sname='刘晨' )(39) 查询选修了课程名为“信息系统”的学生学号和姓名select sno,sname from student where sno in(select sno from cs where cno in(select cno from course where cname='信息系统')(40) 查询其他系中比信息系任意一个(其中某一个)学生年龄小的学生姓名和年龄select sname,age from student where age <any(select age from student where dept='信息系')(41) 查询其他系中比信息系所有学生年龄都小的学生姓名及年龄。分别用ALL谓词和集函数-用ALLselect sname,age from student where age <all(select age from student where dept='信息系')-聚合函数select sname,age from student where age <(select min(age) from student where dept='信息系')(42) 查询所有选修了1号课程的学生姓名。(分别用嵌套查询和连查询)-嵌套查询select sname from student where sno in(select sno from cs where cno=1)-连接查询select sname from student,cs where student.sno=cs.sno and o=1(43) 查询没有选修1号课程的学生姓名。select sname from student where sno in(select sno from cs where cno!=1)(44) 查询选修了全部课程的学生姓名。select sname from student where not exists(select * from course where not exists (select * from cs where cs.sno=student.sno ando=o)(45) 查询至少选修了学生95002选修的全部课程的学生号码。select distinct sno from sc scx where not exists(select * from cs scy where scy.sno='95002' and not exists(select * from sc scz where scz.sno=scx.sno and o=o)(46) 查询计算机科学系的学生及年龄不大于19岁的学生的信息。select * from student where dept='计算机科学系' or age<19(47) 查询选修了课程1或者选修了课程2的学生的信息。select student.* from student,cs where student.sno = cs.sno and (o=1 or o=2)(48) 查询计算机科学系中年龄不大于19岁的学生的信息。select * from student where age<=19 and dept='计算机科学系'(49) 查询既选修了课程1又选修了课程2的学生的信息。select * from student where sno in(select sno from cs where cno='003' and sno in(select sno from cs where cno='004')-用exists查询select * from student where exists (select * from cs where student.sno=cs.sno and cno='003' and sno in(select sno from cs where cno='004')(50) 查询计算机科学系的学生与年龄不大于19岁的学生的差集。select *from student where dept='计算机科学系' and age>19(51) 通过查询求学号为1学生的总分和平均分。select sum(cj) as '总分',avg(cj)'平均分' from cs where sno=1(52) 求出每个系的学生数量select dept,count(sno) as '学生个数' from student group by dept(53) 查询平均成绩大于85的学生学号及平均成绩。select sno,avg(cj) from cs group by sno having avg(cj)>85(54) 要求查寻学生的所有信息,并且查询的信息按照年龄由高到低排序,如果年龄相等,则按照学号从低到高排序select * from student order by age desc,sno asc1在SELECT语句中DISTINCT、ORDER BY、GROUP BY和HAVING子句的功能各是什么?答 各子句的功能如下。DISTINCT:查询唯一结果。ORDER BY:使查询结果有序显示。GROUP BY:对查询结果进行分组。HAVING:筛选分组结果。2在一个SELECT语句中,当WHERE子句、GROUP BY子句和HAVING子句同时出现在一个查询中时,SQL的执行顺序如何?答 其执行顺序如下:(1)执行WHERE子句,从表中选取行。(2)由GROUP BY对选取的行进行分组。(3)执行聚合函数。(4)执行HAVING子句选取满足条件的分组。

    注意事项

    本文(sql练习题及答案.docx)为本站会员(豆****)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开