文档库 最新最全的文档下载
当前位置:文档库 › SQL语句练习及答案

SQL语句练习及答案

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.查询学生200215012选修课程的总学分数。

select sum(grade) from sc,course

where sno= ' 200215012 ' and https://www.wendangku.net/doc/8819151262.html,o=https://www.wendangku.net/doc/8819151262.html,o;

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

select sno from sc group by sno having count(*) >3;

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

select student.*,sc.*, course.* from student,sc , course where student.sno=sc.sno and https://www.wendangku.net/doc/8819151262.html,o=https://www.wendangku.net/doc/8819151262.html,o;

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

18.查询选修2号课程且成绩在90分以上的所有学生的学号、姓名select student.sno, student.sname

from student,sc

where student.sno=sc.sno and https://www.wendangku.net/doc/8819151262.html,o=”2‟and sc.grade>90;

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

select student.sno,sname,ssex,sage,sdept,cno,grade

from student left outjoin sco on(student.sno=sc.sno);

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

selectsno,sname,sdept

from student

where 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.将一个新学生记录(学号:200215128;姓名:陈冬;性别:男;所在系:

is;年龄:18岁)插入到student表中。

insert into student values ('200215128','陈冬','男','is',18);

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

update student setsage=22 where sno='200215121';

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

update student setsage=sage+1;

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

update sc set grade=0 where exits

(selete * from student where student.sno=sc.sno and sdept=”计算机科学系”);

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

delete from student where sno=”200215128';

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 as

select 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,sage

from s

where sage<20;(not age>=20);

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

select distinct sno

from sc

where grade<60;

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

select sname,sdept,sage

from s

where 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,sname

from s

where sdept=’cs’ and sage<20;

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

select sname,ssex

from s

where sdept=’cs’ or sdept=’is’ or sdept=’math’;

14:查询选修了c3课程的学生的学号和成绩,其结果按分数的

降序排列。

select sno,grade

from sc

where cno=’c3’

order by grade desc;

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

select *

from s

order by sdep,sage desc;

16:查询学生总人数。

select count(*) from s;

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

select count(distinct sno) from sc

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

select avg(grade)

from sc

where cno=’c1’;

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

select max(grade)

from sc

where cno=’c3’;

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

select cno, count(sno)

from sc

group by cno;

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

select sno

from sc

where sdept=’cs’

group by sno

having count(*)>3;

22:求基本表s中男同学的每一年龄组(超过50人)有多少人?要求查询结果按人数升序排列,人数相同按年龄降序排列。

select sage,count(sno)

from s

where ssex='m'

group by sage

having count(*)>50

order by 2,sage desc;

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

select s.sno, sname, sage, ssex, sdept, cno, grade from s, sc

where s.sno=sc.sno;

24:查询选修了c2课程且成绩在90分以上的所有学生。select s.sno,sname

from s,sc

where s.sno=sc.sno

and https://www.wendangku.net/doc/8819151262.html,o=’c2’

and sc.grade>90;

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

select s.sno,sname,cname,sc.grade

from s,sc,c

where s.sno=sc.sno and https://www.wendangku.net/doc/8819151262.html,o=https://www.wendangku.net/doc/8819151262.html,o

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

select sage,count(distinct s.sno)

from s,sc

where s.sno=sc.sno

group 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 https://www.wendangku.net/doc/8819151262.html,o=https://www.wendangku.net/doc/8819151262.html,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 https://www.wendangku.net/doc/8819151262.html,o=https://www.wendangku.net/doc/8819151262.html,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成绩desc

5、列出非软件专业学生的名单。

方法一:select姓名from学生where专业<>"软件"

方法二:select姓名from学生where not专业="软件"

方法三:select姓名from学生where专业!="软件"

6、查询成绩在70~80分之间的学生选课得分情况

方法一:select*from选课where成绩>=70and成绩<=80

方法二:select*from选课where成绩between70and80

不在此范围内的查询:(注意写出和以下语句等价的语句)

select * from 选课 where成绩not between70and80

7、列出选修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成绩isnotnull

10、求出所有学生的总成绩。

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

selecta.外币代码as币种1代码,b.外币代码as币种2代码,;

买入价,卖出价from外汇代码a,外汇汇率,外汇代码b;

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

2intotablerate

4、假定有“雇员”表(雇员号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选课.学号<>学生.学号

三、嵌套查询

(一)普通嵌套与谓词exists

1、列出选修汇编语言课的学生的学号。

方法一:

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、all

1、求选修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成绩=成绩+5

update选课set成绩=nullwhere课号="4"

五、定义表结构

1、建立研究生表,该表不属于任何数据库,其结构如表所示:

createtable研究生free(学号c(6),姓名c(8),性别c(2),年龄n(3,0),入学年月dnull)

2、假设已经建立了xsk数据库,在xsk中建立“学生1”表,其结构如表所示

createtable学生1(学号c(6)primarykey,姓名c(8)notnull,性别c(2),;

年龄n(3,0)check年龄>10and年龄<45error"年龄必须大于10小于45",是否党员l,;

入学年月ddefault{^1999-9-1})

3、在xsk数据库建立“课程1”表,其结构如表所示:

createtable课程1(课号c(4)primarykey,课程名c(10)notnull,学分n(2))

4、在xsk数据库建立“选课1”表,其结构如表所示:

createtable选课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开课学期dropcheck

altertable课程1alter开课学期setdefault"1"

4、删除“课程1”表中的开课学期字段。修改课程名字段为“课名”字段。

altertable课程1drop开课学期rename课程名to课名

5、在“学生1”表的“年龄”字段上建立候选索引。

altertable学生1addunique年龄tag年龄

6、在“学生1”表中添加一个出生日期字段,删除年龄字段。

altertable学生1add出生日期d

altertable学生1dropuniquetag年龄drop年龄

数据库SQL语句练习题含答案

SQL语句练习 练习5. 1. 2: 基于不断滚动的电影数据库的实例: Movie( 电影名title,拍摄年代year ,长度length, inColor ,制片厂名studioName, 制片人证书号producerC# ) StarsIn(电影名movieTitle,拍摄年份movieYear ,影星名starName) MovieStar (姓名name,地址address,性别gender ,生日birthdate) MovieExec( 姓名name,地址address ,证书号cert # ,净资产netWorth ) Studio(姓名name, 地址address,总裁证书号presC# ) 请写出下列SQL 查询语句: * ( a) 找出米高梅制片公司(MGM studios)的地址。 SELECT address AS Studio_Address FROM Studio WHERE name = 'MGM'; ( b) 找出桑德拉·布洛克( Sandra Bullock ) 的出生日期( birthdate) 。SELECT birthdate AS Star_Birthdate FROM MovieStar WHERE name = 'Sandra Bullock'; * ( c) 找出在1980 年拍摄过电影的所有影星, 或者拍摄过电影名中含有“Love”的电影的所有影星。 SELECT starName FROM StarsIn WHERE movieYear = 1980 OR movieTitle LIKE '%Love%'; ( d) 找出净资产至少1 000 万美元的所有行政长官。

3-SQL语句练习题参考答案

标准SQL语言 一、选择题 1、下面关于SQL标准的叙述中,不正确的是(B )。 A.SQL语言是集数据定义、数据操纵、数据控制功能为一体的语言。 B.SQL语言是一种高度过程化的语言。 C.SQL标准规定数据库是按三级模式结构构建。 D.SQL语言是关系型数据库的标准语言。 E.SQL语言是面向集合的语言。 2、SQL语言中,修改基本表结构的语句是( B )。 A.UPDATE B.ALTER C.DROP D.CREATE 3、SQL语言中,删除基本表结构的语句是( C )。 A.DELETE B.ALTER C.DROP D.CREATE 4、下面关于“视图”的叙述中,不正确的是( C )。 A.视图是一种“虚表”,它的数据被存放在基本表中。 B.视图提供了逻辑数据独立性。 C.不能通过视图来更新数据库中的数据。 D.视图能提供对数据的安全保护。 5、下面关于SELECT语句的叙述中,不正确的是(C)。 A.SELECT产生的结果是一个集合。 B.HA VING子句必须与GROUP BY子句一起使用。 C.可以省略FROM子句。 D.可以省略WHERE子句。 二、填空题 1、在使用INSERT语句向一个表中插入元组时,“值列表”中值的个数、(顺序)、类型必须与“列名表”保持一致。 2、在向一个表中插入元组时,对于未指定默认值且(不能取空值)的字段必须赋值。 3、向表中插入元组时,主键的值不能取(NULL )值。 4、在使用DELETE语句时,如果不指定(where 条件)就会将整个表的数据删除。 5、视图是从一个或几个基本表或(视图)导出的表,它与基本表不同,是一个虚表。 三、判断题 1、SQL语言是面向集合操作的语言。√ 2、可以通过视图来查询数据,但不能通过视图来更新数据库中的数据。× 3、在SQL Server数据库系统中,向表中插入元组时,系统自动为具有标识属性的列赋值。√ 4、在SQL Server数据库系统中,向表中插入元组时,对取值类型为timestamp(时间戳)的列不能赋值,系统自动赋值。√

SQL语句练习及参考答案

SQL 语句练习 1.设学生选课数据库有关系S (sno,sname,age,sex )、SC (sno,cno,grade )和C (cno,cname,teacher ),分别表示学生、选课和课程,sno 代表学号,sname 代表学生姓名,age 代表年龄,sex 代表性别,grade 代表成绩,cno 代表课程号,teacher 代表任课教师。试完成表示下列查询。 (1)检索年龄大于21的男学生学号(sno)和姓名(sname)。 (2)建立性别只能为“男”、“女”的约束。 (3)创建一个视图v1,该视图用来查询学生的选课情况,要求包含:学生姓名(sname),课程名(cname),任课教师teacher 和成绩grade 。 (4)检索选修课程号为k1和k5的学生学号(sno)。 (5)检索全部学生都选修的课程的课程号(cno)和课程名(cname)。 (6)删除所有男同学的选课记录。 1.(1)select sno,snae from s where sex=’男’ and age>21 (2)alter table s add constraint c1 check sex in (‘男’,’女’) (3)create view v1 as select sname,cname,teacher,grade from s,sc,c where s.sno=sc.sno and https://www.wendangku.net/doc/8819151262.html,o=https://www.wendangku.net/doc/8819151262.html,o (4)select sno fromsc sc1 where cno=’k1’ and exists (se lect * fromsc sc2 where sc1.sno =sc2.sno and https://www.wendangku.net/doc/8819151262.html,o=’k5’) (5)select cno,cnam from c where not exists (select * from s where not exists (select * from sc where https://www.wendangku.net/doc/8819151262.html,o=https://www.wendangku.net/doc/8819151262.html,o and s.sno=sc.sno) (6)delete from sc where sno in (select sno from s where sex=’男’)

SQL语句练习及答案

sql语句练习题1 数据库有如下四个表格: student (sno, sname, sage, ssex, sdpt) 学生表 系表(dptno, dname) course (eno, cname, gradet, tno) 课程表 sc (sno, eno, 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课程的课程号和学分。 selecto, ccredit from course whereame like ' db_design, 5.查询以"db_"开头,且倒数第3个字符为i的课程的详细悄况。 select * from course whereame like ' db%i_ ; 6.某些学生选修课程后没有参加考试,所以有选课记录,但没有考试成绩。查

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

select sno, eno from sc where grade is null; 7.查所有有成绩的学生学号和课程号。 select sno, eno 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 whereo= ' 3 ' order by grade desc; 10.查询学生总人数。 select count(*) from student; 11.查询选修了课程的学生人数。 select count(distinct sno) from sc; 12.II-算1号课程的学生平均成绩。 select avg (grade) from sc whereo= ' 1 13.查询选修1号课程的学生最高分数。 select max(grade) from sc whereo= ' 1 '; 14.查询学生200215012选修课程的总学分数。 select sum(grade) from sc, course where sno= 200215012 and https://www.wendangku.net/doc/8819151262.html,o=course? eno:

SQL练习题及答案

选择题 (1)如果要查询所藏图书中,各个出版社图书的最高单价、平均单价和册数,所用的SQL 语句是 A)SELECT 出版单位,MAX(单价),AVG(单价),COUNT(*); FROM 图书; GROUP BY 出版单位 B)SELECT 出版单位,MAX(单价),AVG(单价),COUNT(*); FROM 图书; HAVING 出版单位 C)SELECT 出版单位,MAX(单价),AVG(单价),COUNT(*); FROM 图书 GROUP BY 出版单位 D)SELECT 出版单位,MIN(单价), AVG(单价),COUNT(*); FROM 图书; HAVING 出版单位 (2)为"运动员"表增加一个字段"得分"的SQL语句是 A)CHANGE TABLE运动员ADD得分I B)ALTER DATA运动员ADD得分I C)ALTER TABLE运动员ADD得分I D)CHANGE TABLE运动员IN得分I (3)利用SQL数据更新功能,自动计算更新每个"设备总金额"字段的字段值,该字段值等于"单价*设备数量"的值,正确命令为 A)UPDATE 设备表SET 设备总金额=单价*设备数量 B)UPDATE 设备表FOR 设备总金额=单价*设备数量 C)UPDATE 设备表WITH 设备总金额=单价*设备数量 D)UPDATE 设备表WHERE 设备总金额=单价*设备数量 (4)查找教师表中教师最高的工资值,下列SQL语句正确的是 A)SELECT MAX(工资) FROM 教师表 B)SELECT MIN(工资) FROM 教师表 C)SELECT AVG(工资) FROM 教师表 D)SELECT SUM(工资) FROM 教师表 (5)在当前目录下有数据表文件student.dbf,执行如下SQL语句后 SELECT * FORM student INTO DBF student ORDER BY 学号/D A)生成一个按"学号"升序的表文件,将原来的student.dbf文件覆盖 B)生成一个按"学号"降序的表文件,将原来的student.dbf文件覆盖 C)不会生成新的排序文件,保持原数据表内容不变 D)系统提示出错信息 (6)语句"DELETE FROM 成绩表WHERE 计算机<60"的功能是 A)物理删除成绩表中计算机成绩在60分以下的学生记录 B)物理删除成绩表中计算机成绩在60分以上的学生记录 C)逻辑删除成绩表中计算机成绩在60分以下的学生记录

sql语句练习题及答案

一在数据库 school 中建立student , sc, course 表。 学生表、课程表、选课表属于数据库 School ,其各自的数据结构如下:学生 Student (Sno,Sname,Ssex,Sage,Sdept) 课程表 course(Cno,Cname,Cpno,Ccredit) 学生选课 SC(Sno,Cno,Grade) 二设定主码 1 Student表的主码:sno 2 Course表的主码:cno

3 Sc表的主码:sno,cno 1写出使用 Create Table 语句创建表 student , sc, course 的SQL语句create table student (sno char(6), sname varchar(8), ssex char(2), sage smallint, sdept varchar(15), primary key(sno)); Create table course( Cno char(4) primary key, Cname varchar(20), Cpno char(4), Ccredit tinyint) create table sc (sno char(6), cno char(4), grade decimal(12,2), primary key(sno,cno)); c 2在student表中插入信息

insert into student values( ’4001’,’赵茵’,’男’,20,’SX’) insert into student values( ’4002’,’杨华’,’女’,21,’JXJ’) Delete 1 删除所有 JSJ 系的男生 delete from Student where Sdept=’JSJ’ and Ssex=’男’; 2 删除“数据库原理”的课的选课纪录 delete from SC where Cno in (select Cno fromCourse where Cname=’数据库原理’); Update 1 修改 0001 学生的系科为: JSJ Update student set sdept=’JSJ’ where sno=’0001’ 2 把陈小明的年龄加1岁,性别改为女。 Update student set age=age+1,ssex=’女’ where sname=’陈小明’ Select 查询语句 一单表 1查询年龄在19至21岁之间的女生的学号,姓名,年龄,按年龄从大到小排列。 select sno, sname, sage from student where ssex=’女’ and sage between 19 and 21 order by sage desc; 2查询姓名中第2个字为“明”字的学生学号、性别。 select sno, ssex from student

数据库中SQL查询语句习题含答案

查询问题:设教学数据库Education有三个关系: 学生关系S(SNO,SNAME,AGE,SEX,SDEPT);学习关系SC(SNO,CNO,GRADE);课程关系C(CNO,CNAME,CDEPT,TNAME) (1)检索计算机系的全体学生的学号,姓名和性别;(2)检索学习课程号为C2的学生学号与姓名; (3)检索选修课程名为“DS”的学生学号与姓名;(4)检索选修课程号为C2或C4的学生学号; (5)检索至少选修课程号为C2和C4的学生学号;(6)检索不学C2课的学生姓名和年龄; (7)检索学习全部课程的学生姓名; (8)查询所学课程包含学生S3所学课程的学生学号。(1)检索计算机系的全体学生的学号,姓名和性别;SELECT Sno,Sname,Sex FROM S WHERE Sdept =’CS’; (2)检索学习课程号为C2的学生学号与姓名; (3)检索选修课程名为“DS”的学生学号与姓名 本查询涉及到学号、姓名和课程名三个属性,分别存放在S和C表中,但S和C表没有直接联系,必须通过SC表建立它们二者的联系。 C → SC → S 基本思路: (1)首先在C表中找出“DS”课程的课程号Cno;(2)然后在SC表中找出Cno等于第一步给出的Cno 集合中的某个元素Cno; (3)最后在S关系中选出Sno等于第二步中Sno 集合中某个元素的元组,取出Sno 和Sname送入结果表列。SELECT Sno,Sname FROM S WHERE Sno IN (SELECT Sno FROM SC WHERE Cno IN (SELECT Cno FROM C WHERE Cname=‘DS’)); (4)检索选修课程号为C2或C4的学生学号;SELECT Sno FROM SC WHERE Cno=‘C2’ OR Cno=‘C4’;(5)检索至少选修课程号为C2和C4的学生学号;SELECT Sno FROM SC X,SC Y WHERE X.Sno=Y.Sno AND https://www.wendangku.net/doc/8819151262.html,o=‘C2’ AND https://www.wendangku.net/doc/8819151262.html,o=‘C4’; (6)检索不学C2课的学生姓名和年龄; (7)检索学习全部课程的学生姓名; 在表S中找学生,要求这个学生学了全部课程。换言之,在S表中找学生,在C中不存在一门课程,这个学生没有学。 SELECT Sname FROM S WHERE NOT EXISTS (SELECT * FROM C WHERE NOT EXISTS (SELECT * FROM SC WHERE SC.Sno=S.Sno AND https://www.wendangku.net/doc/8819151262.html,o=https://www.wendangku.net/doc/8819151262.html,o)); (8)查询所学课程包含学生S3所学课程的学生学号。分析:不存在这样的课程Y,学生S3选了Y,而其他学生没有选。 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 https://www.wendangku.net/doc/8819151262.html,o=https://www.wendangku.net/doc/8819151262.html,o));

SQL语言练习题和答案

第三章SQL语言 一、选择题 1. SQL语言是(B )的语言,容易学习。 A.过程化 B. 非过程化 C.格式化 D. 导航式 2. SQL语言的数据操纵语句包括SELECT、INSERT、UPDATE、DELETE等。其中最重要的,也是使用最频繁的语句是(A)。 A. SELECT B. INSERT C. UPDATE D. DELETE 3. 在视图上不能完成的操作是()。 A. 更新视图 B. 查询 C. 在视图上定义新的表 D. 在视图上定义新的视图 4. SQL语言集数据查询、数据操纵、数据定义和数据控制功能于一体,其中,CREATE、DROP、ALTER语句是实现哪种功能()。 A. 数据查询 B. 数据操纵 C. 数据定义 D. 数据控制 5. SQL语言中,删除一个视图的命令是()。 6. 在SQL语言中的视图VIEW是数据库的()。 A. 外模式 B. 模式 C. 内模式 D. 存储模式 7. 下列的SQL语句中,()不是数据定义语句。 A. CREATE TABLE B. DROP VIEW C. CREATE VIEW D. GRANT 8. 若要撤销数据库中已经存在的表S,可用()。 A. DELETE TABLE S B. DELETE S C. DROP TABLE S D. DROP S 9. 若要在基本表S中增加一列CN(课程名),可用()。 TABLE S(CN CHAR(8)) TABLE S ALTER(CN CHAR(8)) TABLE S ADD(CN CHAR(8)) TABLE S (ADD CN CHAR(8)) 10. 学生关系模式S(S#,Sname,Sex,Age),S的属性分别表示学生的学号、姓名、性别、年龄。要在表S中删除一个属性“年龄”,可选用的SQL语句是()。 A. DELETE Age from S B. ALTER TABLE S DROP Age C. UPDATE S Age D. ALTER TABLE S ‘Age’ 11. 有关系S(S#,SNAME,SAGE),C(C#,CNAME),SC(S#,C#,GRADE)。其中S#是学生号,SNAME是学生姓名,SAGE是学生年龄,C#是课程号,CNAME是课程名称。要查询选修“ACCESS”课的年龄不小于20的全体学生姓名的SQL语句是SELECT SNAME FROM S,C,SC WHERE子句。这里的WHERE子句的内容是()。

sql练习题及答案

sql练习题及答案 SQL(Structured Query Language)是一种用于管理和操作关系型数据库的编程语言。在这篇文章中,我们将提供一些SQL练习题及其答案,旨在帮助读者加深对SQL的理解,并提供实践操作的机会。 练习题一:学生表 考虑一个名为"Students"的学生表,包含以下字段: - 学生编号(StudentID) - 学生姓名(StudentName) - 学生年级(Grade) - 学生所在学校(School) 请使用SQL语句创建并插入示例数据到"Students"表中。 答案: ```sql CREATE TABLE Students ( StudentID INT, StudentName VARCHAR(50), Grade INT, School VARCHAR(50)

); INSERT INTO Students (StudentID, StudentName, Grade, School) VALUES (1, '张三', 11, '中学A'), (2, '李四', 10, '中学B'), (3, '王五', 10, '中学A'), (4, '赵六', 12, '中学C'); ``` 练习题二:查询学生表信息 请编写SQL查询语句,查询出所有学生的姓名和所在学校。 答案: ```sql SELECT StudentName, School FROM Students; ``` 练习题三:更新学生信息 假设有一位新生加入学校,学生姓名为"李华",年级为11,学校为"中学B"。请编写SQL语句将该学生信息插入到学生表中。 答案: ```sql

SQL语句练习及答案

现在有一教学管理系统,具体的关系模式如下:Student (no, name, sex, birthday, class) Teacher (no, name, sex, birthday, prof, depart) Course (cno, cname, tno) Score (no, cno, degree) 其中表中包含如下数据: Course表: Score表: Student表:

Teacher表: 根据上面描述完成下面问题: (注意:注意保存脚本,尤其是DDL和DML,以便进行数据还原)DDL 1.写出上述表的建表语句。 命令:create table Student (no nvarchar(5), name nvarchar(5), sex nvarchar(1), birthday datetime, class nvarchar(5)

) DML 2.给出相应的INSERT语句来完成题中给出数据的插入。 命令: 单表查询 3.以class降序输出student的所有记录(student表全部属性) 命令:select*from Student order by class desc 4.列出教师所在的单位depart(不重复)。 命令:select distinct depart from teacher 5.列出student表中所有记录的name、sex和class列 命令:select name,sex,class from student

6.输出student中不姓王的同学的姓名。 命令:select name from Student where name not like'王%' 7.输出成绩为85或86或88或在60-80之间的记录(no,cno,degree) 命令:select*from Score where degree=85 or degree=86 or degree=88 or degree between 60 and 80

(完整版)sql练习题+答案

(一)新建以下几个表student(学生表): 其中约束如下: (1)学号不能存在相同的 (2)名字为非空 (3)性别的值只能是'男'或'女' (4)系包括这几个:信息系,计算机科学系,数学系,管理系,中文 系,外语系,法学系 (5)出生日期为日期格式 (6)年龄为数值型,且在0~100 之间 create table student (

age smallint constraint d check ( age between 0

cs(成绩表): 其中约束如下: 1)sno 和cno 分别参照student 和course 表中的sno,cno 的字段2)cj(成绩)只能在0~100之间,可以不输入值 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 课程表)

其约束如下: 1)课程号( cno)不能有重复的 2)课程名( cname)非空 三)针对学生课程数据库查询 (1)查询全体学生的学号与姓名。 (2)查询全体学生的姓名、学号、所在系,并用别名显示出结果。 (3)查询全体学生的详细记录。select * from student (4)查全体学生的姓名及其出生年份。 select sname , birth from student (5)查询学校中有哪些系。 select distinct dept from student

SQL语句练习题答案

SQL语句练习题答案 一在数据库 school 中建立student , sc, course 表。 学生表、课程表、选课表属于数据库 school ,其各自的数据结构如下: 学生 student (sno,sname,ssex,sage,sdept) 课程表 course(cno,cname,cpno,ccredit) 学生选课 sc(sno,cno,grade) 二设定主码 1 student表的主码:sno 2 course表的主码:cno 3 sc表的主码:sno,cno 1写出使用 create table 语句创建表 student , sc, course 的sql 语句 2 3 删除student表中的元组 4在数据库school中删除关系student 5在student表添加属性sbirthdate 类型 datetime delete 1 删除所有 jsj 系的男生delete from student where sdept=’jsj’ and ssex=’男’; 2 删除“数据库原理”的课的选课纪录 delete from sc where cno in (select cno fromcourse where cname=’数据库原理’); update 1 修改 0001 学生的系科为: jsj 2 把陈小明的年龄加1岁,性别改为女。 2 修改李文庆的1001课程的成绩为 9 3 分 3 把“数据库原理”课的成绩减去1分 select 查询语句 一单表

1查询年龄在19至21岁之间的女生的学号,姓名,年龄,按年龄从大到小排列。2查询姓名中第2个字为“明”字的学生学号、性别。3查询 1001课程没有成绩的学生学号、课程号 4查询jsj 、sx、wl 系的年龄大于25岁的学生学号,姓名,结果按系排列 5按10分制查询学生的sno,cno,10分制成绩 (1-10分为1 ,11-20分为2 ,30-39分为3,。。。90-100为10)6查询student 表中的学生共分布在那几个系中。(distinct)7查询0001号学生1001,1002课程的成绩。 二统计 1查询姓名中有“明”字的学生人数。 2计算‘jsj’系的平均年龄及最大年龄。 3查询学生中姓名为张明、赵英的人数 4计算每一门课的总分、平均分,最高分、最低分,按平均分由高到低排列 5 计算1001,1002 课程的平均分。 6 查询平均分大于80分的学生学号及平均分 7 统计选修课程超过 2 门的学生学号 8 统计有10位成绩大于85分以上的课程号。 9 统计平均分不及格的学生学号 10 统计有大于两门课不及格的学生学号 三连接 1查询 jsj 系的学生选修的课程号 2查询选修1002 课程的学生的学生姓名(不用嵌套及嵌套2种方法) 3查询数据库原理不及格的学生学号及成绩 4查询选修“数据库原理”课且成绩 80 以上的学生姓名(不用嵌套及嵌套2种方法)5查询平均分不及格的学生的学号,姓名,平均分。6查询女学生平均分高于75分的学生姓名。 7查询男学生学号、姓名、课程号、成绩。(一门课程也没有选修的男学生也要列出,不能 四嵌套、相关及其他 1 查询平均分不及格的学生人数 2 查询没有选修1002 课程的学生的学生姓名

(完整版)sql练习题+答案

(一)新建以下几个表 student(学生表): 其中约束如下: (1)学号不能存在相同的 (2)名字为非空 (3)性别的值只能是’男’或’女’ (4)系包括这几个:信息系,计算机科学系,数学系,管理系,中文系,外语系,法学系 (5)出生日期为日期格式 (6)年龄为数值型,且在0~100之间

cs(成绩表): 其中约束如下: (1)sno和cno分别参照student和course表中的sno,cno的字段(2)cj(成绩)只能在0~100之间,可以不输入值 course(课程表)

其约束如下: (1)课程号(cno)不能有重复的 (2)课程名(cname)非空 (三)针对学生课程数据库查询 (1)查询全体学生的学号与姓名。 (2)查询全体学生的姓名、学号、所在系,并用别名显示出结果。 (3)查询全体学生的详细记录。 (4)查全体学生的姓名及其出生年份。 (5)查询学校中有哪些系。

(6)查询选修了课程的学生学号。 (7)查询所有年龄在20岁以下的学生姓名及其年龄。 (8)查询年龄在20~23岁(包括20岁和23岁)之间的学生的姓名、系别和年龄。 (9)查询年龄不在20~23岁之间的学生姓名、系别和年龄。 (10)查询信息系、数学系和计算机科学系生的姓名和性别。 (11)查询既不是信息系、数学系,也不是计算机科学系的学生的姓名和性别。

(12)查询所有姓刘学生的姓名、学号和性别。 (13)查询学号为2009011的学生的详细情况。(具体的学号值根据表中数据确定) (14)查询姓“欧阳”且全名为三个汉字的学生姓名 (15)查询名字中第2个字为“晨”字的学生的姓名和学号 (16)查询所有不姓刘的学生姓名。 (17)查询sql课程的课程号和学分。 (18)查询以"DB_"开头,且倒数第3个字符为 i的课程的详细情况。

SQL语句练习及答案

SQL语句练习及答案

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.查询学生200215012选修课程的总学分数。 select sum(grade) from sc,course where sno= ' 200215012 ' and https://www.wendangku.net/doc/8819151262.html,o=https://www.wendangku.net/doc/8819151262.html,o;

SQL语句练习及答案

sql语句(yǔjù)练习题1 数据库有如下(rúxià)四个表格: student(sno,sname,sage,ssex,sdpt) 学生(xué sheng)表 系表(dptno,dname) course(cno,cname, gradet, tno) 课程表 sc(sno,cno,score) 成绩表 teacher(tno,tname) 教师(jiàoshī)表 要求:完成以下(yǐxià)操作 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.查所有有成绩的学生(xué sheng)学号和课程号。 select sno,cno from sc where grade is not null; 8.查询计算机系年龄在20岁以下(yǐxià)的学生姓名。 select sname from student where sdept= 'cs' and sage<20; 9.查询选修了3号课程的学生的学号及其成绩(chéngjì),查询结果按分数降 序排列。

相关文档