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

    SQL语句练习及答案 .doc

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

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

    SQL语句练习及答案 .doc

    sql语句练习题1数据库有如下四个表格:student(sno,sname,sage,ssex,sdpt) 学生表系表(dptno,dname)course(cno,cname, gradet, tno) 课程表sc(sno,cno,score) 成绩表teacher(tno,tname) 教师表 要求:完成以下操作1. 查询姓"欧阳"且全名为三个汉字的学生的姓名。select sname from student  where sname like “欧阳_;2. 查询名字中第2个字为"阳"字的学生的姓名和学号。 select sname,sno from student  where sname like '_阳%';3. 查询所有不姓刘的学生姓名。select sname,sno,ssex from student  where sname not like “刘%”;4. 查询db_design课程的课程号和学分。 select cno,ccredit from course where cname like 'db_design' 5. 查询以"db_"开头,且倒数第3个字符为i的课程的详细情况。 select * from course  where cname like 'db%i_ _';6. 某些学生选修课程后没有参加考试,所以有选课记录,但没有考试成绩。查询缺少成绩的学生的学号和相应的课程号。select sno,cno from sc where grade is null;7. 查所有有成绩的学生学号和课程号。select sno,cno from sc where grade is not null;8. 查询计算机系年龄在20岁以下的学生姓名。 select sname from student  where sdept= 'cs' and sage<20;9. 查询选修了3号课程的学生的学号及其成绩,查询结果按分数降序排列。 select sno,grade from sc  where cno= ' 3 '  order by grade desc;10. 查询学生总人数。select count(*) from student;11. 查询选修了课程的学生人数。select count(distinct sno) from sc;12. 计算1号课程的学生平均成绩。select avg(grade) from sc  where cno= ' 1 ';13. 查询选修1号课程的学生最高分数。select max(grade) from sc  where cno= ' 1 ';14. 查询学生选修课程的总学分数。select sum(grade) from sc,course where sno= '  ' and o=;15. 查询选修了3门以上课程的学生学号。select sno from sc group by sno  having count(*) >3;  16. 查询每个学生及其选修课程的情况。select student.*,sc.*, course.* from student,sc , course where =sc.sno and o=;17. 查询每个学生及其选修课程的情况包括没有选修课程的学生18. 查询选修2号课程且成绩在90分以上的所有学生的学号、姓名select , from student,scwhere =sc.sno and o=”2and sc.grade>90;19. 查询每个学生的学号、姓名、选修的课程名及成绩。select ,sname,ssex,sage,sdept,cno,gradefrom student left outjoin sco on(=sc.sno);20. 查询与“刘晨”在同一个系学习的学生。selectsno,sname,sdeptfrom studentwhere sdept in(select sdept from student where sname=”刘晨);21. 查询选修了课程名为“信息系统”的学生学号和姓名select sno,sname from student where sno in(select sno from sc where cno in (select cno from course where cname=”信息系统);22. 找出每个学生超过他选修课程平均成绩的课程号。select sno,cno from sc x where grade>=(select avg(grade) from sc y where y.sno=x.sno);23. 将一个新学生记录(学号:;姓名:陈冬;性别:男;所在系:is;年龄:18岁)插入到student表中。insert into student values ('','陈冬','男','is',18);24. 将学生的年龄改为22岁。update student setsage=22 where sno='';25. 将所有学生的年龄增加1岁。update student setsage=sage+1;26. 将计算机科学系全体学生的成绩置零。update sc set grade=0 where exits(selete * from student where =sc.sno and sdept=” 计算机科学系”);27. 删除学号为的学生记录delete from student where sno=”';28. 删除所有的学生选课记录。delete from sc;29. 删除2号课程的所有选课记录。delete from sc where cno='2';30. 删除计算机科学系所有学生的选课记录。delete from sc where sno in (selete sno from student where sdept=” 计算机科学系”);31. 建立信息系学生的视图。 create view is_student asselect sno,sname,sage from student where sdept='is';sql语句练习题2设教学数据库education,有三个关系:  学生关系s(sno,sname,age,sex,sdept); 学习关系sc(sno,cno,grade);  课程关系c(cno,cname,cdept,tname) 查询问题:  1:查所有年龄在20岁以下的学生姓名及年龄。select sname,sagefrom swhere sage<20;(not age>=20);2:查考试成绩有不及格的学生的学号  select distinct snofrom scwhere grade<60;3:查所年龄在20至23岁之间的学生姓名、系别及年龄。select sname,sdept,sagefrom swhere sage between 20 and 23;4:查计算机系、数学系、信息系的学生姓名、性别。 select sname,ssex from s where sdept in(cs,is,math);5:查既不是计算机系、数学系、又不是信息系的学生姓名、性别 select sname,ssex from s where sdept not in(cs,is,math);  6:查所有姓“刘”的学生的姓名、学号和性别。 select sname,sno,ssex from s where sname like刘%;7:查姓“上官”且全名为3个汉字的学生姓名。 select sname from s where sname like 上官_;8:查所有不姓“张”的学生的姓名。 select sname,sno,ssex from s where sname not like 张%;9:查db_design课程的课程号。select cno from c where cname like db_design;10:查缺考的学生的学号和课程号。 select sno,cno from sc where grade is null;11:查年龄为空值的学生的学号和姓名。 select sno,sname from s where sage is null;12:查计算机系20岁以下的学生的学号和姓名。select sno,snamefrom swhere sdept=cs and sage<20;13:查计算机系、数学系、信息系的学生姓名、性别。select sname,ssexfrom swhere sdept=cs or sdept=is or sdept=math;14:查询选修了c3课程的学生的学号和成绩,其结果按分数的降序排列。select sno,gradefrom scwhere cno=c3order by grade desc;15:查询全体学生的情况,查询结果按所在系升序排列,对同一系中的学生按年龄降序排列。select * from sorder by sdep,sage desc;16:查询学生总人数。select count(*) from s;17:查询选修了课程的学生人数。 select count(distinct sno) from sc18:计算选修了c1课程的学生平均成绩。select avg(grade)from scwhere cno=c1;19:查询学习c3课程的学生最高分数。select max(grade)from scwhere cno=c3;20:查询各个课程号与相应的选课人数。select cno, count(sno)from scgroup by cno;  21:查询计算机系选修了3门以上课程的学生的学号。select snofrom scwhere sdept=csgroup by snohaving count(*)>3; 22:求基本表s中男同学的每一年龄组(超过50人)有多少人?要求查询结果按人数升序排列,人数相同按年龄降序排列。select sage,count(sno)from swhere ssex='m'group by sagehaving count(*)>50order by 2,sage desc;23:查询每个学生及其选修课程的情况。select s.sno, sname, sage, ssex, sdept, cno, gradefrom s, scwhere s.sno=sc.sno;24:查询选修了c2课程且成绩在90分以上的所有学生。select s.sno,snamefrom s,scwhere s.sno=sc.snoand o=c2 and sc.grade>90; 25:查询每个学生选修的课程名及其成绩。select s.sno,sname,cname,sc.gradefrom s,sc,cwhere s.sno=sc.sno and o=o 26:统计每一年龄选修课程的学生人数。 select sage,count(distinct s.sno)from s,scwhere s.sno=sc.snogroup by sage;27:查询选修了c2课程的学生姓名。select sname from s where sno in(select sno from sc where cno=c2);28:查询与“张三”在同一个系学习的学生学号、姓名和系别。select sno,sname,sdept from where sdept=(select sdept from s where sname=张三); 29:查询选修课程名为“数据库”的学生学号和姓名。select sno,sname from s where sno in(select sno from sc where cno in (select cno from c where cname=db); 30:查询与“张三”在同一个系学习的学生学号、姓名和系别。select sno,sname,sdept from s where sdept=(select sdept from s where sname=张三); 31:查询选修课程名为“数据库”的学生学号和姓名。select sno,sname from s where sno in (select sno from sc where cno=(select cno from c where cname=db);32:查询选修了c2课程的学生姓名。1. select sname from s where sno in(select sno from sc where cno=c2);2. select sname from s where exists(select * from sc where sc.sno=s.sno and cno=c2); 33:查询选修了全部课程的学生姓名。select sname from s where not exists(select * from c where not exists(select * from sc where sc.sno=s.sno and o=o);  36:查询所学课程包含学生s3所学课程的学生学号 select distinct sno from sc as x where not exists(select * from sc as y where y.sno=s3 and not exists(select * from sc as z where z.sno=x.sno and o=o);sql语句练习题 3一、简单查询1、列出全部学生的信息。select * from学生2、列出软件专业全部学生的学号及姓名。select学号,姓名from学生where专业="软件"3、列出所有必修课的课号。select distinct课号from必修课4、求1号课成绩大于80分的学生的学号及成绩,并按成绩由高到低列出。select学号,成绩from选课where课号="1"and 成绩>80 order by成绩desc5、列出非软件专业学生的名单。方法一:select姓名from学生where专业<>"软件"方法二:select姓名from学生where not专业="软件"方法三:select姓名from学生where专业!="软件"6、查询成绩在7080分之间的学生选课得分情况方法一:select*from选课where成绩>=70and成绩<=80方法二:select*from选课where成绩between70and80不在此范围内的查询:(注意写出和以下语句等价的语句)select * from 选课 where成绩not between70and807、列出选修1号课或3号课的全体学生的学号和成绩。方法一:select学号,成绩from选课where课号="1"or课号="3"方法二:select学号,成绩from选课where课号in("1","3")相反条件查询:select学号,成绩from选课where课号notin("1","3")8、列出所有98级学生的学生成绩情况。select*from选课where学号like"98%"select*from选课where学号like"98_"相反条件查询:select*from选课where学号notlike"98%"9、列出成绩为空值(或不为空值)的学生的学号和课号。答案一:select学号,课号from选课where成绩isnull答案二:select学号,课号from选课where成绩isnotnull10、求出所有学生的总成绩。select sum(成绩) as总成绩 from 选课11、列出每个学生的平均成绩。select学号,avg(成绩) as 平均成绩from选课group by学号12、列出各科的平均成绩、最高成绩、最低成绩和选课人数。select课号,avg(成绩)as平均成绩,max(成绩)as最高分,;min(成绩)as最低分,count(学号) as 选课人数 from 选课 group by 课号二、连接查询(一)简单连接1、列出选修1号课的学生姓名及成绩。select 姓名,成绩 from学生,选课 where学生.学号=选课.学号 and 课号="1"2、列出选修1号课的学生的学号、姓名及成绩。select学生.学号,姓名,成绩from学生s,选课xwheres.学号=x.学号and课号="1"3、求出总分大于150的学生的学号、姓名及总成绩。select学生.学号,姓名,sum(成绩)as总成绩from学生,选课;where学生.学号=选课.学号groupby选课.学号havingsum(成绩)>150(二)自连接查询1、列出那些专业相同的学生相应的姓名及专业信息。select a.姓名,b.姓名,专业from学生a,学生bwherea.学号<>b.学号anda.专业=b.专业2、求至少选修1号课和2号课的学生的学号。selectx.学号from选课x,选课ywherex.学号=y.学号andx.课号="1"andy.课号="2"3、有以下表币种1代码c(2)、币种2代码c(2)、买入价n(8,4)、卖出价n(8,4)外汇汇率.dbf币种1c(4)、币种2c(4)、买入价n(8,4)、卖出价n(8,4)外汇代码.dbf外汇名称c(10)、外汇代码c(10)要求:将所有“外汇汇率”表中的数据插入rate表中并且顺序不变,由于“外汇汇率”中的币种1和币种2存放的是外币名称,而rate表中的币种1代码和币种2代码应该存放外币代码,所以插入时要做相应的改动,外币名称与外向代码的对应关系存储在“外汇代码”表中。selecta.外币代码as币种1代码,b.外币代码as币种2代码,;买入价,卖出价from外汇代码a,外汇汇率,外汇代码b;wherea.外币名称=外汇汇率.币种1andb.外币名称=外汇汇率.币种2intotablerate4、假定有“雇员”表(雇员号c(2),雇员姓名c(6),经理号c(2),根据雇员关系列出上一级经理及其所领导的职员清单。(教案中的例题)select"领导",s.雇员姓名,"雇员",e.雇员姓名from雇员s,雇员ewheres.雇员号=e.经理(三)超连接1、列出选修1号课的学生姓名及成绩。方法一:(使用简单连接查询格式)select姓名,成绩from学生,选课where学生.学号=选课.学号and课号="1"方法二:(使用内部连接格式)select姓名,成绩from学生innerjoin选课on学生.学号=选课.学号where课号="1"方法三:内部连接的inner短语可以省略。(与方法二等价)select姓名,成绩from学生join选课on学生.学号=选课.学号where课号="1"2、查询订货管理数据库中数据的仓库号、城市、供应商名和地址信息。方法一:使用简单连接格式。select仓库.仓库号,城市,供应商名,地址from供应商,订购单,职工,仓库;where供应商.供应商号=订购单.供应商号and订购单.职工号=职工.职工号;and职工.仓库号=仓库.仓库号方法二:使用超连接的内部连接格式。(注意连接条件的顺序)select仓库.仓库号,城市,供应商名,地址from供应商join订购单join职工join仓库;on职工.仓库号=仓库.仓库号on订购单.职工号=职工.职工号on供应商.供应商号=订购单.供应商号3、查询没有选修任何课程的学生姓名。方法一:使用嵌套查询select姓名from学生where学号notin(select学号from选课)方法二:使用超连接的右连接。select姓名from选课rightjoin学生on选课.学号=学生.学号where选课.学号<>学生.学号方法三:使用超连接的左连接。(注意表名顺序和方法二的不同)select姓名from学生leftjoin选课on选课.学号=学生.学号where选课.学号<>学生.学号三、嵌套查询(一)普通嵌套与谓词exists1、列出选修汇编语言课的学生的学号。方法一:select学号from选课where课号=(select课号from课程where课名="汇编语言")方法二:使用谓词exists。注意和方法一格式上的不同。select学号from选课whereexist(select*from课程;where课名="汇编语言"and选课.课号=课程.课号)2、求软件专业所有必修课的课程信息。方法一:select*from课程where课号in;(select课号from必修课where必修专业="软件")方法二:select*from课程whereexist(select*from必修课where必修专业="软件"and课程.课号=必修课.课号)(二)量词any、some、all1、求选修2号课的学生中,成绩比选修1号课的最低成绩要高的学生的学号和成绩。方法一:select学号,成绩from选课where课号="2"and成绩>(selectmin(成绩)from选课where课号="1")方法二:any等价于some,所以可将any换成some。select学号,成绩from选课where课号="2"and成绩>any;(select成绩from选课where课号="1")2、求选修2号课的学生中,成绩比选修1号课的任何学生的成绩都要高的那些学生的学号和成绩。方法一:select学号,成绩from选课where课号="2"and成绩>(selectmax(成绩)from选课where课号="1")方法二:select学号,成绩from选课where课号="2"and成绩>all;(select成绩from选课where课号="1")(三)内外层互相关嵌套(外层依赖于内层的查询结果,内层依赖于外层来进一步查询)1、列出每门课程中成绩最高的选课信息。select*from选课awhere成绩=(selectmax(成绩)from选课bwherea.课号=b.课号)2、列出每个学生中成绩低于本人平均成绩的选课信息。select*from选课awhere成绩<(selectavg(成绩)from选课bwherea.学号=b.学号)3、列出表“订购单2.dbf”(其内容就是在订购单表的基础上增加一个总金额字段)中每个职工经手的具有最高总金额的订购单信息。(教案中例题)selectout.职工号,out.供应商号,out.订货单号,out.订货日期,out.总金额;from订购单outwhere总金额=(selectmax(总金额)from订购单inner1;whereout.职工号=inner1.职工号)四、操作功能1、在课程表中插入新的元组(5,大学英语)。insertinto课程(课号,课名)values("5","大学英语")2、给学生表中男生的记录加上删除标记。deletefrom学生where性别="男"3、将选课表中所有课程的成绩分别提高5分。将课号为“4”的课程的成绩置为空值。update选课set成绩=成绩+5update选课set成绩=nullwhere课号="4"五、定义表结构1、建立研究生表,该表不属于任何数据库,其结构如表所示:字段名字段类型字段长度小数位数特殊要求学号c6姓名c8性别c2年龄n30入学年月d允许空值createtable研究生free(学号c(6),姓名c(8),性别c(2),年龄n(3,0),入学年月dnull)2、假设已经建立了xsk数据库,在xsk中建立“学生1”表,其结构如表所示字段名字段类型字段长度小数位数特殊要求学号c6主索引姓名c8不能为空性别c2年龄n30年龄大于10小于45是否党员l入学年月d默认值为1999年9月1日createtable学生1(学号c(6)primarykey,姓名c(8)notnull,性别c(2),;年龄n(3,0)check年龄>10and年龄<45error"年龄必须大于10小于45",是否党员l,;入学年月ddefault1999-9-1)3、在xsk数据库建立“课程1”表,其结构如表所示:字段名字段类型字段长度小数位数特殊要求课号c4主索引课程名c10不能为空学分n2createtable课程1(课号c(4)primarykey,课程名c(10)notnull,学分n(2)4、在xsk数据库建立“选课1”表,其结构如表所示:字段名字段类型字段长度小数位数特殊要求学号c6外索引与学生表建立关系课号c4外索引与课程表建立关系成绩n52createtable选课1(学号c(6)reference学生,课号c(4)reference课程,成绩n(5,2)六、修改表结构1、为“课程1”表添加一个开课学期字段,字段类型为数值型,长度为1。altertable课程1addcolumn开课学期n(1)2、修改开课学期字段为字符型,合法值为1或2。altertable课程1altercolumn开课学期c(1)check开课学期="1"or开课学期="2"3、删除“课程1”表中对开课学期字段的合法值约束,设置默认值为1。altertable课程1alter开课学期dropcheckaltertable课程1alter开课学期setdefault"1"4、删除“课程1”表中的开课学期字段。修改课程名字段为“课名”字段。altertable课程1drop开课学期rename课程名to课名5、在“学生1”表的“年龄”字段上建立候选索引。altertable学生1addunique年龄tag年龄6、在“学生1”表中添加一个出生日期字段,删除年龄字段。altertable学生1add出生日期daltertable学生1dropuniquetag年龄drop年龄

    注意事项

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

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




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

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

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

    收起
    展开