1、数据库管理技术经历了____人工管理___ ____文件管理______ __数据库系统___ 三个阶段
2 .关系模型有 ___实体完整性____,___参照完整性____ ,____用户定义的完整性___ 三类完整性。
4、SQL SERVER 中的编程语言就是________________PL/SQL_____________语言。
5、PL/SQL 有两种类型的游标:___显式游标____ 和____显式游标___ 。
6、DBMS通常提供授权功能来控制不同的用户访问数据库中数据的权限,其目的是为了数据库的_____安全性____
你还有马甲。。。
第一个不对,更新的是学生的成绩,而不是c001得成绩
1对选修了课程号为c001的学生成绩提高10%
此题本人做的答案请检查:updata 选课表 set 成绩=成绩11 where 课程号='c001'
UPDATE 选课表 SET set 成绩=成绩11 WHERE 学生号 IN (SELECT 学生号 FROM 选课表 WHERE 课程号='c001')
2查询没有学生选修的课程名。
此题本人做的答案请检查:select 课程名 from 课程 where 课程名 not exists(select from 选课表 where 选课表课程号=课程表课程号)
SELECT 课程名 from 课程 WHERE 课程号 NOT IN (SELECT DISTINCT 课程号 FROM 选课表)
3 correct
4查询每个学生选修的门数及平均成绩。
此题本人做的答案请检查:select AVG(成绩),姓名 from 学生,选课 where 学生学生号=选课学生号 group by 姓名
SELECT COUNT(c课程号), AVG(c成绩)
FROM 学生 stu LEFT JOIN 选课 c ON stu学生号 = c学生号
GROUP BY stu学生号
5查询2003年以前借书的读者借书证号,姓名和单位。
此题本人做的答案请检查:select 借书证号,姓名,单位 from 读者 where 借书日期<=2003 and 读者借书证号=借书借书证号
SELECT 借书证号,姓名,单位 FROM 读者 WHERE IN (SELECT 借书证号 FROM 借书 WHERE 借书日期<=2003)
6查询电子系没有借书的读者姓名
此题本人做的答案请检查: select 姓名,职称 from 读者 where 职称='电子系' and 借书证号 NOT exists(select 借书证号 from 借书 where 读者借书证号=借书借书证号)
此题我一直有一个疑惑 我目前查询电子系没有借书的读者姓名 没有借书 也就是借书证号为空或NULL 那么读者也有一个借书证号 借书也有一个借书证号 2个是相对应的,
但是我没用到借书表 只有了读者表的借书证号 需要在where语句后写入:借书证号=借书借书证号 这个条件吗?
SELECT 姓名
FROM 读者 t
WHERE 单位 = '电子系' AND NOT EXISTS(SELECT 1 FROM 借书 WHERE 借书证号 = t借书证号)
7查询出至少有两名学生所选修的全部课程。
此题我做的不怎么好:select 姓名 from 学生 where 课程名 in (select 课程名,count() as 课程数 group by 姓名 having count()>=2
SELECT FROM 课程 WHERE 课程号 IN (SELECT 课程号 FROM 选课 GROUP BY 课程号 HAVING COUNT() >=2)
8
@a, @b, @c是参数, 譬如@a = '123', @b = 'c001', @c = 90
然后begin后面是执行一个update *** 作,将参数对应起来就可以了。
真个存储过程对例子要做的就是
UPDATE 选课
set 成绩=90
where 学号= 123 and 课程号='c001'
明白了么
--类型表,用来存储题目的类型
create table Types
(
[ID] int primary key identity,
[QuestionType] nvarchar(20) not null
)
--选项表,用来存储各种选项
create table Options
(
[ID] int primary key identity,
[OptionContent] nvarchar(200) not null
)
--题目表,用来存储各种问题
create table Questions
(
[ID] int primary key identity,
[QuestionContent] nvarchar(200) not null,--题目
[OptionAID] int references Options(ID) not null,--选项A,引用选项表
[OptionBID] int references Options(ID) not null,--选项B,引用选项表
[OptionCID] int references Options(ID) not null,--选项C,引用选项表
[OptionDID] int references Options(ID) not null,--选项D,引用选项表
[AnswerID] int references Options(ID) not null,--正确答案,,引用选项表,用于评分
[TypeID] int references Types(ID) not null--题目种类,引用类型表,用于确定题目类型
)
这样三张表的话,可扩展性比较强,比如以后增加了试题类型,只要在Types表中新增一条记录就可以了,同理Options表也是很好扩展的
希望可以帮到你
这是在一个student数据库上建立的查询,你可以把邮箱告诉我,我把数据库文件发给你,当然如果你想自己建的话也行,下面是三张表。
sno sname ssex sage sdept
200215121 李勇 男 20 CS
200215122 刘晨 女 19 CS
200215123 王敏 女 18 MA
200215125 张立 男 19 IS
cno cname cpno ccredit
1 数据库 5 4
2 数学 NULL 2
3 信息系统 1 4
4 *** 作系统 6 3
5 数据结构 7 4
6 数据处理 NULL 2
7 PASCAL语言 6 4
sno cno grade
200215121 1 92
200215121 2 85
200215121 3 88
200215122 2 90
200215122 3 80
--1查询所有年龄在20岁以下的学生姓名及其年龄。
select sname,sage
from student
where sage<20
--2查询考试成绩有不及格的学生的学号。
select sno
from sc
where grade<60
--3查询年龄不在19~22岁之间的学生姓名、系别和年龄。
select sname,sdept,sage
from student
where sage not between 19 and 22
--4查询既不是信息系,也不是计算机科学系的学生的姓名和性别。
select sname,ssex
from student
where sdept not in ('IS','CS')
--5查询所有姓刘学生的姓名、学号和性别
select sname,sno,ssex
from student
where sname like '刘%'
--6在Course数据表中添加记录('8','DB_design','2',4),并查询以"DB_"开头,且倒数第3个字符为 i的课程的详细情况
select
from course
where cname like 'DB\_%i__%' escape'\'
--7在SC数据表中添加记录('200215123','1',null),并查询所有有成绩的学生学号和课程号
select sno,cno
from sc
--8查询全体学生情况,查询结果按所在系的系号降序排列,同一系中的学生按年龄升序
select
from student
order by sdept desc,sage asc
--9计算2号课程的学生平均成绩。
select AVG(grade)
from sc
where cno='2'
--10在SC数据表中添加记录('200215123','1',23),统计出不及格的同学学号和不及格的门数。
select studentsno,count(grade)
from sc,student
group by studentsno
having grade<60
--11查询选修1号课程的学生最高分数。
select MAX(grade)
from sc
where cno='1'
--12查询学生200215121选修课程的总学分数。
select SUM(grade)
from sc
where sno='200215121'
--13求各个课程号及相应的选课人数
select cno,COUNT(sno)
from sc
group by cno
--14查询选修了2门以上(包括2门)课程的学生学号
select sno
from sc
group by sno
having count()>=2
--15查询成绩大于等于90分的学生的学号和姓名
select studentsno,sname
from student,sc
where grade>90
--16查询选修了“数据库”课程的学生的学号和姓名
select studentsno,sname
from student inner join sc on studentsno=scsno
where cno=(select cno from course where cname='数据库')
--17查询选修了3号课程且成绩高于此课程平均成绩的学号和成绩
select studentsno,grade
from student inner join sc on studentsno=scsno
where cno='3'
and grade>(select AVG(grade) from sc)
--18查询没有选修1号课程的学生姓名。
select sname
from student,sc
where cno!='1'
--1建立计算机系选修了2号课程的学生视图V1
create view v1
as
select sno,sname,ssex,sage,sdept
from student,course
where sdept='cs' and cno='2'
--2建立信息系选修了1号课程且成绩在90分以上的学生的视图V2
create view v2
as
select studentsno,sname,ssex,sage,sdept
from student,course,sc
where coursecno='2' and grade>90
--3将每门课程的课程号和平均成绩定义为一个视图V3
create view v3(cno,avg_grade)
as
select cno,avg(grade)
from sc
group by cno
--三、创建和执行下列存储过程:
--o 创建语句格式:
--n CREATE Proc[edure] 存储过程名
--[{@参数名 数据类型}[=default][output]]
--As
--Sql语句[…n]
--o 执行语句格式:
--n [exec[ute]] 存储过程名[实参[,output][,…n]
--1查询计算机系学生的考试成绩,列出学生的姓名、课程名和成绩。
select sname,cno,grade
from student,sc
where sdept='cs'
--2查询某个指定系学生的考试成绩,列出学生的姓名、所在系、课程名和成绩。
select sname,sdept,cname,grade
from student,sc,course
where sdept='%'
--3查询某个学生某门课程的考试成绩,列出学生的姓名、课程名和成绩。
select sname,cno,grade
from student,sc
where sname='%' and cname='%'
--4查询某个学生某门课程的考试成绩,若没有指定课程,则默认课程为“数据库基础”。
select sname,cno,grade
from student,sc
where sname='%' and cname='%'
--5统计指定课程的平均成绩,并将统计的结果用输出参数返回。
--6创建带删除数据的存储过程,要求删除考试成绩不及格学生的修课记录。
--7创建带修改数据的存储过程,要求将指定的课程的学分增加2分。
create table 学生表
(
学号 char(10) primary key,
姓名 char(10),
年龄 int,
性别 char(2) check (sex IN ('男','女')),
家庭住址 char(40),
联系 char(20)
)
--基础题
--1查询读者最喜爱的3种图书分类号,即借阅表中出现最多的3类图书分类号
SELECT TOP 3 [分类号] FROM [图书] JOIN [借阅] ON [图书][图书编号]=[借阅][图书编号]
GROUP BY [分类号] ORDER BY COUNT() DESC
--附加题
--1查询小于20岁的读者最喜欢的3类图书
SELECT TOP 3 [书名] FROM [读者] JOIN [借阅] ON [读者][借书证号]=[借阅][借书证号]
JOIN [图书] ON [图书][图书编号]=[借阅][图书编号]
WHERE [年龄]<20 GROUP BY [书名] ORDER BY COUNT() DESC
--2查询至少借阅了 宁静 所借图书(书名相同)的人的姓名
SELECT [姓名] FROM [读者] WHERE [姓名]<>'宁静' AND [借书证号] IN(SELECT [借书证号] FROM [借阅]
WHERE [图书编号] IN(SELECT [图书编号] FROM [读者] JOIN [借阅] ON [读者][借书证号]=[借阅][借书证号] WHERE [姓名]='宁静'))
--3查询借阅了多于3本书且每本书价均高于60的读者的借书证号
SELECT [借书证号]
FROM [借阅] JOIN [图书] ON [图书][图书编号]=[借阅][图书编号]
WHERE [单价]>60 GROUP BY [借书证号] HAVING COUNT()>3
GO
--4假定读者表中所有人姓名均不多于4个汉字,请建立一个查询语句,要求根据名字中任意1个或两个或3个或4个汉字,即可找到该读者的详细信息(即完全模糊查询)
CREATE PROCEDURE CX
@XM VARCHAR(8) AS
IF LEN(@XM)=1 SELECT FROM [读者] WHERE @XM LIKE '['+RTRIM([姓名])+']'
ELSE IF LEN(@XM)=2 SELECT FROM [读者] WHERE LEFT(@XM,1) LIKE '['+RTRIM([姓名])+']' AND RIGHT(@XM,1) LIKE '['+RTRIM([姓名])+']'
ELSE IF LEN(@XM)=3 SELECT FROM [读者] WHERE LEFT(@XM,1) LIKE '['+RTRIM([姓名])+']' AND SUBSTRING(@XM,2,1) LIKE '['+RTRIM([姓名])+']' AND RIGHT(@XM,1) LIKE '['+RTRIM([姓名])+']'
ELSE IF LEN(@XM)=4 SELECT FROM [读者] WHERE LEFT(@XM,1) LIKE '['+RTRIM([姓名])+']' AND SUBSTRING(@XM,2,1) LIKE '['+RTRIM([姓名])+']' AND SUBSTRING(@XM,3,1) LIKE '['+RTRIM([姓名])+']' AND RIGHT(@XM,1) LIKE '['+RTRIM([姓名])+']'
GO
--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'
以上就是关于SQL数据库填空题 求大神全部的内容,包括:SQL数据库填空题 求大神、SQL的查询 考试题目求教 题目已写答案求判断!、我在做一个在线考试系统,用的C#,Winform,题目都是单选题,怎么设计考题数据库表比较好SQL数据库等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)