实验五 视图和查询
实验5实验报告
学号:20164477 姓名:陈家凤实验五SQL语言一、目的与要求1.掌握SQL语言的查询功能;2.掌握SQL语言的数据操作功能;3.掌握对象资源管理器建立查询、索引和视图的方法;二、实验准备1.了解SQL语言的查改增删四大操作的语法;2.了解查询、索引和视图的概念;3.了解各类常用函数的含义。
三、实验内容(一)SQL查询功能使用提供的studentdb数据库文件,先附加到目录树中,再完成下列题目,SQL命令请保存到脚本文件中。
1.基本查询(1)查询所有姓王的学生的姓名、学号和性别Select St_Name,St_Sex,St_IDFrom st_infoWhere St_Name like'王%'图5-1(2)查询全体学生的情况,查询结构按班级降序排列,同一班级再按学号升序,并将结果存入新表new中select*into newfrom st_infoorder by Cl_Name desc,st_ID asc图5-2(3)对S_C_info表中选修了“体育”课的学生的平均成绩生成汇总行和明细行。
(提示:用compute汇总计算)因2014版本已不支持compute关键字,所以选择用其他方式。
Select c_no,scoreFrom s_c_infoWhere c_no=29000011group by c_no,score图5-32.嵌套查询(1)查询其他班级中比“材料科学0601班”的学生年龄都大的学生姓名和年龄select st_name,born_datefrom st_infowhere cl_name!='材料科学0601班'and born_date<(select min(born_date) from st_info where cl_name='材料科学0601班')图5-4(2)用exists查询选修了“9710041”课程的学生姓名select st_namefrom st_infowhere exists(select*from s_c_info where c_no=9710041 andst_id=st_info.st_id)图5-5(3)用in查询找出没有选修“9710041”课程的学生的姓名和所在班级。
实验报告五
实验五多表查询1.找出同一天进入公司工作的员工select distinct a.employeeNo,a.employeeName,a.hireDatefrom Employee a,Employee bwhere a.employeeNo!=b.employeeNo and a.hireDate=b.hireDate2.查找与“陈诗杰”在同一个单位工作的员工姓名,性别,部门和职务select a.employeeName,a.sex,a.department,a.headShipfrom Employee a,Employee bwhere a.department=b.department and b.employeeName='陈诗杰'3.在employee表中查询薪水超过员工平均薪水的员工信息select*from Employee awhere a.salary>(select avg(b.salary)from Employee b)4.查找有销售记录的客户编号,名称和订单总额select a.customerNo,a.customerName,b.orderNo,sum(quantity*price) orderSumfrom Customer a,OrderMaster b,OrderDetail cwhere a.customerNo=b.customerNo and b.orderNo=c.orderNogroup by a.customerNo,a.customerName,b.orderNo5.查询没有订购商品的客户编号和客户名称6.使用子查询查找32M DRAM的销售情况,要求显示相应的销售员的姓名,性别,销售日期,销售数量和经济呢,其中性别用“男”和“女”表示select employeeName,case sexwhen'M'then'男'when'F'then'女'end as sex,b.orderDate,c.quantity 销售数量,c.quantity*c.price 金额from Employee a,OrderMaster b,OrderDetail cwhere a.employeeNo=b.salerNo and b.orderNo=c.orderNo and c.productNo in(select f.productNofrom OrderMaster d,OrderDetail e,Product fwhere d.orderNo=e.orderNo and productName='32M DRAM')7.查询OrderMaster表中订单金额最高的订单号及订单金额select orderNo,sum(quantity*price) orderSumfrom OrderDetailgroup by orderNohaving sum(quantity*price)=(select max(orderSum)from(select orderNo,sum(quantity*price) orderSumfrom OrderDetailgroup by orderNo)b)8.在订单主表中查询订单金额大于“E2005002业务员在2008-1-9这天所接的任一张订单的金额”的所有订单信息。
实验三_ 查询与视图
实验三题目:查询与视图(实验时间:2012年4月10日)(一)实验目的1.通过本实验使学生掌握基本的SQL命令的使用方法。
主要包括:CREATE TABLE、SELECT、UPDATE、INSERT、DELETE等。
2.熟练掌握查询设计器的使用,掌握使用查询设计器设计查询的基本方法。
3.使学生熟练掌握查询向导的使用,掌握使用向导设计查询的基本方法。
4.熟练掌握视图设计器的使用,掌握使用视图设计器设计视图的基本方法。
(二)实验内容1、使用SQL命令进行数据表的建立、查询、修改和删除操作等;2、使用查询设计器建立查询;3、使用查询向导建立查询;4、使用视图设计器建立查询。
(三)实验步骤【上机操作4-1】在“sf_books”数据库中试用SQL命令建立表。
创建“图书.dbf”表文件,其表结构如表4-1所示。
在“sf_Books”数据库中创建一个名为“t_reader”的表,其表结构如表4-2所示。
表4-2 “t_reader”表在“sf_Books”数据库中创建一个名为“t_borrow”的表,其表结构如表4-3所示。
表4-3 “t_borrow”表操作步骤:在命令窗口中,顺序执行以下命令,则会建立三个数据表。
如图4-1所示。
CREA T TABLE t_book (图书ID C(5) PRIMARY KEY, 书名C(20), 作者C(6),;单价N (6,2) , 版次C(2), 出版日期D(8),备注M(4))CREA T TABLE t_reader (借书证号C(4) PRIMARY KEY,姓名C(10),性别C(2),;出生日期D(8) ,班级C(5),备注M(4))CREA T TABLE t_borrow (借书证号C(4), 图书ID C(5), 借书日期D(8) ,;还书日期D(8) , 标记C(2))图4-1 创建表【上机操作4-2】修改表结构,在t_book表中增加列“出版社C(20)”。
数据库的查询和视图实验报告
数据库的查询和视图实验(实习)报告实验名称数据库的查询和视图实验日期得分指导教师系计算机系年级专业班次姓名学号一.实验目的掌握SELECT语句的基本语法;掌握子查询的表示;掌握连接查询的表示;掌握SELECT语句的GROUP BY子句的作用和使用方法;掌握SELECT语句的ORDER BY子句的作用和使用方法;熟悉视图的概念和作用;掌握视图的创建方法;掌握如何查询和修改视图。
二.实验内容(1)了解SELECT语句的基本语法格式;(2)了解SELECT语句的执行方法;(3)了解子查询的表示方法;(4)了解连接查询的表示;(5)了解SELECT语句的GROUP BY子句的作用与使用方法;(6)了解SELECT语句的ORDER BY子句的作用;(7)了解视图概念;(8)了解视图的创建方法;(9了解并掌握对视图的操作。
三.实验步骤(1)SELECT语句的基本使用。
1、对于实验2给出的数据库表结构,查询每个雇员的所有数据。
新建一个查询,在“查询分析器”窗口中输入如下语句并执行use YGGLgoselect*from Employees2用select语句查询employees表中每个雇员的地址和电话。
新建一个查询,在“查询分析器”窗口中输入如下语句并执行:use YGGLgoselect Address,PhoneNumberfrom Employees3查询employeeID为000001的雇员的地址和电话。
use YGGLgoselect Address,PhoneNumberfrom Employeeswhere EmployeeID='000001'go4查询employees表中女雇员的地址和电话,使用AS子句将结果中各列的标题分别指定为地址、电话。
use YGGLgoselect Address AS地址,PhoneNumber AS电话from Employeeswhere Sex=0go5查询employees表中的员工姓名和性别,要求Sex的值为1时显示为‘“男”,为0时显示为“女”。
数据库实验5 多表查询及视图
实验五:多表查询及视图一、实验目的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.实验目的:(5分)
(1)掌握查询设计器的使用。
(2)掌握查询向导的使用。
(3)掌握视图设计器的使用。
2.实验内容:(15分)
(1)利用查询向导创建一个查询cx,查询学生表中女生的所有学生信息。
(2)对数据库“教学管理.dbc”使用查询设计器创建一个查询xscj,按系查询学生的成绩及学分,要求包含字段:学号、姓名、性别、系、课程名称、学分和成绩,并将查询保存到xscj.dbf表中。
(3)对数据库“教学管理.dbc”使用查询设计器创建一个查询,查询所有教师教学情况,要求包含字段:教师编号、教师姓名、课程编号、课程名称,并将查询结果保存在teacher.dbf表中。
(4)对数据库“教学管理.dbc”使用视图设计器创建一个视图,包含字段:学号、姓名、课程名称、学分、成绩,按成绩由低到高排序,并将该视图命名为view3。
(5)对数据库“教学管理.dbc”进行如下操作:
使用视图设计器创建一个视图,其内容包含所有选“数据结构”课程的学生学号、姓名和成绩,要求其结果按“成绩”降序排序且允许修改表“选课.dbf”中的成绩,并将视图命名为view4;在视图view4中修改某学生的成绩,然后在“选课.dbf”中验证其更新数据表的功能。
3.实验过程:(60分)
4.实验总结:(20分)。
实验五 视图的创建和使用
实验五视图的创建和使用5.1概述5.1.1任务一理解视图的概念视图是一个虚拟表,其内容由查询定义。
同真实的表一样,视图包含一系列带有名称的列和行数据。
但是,视图并不在数据库中以存储的数据集合形式存在。
行和列数据来自由定义视图的查询所引用的表,并且在引用视图时动态生成。
对其中所引用的基表来说,视图的作用类似于筛选。
定义视图的筛选可以来自当前或其他数据库的一个或多个表,或者其他视图。
视图被定义后便存放在数据库中,对视图中的数据的操作与对表的操作一样,可以对其进行查询、修改和删除,但对数据的操作要满足一定的条件。
当对视图所看到的数据进行修改时,相应的基表的数据也会发生变化,同时,若基表的数据发生变化,这种变化也会自动地反映到视图中。
5.1.2任务二理解视图的优点用户可以根据自己的实际需要创建视图,使用视图有很多优点,主要有以下几点:1、简单性视图可以屏蔽数据的复杂性,简化用户对数据库的操作。
使用视图,用户可以不必了解数据库的结构,就可以方便地使用和管理数据。
那些被经常使用的查询可以被定义为视图,从而使得用户不必为以后的操作每次指定全部的条件。
2、逻辑数据独立性视图可以使应用程序和数据库表在一定程度上独立。
如果没有视图,应用一定是建立在表上的。
有了视图之后,程序可以建立在视图之上,从而程序与数据库表被视图分割开来。
3、安全性通过视图用户只能查询和修改他们所能见到的数据。
数据库中的其他数据则既看不见也取不到。
5.2创建视图创建视图的方法有三种:在创建视图前请考虑如下原则:只能在当前数据库中创建视图.视图名称必须遵循标识符的规则,且对每个用户必须为唯一.此外,该名称不得与该用户拥有的任何表的名称相同.可在其他视图和引用视图的过程之上建立视图.SQLServer 2000允许嵌套多达32级视图若要创建视图,数据库所有者必须授予用户创建视图的权限,并且用户对视图定义中所引用的表或视图要有适当的权限5.2.1任务一使用企业管理器创建视图使用企业管理器创建视图的具体操作步骤如下:1、打开企业管理器窗口,打开“新建视图”对话框。
实验 视图、索引与数据库关系图
实验名称:实验五视图、索引与数据库关系图班级学号姓名日期所在院系指导老师成绩一、试验目的使学生掌握SQL Server中的视图创建、查看、修改和删除的方法;索引的创建和删除的方法;数据库关系图的实现方法。
加深对视图和SQL Server数据库关系图的理解。
二、实验内容(1)创建、查看、修改和删除视图。
(2)创建、删除索引文件。
(3)创建数据库关系图。
三、试验步骤1)视图操作(1)创建视图。
使用SQL Server Management Studio直接创建,步骤如下:1.单击数据库前面的+号,然后再单击“学生选课”数据库前面的+号,右击“视图”,在弹出的快捷菜单中选择“新建视图”命令,弹出“添加表”对话框。
如图5.1所示图5.1 “添加表”对话框2.在“添加表”对话框中,添加视图数据来源的表,这里添加三张表,分别是student、course和sc表。
添加表后,单击添加表对话框中的“关闭”按钮,出现创建视图界面。
如图5.2所示图5.2添加字段前的效果图3.如果要在视图中显示某些表的某个字段,只需单击其字段前的复选框即可,同时在中间列中会显示该字段,在代码区中会看到具体实现的代码。
4.如果要查看视图,单击常用工具栏中的“执行”按钮,就可以看到视图的数据显示,如由字段student.sno、sname、cname、grade生成的视图效果。
如图5.3所示图5.3 生成视图效果图5.在创建视图中还可以为字段添加列名、进行排序、添加多个筛选条件。
6.单击常用工具栏中的“保存”按钮,就可以弹出保存视图提示对话框,输入视图名字即可,为view_stu_grade。
(2)修改视图。
视图创建好后,就可以利用它进行查询信息了。
如果发现视图的结构不能很好的满足要求,还可以对它进行修改。
使用SQL Server Management Studio直接修改,步骤如下:1.在SQL Server Management Studio中,选择服务器、数据库、并使数据库展开,再单击“视图”前面的+,就可以看到已存在的视图了。
数据库 实验五
数据库实验五在学习数据库的过程中,实验是巩固理论知识、提高实践能力的重要环节。
本次实验五主要围绕数据库的某些关键操作和应用展开,通过实际动手操作,让我们对数据库的理解更加深入和全面。
本次实验的环境是常见的数据库管理系统,如 MySQL 或 SQL Server 等。
实验的目的是让我们熟练掌握数据库的查询、更新、插入和删除等基本操作,同时能够运用这些操作解决一些实际的问题。
实验的第一个任务是进行数据的查询操作。
查询是从数据库中获取所需信息的重要手段。
我们需要根据给定的条件,从数据表中筛选出符合要求的数据。
这就涉及到了使用 WHERE 子句来设定条件,以及各种运算符如等于(=)、大于(>)、小于(<)、不等于(<>)等的运用。
同时,还需要掌握连接(JOIN)操作,将多个相关的数据表连接起来,以获取更全面和准确的信息。
例如,在一个学生成绩管理系统中,要查询某个班级中数学成绩大于 80 分的学生名单,就需要先从学生表中获取班级信息,再从成绩表中筛选出数学成绩符合条件的记录,最后通过学生学号将两个表连接起来,得到最终的结果。
接下来是数据的更新操作。
这包括对已有数据的修改和删除。
在进行更新操作时,必须格外小心,因为一旦操作失误,可能会导致数据的丢失或错误。
在修改数据时,同样要使用 WHERE 子句来指定要修改的记录。
例如,要将某个学生的数学成绩从 80 分修改为 90 分,就需要明确指定该学生的学号或其他唯一标识。
而删除数据则需要更加谨慎,通常建议先进行查询,确认要删除的记录准确无误后,再执行删除操作。
数据的插入操作也是实验的重要部分。
插入新的数据可以增加数据库的信息量。
在插入数据时,需要注意数据的类型和格式要与数据表的定义相匹配。
比如,一个学生信息表中,学号是整数类型,姓名是字符串类型,出生日期是日期类型,如果插入的数据类型不正确,就会导致插入失败。
在实验过程中,我也遇到了一些问题和挑战。
比如,在进行复杂的查询操作时,由于条件设置不当,导致查询结果不准确。
实验五多表查询
实验五多表查询实验目的:●了解多表数据查询的基础知识●使用SELECT语句在数据库上进行分组查询及多表查询●查询分组结果●多表联合查询实验要求:●熟练掌握基本的分组数据查询语句●熟练编写SELECT语句进行多表查询●掌握随机帮助的使用方法实验难点:●理解SELECT语句中的Group by子句以及Having语句●掌握多表查询的SELECT语句的写法●掌握Join子句的写法●掌握嵌套查询的写法实验内容:学生-课程数据库的三个表:学生表:Student(SNo,Name,Sex,Age,Dept) Sno为主键;说明:SNo 学号,Name姓名,Sex 性别,Age 年龄,Dept所在系表中现有记录为:课程表:Course(CNo,CName,Cpno,Ccredeit) Cno为主键;说明:CNo课程号,CName 课程名,Cpno 先行课,Ccredit学分表中现有记录为:学生选修表:SC(SNo,CNo,Grade) SNo,CNo,为主键;说明:SNo 学号,CNo课程号,Grade成绩表中现有记录为:练习1:分组查询1:查询参加了三次以上考试的学生姓名Select [Name],Count(*)FROM Student,SCWHERE Student.SNo=SC.SNoand SC.Grade IS not nullGroup by Student.Sno,[Name]Having Count(*)>32:查询参加过考试的每个学生考的最好的那次考试的情况3:查询平均分大于88的学生姓名。
提示:使用having子句4:查询各个学生的总分练习2:多表联合查询1:查询学生情况以及每门课的成绩(两种写法)2:查询学生姓名和学号以及他考得最好的那门课的成绩提示:使用group by子句完成3:查询有先修课程的课程名称4:查询成绩在90分以上的学生的姓名5:查询最好成绩在90分以上的学生的姓名6:查询学生的姓名、课程名及每门课程的成绩7:查询所有姓王的学生的姓名、学号,选修的课程名以及成绩8:在上题的基础上将未参加考试的即成绩为Null的去掉练习3:嵌套查询1:查询与“张娜”在同一个系学习的学生(两种写法,嵌套和自身连接)2:查询选修了课程名为“数据库”的学生学号和姓名(两种写法,嵌套和连接)3:查询其他系中比ECT系其中某一个学生年龄小的学生姓名和年龄。
数据库实验五 表连接查询
实验五表连接查询1.查找每一个供应商供应的商品的名称,要求显示供应商名称和商品名称。
select Sname,Cnamefrom supplier,commodity,supplyingwhere supplier.Sid=supplying.Sid and commodity.Cid=supplying.Cid2.使用连接查询查找与姓名为‘李云’的采购员签订采购单的供应商的名称。
select distinct(sname)from stock,Employee,supplierwhere stock.Eid=Employee.Eid and stock.Sid=supplier.Sid and Ename like'李云'3.使用关键字IN完成查询,要求查找与姓名为‘李云’的采购员签订采购单的供应商的名称。
select Snamefrom supplierwhere Sid in(select Sidfrom stockwhere Eid in(select Eidfrom Employeewhere Ename='李云'))4.使用左外连接完成如下查询:要求查找所有采购员签订的采购合同的详细信息。
select *from Employee left outer join stock on Employee.Eid=stock.Eid5.使用左外连接完成如下查询:查找所有客户购买的商品详细信息,要求显示客户名称,商品名称,销售数量,商品单价,没有购买商品的客户也要显示。
select CUname,Cname,SDnumber,SDpricefrom customer left outer join sale on customer.CUid=sale.CUidleft outer join saleDetail on sale.SAid=saleDetail.SAidleft outer join commodity on saleDetail.cid=commodity.cid6.请使用内连接完成如下查询:查找每一个供应商供应的商品的种类,要求显示供应商名称,供应的商品的种类。
实验五__视图的创建与使用
视图的创建与使用一、实验目的(1)理解视图的概念。
(2)掌握创建视图、测试、加密视图的方法。
(3)掌握更改视图的方法。
(4)掌握用视图管理数据的方法。
二、实验内容1.创建视图(1)创建一个名为stuview2的水平视图,从数据库Student_info的Student表中查询出性别为“男”的所有学生的资料。
并在创建视图时使用with check option。
(注:该子句用于强制视图上执行的所有修改语句必须符合由Select语句where中的条件。
)create view stuview2asselect*from Studentwhere Sex='男'with check option查看视图:select*from stuview2(2)创建一个名为stuview3的投影视图,从数据库Student_info的Course表中查询学分大于3的所有课程的课程号、课程名、总学时。
并在创建时对该视图加密。
(提示:用with ENCRYPTION关键子句)create view stuview3with ENCRYPTIONasselect Cno,Cname,Total_perior from Coursewhere Credit>3查看视图:select*from stuview3(3)创建一个名为stuview4的视图,能检索出“051”班所有女生的学号、课程号及相应的成绩。
create view stuview4asselect*from SCwhere Sno=(select Sno from Studentwhere Classno='051'and Sex='女')查看视图:select*from stuview4(4)创建一个名为stuview5的视图,能检索出每位选课学生的学号、姓名、总成绩。
create view stuview5asselect Student.Sno学号,Sname姓名,Grade成绩from Student,SCwhere Student.Sno=SC.Sno查看视图:select*from stuview5若出现如上图所示情况,单击“查询”→IntelliSense→刷新本地缓存然后就解决了。
Vfp5 查询和视图
5.1.2 使用查询设计器建立查询 ◆例:查询学生表的全部信息。 查询学生表的全部信息。 *相关内容: 查看 查看SQL命令 命令; 命令
运行查询(界面、DO、工具按钮!) 运行查询
◆例:查询教师的工号、姓名和年龄。 查询教师的工号、姓名和年龄。 *相关内容: “查询设计器-字段”里的“函数和表达式 函数和表达式
思考:查询教师表中女教师的人数及总人数 思考 查询教师表中女教师的人数及总人数
5.1.3 创建多表查询 ◆例:查询信息管理系中所有成绩总分在140以上,并 且各门课程的成绩最低不得低于65分的学生成绩数据。 要求按照总分降序排序。 *相关内容— 统计函数: MIN( ) , MAX( ) *相关内容—“满足条件 满足条件”是用来指定每一分组所 满足条件
聚合查询
例5-11
查询每个部门男女教师的人数、最高
工资、平均年龄,并按部门排升序,部门由工 号的第1位数据表示。 SELECT left(gh,1) as 部门,xb as 性别,count(*) as 人数,; max(jbgz) as 最高工资,; avg(year(date())-year(csrq)) as 平均年龄; FROM jxsj!js; GROUP BY 1,xb; ORDER BY 1
分组后应满足的条件
嵌套查询
例5-14
查询与张三丰同学在同一个班级的所有学生 姓名,班号由学号的前4位决定。
SELECT Xs.xm as 姓名; FROM jxsj!xs; WHERE Substr(xh,1,4) IN ; (SELECT Substr(xh,1,4) ; FROM jxsj!xs WHERE xm="张三丰")
嵌套查询
例5-15
数据库实验五:视图的应用
数据库实验五:视图的应用一、实验目的与要求:1.实验目的(1)理解视图的概念;(2)掌握视图的使用方法。
(3)理解视图和基本表的异同之处。
2.实验要求(1)参照实验五中完成的查询,按如下要求设计和建立视图:1)基于单个表按投影操作定义视图。
2)基于单个表按选择操作定义视图。
3)基于单个表按选择和投影操作定义视图。
4)基于多个表根据连接操作定义视图。
5)基于多个表根据嵌套操作定义视图。
6)定义含有虚字段的视图。
(2)分别在定义的视图设计一些查询(包括基于视图和基本表的连接或嵌套查询)。
(3)在定义的视图上进行插入、更新和删除操作,分情况讨论哪些操作可以成功完成,哪些操作不能完成,并分析原因。
(4)在实验报告中要给出具体的视图定义要求和操作要求,并针对各种情况做出具体的分析和讨论。
二、实验内容1、实验原理(1)视图是用SQL SELECT查询定义的,创建视图命令格式如下:CREATE VIEW <视图名> AS <SELECT-查询块>(2)删除视图的命令格式如下:DROP VIEW <视图名>2、实验步骤与结果(1)调出SQL Server2005软件的用户界面,进入SQL SERVER MANAGEMENT STUDIO。
(2)输入自己编好的程序。
(3)检查已输入的程序正确与否。
(4)运行程序,并分析运行结果是否合理和正确。
在运行时要注意当输入不同的数据时所得到的结果是否正确。
(5)输出程序清单和运行结果。
(1)参照实验五中完成的查询,按如下要求设计和建立视图:1)基于单个表按投影操作定义视图。
create view v asselect教师编号,姓名from教师create view v_order asselect*from教师where职称='教授'3)基于单个表按选择和投影操作定义视图。
create view v_cuss asselect教师编号,姓名,职称from教师where职称='教授'4)基于多个表根据连接操作定义视图。
实验五 查询和视图
实验五查询和视图(本实验需提交书面作业)一、实验目的与要求:1. 掌握从简单到复杂的各种查询方法。
2. 掌握用条件表达式表示检索条件的方法。
3. 掌握使用T-SQL创建、维护视图的方法。
4. 提交书面作业,截止日期为5月14日晚20:30实验课结束。
作业注明自己的所在班级、学号、姓名。
二、实验类型验证型、综合实验型三、实验内容(一)验证实验(不必交作业)1、在D盘建立“D:\sutdent”文件夹,将第3章中创建的“student”数据库所有文件复制到该文件夹中。
2、启动SQL Server Management Studio Express,将“student”数据库“附加”到SQL Server Management Studio Express系统中,为下面的实验做好准备。
3、验证第4章所有的例题。
4、分离数据库。
将student数据库从SQL Server Management Studio Express系统中分离,并将该数据库的所有文件复制到自己的优盘等移动存储介质上。
(二)综合实验(需提交书面作业)在D盘建立“D:\ LIBRARY”文件夹,将实验四中创建的“LIBRARY”数据库所有文件复制到该文件夹中。
启动SQL Server Management Studio Express,将“LIBRARY”数据库“附加”到SQL Server Management Studio Express系统中,为下面的实验做好准备。
1、针对“LIBRARY”数据库,完成下述数据查询,写出具体的T-SQL语句:(1)查询所有读者的编号、姓名和单位。
(2)查询所有读者的全部记录。
(3)查询所有图书的书名、价格以及丢失后需赔偿的价格(原书价格的2倍)。
(4)查询有借书记录的读者编号。
(5)查询计算机类的图书书名。
(6)查询价格不在20到40之间的图书的书名及价格。
(7)查询单位在经济院、管理学院、文学院的读者姓名和性别。
实训6 查询与视图
实训6 查询与视图一、实训目的与要求1.掌握使用“查询设计器”建立查询的方法。
2.掌握查询“字段”、“筛选”、“排序”标签的使用及分组和杂项设置。
3.掌握查询去向的管理,能够正确分析并实现查询。
4.掌握创建视图的方法,能够利用视图更新数据表中的数据。
5.了解查询与视图的区别。
二、实训内容1.单表查询:查询XS数据表中所有同学的学号、姓名、性别,按学号升序排列;2.多表查询:根据XS、CJ和KC表建立一个查询文件NEW.QPR,查询出所有选课同学的学号、姓名、性别、学院、课程名称、成绩的信息,要求先按学院降序再按学号升序排列、查询去向是表,表名是NEW.DBF,并执行该查询。
3.视图及其应用:根据XS、KC、CJ三表建立一个视图STUD_VIEW,视图中包含的字段为:学号、姓名、性别、课程编号、课程名称、学分、成绩,但视图中只能查询到“数学”学院学生的信息。
然后利用新建立的视图查询视图中的全部信息,并将结果按学号排序存入表S1。
三、实训步骤启动计算机,在C盘根目录建立文件夹SY6,并将SY4中的数据拷贝到该文件夹。
然后进入Visual FoxPro6.0开发环境,在命令窗口执行set defa to C:\SY6。
创建查询通常可以遵循以下步骤:用“查询向导”或“查询设计器”创建查询→选择查询结构中需要的字段→设置查询的条件→设置排序及分组依据→选择输出类别(浏览、表文件、图表等)→运行查询。
1.单击“文件”→“新建”→“查询”→“新建文件”,在弹出如图1.6.1所示的“打开”对话框。
图1.6.1“打开”对话框选择XS.DBF“确定”后将弹出“添加表或视图”对话框,单击其中的“关闭”按钮关闭“添加表或视图”对话框,如图1.6.2所示。
图1.6.2 查询设计器在图1.6.2中按要求定义查询所需要的字段,如图1.6.3所示。
图1.6.3 选择查询所需要的字段窗口在图1.6.3中单击排序依据选项卡,设置排序字段为“学号”、升序,如图1.6.4所示。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验五查询和视图一、实验目的1.掌握SQL语句的定义功能和数据操作功能。
2.掌握SQL语句的查询功能,包括连接查询,内外嵌套查询,带计算的查询等。
3.掌握利用设计器创建和使用查询。
4.掌握利用设计器创建和使用本地视图。
二、实验准备和要求1.本实验要用到实验四建好的学生管理数据库(xsgl.dbc)中的学生情况表、课程表和成绩表(xsqk.dbf,kc.dbf,cj.dbf),可以从天空教室下载,下载完毕把该数据库所在的文件夹设为默认目录。
2.作业提交要求:SQL命令直接在实验指导文档中写出,用查询和视图设计器做的查询和视图和实验指导文档一同打包上传。
三、实验内容与步骤1.SQL的定义功能(1)用SQL的定义命令创建一个职工表(文件名为:zg.dbf),表结构如下所示。
字段名类型宽度小数点职工号 C 4姓名 C 8性别 C 2出生日期 d工资 N 7 2命令:CREAT TABLE zg("职工号" C(4),"姓名" C(8),"性别" C(2),"出生日期" D,"工资" N(7,2))答案:create table zg(职工号 c(4),姓名 c(8),性别 c(2),出生日期d,工资n(7,2)(2)修改上题创建的zg表。
①增加“职称”字段,类型为字符型,宽度为6。
命令:ALTER TABLE zg ADD COLUMN "职称" C(6)答案: alter table zg add 职称 c(6)②删除“出生日期”字段。
命令:alter table zg drop "出生日期"答案:alter table zg drop 出生日期③把“性别”字段的类型改为逻辑型。
命令:ALTER TABLE zg ALTER "性别" L答案: alter table zg alter 性别 l④把“工资”字段改名为“实发工资”。
命令:alter table zg rename "工资" to "实发工资"答案:去掉引号2.SQL的操作功能①给课程表(kc)插入一条记录("2001","英语精读",2," ")。
命令:insert into kc ("课程号","课程名","学分","先修课") values ("2001","英语精读",2,"")答案:insert into kc (课程号,课程名,学分) values (“2001”,”英语精读”,2)②给女同学的入学分数增加10分。
(提示:用Update 命令)。
命令:update xsqk set 入学分数=入学分数+10 where 性别=”女”③把课程号为“1003”的学分改为4分。
(提示:用Update 命令)。
命令:update kc set 学分=4 where 课程号="1003"④给成绩表(cj)中不及格成绩的数据加上删除标记。
查看是否执行,再去掉删除标记。
命令:delete from cj where "成绩"<"60"答案:去掉引号Recall all3. SQL语言的查询功能(1)简单查询①查询所有男同学的个人记录。
命令:select * from xsqk where 性别="男"②查询所有同学的学号、姓名、性别、专业、年龄和入学分数。
命令:select 学号,姓名,性别,专业,2012-year(出生日期) as 年龄,入学分数from xsqk③查询成绩表中不重复同学的学号(即去掉重复的学号)。
(提示:用Distinct 短语)命令:select distinct 学号 from cj(2)条件查询①查询“计算机科学”专业男同学的信息。
命令:select * from xsqk where 专业="计算机科学" and 性别="男"②查询1988年出生的“工业工程”专业同学的学号、姓名、性别、高考分数和出生日期信息。
命令:select 学号,姓名,性别,入学分数,出生日期 from xsqk where year(出生日期)=1988 and 专业="工业工程"或select 学号,姓名,性别,入学分数,出生日期 from xsqk where 出生日期 between {^1988-01-01} and {^1988-12-31} and 专业="工业工程"(3)对查询结果进行排序。
①查询“市场营销”专业入学分数前3名同学的情况。
命令:select * from xsqk where 专业="市场营销" top 3 order by 入学分数②查询所有男同学,并且是1988年出生的学生情况,要求查询结果按专业升序、入学分数降序排列。
命令:select * from xsqk where 性别="男" and year(出生日期)=1988 order by 专业 asc,入学分数 desc(4)使用分组统计函数①统计输出每个同学各门课程的期末考试最高分、最低分和平均分并按平均分降序排序。
(提示:按“学号”分组)命令:select 学号,max(成绩) as 最高分,min(成绩) as 最低分, avg(成绩) as 平均分 from cj order by 平均分 desc group by 学号②统计输出各门课程的人数和期末考试各门课程的最高分、最低分和平均分并按最高分升序排序。
(提示:按“课程号”分组排序)命令:select 课程号,count (*) as 人数,max (成绩) as 最高分, min(成绩) as 最低分,avg(成绩) as 平均分 from cj order by 最高分 asc group by 课程号(5)联结查询①查询“市场营销”专业的同学的所有课程成绩。
包括同学的学号、姓名、专业、课程号、学期和成绩。
(提示:对xsqk、cj两表连接)命令:select xsqk.学号,xsqk.姓名,xsqk.专业,cj.学号,cj.课程号,cj.学期,cj.成绩 from xsqk full join cj on xsqk.学号=cj.学号 where 专业="市场营销"或select xsqk.学号,姓名,专业,cj.学号,课程号,学期,成绩 from xsqk full join cj on xsqk.学号=cj.学号 where 专业="市场营销"②列出所有不及格同学的学号、姓名、专业、课程号、课程名和成绩。
(提示:对xsqk、cj、kc三表连接)命令:select xsqk.学号,xsqk.姓名,xsqk.专业,kc.课程号,kc.课程名,cj.成绩from xsqk join cj join kc on cj.课程号=kc.课程号 on xsqk.学号=cj.学号 where 成绩<60或者:Select xsqk.学号,xsqk.姓名,xsqk.专业,kc.课程号,kc.课程名,cj.成绩 from xsqk join cj on xsqk.学号=cj.学号 join kc on cj.课程号=kc.课程号 where 成绩<60③为“市场营销”专业建立一个包括每个同学学号、姓名、专业和各课程平均分的查询,按平均分降序排列。
(提示:对xsqk、cj两表连接,并按cj表中的学号分组)命令:select xsqk.学号,姓名,专业,avg(cj.成绩) as 平均分 from xsqk join cj on xsqk.学号=cj.学号 where 专业="市场营销" order by 平均分 desc group by cj.学号字段名不唯一时,字段前加表名。
字段唯一时,可以不加。
(6)嵌套查询①列出“市场营销”专业同学的所有成绩表中的记录,包括学号、课程号、学期、成绩。
(提示:学号作为内外查询连接的条件)命令:select *from cj where 学号 in (select 学号 from xsqk where 专业=”市场营销”)②查询成绩表(cj)中至今没有一门课程成绩的同学的信息。
包括学号、姓名、性别、专业、出生日期和入学分数等。
(提示:学号作为内外查询连接的条件)说明:学号作为内外查询连接的条件命令:select * from xsqk where 学号 not in (select 学号 from cj)③查询学分最高的课程信息。
(提示:先用Max函数在kc表中求出最高学分是多少)命令:select *from kc where 学分=(select max(学分) from kc)(7)查询结果的不同去向①查询“1001”号课程考试分数前2名的信息。
(在浏览窗口内显示)命令:select * from xsqk join cj on xsqk.学号=cj.学号 where 课程号="1001" top 2 order by 成绩 descselect top 2 * from xsqk join cj on xsqk.学号=cj.学号 where 课程号=”1001”order by 成绩 desc②查询“计算机科学”专业的学生信息并将结果存人临时表ls1中。
(用Top 2短语在浏览窗口内显示)(使用Into Cursor ls1)命令:select * from xsqk where 专业="计算机" into cursor ls1③查询学号为“20070101”的学生的考试成绩信息并将结果存人永久表xhcj中。
(使用Into Table xhcj短语输出)命令:select * from cj where 学号="20070101" into table xhcj4. 用查询设计器创建查询(1)简单查询:用查询设计器创建对1989年出生且入学分数大于570分同学的查询,按入学分数排序。
(保存为“简单查询”)。
SELECT *;FROM 学生管理!xsqk;WHERE YEAR(出生日期) = 1989;AND Xsqk.入学分数 > 570;ORDER BY Xsqk.入学分数运行:do 简单查询.qpr(2)计算查询(字段为表达式):建立统计各专业同学的人数的查询,字段包括专业、人数(保存为“计算查询”)。