SQL 查询语句期中考试题2

SQL 查询语句期中考试题2,第1张

--1分别查询学生表和学生修课表中的全部数据。

SELECT FROM student--查询学生表

SELECT FROM course--查询课程表

--2查询成绩在70到80分之间的学生的学号、课程号和成绩。

SELECT Sno 学号,Cno 课程号,Grade 成绩

FROM SC

WHERE Grade BETWEEN 70 AND 80

--3.查询C01号课程成绩最高的分数

SELECT TOP 1 Grade

FROM SC

WHERE Cno='C01'

ORDER BY Grade DESC--降序DESC,升序ASC

--4查询学生都选修了哪些课程,要求列出课程号。

SELECT Cname AS 学生选修的课程,Cno AS 课程号

FROM course

WHERE Cno IN(SELECT DISTINCT Cno FROM SC)--DISTINCT用来去除重复

--5查询Northwind数据库中orders表的OrderID、CustomerID和OrderDate,

--并将最新的定购日期(OrderDate)列在前边。

USE Northwind

GO

SELECT OrderID,CustomerID,OrderDate

FROM orders

ORDER BY OrderDate DESC--降序DESC,升序ASC

--6查询Northwind数据库中orders表的ShipCountry列以B,C,D,F --//ShipCountry BCDF

--开始且第三个字符为"a"的OrderID、CustomerID和ShipCountry的信息。//OrderID、CustomerID第三个字符为"a"

USE Northwind

GO

SELECT OrderID,CustomerID,ShipCountry FROM orders

WHERE ShipCountry LIKE '[BCDF]_a%'--_下划线表示任意一个字符,%表示一个或多个字符

--7查询Northwind数据库中orders表的ShipCountry列不以A,B,C,D,E,F开始且最后一个字

--母是"a"的OrderID、CustomerID和ShipCountry的信息。

USE Northwind

GO

SELECT OrderID,CustomerID,ShipCountry

FROM orders

WHERE ShipCountry LIKE '[^ABCDEF]%a'

--8查询修了C02号课程的所有学生的平均成绩、最高成绩和最低成绩。

SELECT AVG(Grade) 平均成绩,MAX(Grade) 最高成绩,MIN(Grade) 最低成绩

FROM SC

WHERE Cno='C02'

--9统计每个系的学生人数。

SELECT Sdept 系别,COUNT() 人数

FROM student

WHERE Sdept IN(SELECT DISTINCT Sdept FROM student)

GROUP BY Sdept

--10统计每门课程的修课人数和考试最高分。

SELECT Cname 课程名,COUNT() 修课人数,MAX(Grade) 考试最高分

FROM SC,course

WHERE SCCno IN(SELECT DISTINCT Cno FROM SC ) AND courseCno=SCCno

GROUP BY courseCname

--11统计每个学生的选课门数,并按选课门数的递增顺序显示结果。

SELECT studentSname 学生姓名,studentSno 学生学号,COUNT(SCSno) 选课门数

FROM student

inner join SC ON SCSno=studentSno

GROUP BY studentSname,studentSno

ORDER BY COUNT(SCSno) ASC

--12统计选修课的学生总数和考试的平均成绩。

SELECT COUNT(DISTINCT(Sno)) AS 学生总数,AVG(Grade) AS 平均成绩

FROM SC --//用DISTINCT消除重复的行

--13查询选课门数超过2门的学生的平均成绩和选课门数。

SELECT StudentSname,AVG(ScGrade) 平均成绩,COUNT(SCSno) 选课门数

FROM SC

--内联接join或inner join,内联系是比较运算符,只返回符合条件的行

JOIN Student ON (SCSno = StudentSno)

JOIN Course ON (SCCno = CourseCno)

GROUP BY StudentSname

HAVING COUNT(distinct CourseCno) >2--分组条件

--14列出总成绩超过200分的学生,要求列出学号、总成绩。

SELECT Sno 学号,SUM(Grade) 总成绩

FROM SC

GROUP BY Sno

HAVING SUM(Grade)>200

--15查询pubs数据库的titles表中每类图书的平均价格超过120元的书的类型(Type)、

--平均价格和最高价格。

USE pubs

GO

SELECT Type AS 书的类型,AVG(price) AS 平均价格,MAX(price) AS 最高价格

FROM titles

GROUP BY Type

HAVING AVG(price)>120

--16查询pubs数据库的titles表中每类图书中图书的数目超过3本的图书的总价格。

USE pubs

GO

SELECT 图书类型=Type,图书的数目=count(Type),图书的总价格=SUM(price)

FROM titles

GROUP BY Type

HAVING count(Type)>3

--17查询选修了c02号课程的学生的姓名和所在系。

SELECT Sname 学生姓名,Sdept 所在系,SCCno AS 选修课程

FROM student

inner join SC ON studentSno=SCSno

WHERE SCCno='C02'

--18查询成绩80分以上的学生的姓名、课程号和成绩,并按成绩的降序排列结果。

SELECT Sname 学生姓名,SCCno 课程号,SCGrade 成绩

FROM student

inner join SC ON studentSno=SCSno--内连接表SC查询

WHERE SCGrade>80

ORDER BY SCGrade DESC

--19查询计算机系男生修了"数据库基础"的学生的姓名、性别、成绩。

SELECT Sname 姓名,Ssex 性别,SCGrade 成绩

FROM student

inner join SC ON Cno IN(SELECT Cno FROM course WHERE Cname='数据库基础') --显示成绩的条件

AND studentSno=SCSno --显示成绩的学生的学号

WHERE Sdept='计算机系' AND Ssex='男'

--20查询哪些学生的年龄相同,要求列出年龄相同的学生的姓名和年龄。

--这题使用到了表的自连接,所以需要给表取两个别名,如A和B

SELECT ASname 年龄相同的学生的姓名,ASage 年龄

FROM student A

inner join student B ON ASage IN(SELECT Sage FROM student WHERE ASage=BSage AND ASname!=BSname)

GROUP BY ASname,ASage

ORDER BY ASage

--21查询哪些课程没有人选,要求列出课程号和课程名。

SELECT Cno AS 课程号,Cname AS 课程名

FROM course

WHERE Cno NOT IN(SELECT DISTINCT SCCno FROM SC)

--22查询有考试成绩的所有学生的姓名、修课名称及考试成绩

--要求将查询结果放在一张新的永久表(假设新表名为new-sc)中。

SELECT studentSname AS 有考试成绩的学生的姓名,courseCname AS 修课名称,SCGrade AS 考试成绩

INTO [new_sc] --将查询结果放入新表new_sc中

FROM student,course,SC

WHERE SCGrade IS NOT NULL AND studentSno=SCSno AND courseCno=SCCno

--23分别查询信息系和计算机系的学生的姓名、性别、修课名称、修课成绩,

--并要求将这两个查询结果合并成一个结果集,

--并以系名、姓名、性别、修课名称、修课成绩的顺序显示各列。

--//此题用到了并union查询

SELECT Sdept 系名,Sname 姓名,Ssex 性别,courseCname 修课名称,SCGrade 修课成绩

FROM student

inner join SC ON studentSno=SCSno

inner join course ON courseCno=SCCno

WHERE Sdept='信息系'

UNION

SELECT Sdept 系名,Sname 姓名,Ssex 性别,courseCname 修课名称,SCGrade 修课成绩

FROM student

inner join SC ON studentSno=SCSno

inner join course ON courseCno=SCCno

WHERE Sdept='计算机系'

select sdept, sname,ssex,cname,grade from student,sc,course

where studentsno=scsno and sccno=coursecno and (sdept='信息系' or sdept='计算机系')

--24用子查询实现如下查询:

--(1) 查询选修了C01号课程的学生的姓名和所在系。

SELECT Sname AS 选修了C01号课程的学生的姓名,Sdept AS 所在系

FROM student

WHERE Sno IN(SELECT Sno FROM SC WHERE Cno='C01')

--(2) 查询数学系成绩80分以上的学生的学号、姓名。

SELECT Sno AS 数学系成绩80分以上的学生的学号,Sname AS 姓名

FROM student

WHERE Sno IN(SELECT Sno FROM SC WHERE Grade>80)

AND Sno IN(SELECT Sno FROM student WHERE Sdept='数学系')

--(3) 查询计算机系学生所选的课程名

SELECT Cname AS 计算机系学生所选的课程名

FROM course

WHERE

courseCno IN(SELECT DISTINCT Cno FROM SC WHERE SCSno IN(SELECT Sno FROM student WHERE Sdept='计算机系'))

--25将计算机系成绩高于80分的学生的修课情况插入到另一张表中,分两种情况实现:///////////////

--(1) 在插入数据过程中建表。

--使用SELECT INTO插入数据的方法,是在插入数据的过程中建立新表

SELECT studentSname AS 学生名字,courseCname AS 选修课程,SCCno AS 课程编号

INTO [SC_Info1]--将计算机系成绩高于80分的学生的修课情况插入到表SC_Info1中

FROM student,course,SC

WHERE studentSdept='计算机系' AND SCGrade>80 AND courseCno=SCCno AND studentSno=SCSno

--(2) 先建一个新表,然后再插入数据。

--创建表SC_Info2

CREATE TABLE SC_Info2

(

Sname char(7),

Cname char(20),

Cno char(10)

)

--往表SC_info2插入查询得到的结果

INSERT SC_Info2

SELECT studentSname AS 学生名字,courseCname AS 选修课程,SCCno AS 课程编号

FROM student,course,SC

WHERE studentSdept='计算机系' AND SCGrade>80 AND courseCno=SCCno AND studentSno=SCSno

--26删除修课成绩小于50分的学生的修课记录

DELETE SC WHERE Grade<50 OR Grade IS NULL

--27将所有选修了"c01"课程的学生的成绩加10分。

UPDATE SC

SET Grade=Grade+10

WHERE Cno='C01'

1、select from 学生信息 where 年龄=18;

2、select 学号,姓名,班级 from 学生信息 where 班级='08电商1';

3、select 姓名,班级 from 学生信息 where 姓名 like '李%';

4、select from 老师信息 where 姓名 like '_丽%';

5、select 班级,姓名,年龄 from 学生信息 where 班级='08电商1' or 班级='08物流2';

6、select 工号,姓名,部门 from 教师信息 where 工资>2500;

7、select 班级,count() as 人数 from 学生信息 group by 班级;

8、select top 10 学号,姓名 from 学生信息 order by 年龄 desc;

9、select from 学生信息 where 班级='08电商2' order by 学号 asc;

10、select 性别,sum(年龄)/count(年龄) as 平均年龄 from 学生信息 group by 性别;或者select 性别,avg(年龄) as 平均年龄 from 学生信息 group by 性别

一、1C,2D,3A,4D,5D,6C,7D,8D,9C,10D

二、1A,2A,3A,4A,5B6A,7B,8B,9B,10B

自己做着玩的,非标准答案~

1 C

2 A

3 A

4 B 说明:%是一个通配符,如select from test where ID like 12% 这句话就表示在test表中搜索出ID以12开头的数据记录,可以是123,也可以是1234

5 C

6 A 如果读者也作为主键你想会发生啥情况,每个人只能借1本书,灾难啊

7 A 我真的运行了一次,因为我也不确定

8 B

9 C

10D

11D

12B 这一题考的是LEFT OUTER JOIN的用法,LEFT OUTER JOIN等同于LEFT JOIN,数据数目按照较大数来算

1 ABCE D是程序员做的事

2 ABC 系统固定的角色权限是标准的PUBLIC权限,用户可以根据需要进行权限的调整,就是C选项

3 DE A错误的原因是因为事务备份的还原精度要比差异备份高,能恢复到故障点前一刻,这是差错备份做不到的;B,事务日志只能恢复从上一次备份到本次故障点之间的一个时刻

4 AB

1

IF OBJECT_ID('学生表')IS NOT NULL

DROP TABLE 学生表

GO

create table 学生表 --建立学生表

(

学号 int not null , --学号,姓名,年龄,性别,家庭住址,联系电话

姓名 varchar(10) not null, --姓名

性别 varchar(2)

年龄 int,

联系电话 varchar(10),

家庭住址 varchar(50),

联系电话 varchar(20),

check (性别 ='男' OR 性别='女'),

)

11

delete 学生表

insert 学生表 (学号,姓名,年龄,性别,联系电话,学历)

values(1,"A",22,"男","123456","小学")

insert 学生表 (学号,姓名,年龄,性别,联系电话,学历)

values(2,"B",21,"男","119","中学")

insert 学生表 (学号,姓名,年龄,性别,联系电话,学历)

values(3,"C",23,"男","110","高中")

insert 学生表 (学号,姓名,年龄,性别,联系电话,学历)

values(4,"D",18,"女","114","大学")

12

update 学生表

set 学历='大专'

where 联系电话 like '11%'

go

13

delet 学生表

where 性别='女',姓名 like 'B%'

go

14

select 姓名,学号

from 学生表

where 学历='大专',年龄<22

go

15

select 姓名,性别

from 学生表

order by 年龄 desc

go

21

use stu

IF OBJECT_ID('Student')IS NOT NULL

DROP TABLE Student

GO

create table Student --建立学生表

(

学号 int not null ,

姓名 varchar(10) not null, --姓名

性别 varchar(2)

年龄 int,

所在系 varchar(10),

check (性别 ='男' OR 性别='女'),

)

22

use stu

select 学生表学号

from Student As 学生表,SG As 成绩表

where 学生表学号=成绩表学号,成绩表成绩<60

go

23

use stu

select 姓名,性别,年龄

from Student

where 所在系='计算机系',性别='男',姓名 like '张%'

go

24

use stu

insert Student (学号,姓名,年龄,性别,所在系)

values(05020,"高平",19,"女","积极管理系")

go

41

删除student表中学号为2004009的学生的信息

42

在stu数据库的student表中创建列名为姓名,家庭住址的视图student_view

43

查询stu数据库的student表中前9条信息

44

在stu数据库的student表中创建查询学号,姓名,家庭住址的存储过程student_pro

45

在stu数据库的student表中创建带输入参数的存储过程

46

查询Sg表中课程号为06的平均成绩

1)Students表:包含SNo,SName,SSex,SClass,SAge 其中SNo为主键

2)Courses表:包含CNo,CName,CGrade(开设学期),CScore(学分)、IsProfession(是否是专业课) 其中CNo为主键

3)Scores表:包含SNo,CNo,Score 其中SNo和CNo分别与Students中的SNo和Courses中的CNo有外键关系。

1)查询全班年龄在20岁至24岁之间的所有学生的信息。

select from Students where SAge>=20 and SAge<=24 (是否包含20和24,修改相关=号)

2)查询开设学期为2的所有的专业课程号、课程名称、和学分。

select CNo,CName,CScore from Courses where CGrade=2 and IsProfession=1(假设专业课是此值为1)

3)查询学号为000004学生的所有课程的成绩。

select ScoresSNo,ScoresCNo,CoursesCName,ScoresScore from Scores INNER JOIN Courses ON ScoresCNo=CoursesCNo where ScoresSNo='000004'

4)查询姓名为“王明”的学生的所有及格课程的课程名称和成绩。

select ScoresSNo,ScoresCNo,CoursesCName,ScoresScore from Scores INNER Join

Courses ON ScoresCNo=CoursesCNo where ScoresSNo in (select SNo from Students where SName='王明') and ScoresScore>=60

5)查询班级为“0401”的所有学生的课程名为“SQL数据库管理”的成绩,按成绩降序的方式排列,如果成绩相同,则按照学号进行排列。

select ScoresSNo,ScoresCNo,CoursesCName,ScoresScore from Scores INNER Join

Courses ON ScoresCNo=CoursesCNo where ScoresSNo in (select SNo from Students

where SClass='0401' order by ScoresScore

1select 班级名称,班级代码 from 班级 where 系部代码='02' or 系部代码='03';

2在'学生'表中查询姓'李'学员的学号,姓名,年龄;

3在'读者表' 表中查询名称中含有'红'的所有内容;

5select 姓名,年龄 from 教师 where 姓名 like '梅%';

4在'图书表'表中查询图书编号为'100111'的所有内容;

6在'读者表'表中查询'系部名称'为'自动化'的读者的最小年龄;

7在'用户表'表中查询姓名,年龄字段,并按年龄,姓名升序排列;

8select from 学生 where 姓名 like '张%' or 姓名 like '罗%' or 姓名 like '刘%' order by 姓名

9在'读者表'表中查询年龄大于60或小于1810的读者姓名;

10将编号为'115',姓名为'王梅',性别为'女'的记录插入'读者表'表;

11select 姓名 as name,出生日期 as 'Birthday' from 学生 where 性别='女'

排版没排好,看起来有点费力;顺序有点乱,不过我都按照你的顺序写了

以上就是关于SQL 查询语句期中考试题2全部的内容,包括:SQL 查询语句期中考试题2、SQL数据库题目,求助、SQL数据库系统及应用~试题一套~~求高手解答!!等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/9510827.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-29
下一篇2023-04-29

发表评论

登录后才能评论

评论列表(0条)

    保存