设为首页 加入收藏

TOP

SQLserver数据库相关练习(二)
2018-04-17 09:08:06 】 浏览:1290
Tags:SQLserver 数据库 相关 练习
M three_course_view a where cName in('数据库','金融学','统计学') and exists(select 1 from three_course_view where cName in('数据库','金融学','统计学') and sName=a.sName and cName<>a.cName) group by sName having count(cName)>=3 ;

(11)查询同时选修了“数据库”“金融学”“统计学”三门课程的学生姓名。(要求不能使用EXISTS)

create view three_course_view_noExists 
as select  student.sName,course.cName from student,student_course,course_class,course
where student.sNO = student_course.sNO
and student_course.ccNO = course_class.ccNo 
and course_class.cNo = course.cNo;
select  c1.sName,c1.cName,c2.cName
from three_course_view_noExists c1,three_course_view_noExists c2,three_course_view_noExists c3
where c1.sName=c2.sName
and c2.sName = c3.sName 
and c1.cName ='数据库' 
and c2.cName='金融学'
and c3.cName='统计学';

3、思考题

(1)如何求出“金融学”成绩排名第5到第10之间的学生姓名。

create view  mark_rank_view as
select top 10 student.sName,mark,'金融学' as '科目' from student,student_course,course_class,course 
where student.sNO = student_course.sNO
and student_course.ccNO = course_class.ccNo 
and course_class.cNo = course.cNo
and course.cName='金融学' 
order by mark desc ;
select top 10 sName from mark_rank_view where sName not in (select top 4 sName from mark_rank_view);

(2)假设有两个结构完全相同的表,一个是运营数据表A,一个是历史数据表B,由于操作失误导致两个表中出现了部分完全相同的数据,请将完全相同的数据从A中删除?

根据题目意思,假设题中所指完全相等是指一行内的数据完全相同。

创建新一行数据,该行数据由两个表该行中所有字段连接成,

用where 判断两个表该新字段是否相等,如果相等,则根据表的id,删除该行。

总结

本次练习是有一定有难度,虽然自己以前有学过数据库,但是有些题目还是想了很多,说明自己对于数据库的操作还不是很熟悉,特别是多表连接查询这块内容还欠些经验。在做实验过程中,遇到过2道比较难的题目,就是2.10和2.11,因为它涉及到4张表查询,在连接起来的时候sql语句,显得很长,而且它们之间的逻辑关系变得很难理清楚,因为在最后做这两道题时我化了3,4个小时去尝试各种查询去执行,但是都不成功。最终,我先将四张表某些字段连接成一个视图,然后再用sql语句去该视图查询,才得到了题目所需要的信息。

经过这次练习,真的学到了很多,之前一直以为自己对于数据库SQL语句已经很熟练了,以为这次实验应该会很简单,但是没想到却花了近乎一天的时间去完成该实验,太过于自负了,今后会好好学习SQL相关知识,认真思考一下SQL语句怎么变形。

首页 上一页 1 2 下一页 尾页 2/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇mysql错误:ERROR1045(28000):Acc.. 下一篇SQLserver练习题之数据库sql文件

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目