欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    数据库实习答案(19页).doc

    • 资源ID:36344852       资源大小:95.50KB        全文页数:19页
    • 资源格式: DOC        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    数据库实习答案(19页).doc

    -数据库实习答案1、E-R图向关系模式的转化。最终答案: 职工(职工号,姓名,性别,工资,职称,简历,部门号); 部门(部门号,名称,地址,领导人职工号); 工程(工程号,工程名,参加人数,预算,部门号,负责人职工号); 办公室(编号,地点,电话,部门号); 参加(职工号,工程号,日期,具体职务); (红色部分为主键,绿色部分为外键)。2、SQL查询语句练习。/* * 实验3 数据库的简单查询实验答案*/【例3.1】查询全体学生的学号与姓名 SELECT Sno,Sname FROM Students 【例3.2】查询全体学生的学号、姓名、性别、年龄、所在系。 SELECT Sno,Sname,Sname Ssex,Sage,Sdept FROM Students【例3.3】查询全体学生的选课情况,即学号、课程号、成绩,成绩值都加5SELECT Sno,Cno,Grade+5 FROM Enrollment【例3.4】查询全体学生的学号、姓名,并为原来的英文列名设置中文列别名。以下三种方法等价。SELECT Sno '学号' , Sname '姓名' FROM StudentsSELECT Sno AS '学号' ,Sname AS '姓名' FROM StudentsSELECT '学号'=Sno , '姓名'=Sname FROM Students【例3.5】查询全体学生的选课情况,其成绩列值都加5,并为各列设置中文的别名 SELECT Sno '学号',Cno '课程号',Grade+5 '成绩' FROM Enrollment【例3.6】显示所有选课学生的学号。SELECT Sno '学号' FROM Enrollment等价于:SELECT ALL Sno '学号' FROM Enrollment【例3.7】显示所有选课学生的学号,并去掉重复行。SELECT DISTINCT Sno '学号' FROM Enrollment【例3.8】查询学生选课成绩大于80分的学生学号、课程号、成绩。SELECT * FROM Enrollment WHERE Grade>80【例3.9】查询数学系全体学生的学号、姓名。SELECT Sno ,Sname FROM Students WHERE Sdept='Math'【例3.10】查询学生选课成绩在8090分之间的学生学号、课程号、成绩。SELECT * FROM Enrollment WHERE Grade BETWEEN 80 AND 90等价于:SELECT * FROM Enrollment WHERE Grade >= 80 AND Grade <=90【例3.11】查询学生年龄不在2030之间的学生学号、姓名、所在系。SELECT Sno ,Sname,Sdept FROM Students WHERE Sage NOT BETWEEN 20 AND 30等价于:SELECT Sno ,Sname,Sdept FROM Students WHERE Sage<20 OR Sage>30【例3.12】查询数学系、计算机系、艺术系学生的学号、姓名。SELECT Sno,Sname FROM Students WHERE Sdept IN ('Math', 'Computer', 'Art')等价于:SELECT Sno,Sname FROM Students WHERE Sdept ='Math' OR Sdept = 'Computer' OR Sdept = 'Art'【例3.13】查询既不是数学系、计算机系,也不是艺术系学生的学号、姓名。SELECT Sno,Sname FROM Students WHERE Sdept NOT IN ('Math', 'Computer', 'Art')等价于:SELECT Sno,Sname FROM Students WHERE Sdept! ='Math' AND Sdept! = 'Computer' AND Sdept! = 'Art'【例3.14】查找姓名的第二个字符是u并且只有三个字符的学生的学号、姓名。SELECT Sno,Sname FROM Students WHERE Sname LIKE '_u_'【例3.15】查找姓名以S开头的所有学生的学号、姓名。SELECT Sno,Sname FROM Students WHERE Sname LIKE 'S%'【例3.16】查找姓名以S、D或J开头的所有学生的学号、姓名。SELECT Sno,Sname FROM Students WHERE Sname LIKE 'SDJ%'【例3.17】查找姓名不是以S、D或J开头的所有学生的学号、姓名。SELECT Sno,Sname FROM Students WHERE Sname LIKE 'SDJ%'等价于:SELECT Sno,Sname FROM Students WHERE Sname NOT LIKE 'SDJ%'【例3.18】查询无考试成绩的学生的学号和相应的课程号。SELECT Sno, Cno FROM Enrollment WHERE Grade IS NULL不等价于:SELECT Sno, Cno FROM Enrollment WHERE Grade =0 【例3.19】查询有考试成绩(即成绩不为空值)的学生的学号、课程号。SELECT Sno, Cno FROM Enrollment WHERE Grade IS NOT NULL【例3.3.20】查询计算机系年龄在18岁以上的学生学号、姓名。SELECT Sno,Sname FROM Students WHERE Sdept='Computer' AND Sage>18【例3.21】求选修了C1课程或C2课程的学生学号、成绩。SELECT Sno,Grade FROM Enrollment WHERE Cno='C1' OR Cno='C2'为了使查询语句的可读性更好, 可以将WHERE后面的整个条件用括号括起来。等价于:SELECT Sno,Grade FROM Enrollment WHERE (Cno='C1' OR Cno='C2')【例3.22】求学生的总人数SELECT COUNT(*) FROM Students 【例3.23】求选修了课程的学生人数SELECT COUNT(DISTINCT Sno) FROM Enrollment【例3.24】求选修了C1课程的学生的平均成绩。SELECT AVG(Grade) FROM Enrollment WHERE Cno='C1'【例3.25】求20010102号学生的考试总成绩之和。SELECT SUM(Grade) FROM Enrollment WHERE Sno = '20010102'【例3.26】选修了C1课程的学生的最高分和最低分SELECT MAX(Grade) , MIN(Grade) FROM Enrollment WHERE Cno='C1'【例3.3.27】求选修每门课程的学生人数。SELECT Cno AS '课程号', COUNT(Sno) AS '选修人数' FROM Enrollment GROUP BY Cno【例3.28】求每个学生的学号和各门课程的总成绩。SELECT Sno '学号', Sum(grade) '总成绩' FROM Enrollment GROUP BY Sno【例3.29】求选修课程超过2门课的学生的学号、平均成绩,选修的门数。SELECT Sno, AVG(Grade) AS '平均成绩', COUNT(*) AS ' 选修门数'FROM EnrollmentGROUP BY Sno HAVING COUNT(*) >= 2【例3.30】查询所有学生的行,并按学生的年龄值从小到大排序。SELECT * FROM Students ORDER BY Sage【例3.31】查询选修了C1课程的学生的学号和成绩,查询结果按成绩降序排列。 SELECT Sno, Grade FROM Enrollment WHERE Cno='C1' ORDER BY Grade DESC【例3.32】查询全体学生信息,查询结果按所在系的系名升序排列,同一系的学生按年龄降序排列。 SELECT * FROM Students ORDER BY Sdept, Sage DESC【例3.33】求选修课程超过2门课的学生的学号、平均成绩和选课门数,并按平均成绩降序排列。SELECT Sno AS '学号', AVG(Grade) AS '平均成绩', COUNT(*)AS '修课门数'FROM EnrollmentGROUP BY Sno HAVING COUNT(*) >= 2 ORDER BY AVG (Grade) DESC/* * 实验4 数据库的多表连接查询实验答案*/【例4.1】查询每个学生的基本信息以及他/她选课的情况。SELECT Students.*,Enrollment.* FROM Students,EnrollmentWHERE Students.Sno = Enrollment.Sno 上述是等值连接,改为自然连接,表示如下:SELECT Students.Sno,Sname,Ssex,Sage,Sdept,Cno,GradeFROM Students,EnrollmentWHERE Students.Sno = Enrollment.Sno【例4.2】查询每个学生的学号、姓名、选修的课程名、成绩。SELECT Students.Sno,Sname, Cname,GradeFROM Students,Courses,EnrollmentWHERE Students.Sno = Enrollment.Sno AND Courses.Cno= Enrollment.Cno【例4.3】查询选修了C2且成绩大于90分的学生的学号、姓名、成绩。SELECT Students.Sno,Sname, GradeFROM Students, EnrollmentWHERE Students.Sno = Enrollment.Sno AND Cno='C2 ' AND Grade>90【例4.4】求计算机系选修课程超过2门课的学生的学号、姓名、平均成绩, 并按平均成绩从高到低排序。SELECT Students.Sno, Sname, AVG(Grade) 'Average'FROM Students, EnrollmentWHERE Students.Sno= Enrollment.Sno AND Sdept='Computer'GROUP BY Students.Sno,Sname HAVING COUNT(*) >= 2ORDER BY SUM(Grade) DESC【例4.5】查询与Sue在同一个系学习的所有学生的学号和姓名。SELECT S2.Sno, S2.SnameFROM Students S1,Students S2 where S1.Sdept = S2.Sdept AND S1.Sname = 'Sue'【例4.6】查询所有学生的选修情况,要求包括选修了课程的学生和没有修课的学生,显示他们的学号、姓名、课程号、成绩。SELECT Students.Sno, Sname,Cno,Grade FROM Students,EnrollmentWHERE Students.Sno*=Enrollment.Sno上述左外连接可可以用右外连接等价表示:SELECT Students.Sno, Sname,Cno,Grade FROM Students,EnrollmentWHERE Enrollment.Sno =* Students.Sno在SQLSERVER2000中,以上左外连接还可等价表示为:SELECT Students.Sno, Sname,Cno,Grade FROM Students LEFT JOIN Enrollment ON Students.Sno=Enrollment.Sno-或者表示为:SELECT Students.Sno, Sname,Cno,Grade FROM Enrollment RIGHT JOIN Students ON Enrollment.Sno=Students.Sno/* * 实验5 数据库的子查询、组合查询实验答案*/【例5.1】查询与Sue在同一个系学习的学生学号、姓名。SELECT Sno, Sname FROM StudentsWHERE Sdept= (SELECT Sdept FROM Students WHERE Sname = 'Sue')【例5.2】查询其他系中比计算机系任一学生年龄都小的学生基本情况。SELECT * FROM StudentsWHERE Sdept!='Computer' AND Sage <ALL (SELECT Sage FROM Students WHERE Sdept='Computer')【例5.3】查询其他系中比计算机系某一学生年龄小的学生的基本情况。 SELECT * FROM StudentsWHERE Sdept!='Computer' AND Sage <ANY (SELECT Sage FROM Students WHERE Sdept='Computer')【例5.4】查询成绩大于80分的学生的学号、姓名。SELECT Sno, Sname FROM StudentsWHERE Sno=ANY ( SELECT Sno FROM Enrollment WHERE Grade >80 )【例5.5】查询选修了课程名为English的课程并且成绩大于80 分的学生学号、姓名。SELECT Sno, Sname FROM StudentsWHERE Sno IN(SELECT Sno FROM Enrollment WHERE Grade > 80 AND Cno=(SELECT Cno FROM Courses WHERE Cname= 'English')【例5.6】查询选修了C2课程的学生的学号和姓名。SELECT Sno, Sname FROM StudentsWHERE EXISTS (SELECT * FROM EnrollmentWHERE Sno =Students.Sno AND Cno ='C2')【例5.7】查询没有选修C2课程的学生的学号、姓名。SELECT Sno, Sname FROM StudentsWHERE NOT EXISTS (SELECT * FROM EnrollmentWHERE Sno =Students.Sno AND Cno ='C2')【例5.8】查询选修了C1课程或选修了C2课程的学生学号。SELECT Sno FROM Enrollment WHERE Cno ='C1'UNIONSELECT Sno FROM Enrollment WHERE Cno ='C2'【例5.9】查询选修了C1课程并且也选修了C2课程的学生学号。SELECT Sno FROM Enrollment WHERE Cno ='C1' SQLSERVER2000中不能运行INTERSECTSELECT Sno FROM Enrollment WHERE Cno ='C2'上述查询在SQL SERVER 2000中应表示为:SELECT Sno FROM Enrollment E1WHERE Cno ='C1' AND EXISTS(SELECT Sno FROM Enrollment E2WHERE E1.Sno=E2.Sno AND E2.Cno ='C2')【例5.10】查询选修了C1课程但没有选修了C2课程的学生学号。SELECT Sno FROM Enrollment WHERE Cno ='C1' SQLSERVER2000中不能运行MINUSSELECT Sno FROM Enrollment WHERE Cno ='C2'上述查询在SQLSERVER2000中应表示为:SELECT Sno FROM Enrollment E1WHERE Cno ='C1' AND NOT EXISTS (SELECT Sno FROM Enrollment E2WHERE E1.Sno=E2.Sno AND E2.Cno ='C2')/* * 实验6 数据库的更新实验答案*/【例6.1】向Students表中添加一个学生记录,学生学号为20010105,姓名为Stefen,性别为男,年龄25岁,所在系为艺术系Art。INSERT INTO Students VALUES ('20010105', 'Stefen', 'F', 25, 'Art')【例6.2】向Enrollment表中添加一个学生的选课记录,学生学号为20010105,所选的课程号为C2。 INSERT INTO Enrollment (Sno,Cno) VALUES ('20010105', 'C2')【例6.3】假定当前数据库中有一个临时表Temp,见表。把它的所有行一次性地加到Students表中。要求先定义Temp表,输入若干行数据。具体内容表3-7INSERT INTO Students SELECT * FROM Temp【例6.4】将所有学生选课的成绩加5。UPDATE Enrollment SET Grade = Grade + 5【例6.5将姓名为Sue的学生所在系改为计算机系。UPDATE Students SET Sdept = 'Computer' WHERE Sname = 'Sue'【例6.6】将选课了课程名为Database课程的学生成绩加10。UPDATE Enrollment SET Grade = Grade + 10WHERE Cno = (SELECT Cno FROM Courses WHERE Cname = 'Database')【例6.7】删除所有成绩为空值的选修记录。DELETE FROM Enrollment WHERE Grade IS NULL【例6.8】删除学生姓名为Deepa的学生记录。 DELETE FROM Students WHERE Sname = 'Deepa'【例6.9】删除计算机系选修成绩不及格的学生选修记录。DELETE FROM EnrollmentWHERE Grade < 60 AND Sno IN (SELECT Sno FROM StudentsWHERE Sdept = 'Computer' )GO/* * 实验7 数据库的视图定义及使用实验答案*/【例7.1】建立数学系学生的视图。CREATE VIEW MathStudentViewASSELECT Sno, Sname, SageFROM Students WHERE Sdept = 'Math'GO【例7.2】建立计算机系选修了课程名为Database的学生的视图,视图名为:CompStudentView,该视图的列名为学号、姓名、成绩。 CREATE VIEW CompStudentView (学号,姓名,成绩) ASSELECT Students.Sno, Sname, GradeFROM Students,Courses,EnrollmentWHERE Students.Sno = Enrollment.Sno AND Courses.Cno=Enrollment.Cno AND Sdept= 'Computer' AND Cname = 'Database'GO【例7.3】创建一个名为StudentsSumView,包含所有学生学号和总成绩的视图。CREATE VIEW StudentsSumView(学号,总成绩)ASSELECT Sno,SUM (Grade) FROM EnrollmentGROUP BY SnoGO【例7.4】建立计算机系学生选修了课程名为Database并且成绩大于80分的学生视图,视图名为:CompStudentView1。该视图的列名为学号、姓名、成绩。CREATE VIEW CompStudentView1AS SELECT * FROM CompStudentViewWHERE 成绩>80GO【例7.5】查询计算机系选修了课程名为Database并且成绩大于90分的学生的姓名、成绩。SELECT 姓名,成绩 FROM CompStudentView1 WHERE 成绩>90【例7.6】删除CompStudentView1视图。 DROP VIEW CompStudentView13、数据库安全与保护内容有一位心理学家到一个建筑工地,分别问三个正在砌砖的工人:“你在干什么?”第一个工人懒洋洋地说:“我在砌砖。” 第二个工人缺乏热情地说:“我在砌一堵墙。” 第三个工人满怀憧憬地说:“我在建一座高楼!”听完回答,心理学家判定: 第一个人心中只有砖,他一辈子能把砖砌好就不错了;第二个人眼中只有墙,好好干或许能当一位技术员;而第三个人心中已经立起了一座殿堂,因为他心态乐观,胸怀远大的志向!井底之蛙,只能看到巴掌大的天空;摸到大象腿的盲人,只能认为大象长得像柱子;登上五岳的人,才能感觉“一览众山小”;看到大海的人,就会顿感心胸开阔舒畅;心中没有希望的人,是世界上最贫穷的人;心中没有梦想的人,是普天下最平庸的人;目光短浅的人,是最没有希望的人。清代“红顶商人”胡雪岩说:“做生意顶要紧的是眼光,看得到一省,就能做一省的生意;看得到天下,就能做天下的生意;看得到外国,就能做外国的生意。”可见,一个人的心胸和眼光,决定了他志向的短浅或高远;一个人的希望和梦想,决定了他的人生暗淡或辉煌。-第 19 页-

    注意事项

    本文(数据库实习答案(19页).doc)为本站会员(1595****071)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开