练习题 (1)

玛丽莲梦兔
808次浏览
2021年02月19日 20:08
最佳经验
本文由作者推荐

-

2021年2月19日发(作者:篮球女孩钱红艳)


练习题





SQL


命令完成下列操作



1.



给学生表增加一个属性


nation


(民族)


,数据类型为

< p>
Varchar(20).


alter table student


add nation Varchar(20)


2.



删除学生表中新增的属性


nation


(民族)


.


alter table student


drop column nation


3.



向成绩表中插入一些新记录



Insert into calss


values('0 0112','


会计


','2009',200,'20090 1')


and values('00113','


经济学< /p>


','2009',180,'2009401')


and v alues('00113','


金融工程


','2009', 180,'2009601')


insert into grade


values('200901','1’','90')



insert into grade


values('200920','2','90')insert


into course


values(


200901


’’


2

< p>


,5)


4.



删除学号为“


xxx


”的记录



delete from student


where sno='200901'


5.



为学生表创建一个名为


IXClass


的索引,以班级号的升序排序。



create index IXclass


on student (clno)


order by clno ASC


6.



删除


I XClass


的索引



drop index student. x_class


7.



找出所有被学生选修了的课程号



SELECT distinct


课程号



FROM grade


WHERE EXISTS (SELECT*


FROM course


WHERE grade.


课程号


=course.


课程号


)


8.



找出班级名为“


xxx


”班级的女同学的个人基本信息。



SELECT * FROM student


where ='



'AND clno='00311'


9.



找出姓李的学生的个人基本信息



select *


from student,grade


where = AND sname like '



%'


10.



找出李勇所在班级的学生人数



select number


from class


where =(select clno


from student


where sname='


李勇


')


11.



找出课程名为操作系统的平均成绩、最高分、最低分



select


课程名


,avg(


成绩


),max(


成绩

),min(


成绩


)


from (course inner join grade


on course.


课程号


=grade.


课程号

< br>)


where course.


课程名


='


操作系统


'


group by


课程名



12.



group by


课程名找出选修了课程名“


xxx


< p>


的学生人数



select count(*)


from grade


where grade.


课程号


=(select


课程号



from course < /p>


where


课程名


='

< br>数据库


')


13.



找出选修了课程名“


xxx


< br>


的学生的学号和姓名



select student.


学号


,


姓名



from (student inner join grade


on student.


学号


=grade.


学号


)


inner join course


on course .


课程号


=grade.


课程号



where


课程名


='


数据库


'


14.



找出与李勇在同一班的学生的基本信息



select*


from student


where


班级号


=(select


班级号



from student


where

< p>
姓名


='


李勇


')



15.



找 出今天(或


1



20

< br>日)过生日的学生学号、姓名和班级名



select


学号


,


姓名


,


班级名



from student left join class


on student.


班级号


=class.


班级号


where


month(


出生日期


) =month(getdate()) and day(


出生日期


)=day(getdate())


16.



找出“


2007


信管“班中没有选修课程“数据库“的学生的学号、姓名


select student.


学号

< br>,


姓名



from student


where student.


班级号


=


(select


班级号


from class where


班级名


='2007


信管


') AND


学号


not in


( select


学号


from grade where grade.


课程号


=(select


课程号



from course


where


课程名


='


数据库


' )


17.



找出选修了全部课程的学生学号、姓名和班级



SELECT


学号


,


姓名


,


班级号



FROM student AS s


WHERE NOT EXISTS


(SELECT *


FROM course AS c


WHERE NOT EXISTS


(SELECT *


FROM grade


WHERE


学号


=s.


学号


AND


课程号


=c.


课程号


))


18.



列出“


xxx




同学所修全部课程的名称 和成绩,并给出其所修课程的总分和


平均分



select


课程名


,


成绩



FROM grade ,course,student


WHERE grade.


课程号


=c ourse.


课程号


AND student.


学号


=grade.


学号


AND


student.


姓名


='< /p>


张婷婷


'


select avg(


成绩


)


平均成绩

< p>
,sum(


成绩


)


总成绩



FROM grade ,course,student


WHERE grade.


课程号


=course.


课程号


AND student.


学号


=grade.


学号


AND


student.


姓名


='


张婷婷


'


19.



分别求出每位同学所学课程的总分和平均分



select


姓名


,sum(


成绩


)


总成绩


,av g(


成绩


)


平均成绩



FROM grade ,course,student


WHERE grade.


课程号


=course.


课程号


AND student.


学号


=grade.


学号



group by


姓名



20.



求选修了课程号为“


xxx




的选课人数



select count(*)


from grade


where grade.


课程号


=(select


课程号



from course


where


课程号


='00001')


21.



查询班级号为“


xxx


”班级的班长基本信息



select*


from student,class


where student.


班级号


='



200101311'and student.


学号


=class.


班长学号



22.



查询全体学生的学习信息,要求按学号排序



Select student.


学号


,


课程号


,


成绩



From student,grade


Where s tudent.


学号


=grade.


学 号



order by student.


学号


desc


23.



求每个课程号及相应的选课人数



Select


课程号


,count(


学号


)


From grade


Group by


课程号



24.



查询选修了

< br>3


门以上课程的学生学号和姓名



SELECT


学号


,


姓名



FROM student


WHERE student.


学号


in


(SELECT


学号



FROM grade


GROUP BY


学号



HAVING COUNT(


学号


)>3)


25.



对每个班求学生的平均年龄



Select


班级号


,avg(ye ar(getdate())-year(


出生日期


))


From student


Group by


班级号



26.




2 007


信管班全体学生的数据库成绩置为


0


update grade set


成绩


=0


where


课程号


in(


select


课程号


from course where


课程名


='


数据库


' )


and


学号


in (select


学号


from student


where


班级号


=(select


班级号


from class


where


专业名


='


信息管理


'and


入学年


='2007'))


27.



删除


2007


信管班全体学生数据库的选课记录



Delete from grade


where


课程号


in(


select


课程号


from course where


课程名


='


数据库


' )


and


学号


in (select


学号


from student


where


班级号


=(select


班级号


from class


where


专业名


='


信息管理


'and


入学年


='2007'))


28.



学生“


xxx


”已退学,从数据库中删除有关他的记录



Delete from student where


姓名


=



xxx




29.



查询选修课程中没有不及格分数的学生学号、姓名和班级



Select distinct student.


学号


,


姓名


,


班级名< /p>



From student,grade,class


Where grade.


成绩


>60 and student.


学号


=grade.


学号



and student.

班级号


=class.


班级号



30.



求每个班学生每门课的平均成绩



Select


班级号


,


课程号


,avg(gmark)


平均成绩



From student inner join grade


On student.


学号


=grade.


学号

< br>


Group by


课程号


,


班级号



31.



查询“


xxx


“班级的班长信息



select*


from student,class


where student.


班级名


='2007


信管


'and student.


学号


=class.


班长学号



32.



查询选修课程中没有不及格分数的学生



Select distinct


姓名



From student,grade


Where grade.


成绩


>60 and student.


学号


=grade.


学号



33.



查询有

< br>3


门课程不及格的学生的学号、姓名及所在的班级名



Select


学号


,


姓名


,


班级名



From student,class


Where


学号


in


(select


学号


from grade


Where


成绩


<60


Group by


学号



Having count(


学号


)>=3)


and student.


班级号


=class.


班级号



34.


< br>建立


2007


信管班选修了数据库课程的学生视图



Create view st2


As select *


from student where


学号


in(


select


学号


from grade where


课程号


=(


select


课程号


from course where


课程名


='


数据库


' ))


and


班级号


=(select


班级号


from class


where


专业名


='


信息管理


'and


入学年


='2007')


35.



在课程表中增加一个‘先修课 号’属性,用于指定在学本课之前必须先修的


课程,如果为空,则表示该课没有要求的先 修课程。



Alter table course


Add


先修课程


char(10)


36.



分别向


Class



grade


表中录入一 些


2009


信管管理、


2009


工商管理、


2009


旅游管理、


2009


数理经济四个班级的信息,以及四个班级的一些同学的选

< p>
课信息。



Insert into calss


values('00102','


工商管理

< br>','2009',200,'200901') and


values('0 0103','


旅游管理


','2009',180,'200 9201')and


values('00103','


数 理经济


','2009',180,'2009401')and

values('00103','


信息管理


','200 9',180,'2009601')

-


-


-


-


-


-


-


-