这是在一个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 students(st_id varchar(20),st_name varchar(50),sex varchar(10))
insert into students(st_id,st_name,sex)
select 'st001','张杰', '男' union all
select 'st002', '公孙燕飞' ,'男' union all
select 'st003', '王楠', '女' union all
select 'st004', '王伟', '男' union all
select 'st005','李燕纹', '女' union all
select 'st006', '孙武' ,'男'
select
from students
create table teachers(t_id varchar(20),t_name varchar(50),t_lesson varchar(50))
insert into teachers
select 't001', '张老师' ,'数学' union all
select 't002', '李老师', '英语'
delete from results
create table results(r_id varchar(20),r_fenshu int,r_stid varchar(50),r_tid varchar(50))
insert into results
select 'r001','90', 'st001', 't002' union all
select 'r002', '68', 'st005', 't001' union all
select 'r003', '92', 'st003' ,'t001' union all
select 'r004', '82', 'st006', 't002' union all
select 'r005', '70', 'st002', 't002' union all
select 'r006', '86', 'st002', 't001' union all
select 'r007', '57', 'st003', 't002' union all
select 'r008', '76', 'st006', 't001' union all
select 'r009', '55', 'st001', 't001' union all
select 'r010', '77', 'st004', 't002' union all
select 'r011', '58', 'st005', 't002'
----------------------------------------------------------
1
select st_id
from students
where st_name = '王伟'
2select st_id,st_name
from students
where st_name like '__燕%'
3 select st_name,len(st_name) as 名字长度
from students
where sex ='男'
4 select min(r_fenshu) as 最低分数
from teachers t inner join results r on tt_id =rr_tid
where t_lesson ='数学' --这个是不考虑成绩中有null值的
5 select sst_id as 学生编号,r_fenshu as分数,r_tid as 课目号
from students s inner join results r on sst_id =rr_stid
where ssex='女'
--如果还要课目的名称的话请用下面的
select sst_id as 学生编号,rr_fenshu as 分数,rr_tid as 课目号,tt_lesson as 课目名称
from students s inner join results r on sst_id =rr_stid
inner join teachers t on rr_tid = tt_id
where ssex='女'
6 select avg(rr_fenshu)
from results r inner join teachers t on rr_tid = tt_id
where tt_lesson='英语'
7select
from students s inner join results r on sst_id =rr_stid
inner join teachers t on rr_tid = tt_id
where sst_id in (select top 2 st_id from students order by st_id desc)
order by sst_id desc
8 select sum(rr_fenshu) as 总分
from results r inner join students s on rr_stid =sst_id
where sst_name = '王楠'
9select distinct sst_id,sst_name
from students s inner join results r on sst_id = rr_stid
where st_id not in (select r_stid from results where r_fenshu<60) and st_id not in (select r_stid from results where r_fenshu >=90)
10 update results
set r_fenshu = r_fenshu + 10
--如果分数不可能大于100请用这句 set r_fenshu = case when r_fenshu + 10 <=100 then r_fenshu + 10 else 100 end
where r_stid in (select st_id from students where sex='女')
1 进阶题
select tt_name,count()
from students s,teachers t,results r
where rr_tid = tt_id
and sst_id =rr_stid
and rr_fenshu >= 60
and tt_id in (select t_id from teachers where t_lesson='数学' )
--and t_lesson='数学'
group by tt_name
2
select top 1 sum(r_fenshu) as 总分,tt_lesson,t_id,t_name
from results r,teachers t
where rr_tid = tt_id
group by tt_lesson,t_id,t_name
order by 总分 desc
3 delete from results where r_stid in (select r_stid from results group by r_stid having count(r_tid) = 1)
1 选做题
select dname from sysobjects d where dxtype='U'
2select top 5 from students order by newid()
一、单项选择题(本大题共10小题,共30分)
1.数据库中,数据的物理独立性是指( )。
A.数据库与数据库管理系统的相互独立
B.用户程序与DBMS的相互独立
C.用户的应用程序与存储在磁盘上数据库中的数据是相互独立的
D.应用程序与数据库中的数据的逻辑结构相互独立
2 从E-R模型关系向关系转换时,一个M:N联系转换为关系模式时,该关系模式的关键字是
A.M端实体的关键字 B.N端实体的关键字 ( )
C.M端实体关键字与N端实体关键字组合 D.重新选取其他属性
3.保护数据库,防止未经授权的或不合法的使用造成的资料泄漏、更改破坏。这是指数据的( )
A.安全性 B.完整性 C.并发控制 D.恢复
4. 关系模式中的各级模式之间的关系为( )。
A.3NF 2NF 1NF B.3NF 1NF 2NF
C.1NF 2NF 3NF D.2NF 1NF 3NF
5 五种基本关系代数运算是 ( )
A∪,-,×,π和σ B∪,-,∞,π和σ
C∪,∩,×,π和σ D∪,∩,∞,π和σ
6 在数据库设计中,将ER图转换成关系数据模型的过程属于 ( )
A需求分析阶段 B逻辑设计阶段 C概念设计阶段 D物理设计阶段
7 SQL中,下列涉及空值的 *** 作,不正确的是 ( )
A AGE IS NULL B AGE IS NOT NULL C AGE = NULL D NOT (AGE IS NULL)
8关系数据库规范化是为解决关系数据库中( )问题而引入的。
A.插入、删除和数据冗余 B.提高查询速度
C.减少数据 *** 作的复杂性 D.保证数据的安全性和完整性
9下图所示的E-R图转换成关系模型,可以转换为( )关系模式。
A.1个 B.2个 C.3个 D.4个
n m
10 如下面的数据库的表中,若职工表的主关键字是职工号,部门表的主关键字是部门号,SQL *** 作( )不能执行。
职工表 部门表
A.从职工表中删除行(‘025’,‘王芳’,‘03’,720)
B.将行(‘005’,‘乔兴’,‘04’,750)插入到职工表中
C.将职工号为‘001’工资改为700
D.将职工号为‘038’部门号改为‘03’
二、填空题(本大题共5小题,每空1分,共10分)
1.对于非规范化的模式,结过使属性域变为简单域转变为1NF,将1NF经过消除非主属性对码的_______________转变为2NF,将2NF经过消除非主属性对码的_______________转变为3NF。
2.在关系A(S,SN,D)和B(D,CN,NM)中,A的主键是S,B的主键是D,则D在S中称为___________。
3.数据模型由_________________、_________________和_________________三部分组成的。
4.数据库体系结构按照_______________、_______________和_______________三层结构进行组织。
5.E-R图向关系模型转化要解决的问题是如何将实体和实体之间的联系转换成关系模式,如何确定这些关系模式的_________________。
三、计算题(本大题共5小题,每小题2分,共10分)
设有如下图所示的关系R,S和T,计算:
⑴ R1=R∪S R S T
⑵ R2=R-S
⑶ R3=R T
⑷ R4=R T
(5) R5=
四、设计题(本大题共5小题,每小题4分,共20分)
设教学数据库中有三个基本表:
学生表S(SNO,SNAME,SEX,AGE,DEPT)
课程表C(CNO,CNAME,TEACHER)
学生选课表SC(SNO,CNO,GRADE)
其中:SNO为学号,SNAME为姓名,SEX为性别,AGE为年龄,DEPT为系别,CNO为课程CNAME为课程名,TEACHER 任课老师,GRADE为成绩。
试写出下列 *** 作的SQL语句:
1检索学生姓名及其所选修课程号和成绩。
2 检索选修课程“C2”的学生中的最高成绩。
3检索所有比“王华”年龄大的学生姓名、年龄和性别。
4 检索选修四门以上课程的学生总成绩(不统计不及格的课程),并要求按总成绩的降序排列出来。
5 把Wu老师的女同学选课成绩增加5%
五、综合题(本大题共2小题,每小题15分,共30分)
1.假设某商业集团数据库中有一关系模式R如下:R (商店编号,商品编号,数量,部门编号,负责人)
如果规定:
(1) 每个商店的每种商品只在一个部门销售;
(2) 每个商店的每个部门只有一个负责人;
(3) 每个商店的每种商品只有一个库存数量。
试回答下列问题:
(1) 根据上述规定,写出关系模式R的基本函数依赖;
(2) 找出关系模式R的候选码;
(3) 试问关系模式R最高已经达到第几范式?为什么?
(4) 如果R不属于3NF,请将R分解成3NF模式集。
2.假定一个部门的数据库包括以下的信息:
职工的信息:职工号、姓名、住址和所在部门。
部门的信息:部门所有职工、经理和销售的产品。
产品的信息:产品名、制造商、价格、型号及产品内部编号。
制造商的信息:制造商名称、地址、生产的产品名和价格。
完成如下设计:
(1)设计该计算机管理系统的E-R图;
(2)写出关系模式集,并用下划线和波浪线标识出每个模式的主码和外码。
(3)在上述数据库中,写出主码和外码的总数这两个数字。
以上就是关于SQL数据库的问题目全部的内容,包括:SQL数据库的问题目、SQL数据库试题求解、《数据库系统概论》第四版 期末考试题等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)