实验7 多表链接查询
- 格式:doc
- 大小:11.54 MB
- 文档页数:5
《数据库系统概论》实验报告实验名称:多表查询实验人:实验地点:实验楼317实验日期:2009-10-12一、实验准备1.硬件及软件环境要求为了使该实验顺利进行,需要有一台计算机,计算机必须安装Windows 2000、Windows XP或Windows NT操作系统,还必须安装Microsoft SQL Server 2000 任意一版本(个人版、标准版、企业版)。
实验开始之前,必须将实验1.2节中创建好的SCDB数据库和ShiYan数据库附加到当前SQL数据库服务器中。
2.本实验涉及的主要SQL语句的语法格式及各种操作说明数据库各数据表中存放着不同的数据,用户经常需要用多个表中的数据来组合提炼出所需的数据信息,如果一个查询需要对多个表进行操作,这一查询就称为多表查询(或关联查询)。
多表查询是通过各个表之间共同的关联属性列来实现数据查询的,它是关系数据库查询操作的一种最常见的方法。
多表查询主要表现为连接查询、嵌套查询、集合查询等几种形式。
(1) 连接查询连接查询是关系数据库中最主要的查询,包括等值连接查询、自然连接查询、非等值连接查询、自身连接查询、外连接查询和复合条件连接查询。
1) 等值、非等值和自然连接查询连接查询中用来连接两张表的条件称为连接条件或连接谓词,其语法为:SELECT column_name [ ,...n ][ FROM tablename1,tablename2 ]WHERE [tablename1].<column_name><operator>[tablename2].< column_name >【说明】operator:连接运算符。
当为“=”时,称为等值连接;否则称为非等值连接;在等值连接中,如果将目标列中重复的属性列去掉则称为自然连接。
2) 外连接查询在通常的连接操作中,只有满足条件的元组才能作为结果输出,但如果想以某张表作为主体列出所有的情况,在没有信息的情况下,只能输出其基本情况信息,这时就需要使用外连接查询。
实验五:多表查询及视图一、实验目的1.掌握SELECT语句的基本语法和查询条件表示方法;2.掌握数据表的连接查询、嵌套查询、集合查询的使用方法。
3.掌握创建及管理视图的方法;二、实验学时2学时三、实验要求1.了解SELECT语句的基本语法格式和执行方法;2.掌握连接查询、嵌套查询和集合查询的语法规则;3.掌握使用界面方式和命令方式创建及管理视图;4.完成实验报告;四、实验内容1.以实验3数据库为基础,请使用T-SQL 语句实现进行以下操作:1)查询选修了‘数学’或者‘大学英语’的学生学号、姓名、所在院系、选修课程号及成绩;2)查询与‘张力’(假设姓名唯一)年龄不同的所有学生的信息;3)按照“学号,姓名,所在院系,已修学分”的顺序列出学生学分的获得情况。
其中已修学分为考试已经及格的课程学分之和;4)查找选修了至少一门和张力选修课程一样的学生的学号、姓名及课程号;5)查询只被一名学生选修的课程的课程号、课程名;6)使用嵌套查询出选修了“数据结构”课程的学生学号和姓名;7)使用嵌套查询查询其它系中年龄小于CS系的某个学生的学生姓名、年龄和院系;8)使用ANY、ALL 查询,列出其他院系中比WM系所有学生年龄小的学生的姓名;9)使用集合查询查询选修1号课程同时选修2号课程的同学的学号与姓名;2.以实验数据库为基础数据,利用对象资源管理器创建以下视图:1)创建所有学生学号、姓名及年龄的信息视图v_stu_info2)创建CS系学生基本信息视图v_stu_cs3)创建选修课成绩在80分以上的学生的信息视图v_stu_80,包括学生基本情况及成绩。
3. 以实验数据库为基础数据,请使用T-SQL语句完成以下内容,并将SQL语句写在实验报告册中:1) 创建v_CS视图,包括CS系各学生的学号、姓名及年龄,要求进行修改和插入操作时仍需保证该视图只有CS系的学生;2) 创建v_CS_age20视图,包括CS系学生年龄在20岁以上的基本信息;并保证对视图文本的修改都要符合年龄大于20这个条件。
数据库的实验总结第1篇20XX年12月28号,我们商务班踏上了实训的道路。
而1月9号我们实训也已经结束。
为期8天的实训让我领会到了许多平时课堂上所没有接受的课外知识,很让人受益匪浅,懂得如何去运用,而进行的一次分析设计综合的训练。
本次实训的目的是让我们掌握数据库设计的方法、原理和技术,把理论与实践相结合,巩固课堂教学内容。
经过我们小组的激烈讨论,这次实训我们从12个选题当中选择了仓储管理系统。
大部分小组都选图书借阅管理系统,而我们小组就是不走寻常路的。
仓储管理看似简单的一个选择,却很复杂。
当老师让我们设计数据流图的时候,我们自我感觉是已经做流最充分的准备了,可是当老师给我们检查的时候,错误和漏洞一个个被发现并指正。
而我们虚心接受了老师的指导。
而我们发现简单的一个仓储管理系统包含了很繁琐而杂多的多系,所以我们果断摘取其中的一个部分————物流。
仓储管理是现代物流不可或缺的重要环节。
首先,仓储管理是对货物质量的保证;其次仓储管理是保证生产顺利进行的必要条件;最后,合理性的仓储管理是加快商品流通、节约流通费用的必要手段。
现在真正到了我们创建数据库的时候了,当然首要的任务是建表了,表是建立关系数据库的基本结构,用来存储数据具有已定义的属性,在表的操作过程中,有查看表信息、查看表属性、修改表中的数据、删除表中的数据及修改表和删除表的操作。
从实训中让我更明白一些知识,表是数据最重要的一个数据对象,表的创建好坏直接关系到数数据库的成败,表的内容是越具体越好,但是也不能太繁琐,以后在实际应用中多使用表,对表的规划和理解就会越深刻。
我们实训的另一个内容是数据库的约束、视图、查询。
从中我们了解到查询语句的基本结构,和简单SELECT语句的使用,多表连接查询。
而在视图的操作中,也了解到了视图是常见的数据库对象,是提供查看和存取数据的另一种途径,对查询执行的大部分操作,使用视图一样可以完成。
使用视图不仅可以简化数据操作,还可以提高数据库的安全性,不仅可以检索数据,也可以xxx视图向基表中添加、修改和删除数据。
一、实验题目:多表查询与子查询二、实验目的:掌握如何进行多表查询与子查询三、实验步骤:附加XSCJ数据库,改名为XSCJ学号姓名,完成以下习题后把习题语句保存为学号姓名.sql 文件并上传至教师机指定共享文件夹连接习题:--1、查找XSCJ数据库每个学生的情况以及选修的课程情况。
--2、查询xscj数据库中学号,姓名,课程号,成绩--3、查询xscj数据库中学号,姓名,课程名,成绩--4、查询xscj数据库中选修了计算机基础课程同学的学号,姓名,成绩--5、查询xscj数据库中程明选修的课程名,成绩--6、查询班级表中学制相同的班级编号一、连接1.什么是连接连接是两元运算,可以两个或多个表进行查询,其结果通常是含有参加连接运算的两个表(或多个表)的指定列的表。
在实际应用中,多数情况下,用户查询的列都来自于多个表。
涉及多个表的查询被称为连接查询。
2.连接表现形式在T-sql语言中连接查询有两大类表示形式1)符合sql标准连接谓词表示形式。
2)T-sql扩展的使用关键字join的表示形式。
3.连接分类内连接表名1 join 表名2 on 条件外连接左连接left join ,右连接right join,全连接full join自连接谓词连接:where 条件(两个表中的字段条件)4.建立连接的步骤1)要连接哪几个表2)以什么条件连接——关系:主键、外键,等值3)查询记录的条件4)要查询什么信息如:查询studentscore数据库中学生信息表和学生成绩表的全部信息附加studentscore数据库SelectFromWhere子查询习题:--1、在XSCJ数据库中,要查找选修了课程号为101的课程的学生的情况。
--2、查找选修了计算机基础课的学生的情况--查找未选修离散数学的学生的情况。
--3、查找比所有计算机系的学生年龄都大的学生。
--查找所有比所有男生都小的学生的情况。
(注意出生时间与年龄的关系!反比!)--4、查找课程号201的成绩不低于课程号101的最低成绩的学生的学号。
设计数据库、数据表并编程实现一、实验目的通过“数据库系统概论”书本知识学习和“数据库原理与应用”课程教学所授知识对“教学管理系统”的实验内容进行分析,通过建立数据库、数据表、数据视图以及触发器,利用SQL结构化查询语言提供的数据操纵功能,设计实现对数据的定义、修改、删除、查询、更新以及控制等操作,并按照实验指导书的各项要求完成实验内容。
二、实验内容(1)根据实验建议所示,建立“学生管理”数据库。
(2)建立数据表的方法,建立五个相关的数据表。
完成数据库的建立并定义各表的完整性约束条件。
分别使用企业管理器和SQL 语言来实现。
(3)熟练掌握并应用SQL中的数据表定义、删除和修改等操作命令;(4)熟练掌握为各表常用字段建立索引,以提高数据检索效率。
create database 学生管理;create table student ( sno Char(9),sname Char(10) not null,sbirthday Datetime,ssex Char(2) check(ssex in ('男','女')),sclass Char(20),sremark Char(100),address Char(40),zipcode Char(6),phone Char(15),email Char(40), primary key(sno) );create table course ( cno char(6) primary key,cname char(20),cpno char(6),ctime Numeric(2),credit Numeric(2),foreign key(cpno)references course(cno));create table score(sno char(9), cno char(6),primary key(sno,cno),foreign key(sno)references student(sno),foreign key(cno)references course(cno),score Numeric(3));create table teacher( Tno char(20) primary key,Tname char(20) ,Tsex Char(2) check(Tsex in ('男','女')),Department char(15),tbirthday Datetime);create table Teaching(Tno char(20),cno char(6),tdate datetime,classroom char(10),sclass char(20),primary key(Tno,cno),foreign key(Tno)references teacher(Tno),foreign key(cno)references course(cno));设计数据插入、修改、删除、查询和视图等操作并编程实现一、实验目的(1)熟练掌握数据更新语句,灵活地操作插入数据、修改数据和删除数据;(2)熟练掌握关系数据库中的完整性概念的应用;(3)掌握单表查询的基本方法;(4)掌握多表连接查询的基本方法;(5)熟练掌握以下练习,并进行以下各类查询:①选择表中的若干列、查询全部列、查询经过计算的值;②选择表中的若干元组,即消除取值重复的行与查询满足指定条件的元组(包括:比较大小、确定范围、确定集合、字符匹配、涉及空值和多种条件查询);③对查询结果排序;④使用集函数;⑤对查询结果分组(6)熟练掌握以下练习,并进行下列各类连接查询:①等值与非等值连接查询;②自身连接;③外连接;④复合条件连接;(7)掌握嵌套查询的基本方法;(8)掌握集合查询的基本方法;(9)熟练掌握查询视图操作(10)熟练掌握更新视图操作(11)熟练关系的完整性概念,领会视图的用途(12)练习以下各类查询:①带有IN谓词的子查询;②带有比较运算符的子查询;③带有ANY或ALL谓词的子查询;④带有EXISTS谓词的子查询;⑤视图查询与更新操作;二、实验内容根据以下给定的部分数据表信息,分别对student, course, score, teacher, teching 表进行数据插入以及根据题目要求用SQL语句实现。
实验一 SQL Server 2005 的安装和环境介绍一.实验目的与要求:1.掌握SQL Server 2005 服务器的安装方法2.了解SQL Server 2005 的环境3.了解数据库及其对象二.实验准备1.了解SQL Server 2005的版本2.了解SQL Server 2005各版本对硬件和软件的需求三.实验要求1.写出SQL SERVER 2005的功能与特点, 使用方法, 应用状况的报告2.完成SQL SERVER 2005的安装、启动、登录。
四.实验内容1.安装SQL Server 2005实验一 SQL Server 2005 的安装和环境介绍●实验指导——安装SQL Server 20051.根据安装机器软硬件的要求,选择一个合适的版本,以下以开发版为例2.将 SQL Server 2005 DVD 插入 DVD 驱动器。
如果DVD驱动器的自动运行功能无法启动安装程序无法启动安装程序,请导航到 DVD 的根目录然后启动splash.hta。
3.在自动运行的对话框中,单击“运行 SQL Server 安装向导”。
4.在“最终用户许可协议”页上,阅读许可协议,再选中相应的复选框以接受许可条款和条件。
接受许可协议后即可激活“下一步”按钮。
若要继续,请单击“下一步”若要结束安装程序,请单击“取消”。
如下图:5.在“SQL Server 组件更新”页上,安装程序将安装 SQL Server 2005 的必需软件。
有关组件要求的详细信息,请单击该页底部的“帮助”按钮。
若要开始执行组件更新,请单击“安装”。
更新完成之后若要继续,请单击“完成”。
6.在 SQL Server 安装向导的“欢迎”页上,单击“下一步”以继续安装。
7.在“系统配置检查 (SCC)”页上,将扫描安装计算机,以检查是否存在可能妨碍安装程序的条件。
8.在“注册信息”页上的“姓名”和“公司”文本框中,输入相应的信息。
SQL数据的查询和更新实验报告报告实验三、SQL的数据查询1、实验目的熟悉SQL语句的数据查询语言,能够SQL语句对数据库进行单表查询、连接查询、嵌套查询、集合查询和统计查询。
2、实验内容实验内容主要是对数据库进行查询操作,包括如下四类查询方式:单表查询查询的目标表达式为所有列、指定的列或指定的列的运算三种不同。
使用DISTINCT保留字消除重复行。
对查询结果排序和分组。
集合分组使用集函数进行各项统计。
连接查询笛卡儿连接和等值连接。
自连接。
外连接复合条件连接。
多表连接。
嵌套查询通过实验验证对子查询的两个限制条件。
体会相关子查询和不相关子查询的不同。
考察四类谓词的用法,包括:第一类,IN、NOT IN;第二类,带有比较运算符的子查询;第三类,SOME、ANY或ALL谓词的子查询,查询最大值和最小值;第四类,带有EXISTS谓词的子查询,实现“所有”等情况集合运算使用保留字UNION进行集合或运算。
采用逻辑运算符AND或OR来实现集合交和减运算。
3、实验步骤以University_Mis数据库为例,该数据库中有四张如实验一,其中Score是每门课的考试成绩,Scredit是学生所有考试合格课程所获得的积分总数,Ccredit每门课程的学分数。
在数据库中,存在这样的联系:学生可以选择课程,一个课程对应一个教师。
在表Reports中保存学生的选课记录和考试成绩。
1请先输入如下元组,再对数据库进行有关的查询操作:图、Students表图、Teachers表图、Courses表图、Reports表2查询性别为“男”的所有学生的名称并按学号升序排列。
查询学生的选课成绩合格的课程成绩,并把成绩换算为积分。
积分的计算公式为:[1+(考试成绩-60)*]*Ccredit。
考试成绩>=60。
查询学分是3或4的课程的名称。
查询所有课程名称中含有“算法”的课程编号。
查询所有选课记录的课程号。
统计所有老师的平均工资。
最新国家开放大学电大《数据库应用技术》实验实验目的:通过使用SSMS工具,练习对数据库中的数据表进行单表查询、多表连接查询、子查询。
对数据表中的数据进行更改和删除等操作。
实验要求:将相关的SQL 语句和运行结果的截屏保存在文件中,或填写在下面的实验报告中,并通过网络提交。
实验内容:使用SSMS工具,在“可用数据库”中选中Students数据库,完成如下实验。
1.单表查询。
写出实现如下查询的SQL语句。
(1) 查询学生选课表中的全部数据。
(2) 查询计算机系的学生的姓名、年龄。
(3) 查询成绩在70~80分的学生的学号、课程号和成绩。
(4) 查询计算机系年龄在18~20岁男生的姓名、年龄。
(5) 查询C001课程的考试成绩最高分。
(6) 查询计算机系学生的最大年龄和最小年龄。
(7) 统计各系的学生人数。
(8) 统计每门课程的选课人数和考试成绩最高分。
(9) 统计每个学生的选课门数和考试总成绩,并按选课门数升序显示结果。
(10)查询总成绩超过200分的学生,要求列出其学号和总成绩。
(11)查询选课门数超过2门的学生的学号、平均成绩和选课门数。
2.多表连接查询。
写出实现如下查询的SQL语句。
(12) 查询选了C002课程的学生的姓名和所在系。
(13) 查询成绩80分以上的学生的姓名、课程号和成绩,并按成绩降序排列结果。
(14) 查询计算机系男生选修了“数据库基础”的学生的姓名和成绩。
(15) 查询学生的选课情况,要求列出每位学生的选课情况(包括未选课的学生),并列出学生的学号、姓名、课程号和考试成绩。
(16) 查询哪些课程没有人选修,要求列出课程号和课程名。
(17) 查询计算机系没有选课的学生,列出学生的姓名。
3.使用TOP和CASE的查询。
写出实现如下查询的SQL语句。
(18) 列出“数据库基础”课程考试成绩前三名的学生的学号、姓名、所在系和考试成绩。
(19) 查询Java考试成绩最低的学生的姓名、所在系和Java成绩。
实验7 多表链接查询
1.对student数据库进行查询授课信息,要求列出教师号、教师姓名和课程号。
(分别用where和inner join 两种方式完成)
2.对student数据库进行查询每个学生所在系的地址,要求列出学号、姓名和地址。
(分别用where和inner join两种方式完成)
3.对student数据库进行查询成绩信息,要求列出学号、姓名、课程名、成绩。
(分别用where和inner join 两种方式完成)
4.对student数据库进行查询成绩信息,要求列出学号、姓名、课程名、授课教师号和成绩。
(思考结
果出现的原因)
5.对student数据库进行查询成绩信息,要求列出学号、姓名、课程名、授课教师姓名和成绩。
6.对student数据库进行查询每个课程的课程名、任课教师姓名及其职称、选课人数。
(回想一下老师上节课说过的一句话!)
7.对student数据库进行统计每一年龄组选修课程的学生人数。
8.对student数据库进行查询教师号为T1所讲授的课程,要求列出教师号、教师姓名和课程号。
9.对student数据库进行查询每个男学生所在系的地址,要求列出学号、姓名和地址。
10.对student数据库进行查询优秀(大于等于90分)成绩信息,列出学号、姓名、课程名、成绩,结果保存到一个新表good。
11.对student数据库进行查询不及格成绩信息,要求列出学号、姓名、课程名、授课教师号和成绩。
12. 对student数据库进行查询所有比“刘伟”工资高的教师姓名、性别、工资和刘伟工资。
(表的自
身连接查询)
13.对student数据库进行求选修“数据结构”课程的学生的平均年龄。
14. 查询了讲授“C2”或“C4”这两门课的教师号。
(要求使用合并查询来完成)。