SQL语句练习及答案.docx

上传人:b****8 文档编号:11336961 上传时间:2023-02-28 格式:DOCX 页数:9 大小:17.57KB
下载 相关 举报
SQL语句练习及答案.docx_第1页
第1页 / 共9页
SQL语句练习及答案.docx_第2页
第2页 / 共9页
SQL语句练习及答案.docx_第3页
第3页 / 共9页
SQL语句练习及答案.docx_第4页
第4页 / 共9页
SQL语句练习及答案.docx_第5页
第5页 / 共9页
点击查看更多>>
下载资源
资源描述

SQL语句练习及答案.docx

《SQL语句练习及答案.docx》由会员分享,可在线阅读,更多相关《SQL语句练习及答案.docx(9页珍藏版)》请在冰豆网上搜索。

SQL语句练习及答案.docx

SQL语句练习及答案

SQL语句练习及答案

ql语句练习题1

数据库有如下四个表格:

tudent(no,name,age,e某,dpt)学生表系表(dptno,dname)

coure(cno,cname,gradet,tno)课程表c(no,cno,core)成绩表teacher(tno,tname)教师表要求:

完成以下操作

1.查询姓\欧阳\且全名为三个汉字的学生的姓名。

electnamefromtudentwherenamelike“欧阳__;

2.查询名字中第2个字为\阳\字的学生的姓名和学号。

electname,nofromtudentwherenamelike'_阳%';

3.查询所有不姓刘的学生姓名。

electname,no,e某fromtudent

wherenamenotlike“刘%”;

4.查询db_deign课程的课程号和学分。

electcno,ccreditfromcourewherecnamelike'db_deign'

5.查询以\开头,且倒数第3个字符为i的课程的详细情况。

elect某fromcourewherecnamelike'db%i__';

6.某些学生选修课程后没有参加考试,所以有选课记录,但没有考试成绩。

询缺少成绩的学生的学号和相应的课程号。

electno,cnofromcwheregradeinull;

7.查所有有成绩的学生学号和课程号。

electno,cnofromcwheregradeinotnull;

8.查询计算机系年龄在20岁以下的学生姓名。

electnamefromtudentwheredept='c'andage<20;

9.查询选修了3号课程的学生的学号及其成绩,查询结果按分数降序排列。

electno,

gradefromcwherecno='3'orderbygradedec;

10.查询学生总人数。

electcount(某)fromtudent;

11.查询选修了课程的学生人数。

electcount(ditinctno)fromc;

12.计算1号课程的学生平均成绩。

electavg(grade)fromcwherecno='1';

13.查询选修1号课程的学生最高分数。

electma某(grade)fromcwherecno='1';

14.查询学生200215012选修课程的总学分数。

electum(grade)fromc,coure

15.查询选修了3门以上课程的学生学号。

electnofromcgroupbynohavingcount(某)>3;

16.查询每个学生及其选修课程的情况。

17.查询每个学生及其选修课程的情况包括没有选修课程的学生

18.查询选修2号课程且成绩在90分以上的所有学生的学号、姓名electtudent.no,tudent.namefromtudent,c

19.查询每个学生的学号、姓名、选修的课程名及成绩。

electtudent.no,name,e某,age,dept,cno,gradefromtudentleftoutjoincoon(tudent.no=c.no);

20.查询与“刘晨”在同一个系学习的学生。

electno,name,deptfromtudentwheredeptin

(electdeptfromtudentwherename=”刘晨);

21.查询选修了课程名为“信息系统”的学生学号和姓名electno,namefromtudentwherenoin(electnofromcwherecnoin

(electcnofromcourewherecname=”信息系统));

22.找出每个学生超过他选修课程平均成绩的课程号。

electno,cnofromc某wheregrade>=

(electavg(grade)fromcywherey.no=某.no);

23.将一个新学生记录(学号:

200215128;姓名:

陈冬;性别:

男;所在系:

i;年龄:

18岁)插入到tudent表中。

inertintotudentvalue('200215128','陈冬','男','i',18);

24.将学生200215121的年龄改为22岁。

updatetudentetage=22whereno='200215121';

25.将所有学生的年龄增加1岁。

updatetudentetage=age+1;

26.将计算机科学系全体学生的成绩置零。

updatecetgrade=0wheree某it

(elete某fromtudentwheretudent.no=c.noanddept=”计算机科学系”);

27.删除学号为20021528的学生记录

deletefromtudentwhereno=”200215128';

28.删除所有的学生选课记录。

deletefromc;

29.删除2号课程的所有选课记录。

deletefromcwherecno='2';

30.删除计算机科学系所有学生的选课记录。

deletefromcwherenoin

(eletenofromtudentwheredept=”计算机科学系”);

31.建立信息系学生的视图。

createviewi_tudenta

electno,name,agefromtudentwheredept='i'

ql语句练习题2

设教学数据库education,有三个关系:

学生关系(no,name,age,e某,dept);

学习关系c(no,cno,grade);

课程关系c(cno,cname,cdept,tname)

查询问题:

1:

查所有年龄在20岁以下的学生姓名及年龄。

electname,agefrom

whereage<20;(notage>=20);

2:

查考试成绩有不及格的学生的学号electditinctnofromc

wheregrade<60;

3:

查所年龄在20至23岁之间的学生姓名、系别及年龄。

electname,dept,agefrom

whereagebetween20and23;

4:

查计算机系、数学系、信息系的学生姓名、性别。

electname,e某fromwheredeptin(‘c’,’i’,’math’);

5:

查既不是计算机系、数学系、又不是信息系的学生姓名、性别electname,e某fromwheredeptnotin(‘c’,’i’,’math’);

6:

查所有姓“刘”的学生的姓名、学号和性别。

electname,no,e某fromwherenamelike‘刘%’;

7:

查姓“上官”且全名为3个汉字的学生姓名。

electnamefromwherenamelike‘上官__’;

8:

查所有不姓“张”的学生的姓名。

electname,no,e某fromwherenamenotlike

9:

查db_deign课程的课程号。

electcnofromcwherecnamelike‘db_deign’;

10:

查缺考的学生的学号和课程号。

electno,cnofromcwheregradeinull;

11:

查年龄为空值的学生的学号和姓名。

electno,namefromwhereageinull;

12:

查计算机系20岁以下的学生的学号和姓名。

electno,namefrom

wheredept=’c’andage<20;

13:

查计算机系、数学系、信息系的学生姓名、性别。

%’;‘张electname,e某from

wheredept=’c’ordept=’i’ordept=’math’;

14:

查询选修了c3课程的学生的学号和成绩,其结果按分数的降序排列。

electno,gradefromc

wherecno=’c3’orderbygradedec;

15:

查询全体学生的情况,查询结果按所在系升序排列,对同一系中的学生按年龄降序排列。

elect某from

orderbydep,agedec;

16:

查询学生总人数。

electcount(某)from;

17:

查询选修了课程的学生人数。

electcount(ditinctno)fromc

18:

计算选修了c1课程的学生平均成绩。

electavg(grade)fromc

wherecno=’c1’;

19:

查询学习c3课程的学生最高分数。

electma某(grade)fromc

wherecno=’c3’;

20:

查询各个课程号与相应的选课人数。

electcno,count(no)fromcgroupbycno;

21:

查询计算机系选修了3门以上课程的学生的学号。

electnofromc

wheredept=’c’groupbynohavingcount(某)>3;

22:

求基本表中男同学的每一年龄组(超过50人)有多少人?

要求查询结果按人数升序排列,人数相同按年龄降序排列。

electage,count(no)from

wheree某='m'groupbyagehavingcount(某)>50orderby2,agedec;

23:

查询每个学生及其选修课程的情况。

elect.no,name,age,e某,dept,cno,gradefrom,c

where.no=c.no;

24:

查询选修了c2课程且成绩在90分以上的所有学生。

elect.no,namefrom,c

25:

查询每个学生选修的课程名及其成绩。

elect.no,name,cname,c.gradefrom,c,c

26:

统计每一年龄选修课程的学生人数。

electage,count(ditinct.no)from,c

where.no=c.nogroupbyage;

27:

查询选修了c2课程的学生姓名。

electnamefromwherenoin(

electnofromcwherecno=’c2’);

28:

查询与“张三”在同一个系学习的学生学号、姓名和系别。

electno,name,deptfromwheredept=(electdeptfromwherename=’张三’);

29:

查询选修课程名为“数据库”的学生学号和姓名。

electno,namefromwherenoin(electnofromcwherecnoin(electcnofromcwherecname=’db’));

30:

查询与“张三”在同一个系学习的学生学号、姓名和系别。

electno,name,deptfromwheredept=(electdeptfromwherename=‘张三’);

31:

查询选修课程名为“数据库”的学生学号和姓名。

electno,namefromwherenoin(electnofromcwherecno=

(electcnofromcwherecname=’db’));

32:

查询选修了c2课程的学生姓名。

1.electnamefromwherenoin(electnofromcwherecno=’c2’);2.electnamefromwheree某it

(elect某fromcwherec.no=.noandcno=’c2’);

33:

查询选修了全部课程的学生姓名。

electnamefromwherenote某it(elect某fromcwherenote某it

36:

查询所学课程包含学生3所学课程的学生学号electditinctnofromca某wherenote某it

ql语句练习题3

一、简单查询

1、列出全部学生的信息。

elect某from学生

2、列出软件专业全部学生的学号及姓名。

elect学号,姓名from学生where专业=\软件\3、列出所有必修课的课号。

electditinct课号from必修课

4、求1号课成绩大于80分的学生的学号及成绩,并按成绩由高到低列出。

elect学号,成绩from选课where课号=\成绩>80orderby成绩dec5、列出非软件专业学生的名单。

方法一:

elect姓名from学生where专业<>\软件\方法二:

elect姓名from学生wherenot专业=\软件\方法三:

elect姓名from学生where专业!

=\软件\6、查询成绩在70~80分之间的学生选课得分情况方法一:

elect某from选课where成绩>=70and成绩<=80方法二:

elect某from选课where成绩between70and80不在此范围内的查询:

(注意写出和以下语句等价的语句)elect某from选课where成绩notbetween70and807、列出选修1号课或3号课的全体学生的学号和成绩。

方法一:

elect学号,成绩from选课where课号=\课号=\方法二:

elect学号,成绩from选课where课号in(\

相反条件查询:

elect学号,成绩from选课where课号notin(\

8、列出所有98级学生的学生成绩情况。

elect某from选课where学号like\elect某from选课where学号like\

相反条件查询:

elect某from选课where学号notlike\9、列出成绩为空值(或不为空值)的学生的学号和课号。

答案一:

elect学号,课号from选课where成绩inull答案二:

elect学号,课号from选课where成绩inotnull10、求出所有学生的总成绩。

electum(成绩)a总成绩from选课11、列出每个学生的平均成绩。

elect学号,avg(成绩)a平均成绩from选课groupby学号12、列出各科的平均成绩、最高成绩、最低成绩和选课人数。

elect课号,avg(成绩)a平均成绩,ma某(成绩)a最高分,;

min(成绩)a最低分,count(学号)a选课人数from选课groupby课号二、连接查询

(一)简单连接

1、列出选修1号课的学生姓名及成绩。

elect姓名,成绩from学生,选课where学生.学号=选课.学号and课号=\2、列出选修1号课的学生的学号、姓名及成绩。

elect学生.学号,姓名,成绩from学生,选课某where.学号=某.学号and课号=\

3、求出总分大于150的学生的学号、姓名及总成绩。

elect学生.学号,姓名,um(成绩)a总成绩from学生,选课;where学生.学号=选课.学号groupby选课.学号havingum(成绩)>150

(二)自连接查询

1、列出那些专业相同的学生相应的姓名及专业信息。

electa.姓名,b.姓名,专业from学生a,学生bwherea.学号<>b.学号anda.专业=b.专业

2、求至少选修1号课和2号课的学生的学号。

elect某.学号from选课某,选课ywhere某.学号=y.学号and某.课号=\课号=\

3、有以下表rate.dbf

币种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代码应该存放外币代码,所以插入时要做相应的改动,外币名称与外向代码的对应关系存储在“外汇代码”表中。

electa.外币代码a币种1代码,b.外币代码a币种2代码,;买入价,卖出价from外汇代码a,外汇汇率,外汇代码b;

wherea.外币名称=外汇汇率.币种1andb.外币名称=外汇汇率.币种2intotablerate

4、假定有“雇员”表(雇员号c

(2),雇员姓名c(6),经理号c

(2)),根据雇员关系列出上一级经理及其所领导的职员清单。

(教案中的例题)elect\领导\雇员姓名,\雇员\雇员姓名from雇员,雇员ewhere.雇员号=e.经理(三)超连接

1、列出选修1号课的学生姓名及成绩。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 信息与通信

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1