数据库实验 数据操纵及数据查询
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验二数据操纵及数据查询
目的和要求
(1)学会用管理工具和T-SQL命令中对数据库表进行插入、修改和删除等操作;(2)数据更新操作时要注意数据完整性;
(3)掌握基于表与视图的简单查询与复杂查询。
实验准备
(1)了解对表数据有哪几种更新操作;
(2)样本数据录入;
(3)回顾数据完整性知识,在进行数据更新时保证数据的完整性。
实验内容
一、数据更新
insert语句
注:如果插入的数据与约束或规则的要求产生冲突,或者值的数据类型与列的数据类型不匹配,insert将执行失败。
【练习1】将样本数据通过工具或T-SQL命令录入实验一中创建的三张表,并通过管理工具查看S表中的全部数据
【练习2】使用SQL命令查看R表中的前5条选课记录
【练习3】创建表S1(sno,sname,speiality),将S表中“计算机”专业的学生的学号、
姓名、专业名三类信息插入到表S1中,并用select语句查看插入结果。
【练习4】更改S表数据,将学号=…001101‟的学生的备注列值改为…三好学生‟(将执行通过的SQL语句记录在此)。
【练习5】将姓名为“罗林琳”的同学的专业改为“通信工程”,备注改为“转专业学习”,学号改为“001241”,并将S表中所有“通信工程”专业的学生的总学分都增加10
【练习6】删除S表中的学号=…001101‟的行
【练习7】删除S表中总学分小于40的行
二、数据查询
【练习8】查询表S中计算机专业同学的学号、姓名和总学分。
【练习9】查询表S中的所有列。(将执行通过的SQL语句记录在此)
【练习10】查snosno询S表中计算机专业同学的学号、姓名和总学分,结果中各列的标题分别显示为number,name和mark。(将执行通过的SQL语句记录在此)
【练习11】对数据库的S表只选择专业名和总学分,消除结果集中
【练习12】查询数据库S表中通信专业总学分大于等于42的同学的情况(将执行通过的SQL语句记录在此)。
【练习13】查询数据库S表中计算机专业的学生情况。查询数据库S表中姓“王”且单名的学生情况(将执行通过的SQL语句记录在此)。
【练习14】查询数据库S表中不在1989年出生的学生情况
【练习15】查询数据库S表中专业名为“计算机”、“计算机”或“无线电”的学生的情况
【练习16】查询数据库中总学分尚未确定的学生情况(将执行通过的SQL语句记录在此)。SELECT * FROM S WHERE 总学分IS NULL
【练习17】查找选修了课程号为‟101‟的课程的学生的情况(将执行通过的SQL语句记录在此)。
【练习18】查找未选修离散数学的学生的情况(将执行通过该SQL命令的界面截图于此)。
【练习19】查找比所有计算机系的学生年龄都大的学生(将执行通过的SQL语句记录在此)。
【练习20】查找课程号206的成绩不低于课程号101的最低成绩的学生的学号(将执行通过的SQL语句记录在此)。
EXISTS子查询
EXISTS子查询和普通子查询不同的是:一般的子查询,内层查询只处理一次,得到一个结果集,再依次处理外层查询;而EXISTS子查询的内查询要处理多次,因为内层查询与外层查询中的…S.学号‟有关(即相关子查询),外层查询中S表的不同行有着不同的学号值。因为子查询的条件依赖于外层查询中的某些值,所以EXISTS子查询的处理过程是:首先查找外层查询中的S表中的第一行,根据该行的学号列值处理内层查询,若结果不为空,则WHERE 条件就为真,就把该行的姓名值取出作为结果集的一行,然后再找S表的第2,3….行,重复上述过程直到S表的所有行都查找完为止。
【练习21】查询选修206号课程的学生姓名(将执行通过的SQL语句记录在此)。
【练习22】查询选修了全部课程的同学的姓名(将执行通过的SQL语句记录在此)。
【练习23】查找选修了206课程且成绩在80分以上的学生姓名及成绩(将执行通过的SQL 语句记录在此)。
【练习24】查询选修了“计算机基础”课程且成绩在80分以上的学生姓名、课程名及成绩
【练习25】查找所有学生情况及他们选修的课程号,若某学生未选修任何课,也要包括他的情况说明(将执行通过的SQL语句记录在此。(提示:使用外连接操作,左外连接LEFT OUTER JOIN,右外连接RIGHT OUTER JOIN,完全外连接FULL OUTER JOIN)
【练习26】求选修101课程的学生的平均成绩,要求结果表显示列名为“课程101平均成绩”
【练习27】求选修101课程的学生的最高分和最低分,要求结果表显示列名分别为“课程101的最高分”和“课程101的最低分”(将执行通过的SQL语句记录在此)。
【练习28】求学生的总人数,要求结果表显示列名为“学生总人数”
【练习29】求选修了课程的学生总人数
【练习30】统计离散数学课程成绩在85分以上的学生人数,要求结果表显示列名为“离散数学85分以上的人数”
【练习31】将数据库中各专业名输出(即只输入不同的专业名称)
【练习32】求数据库中各专业的学生人数
提示:结果表显示为两列,一列为“专业名”,一列为“学生人数”。
【练习33】求被选修的各门课程的平均成绩和选修该课程的人数,显示结果表列名分别为:课程号、平均成绩、选修人数
【练习34】查找数据库中平均成绩在85分以上的学生的学号和平均成绩,结果表列名显示为“学号”和“平均成绩”(执行通过的界面截图)。
【练习35】查找选修课程超过2门而且成绩都在80分以上的学生的学号
【练习36】查找通信工程专业平均成绩在85分以上的学生的学号和平均成绩,结果列名显示为“学号”和“平均成绩”(执行通过的界面截图)。