当前位置:文档之家› 数据库的查询和视图

数据库的查询和视图

数据库的查询和视图
数据库的查询和视图

实验四数据库的查询和视图

T4.1 数据库的查询

1.目的与要求

(1)掌握select语句的基本语法;

(2)掌握子查询的表示

(3)掌握连接查询的表示

(4)掌握select语句的group by子句的作用和使用方法

(5)掌握select语句的order by子句的作用和使用方法

2 实验准备

(1)了解SELECT语句的基本语法格式;

(2)了解SELECT语句的执行方法;

(3)了解子查询的表示方法;

(4)了解连接查询的表示;

(5)了解SELECT语句的GROUPBY子句的作用和使用方法;

(6)了解SELECT语句的ORDER BY子句的作用;

3实验内容

SELECT语句的基本使用。

①对于实验2给出的数据库表结构,查询每个雇员的所有数据。

新建一个查询,在查询分析器中输入如下语句并执行:

USEYGGL

GO

SELECT*

FROMEmployees

【思考与练习】

用SELECT语句查询Departments和Salary表中所有的数据信息。

用SELECT语句查询Employees表中每个雇员的地址和电话。

【思考与练习】

a.用SELECT语句查询Deparments和Salary表的一列或若干列。

b.查询Employees表中的部门号和性别,要求使用DISTINCT消除重复行。

c.查询EmployeeID为000001的雇员的地址和电话。

【思考与练习】

a.查询月收入高于2000元的员工号码。

b.查询1970年以后出生的员工的姓名和住址。

c.查询所有财务部的员工的号码和姓名。

d.查询Employees表中女雇员的地址和电话,使用AS子句将结果中各列的标题分别指定为地址、电话。

【思考与练习】使用SELECT语句进行简单的计算。

⑦获得员工总数。

【思考与练习】

a.计算salary表中员工月收入的平均数。

b.获得Employees表中最大员工号码。

c.计算Salary表中所有员工的总支出。

d.查询财务部雇员的最高和最低实际收入。

USE YGGL

SELECT MAX(InCome-OutCome) AS 最高实际收入, MIN(InCome-OutCome) AS 最低实际收入

FROM Salary

GO

⑧找出所有姓王的雇员的部门号。

USE YGGL

SELECT DepartmentID

FROM Employees

WHERE Name LIKE '王%'

Go

【思考与练习】

a.找出所有其地址中含有“中山”的雇员的号码及部门.

USE YGGL

SELECT ,EmployeeID,DepartmentID

FROM Employees

WHERE Address LIKE ‘中山’

GO

b.查找员工号码倒数第二个数字为0的员工的姓名、地址和学历。USE YGGL

SELECT Name,Address,Education

FROM Employees

WHERE EmployeeID =LIKE’%0_’

GO

⑨找出所有收入在2000-3000元之间的员工号码。

(1)子查询的使用。

①查找在财务部工作的雇员的情况

USE YGGL

GO

select *

from Employees

where DepartmentID=

(

select DepartmentID from Departments

where DepartmentName='财务部'

)

【思考与练习】用子查询的方法查找所有收入在2500元以下的雇员的情况

②查找财务部年龄不低于研发部雇员年龄的雇员的姓名。

【思考与练习】查询每个雇员的情况及其工作部门的情况。

②使用内连接的方法查询名字为“王林”的员工所在的部门

select DepartmentName from Departments

Join Employees on Departments.DepartmentID=Employees.DepartmentID where https://www.doczj.com/doc/411813492.html,='王林'

【思考与练习】

a.使用内连接的方法查找出不在财务部工作的所有员工信息。

b.使用外连接方法查找出所有员工的月收入。

①查找财务部收入在2000元以上的雇员姓名及其薪水详情。

USE YGGL

【思考与练习】查询研发部在1976以前出生的雇员姓名及其薪水详情。

(2)聚合函数的使用。

1.求财务部雇员的平均收入

新建一个查询,在查询分析器中输入如下语句并执行。

USE YGGL

GO

select AVG(Income) as '财务部平均收入' from Salary

where EmployeeID in

(

select EmployeeID

from Employees

where DepartmentID=

(

select DepartmentID

from Departments

where DepartmentName='财务部'

)

)

【思考与练习】

3.求财务部的平均实际收入

【思考与练习】

③求财务部雇员的总人数

(5)GROUP BY、ORDER BY子句的使用:

①查找Employees表中男性和女性的人数

select Sex,COUNT(Sex)

from Employees

group by Sex;

【思考与练习】

a.按部门列出在该部门工作的员工的人数。

USE YGGL

SELECT DepartmentID,COUNT(DepartmentID)AS'人数' FROM Employees

GROUP BY DepartmentID

b.按员工的学历分组,排列出本科、大专和硕士的人数。USE YGGL

SELECT Education AS'学历',COUNT(Education)AS'人数' FROM Employees

GROUP BY Education

②查找员工数超过2的部门名称和员工数量。

【思考与练习】将各雇员的情况按收入由低到高排列。

USE YGGL

SELECT*

FROM Employees

ORDER BY InCome

GO

T4.2视图的使用

1.目的和要求

(1)熟悉视图的概念和作用;

(2)掌握视图的创建方法;

(3)掌握如何让查询和修改视图。

2.实验准备

(1)了解视图的概念;

(2)了解创建视图的方法;

(3)了解并掌握对视图的操作。

3.实验内容

(1)创建视图。

(2)①创建YGGL数据库上的视图DS_VIEW,视图包含Departments表的全部列。

CREATE VIEW DS_VIEW

AS SELECT*FROM Departments

②创建YGGL数据库上的视图Employees-view,视图包含“员工号码”、“姓名”、“实际收入”三列。

使用如下SQL语句:

CREATE VIEW Employees_view(EmployeeID,Name,realIncome)

AS

SELECT Employees.EmployeeID,Name,Income-OutCome

FROM Employees,salary

WHERE Employees.EmployeeID=salary.EmployeeID

【思考与练习】

a.在创建视图时SELECT语句有那些限制?

不能使用COMPUTE或者COMPUTE BY子句;除非和TOP子句一起使用,否则,不能使用ORDER BY子句;不能使用INTO关键字;不能使用OPTION子句;不能引用临时表和表变量。

b.再创建视图时有哪些注意点?

1.在CREATE VIEW语句中,不能包括ORDER BY,COMPUTE或者COMPUTE BY 子句也不能出现INTO关键字

2.创建视图所参考基表的列数最多为1024列

3.创建视图不能参考临时表

4.尽量避免使用外连接创建视图

5.在一个批处理语句中,CREATE VIEW 语句不能和其他TRANSACT-SQL语句混合使用

c.创建视图,包含员工号码、姓名、所在部门名称和实际收入这几列。CREATE VIEW

Employees_View

(

EmployeeID,Name,DepartmentName,RealInCome

)

AS SELECT

Departments.DepartmentID,name,DepartmentName,InCome-OutCome as RealInCome

FROM Employees,Departments,Salary

where Departments.DepartmentID =Employees.DepartmentID

and Employees.EmployeeID =Salary.EmployeeID

(2)查询视图:

①从视图DS_VIEW中查询出部门号为3的部门名称。

select DepartmentName from DS_view

where DepartmentID='3'

②从视图Employees_view中查询出姓名为“王林”的员工的实际收入

select RealIncome from Employees_view

where Name='王林'

【思考与练习】

a.若视图关联了某表中的所有字段,而此时刻表中添加了新的字段,视图中能否查询到该字段?

不能,必须重新创建视图才能查询到新字段。

b.自己创建一个视图,并查询视图中的字段。

SELECT*

FROM Employees_View

WHERE EmployeeID = 1

(3)更新视图。

在更新视图前需要了解可更新视图的概念,了解什么视图是不可以进行修改的。更新视图真正更新的是和视图关联的表。

①向视图DS_VIEW中插入一行数据“6,广告部,广告业务”

insert into DS_VIEW values('6','广告部','广告业务')

执行完该命令,使用SELECT语句分别查看视图DS_VIEW和基本表Departments中发生的变化。

尝试向视图Employees_view中插入一行数据看看会发生什么情况。

②修改视图DS_VIEW,将部门号为5的部门名称修改为“生产车间”

update DS_VIEW

set DepartmentName='生产车间'

where DepartmentID='5'

执行完该命令,使用SELECT语句分别查看视图DS_VIEW和基本表Departments中发生的变化。

③将视图Employees_view中员工号为“000001”的员工的姓名修改为“王浩”

update Employees_view

set Name='王浩'

where EmployeeID='000001'

④删除视图DS_VIEW中部门号为“1”的一行数据

delect from DS_VIEW

where DepartmentID='1'

【思考与练习】视图Employees_view中无法插入和删除数据,其中的realincome 字段也无法修改,为什么?

因为视图employees-view中的字段realincome是基本表列通过计算所得的列,

所以无法修改。

(4)删除视图

删除视图DS_VIEW.

d rop VIEW DS_VIEW

(5)在界面工具中操作视图

①创建视图:启动SQL Server Management Studio,在对象资源管理器中展开

“数据库→YGGL”选择其中的视图项,右击鼠标,在弹出的快捷菜单上选择“新建视图”菜单项,在随后出现的“添加表”窗口中,添加所需关联的基本表。在视图窗口中的关系图窗口显示基表的全部信息。根据需要在窗口中选择创建视图所需的字段。完成后单击“保存”按钮保存。

②查询视图:新建一个查询,输入T-SQL查询命令即可像查询表一样查询视图。

③删除视图:展开YGGL数据库→“视图”,选择要删除的视图,右击选择“删

除”选项,确认即可。

4.思考与练习

总结视图与基本表的差别。

1、视图是已经编译好的sql语句;而表不是。

2、视图没有实际的物理记录;而表有。

3、视图是窗口;表是内容

4、标致用物理空间而视图不占用物理控件,视图只是逻辑概念的存在;表可以即使对它修改,但视图只能有创建的语句来修改。

5、表示内模式,视图是外模式。

6、视图是产看数据表的一种方法,可以查询数据表中某些字段构成的数据,只是一些sql语句的集合。从安全的角度来说,视图可以不给用户接触数据表,从而不知道表结构。

7、表属于全局模式中的表,是实表;视图属于局部模式的表,是虚表。

8、视图的建立和删除只影响视图本身,不影响对应的基本表。

西安石油大学数据库实验3索引及视图操作

实验报告 课程名称:学院名称:数据原理与应用计算机学院 专业班级:计1201 学生姓名:张文江 学号:201107010122

实验3 索引及视图操作 一、实验目的 1. 加深对索引和视图概念的理解。 2. 熟练掌握索引的创建和删除。 3. 熟练掌握视图的创建、修改和删除。 4. 熟练运用视图进行各种检索操作。 二、实验环境 硬件环境:PC机 软件环境:操作系统为Microsoft Windows 2000或以上版本。 数据库管理系统为Microsoft SQL Server 2000标准版或企业版。 三、实验内容 1. 熟悉运用SQL Server企业管理器和查询分析器进行索引的创建和删除。 2. 熟悉运用SQL Server企业管理器和查询分析器进行视图的创建、删除和修改。 四、实验步骤 1. 利用实验1已经建立并保存过的学生表、课程表,学生表按学号建立惟一索引,课程表按课程名建立惟一索引; create index S_sno on S(sno) create index C_cno on C(cno) 2. 利用实验1已经建立并保存过的学生表和选课表建立一个“网络工程”专业学生成绩视图JSGV(sno,cno,grade); create view JSGV(sno,cno,grade) as select S.sno,cno,grade from SC,S where dept='网络工程'and S.sno=SC.sno 利用视图JSGV查询“网络工程”专业的学生选课多于2门的学生学号; select distinct sno

from JSGV group by sno having (count(*)>2) 验证能否利用视图JSGV中插入一条“网络工程”专业学生选修“高等数学”课程的记录,并查询结果信息; insert into JSGV values('20080205','c03','85') 删除视图JSGV。 drop view JSGV 3. 利用实验1已经建立并保存过的学生表、课程表、选课表建立视图TOTAL(sno,sname,cname,grade); create view TOTAL(cno,sname,cname,grade) as select https://www.doczj.com/doc/411813492.html,o,sname,cname,grade from SC,S,C where S.sno=SC.sno and https://www.doczj.com/doc/411813492.html,o=https://www.doczj.com/doc/411813492.html,o

数据库原理视图的创建与使用实验报告

***大学计算机科学与信息学院软件工程系上机实验报告

显示结果: 2、用企业管理器创建、管理视图 (1)创建视图 A、使用企业管理器在表teacher上创建一职称为副教授的教师视图teacherview视图,该视图中需包 括以下信息:姓名,系别,职称,工资。 1)依次进入企业管理器、数据库、XSGL库,并用鼠标右键单击“视图”。 2)在系统弹出的快捷菜单中单击“新建视图”,出现“新建视图”窗口。

B、使用企业管理器在表student、course、sc表上创建一个能查询学生的学号、姓名、课程名及课程成绩的视图,视图名为S_C_VIEW。 (2)修改视图stuview1 将视图studview1的定义修改为从student表中查询出MA系学生的学号,姓名,系别。 (提示:修改视图:在企业管理器中选中视图后->击右键->按设计视图->进行修改) (3)管理视图中的数据 1)查看视图stuview1中的数据。 (提示:用鼠标右键单击要管理的视图stuview1,单击“打开视图”,再单击“返回所有行”。)

2)将视图stuview1中学号为“6”的学生姓名改为“许华”。再重新打开student表观察一下,有什么变化(注:须按按钮“!”进行修改确认。) 3、用T-SQL语言创建、管理视图 (1)创建视图 ①创建一个名为stuview2的水平视图,从数据库XSGL的student表中查询出性别为“男”的所有学生的资 料。并在创建视图时使用with check option。(注:该子句用于强制视图上执行的所有修改语句必须符合由Select语句where中的条件。) T-SQL语句为: CREATE VIEW stuview2 AS SELECT* FROM Student WHERE Ssex='男' WITH CHECK OPTION; ②创建一个名为stuview3的视图,能检索出CS系所有女生的学号、选修的课程名及相应的成绩。 T-SQL语句为: CREATE VIEW stuview3 AS SELECT,, FROM SC,Course WHERE= AND IN ( SELECT Sno FROM Student WHERE Sdept='CS'AND Ssex='女'); ③创建一个名为stuview4的视图,能检索出选课学生的学号、姓名、课程名、成绩。

数据库实验报告_数据库的视图和图表的定义及使用

数据库实验报告_数据库的视图和图表的定义及使用贵州大学实验报告 学院:计信学院专业:网络工程班级:101 姓名学号实验组 实验时间 05.30 指导教师罗昊成绩实验项目名称数据库的视图和图表的定义及使用实 验使学生掌握SQL Server中的视图创建向导和图表创建向导的使用方法,加深对视目图和SQL Server图表作用的理解。 的 实本实验属于验证型实验,通过实验,加强对课堂讲授知识的理解。开始实验前,必验须进行预习,写出实现所有查询要求的SQL语句。实验过程中,先集中由老师进行具体要要求和注意事项的讲解,然后各自独立在机器上完成实验。实验过程中出现问题,在实求验指导老师帮助下解决。 1、创建视图 假设在图书_读者数据库中已经建立了图书、读者和借阅3个表,它们的结构为: 图书(书号,类别,出版社,作者,书名,定价); 借阅(书号,读者借书证号,借阅日期); 读者(借书证号,姓名,单位,性别,电话) 实如果要在上述3个表的基础上建立一个视图,取名为读者_VIEW,其操作用SQL语验句表示为: 原CREATE VIEW 读者_VIEW AS SELECT 图书.*,借阅.* FROM 图书,借阅,读者理 WHERE 图书.书号=借阅.书号 AND 借阅.读者借书证号=读者.借书证号;

利用SQL Srever 2000中提供的视图创建向导,来创建读者_VIEW视图。 2、查看和修改视图 视图创建好后,就可以利用它进行查询信息了。如果发现视图的结构不能很好地满 足要求,还可以在企业管理器中对它进行修改 3、删除视图 删除视图的方法是:首先要在企业管理器中,将鼠标指针指向数据库中的视图文件 夹,单击右键。在随后出现的弹出菜单中,选择“删除”项,会出现删除视图对话框。 选中欲删除的视图,单击“全部移出”按钮,被选中的视图就会从视图中被移出。 4、创建关联表 假如要在图书_读者数据库中建立一个读者_借阅_图书关系,要求该图表包括图书、 借阅和读者三个表,并包括它们之间的“图书.书号=借阅.书号 AND 借阅.读者借书证 号=读者.借书证号”的外码与被参照表之间的关联,即用关联表实现上述视图的功能。 在企业管理器中通过向导建立数据库关联表。 5、编辑数据库图表 在企业管理器中,展开数据库图表所属的服务器、数据库文件夹、数据库以及关系

视图与索引作业

第一部分 创建如下表:并向每张表中添加5条数据 学生表t_student(f_no,f_name,f_sex,f_department) 课程表(f_id,f_name) 成绩表(f_no,f_subjectid,f_score) 作业: 1、对成绩表的课程编号创建非簇索引 2、对学生表的姓名和年龄创建非簇索引 3、对学生表的学号创建唯一索引 4、创建视图统计成绩表中任何一门课程及没有及格的信息 5、创建视图查询男生的平均成绩 6、对课程表的课程编号和分数创建非簇索引 7、将上题中的非簇索引删除 8、创建视图查询C#课程不及格的女生信息 9、创建视图统计男女生的平均分信息 10、简述索引的作用和种类 11、简述视图的作用 第二部分 使用northwind数据库完成: 1)在northwind库中(products和suppliers表中)查找每个商品对应的供应商名 称建立视图my_view,并通过该视图查询数据。 2)在视图my_view中,将companyname为以tokyo开头的改为ToKyo.使用修改表数 据的UPDATE语句。 3)使用DROP VIEW语句将视图my_view删除。 4)使用Northwind数据库,在Suppliers表的Country列和city列上创建一个名为 Country_index的非聚集索引。 5)删除Country_index索引。 6)在Suppliers表的Country列和city列上创建一个名为Country_index的非聚集 索引。请确保索引页留有50%的空白空间,并且删除具有相同名称的现有索引 7)使用CREATE VIEW语句,基于employees表创建一个名为EmpHierarchy的视图。 视图应包含有上级领导的雇员的雇员ID、名、姓及其上级的姓 8)在视图EmpHierarchy中,将雇员ID为4的雇员的姓改为”Jones”。使用修改表数 据的UPDATE语句 9)使用DROP VIEW语句将视图EmpHierarchy删除

数据库视图的创建

实验五创建视图 实验目的: ①进一步熟悉视图的基本功能; ②熟练掌握视图的创建以及基本的操作; ③熟练sql server的使用方法。 实验步骤: ①建立信息系学生的视图 createview IS_Student asselect Sno,Sname,sage from Student where Sdept='I S' 省略了视图IS_Student的列名,则默认由select中的Sno,Sname,sage组成; 执行结果: select * from IS_Student ②建立信息系学生的视图,并要求进行修改和插入操作时仍需保证该视图只有信息系的学 生 createview IS_Student1asselect Sno,Sname,sage from Student where Sdept='I S'withcheckoption 执行结果与①的结果相同。 ③建立信息系选修了1号课程的学生的视图 createview IS_S1(Sno,Sname,Grade)asselect Student.Sno,Sname,Grade from Student,SC where Sdept='IS'AND student.Sno=SC.Sno and https://www.doczj.com/doc/411813492.html,o=1 执行结果:SELECT*FROM IS_S1

④建立信息系选修了1号课程且成绩在90分以上的学生的视图 createview IS_S2asselect Sno,Sname,Grade from IS_S1where grade>=90 执行结果:SELECT*FROM IS_S2 ⑤定义一个反映学生出生年月的视图。 createview BT_S(Sno,Sname,Sbirth)asselect Sno,Sname,2012-Sage from Stu dent 执行结果如下:

数据库原理实验报告实验四视图与索引

数据库原理实验报告实验 四视图与索引 The Standardization Office was revised on the afternoon of December 13, 2020

一、实验内容、步骤以及结果 1.在Student数据库中,利用图形用户界面,创建一个选修了“数据库原理”课程并且是1996年出生的学生的视图,视图中包括学号,性别,成绩三个信息。(5分) 2.用两种不同的SQL语句创建第五版教材第三章第9题中要求的视图(视图名:V_SPJ)(10分,每种方法5分)。 --第一种方法 CREATE VIEW V_SPJ AS SELECT sno,pno,qty FROM SPJ WHERE jno=( SELECT jno FROM J WHERE jname ='三建' ); GO --删除建好的视图 DROP VIEW V_SPJ; GO --第二种方法 CREATE VIEW V_SPJ AS

SELECT sno,pno,qty FROM SPJ,J WHERE=AND='三建'; 3.用SQL语句完成第五版教材第三章第11题中的视图查询(10分,每小题5分)。 11.请为三建工程项目建立一个供应情况的视图,包括供应商代码(SNO)、 零件代码(PNO)、供应数量(QTY)。 针对该视图VSP完成下列查询: (1)找出三建工程项目使用的各种零件代码及其数量。 (2)找出供应商S1的供应情况。

4.用SQL语句完成视图的数据更新。(15分,每题5分) (1)给视图V_SPJ中增加一条数据。 提示: -SPJ表中JNO允许为空时,数据可以插入基本表,此时JNO为NULL,由于JNO为NULL,所以视图中没有该条数据。 -SPJ表中JNO不能为空时,可以使用instead of触发器实现。 (2)修改视图V_SPJ中的任意一条数据的供应数量。

数据库-视图归纳

什么是视图? 视图是从一个或多个表(或视图)导出的表 使用视图有什么优点? 答:1.为用户集中数据,简化用户的数据查询和处理 2.屏蔽数据库的复杂性 3.简化用户权限的管理 4.便于数据的共享 5.可以重新组织数据以便输出到其他应用程序中 视同和表有什么区别? 视图是一张虚表,视图所对应的数据不进行实际存储,不占用存储空间,表是一张实表,表所对应的数据进行实际存储,占用存储空间 视图可以用于界面方式创建和命令方式创建,本章着重于命令方式创建命令方式创建视图格式如下: CREATE VIEW 视图名【视图列名1,视图列名2】 AS 查询语句 视图和表一样可以用作查询,更新,修改和删除 例如 查找平均成绩在80分以上学生的学号和平均成绩 CREATE VIEW CS_CJ (学号,平均成绩) AS SELECT 学号,AVG(成绩) FROM CJB GROUP BY 学号

SELECT 学号,平均成绩 FROM CS_CJ WHERE 平均成绩>=80 更新视图的作用? 通用更新视图(包括插入、修改和删除)数据可以修改基本数据;但并不是所有的视图都可以更新,只有对满足可更新条件的视图,才能进行更新。 哪些视图可更新 1.创建视图的SELECT语句中没有聚合函数,且没有TOP、GROUP BY、UNION子句 及DISTINCT关键字 2.创建视图的SELECT 语句中不包括从基本表列通过计算所得的列 3.创建视图的SELECT语句的FROM句子中至少要包含一个基本表 例如向CS_XS视图中插入以下记录 (‘081115’,’刘明仪’,1,’1998-3-2’,’计算机’,50,NULL) INSERT INTO CS_XS VALUES (‘081115’,’刘明仪’,1,’1998-3-2’,’计算机’,50,NULL) 例如:将CS_KC视图中学号为081101的学生的101号课程成绩改为80 UPDATE CS_KC SET 成绩=80 WHERE 学号=’081101’ AND 课程号=’101’ 修改视图,举例说明 例:将CS_SX视图修改为只包含计算机专业学生的学号、姓名和总学分 ALTER VIEW CS_XS AS SELECT 学号,姓名,总学分 FROM XSB WHERE 专业=’计算机’

数据库原理-视图

数据库原理及应用课程计算机系09级本科班级第10讲 章节名称第3章关系数据库标准语言SQL 3.5数据更新 3.6视图 第4章数据库的安全性 4.1数据为安全性概述 教学目的掌握数据更新语句。(Grasp Data Modification Statements) 掌握视图的定义、查询及更新。(Grasp the Definition、Query and Modification of View)并要灵活应用 理解数据库安全性的含义。(Comprehend the meanings of Database Security) 了解TDI/TCSEC可信计算机系统评测标准。(Know the trusted Computer System Evaluation Criteria of TDI/TCSEC) 教学内容1.数据更新(Updata Insert Delete)2.视图的定义、视图的更新、视图的查询3.数据库安全性概述 教学重点数据更新(Updata Insert Delete) 视图的定义、查询及更新。(Definition、Query and Modification of View)理解数据库安全性 教学难点视图的概念及作用(Concepts and Functions of View) 存取控制、视图机制。(Access Control、View Mechanism)专业术语Table View select 作业 3、4、5 教学方法启发式教学法+实例对比法 教学后记

第3章SQL语言 3.5数据更新(学生讲) 3.6视图 视图的特点:1、虚表,是从一个或几个基本表(或视图)导出的表 2、只存放视图的定义,不会出现数据冗余 3、基表中的数据发生变化,从视图中查询出的数据也随之改变 基于视图的操作:查询、删除、受限更新、定义基于该视图的新视图 一、定义视图 1.建立视图 语句格式:CREATE VIEW<视图名>[(<列名>[,<列名>]…)] AS<子查询> [WITH CHECK OPTION]; 说明: ●DBMS执行CREATE VIEW语句时只是把视图的定义存入数据字典,并不执行其中的SELECT 语句。在对视图查询时,按视图的定义从基本表中将数据查出。 ●组成视图的属性列名:全部省略或全部指定 省略:由子查询中SELECT目标列中的诸字段组成 明确指定视图的所有列名: (1)某个目标列是集函数或列表达式 (2)目标列为* (3)多表连接时选出了几个同名列作为视图的字段 (4)需要在视图中为某个列启用新的更合适的名字 2.视图的各种形式 1)行列子集视图 [例1]建立信息系学生的视图。 CREATE VIEW IS_Student AS SELECT Sno,Sname,Sage FROM Student WHERE Sdept='IS'; 特点:从单个基本表导出、只是去掉了基本表的某些行和某些列、保留了码 2)有WITH CHECK OPTION选项的视图 透过视图进行增删改操作时,不得破坏视图定义中的谓词条件(即子查询中的条件表达式) [例2]建立信息系学生的视图,并要求透过该视图进行更新操作只涉及信息系学生。 CREATE VIEW IS_Student AS

数据库的查询和视图

实验四数据库的查询和视图 T4.1 数据库的查询 1.目的与要求 (1)掌握select语句的基本语法; (2)掌握子查询的表示 (3)掌握连接查询的表示 (4)掌握select语句的group by子句的作用和使用方法 (5)掌握select语句的order by子句的作用和使用方法 2 实验准备 (1)了解SELECT语句的基本语法格式; (2)了解SELECT语句的执行方法; (3)了解子查询的表示方法; (4)了解连接查询的表示; (5)了解SELECT语句的GROUPBY子句的作用和使用方法; (6)了解SELECT语句的ORDER BY子句的作用; 3实验内容 SELECT语句的基本使用。 ①对于实验2给出的数据库表结构,查询每个雇员的所有数据。 新建一个查询,在查询分析器中输入如下语句并执行: USEYGGL GO SELECT* FROMEmployees 【思考与练习】 用SELECT语句查询Departments和Salary表中所有的数据信息。

用SELECT语句查询Employees表中每个雇员的地址和电话。 【思考与练习】 a.用SELECT语句查询Deparments和Salary表的一列或若干列。 b.查询Employees表中的部门号和性别,要求使用DISTINCT消除重复行。 c.查询EmployeeID为000001的雇员的地址和电话。

【思考与练习】 a.查询月收入高于2000元的员工号码。 b.查询1970年以后出生的员工的姓名和住址。 c.查询所有财务部的员工的号码和姓名。 d.查询Employees表中女雇员的地址和电话,使用AS子句将结果中各列的标题分别指定为地址、电话。 【思考与练习】使用SELECT语句进行简单的计算。 ⑦获得员工总数。

视图和索引(数据库实验4)

. . . 数据库基础与实践实验报告实验四视图和索引 班级:惠普测试142 学号:1408090213 :闫伟明 日期:2016-11-13

1 实验目的: 1)掌握SQL进行视图创建的方法; 2)掌握SQL进行视图更新的方法,理解视图更新受限的原因; 3)掌握SQL进行索引创建及删除的方法。 2 实验平台: 操作系统:Windows xp。 实验环境:SQL Server 2000以上版本。 3 实验容与步骤 利用实验一创建的sch_id数据库完成下列实验容。 1.定义视图V_TCS(定义时不加with check option),存放全部计算机系老师的信息。 视图定义代码: CREATE VIEW V_TCS AS SELECT tno,tn,sex,age,prof,sal,comm,T.dno FROM T,D WHERE T.dno=D.dno AND D.dn='计算机' 视图查询语句与查询结果截图: SELECT*FROM V_TCS 2.定义视图V_sal,存放全体教师的教师号,教师,教师酬金(工资+岗位津贴),职称信息。视图定义代码: CREATE VIEW V_sal AS

SELECT tno教师号,tn教师,sal+comm教师酬金,prof支撑信息 FROM T 视图查询语句与查询结果截图: SELECT*FROM V_sal 3.向V_TCS中插入一条计算机专业教师的新记录,并查询V_TCS视图的全部记录。视图更新代码: INSERT INTO V_TCS SELECT'T10','良瑗','女',20,'讲师',6000,8000,D.dno FROM D WHERE D.dn='计算机'

数据库更新及视图

课程实验报告 课程名称数据库系统概论班级XXXXX 实验日期XXXXX 姓名XXX 学号XXXXX 实验成绩 实验名称实验2:数据更新及视图 实验目的及要求1.掌握数据更新语句;2.掌握视图的使用。 实验环境操作系统:Windows DBMS:SQL Server 2005 实验内容商品(商品号字符(3),商品名字符(20),单价浮点型,商品类别字符(5),供应商字符(20)); 顾客(顾客号字符(3),姓名字符(10),住址字符(20)); 购买(顾客号字符(3),商品号字符(3),购买数量整型); 用SQL语句实现如下题目: 1.创建上述3个表。 2.往表中插入数据: 商品:M01,佳洁士,8.00,牙膏,宝洁; M02,高露洁,6.50,牙膏,高露洁; M03,黑人,7.50,牙膏,联合利华; M04,舒客,6.2,牙膏,舒客; M05,狮王,12.2,牙膏,狮王; 顾客:C01,Dennis,海淀; C02,John,朝阳; 购买:C01,M01,13;C01,M05,12; C01,M04,22;C02,M02,15; 3.将所有的牙膏商品单价增加20%。 4.将宝洁供应商改为P&G。 5.删除所有卖出总数量少于20个的商品信息,不包括从没有卖出的商品。6.删除没有购买记录的商品。 7.创建顾客号,商品号,商品名称,单价,购买数量的视图。 调试过程 及实验结 果 2:往表中插入数据:

3:将所有的牙膏商品单价增加20%: 4:将宝洁供应商改为P&G: 5:删除所有卖出总数量少于20个的商品信息,不包括从没有卖出的商品: 6:删除没有购买记录的商品: 7:创建顾客号,商品号,商品名称,单价,购买数量的视图:

实验 视图、索引与数据库关系图

实验名称:实验五视图、索引与数据库关系图 班级学号姓名日期 所在院系指导老师成绩 一、试验目的 使学生掌握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中,选择服务器、数据库、并使数据库展开,再单击“视图”前面的+,就可以看到已存在的视图了。 2.右击要修改结构的视图,在弹出的视图功能快捷菜单中选择“修改”命令,就可以直接修改了。 (3)删除视图 使用SQL Server Management Studio直接删除,步骤如下: 1.在SQL Server Management Studio中,选择服务器、数据库、并使数据库展开,再单击“视图”前面的+,就可以看到已存在的视图了。 2.右击要删除的视图,在弹出的视图功能快捷菜单中选择“删除”命令,就可以直接删除掉制定的视图。 2)索引文件的创建与删除 索引是一个单独的、物理的数据库结构,是为了加速对表中数据行的查询而创建的一种分散的存储结构。 (1)创建索引文件。 使用SQL Server Management Studio直接创建索引文件,步骤如下: 1.单击数据库前面的+号,然后再单击“学生选课”数据库前面的+号,再单击表前面的+号,就额可以看到已存在的表了, 2.选定要添加索引的表,如数据表student。右击,在弹出的快捷菜单中选择“修改”命令。

数据库查询视图

第二章数据的查询的视图 实验指导书 实验目标: 查询语句的编写和视图的创建。 第一部分练习指导(50分钟) 联系1:测试ROWID和ROWNUM伪列 问题: 用户表没有建立主键约束而插入了重复的记录,为了解决数据冗余问题,必须删除表中的重复记录,用户应用程序之、只关心查询结果集中的一部分,需要限制查询返回的行数。 分析: Oracle 的RowID伪列可以唯一地标识表中的一行,可以利用ROWID删除表中重复的记录。ROWNUM伪列返回查询结果集中行的序号,可以通过ROWNUM限制查询返回的行数。 解决方案: (1)启动 SQL *Plus,并登录到数据库。 (3)测试ROWID伪列。 可以看到每个行的ROWID值都是不同的。现在删除第三行。

在次执行查询语句,就可以看到第三条记录已经被删除。由此可见,即使不定义主键,Oracle也可以唯一区分表中的行,因为ROWID可以当作表的主键。(4)测试ROWNUM伪列。 上述命令返回两条记录。可以看出,使用ROWNUM 伪列可以实现类似SQL SERVER 中的TOP N功能。 练习2:使用select语句创建表 问题: 假如scott用户下的表emp要做比较大的调整。Select语句可以与其它表中的重要的记录做一个副本。 分析: Select 语句可检索存储在数据库中的数据。Select 语句还可以与其它的DDL 和DML语句一起使用来执行各种操作,如创建表、插入记录和指定列的别名等。 解决方案: (1)创建表emp表的副本,但不包含表中的记录。 (2)使用select 语句选择记录并插入到另一个表中。

练习3: 使用子查询 问题 编写sql语句,查询出工资比blake高的员工的信息。 解决方案 (1)先查询出blake的工资。 (2)利用where条件筛选出比blake的工资高的员工的信息。 (3)在sql提示符下输入一下命令,查看结果。 select * from emp where sal > (select sal from emp where ename='BLAKE'); 第二部分练习(50分钟) 1.使用上一次练习中创建的三个表,查询出所有数学考试成绩都在60分以上的学生的名字和所在班级。 分析: (1)在成绩表中查询出数学成绩在60分以上的学生。 (2)利用where语句在学生信息表中筛选出这些学上的信息。 2.利用学生信息表创建一个视图,只显示学生的姓名和年龄。 3.创建一个视图,显示学生的姓名和平均成绩,并按照分数升序排列。 提示:使用 A VG 函数和 ORDER BY 子句. 4. 编写语句以显示vendor_master表中vencode,venname 和venadd列,如果veradd列问空,则该语句显示venadd1,否则显示veradd2. 提示:使用NVL2函数 第三部分作业 1.按照第二部分练习1的要求创建一个视图。 2.编写一个sql语句,查询出所有平均分数在70和80分之间的学生信息。 3.编写一个sql语句,查询出某一个班所有课程的平均分数。 编写语句以显示order_master表中的订单的orderno,同时要显示系统日期与该订单的del_date的月份数差值,将该值四舍五入显示月份数。

视图和索引(数据库实验4)

数据库基础与实践实验报告实验四视图和索引 班级:惠普测试142 学号:1408090213 姓名:闫伟明 日期:2016-11-13

1 实验目的: 1)掌握SQL进行视图创建的方法; 2)掌握SQL进行视图更新的方法,理解视图更新受限的原因; 3)掌握SQL进行索引创建及删除的方法。 2 实验平台: 操作系统:Windows xp。 实验环境:SQL Server 2000以上版本。 3 实验内容与步骤 利用实验一创建的sch_id数据库完成下列实验内容。 1.定义视图V_TCS(定义时不加with check option),存放全部计算机系老师的信息。 视图定义代码: CREATE VIEW V_TCS AS SELECT tno,tn,sex,age,prof,sal,comm,T.dno FROM T,D WHERE T.dno=D.dno AND D.dn='计算机' 视图查询语句与查询结果截图: SELECT*FROM V_TCS 2.定义视图V_sal,存放全体教师的教师号,教师姓名,教师酬金(工资+岗位津贴),职称信息。视图定义代码: CREATE VIEW V_sal AS

SELECT tno教师号,tn教师姓名,sal+comm教师酬金,prof支撑信息 FROM T 视图查询语句与查询结果截图: SELECT*FROM V_sal 3.向V_TCS中插入一条计算机专业教师的新记录,并查询V_TCS视图的全部记录。视图更新代码: INSERT INTO V_TCS SELECT'T10','良瑗','女',20,'讲师',6000,8000,D.dno FROM D WHERE D.dn='计算机'

数据库视图作用

视图有以下几方面的功能: 1。简化应用程序。 视图做为数据库中的一种实体,实际上存在的只是它的脚本,而它的内容并不真正的单独存在一份。一般,可以对复杂的应用程序从功能角度进行分析,将可以与其它的应用程序共用的那一部分,分离出来。对这部分功能,视具体情况可做成不同的数据库实体(如过程),有些是可以做成视图的。这样,上层的应用程序就可以从视图中取数据了。 还有,可以把对远地数据库的访问封装在视图中,使之对上层应用程序透明。 2。可以对UNION 后的记录集排序。 直接对以下语句的结果排序,是不可能的(至少我不知道怎么直接排序)。 select a.id id from a union select b.id id from b; 所以把以上语句作成视图后,就可以了。设视图名为A_B: select id from A_B order by id; 3。可以实现一定的权限控制。 可以根据需要,对表中的一部分内容做一个视图,以供一定的角色使用。可以对表中的一部分记录做一个视图(纵向),也可以对一个表中的一部分字段做一个视图(横向),或二者兼而有之。 暂时想了这么多,希望大家多多指正与补充。 -------------------------------------------------------------------- 视图是一个虚拟表,其内容由查询定义。同真实的表一样,视图包含一系列带有名称的列和行数据。但是,视图并不在数据库中以存储的数据值集形式存在。行和列数据来自由定义视图的查询所引用的表,并且在引用视图时动态生成。 对其中所引用的基础表来说,视图的作用类似于筛选。定义视图的筛选可以来自当前或其它数据库的一个或多个表,或者其它视图。分布式查询也可用于定义使用多个异类源数据的视图。如果有几台不同的服务器分别存储组织中不同地区的数据,而您需要将这些服务器上相似结构的数据组合起来,这种方式就很有用。 一、视图的作用 * 简单性。看到的就是需要的。视图不仅可以简化用户对数据的理解,也可以简化他们的操作。那些被经常使用的查询可以被定义为视图,从而使得用户不必为以后的操作每次指定全部的条件。 * 安全性。通过视图用户只能查询和修改他们所能见到的数据。数据库中的其它数据则既看不见也取不到。数据库授权命令可以使每个用户对数据库的检索限制到特定的数据库对象上,但不能授权到数据库特定行和特定的列上。通过视图,用户可以被限制在数据的不同子集上: 使用权限可被限制在基表的行的子集上。 使用权限可被限制在基表的列的子集上。 使用权限可被限制在基表的行和列的子集上。

实验五数据库视图的定义及使用

实验五数据库视图的定义及使用 实验五:数据库视图的定义及使用 实验目的: 掌握视图的用法,加深对视图作用的理解。 实验步骤: 创建数据库“experiment5”,然后在该数据库下按课本P85例题5,例题 6,例题7创建课本P82的三张数据表,并插入数据,然后完成以下查询(请在下列SQL语句前添加use experiment5语句。 一、视图的创建: 1(创建信息系学生信息的视图: use experiment5 create view IS_Student as select sno, sname, sage from student where sdept='IS' 2. 创建信息系选修了1号课程的学生的视图: create view IS_S1 as select student.sno, cno, grade from student, sc where student.sno=sc.sno and sdept='IS' and cno='1' 3. 建立信息系选修了1号课程且成绩在90分以上的学生的视图: create view as IS_S2 as select * from IS_S1 where grade>=90 4. 创建一个反映学生出生年份的视图: create view BT_S(sno, sname, 出生年份) as select sno, sname, year(date())- sage from student

5. 将所有女生的记录定义为一个视图: create view F_student as select * from student where ssex='女' 6. 将所有学生的学号和他的平均成绩定义为一个视图: create view S_G(sno, avg_grade) as select sno,avg(grade) from scgroup by sno 二、查询视图 7. 在信息系的学生视图中查询年龄小于20岁的学生: select * from IS_Student where sage<20 8. 查询信息系选修了1号课程的学生: select sc.sno, sname from IS_Student, sc where IS_Student.sno=sc.sno and cno= '1' 9. 在视图S_G中查询平均成绩在90分以上的学生的学号和平均成绩: Select * from S_G where avg_grade >=90 四、更新视图: 10(将信息系学生视图IS_Student中学号为”95002”的学生姓名改为”刘辰”: update IS_Student set sname='刘辰' where sno='95002' 比较: update IS_Student set sname=’刘辰’ where sno=’95003’ 此语句不能实现数据的更新. 11. 向信息系学生视图IS_Student中插入一个新的学生记录, 学号为95029, 姓名为”赵新”, 年龄为20岁: insert into IS_Student values('95029', '赵新',20) 12. 删除信息系学生视图IS_Student中学号为95004的学生的记录: delete from IS_Student where sno='95029'

数据库的查询与视图

数据库的查询与视图 T4.1 数据库的查询 1.目的与要求 (1)掌握SELECT语句的基本用法; (2)掌握子查询的表示; (3)掌握连接查询的表示; (4)掌握SELECT语句的GROUP BY子句的作用和使用方法; (5)掌握SELECT语句的ORDER BY子句的作用和使用方法。 2.实验准备 (1)了解SELECT语句的基本语法格式; (2)了解SELECT语句的执行方法; (3)了解子查询的表示方法; (4)了解连接查询的表示; (5)了解SELECT语句的GROUP BY 子句的作用和使用方法; (6)了解SELECT语句的ORDER BY 子句的作用。 3.实验内容 (1)SELECT语句的基本使用。 1.对于实验2给出的数据表结构,查询每个雇员的所有数据。 2.用select语句查询Employees表中每个雇员的地址和电话。

3.查询EmployeeID为000001的雇员的地址和电话。 4.查询Employees表中女雇员的地址和电话,使用AS子句将结果中各列的标题分别指定为地址和电话。

5.查询Employees表中员工的姓名和性别,要求Sex值为1时显示为“男”,为0时显示为“女”。 6.计算每个雇员的实际收入。

7.获得员工总数 8.找出所有姓王的雇员的部门号。

9找出所有收入在2000~3000元之间的员工号码。 10.使用INITO子句,由表Salary创建“收入在1500元以上的员工”表,包括编号和收入。 (2)子查询的使用。 1.查找在财务部工作的雇员的情况。

2.查找财务部年龄不低于研发部雇员年龄的雇员的姓名。 3.查找比所有财务部的雇员收入都高的雇员的姓名。

数据库实验-数据库索引、视图与触发器

经济学院 实验报告 学院: 信息工程学院 专业: 网络工程 信息工程学院计算机实验中心制

一实验题目 1.索引的建立和删除操作 2.视图的创建、修改、更新和查询操作 二实验目的 1.掌握数据库索引建立与删除操作,掌握数据库索引的分类,并了解建立数据库索引的意义、作用。 2.掌握视图的创建和查询操作,理解视图的使用,理解实图在数据库安全性中的作用。 三实验容 1.索引的建立和删除操作 (1)在S表中,建立按照sno升序的惟一性索引snoIDX。 (2)在SC表中,建立按照学号升序和课程号降序的唯一性索引scIDX。 (3)在S表中,按照生日建立一个非聚簇索引birthdayIDX。 (4)在C表中,建立一个按照课程名升序的聚簇索引cnameIDX。 (5)删除索引cnameIDX。 2.视图的创建、修改、更新和查询操作 (1)建立一个关于所有女生信息的视图S_GIRL。 (2)将各系学生人数,平均年龄定义为视图V_NUM_AVG (3)建立一个视图反映学生所选课程的总学分情况TOTAL_CREDIT。 (4)建立一个所有学生课程成绩的视图S_GRADE,包括基本学生信息,课程信息和成绩。 (5)在视图S_GRADE基础之上,建立一个两门课以上成绩不及格的学生情况视图FAIL_GRADE。 (6)建立一个至少选修了4门课及4门课以上的学生信息的视图SC_FOUR。 (7)修改视图S_GIRL,要求只显示1997年以前出生的女生信息。 (8)在视图FAIL_GRADE查询不及格超过2门课的学生信息。 (9)删除视图S_GRADE。 (10)通过视图S_GIRL,将“王丹”的名字修改为“汪丹”,并查询结果。 (11)通过视图S_GIRL,新增一个学生信息(“兰兰”,“女”,“计算机学院”,1996-8-8),并查询结 果。 (12)通过视图S_GIRL,删除1995年出生的女生信息,并查询结果。 (13)通过视图S_GRADE,将“汪丹”的名字修改为“王丹”,是否可以实现,请说明原因。 (14)通过视图COMPUTE_AVG_GRADE,将“4121090301”学生的平均分改为90分,是否可以实 现,请说明原因。

实验五:数据库的视图和图表的定义及使用(20210103123300)

**大学实验报告

2、提高操作实验 将自设计的数据库应用项目中子模式, 用SQL 语句描述其视图定义,并在SQLServer 企业管理器中,用视图创建向导创建这些视图。 1、 写出实现所有操作要求的 SQL 语句。 2、 创建、查看、修改和删除视图。 3、 创建、编辑和删除数据库图表。 --建库 use master go if exists( select * from sysdatabases where name='ccb' ) drop database ccb go create database ccb go --切换数据库 use ccb go --建图书表 if exists (select * from sysobjects drop table Books go create table Books ( BookId varchar (50) primary key , Type varchar ( 50), Press varchar ( 50) , Author varchar (50), BookName varchar (50), Price money ); go --建读者表 实 验 内 容 where n ame ='Books' )

if exists (select drop table Reader go create table Reader ( from sysobjects where n ame='Reader' ) ReaderId varchar (50) primary key , Name varchar ( 50) Un it varchar ( 50) Sgender char ( 10) check ( Sgender ='男' or Sgender ='女'), Tel varchar (50) ); go * from sysobjects where n ame ='Borrow' drop go table Borrow create table Borrow ( BookId varchar ( 50), ReaderId varchar ( 50), Date DateTime , key ( BookId , ReaderId ) alter table Borrow add constraint FK Borrow Books foreig n key (BookId ) referen ces Books ( BookId ) alter table Borrow add con stra int FK Borrow Reader foreig n key (ReaderId ) refere nces Reader (ReaderId ) in sert select '200215121' ,'李勇' ,'CS', '男’, ,'888888888' union select '200215122' ,'刘晨' ,'MA', '女'. ,'857988888' union select '200215123' ,'王明' ,'MA', '女'. ,'999999999' union select '200215124' ,'张力' ,'CS', '女'. ,'999999999' union select '200215125' ,'李小' ,'IS', '男’, ,'999999999' union select '200215126' ,'杜绝’ ,'IS', '女'. ,'999999999' 建借阅表 if exists (select primary into Reader

相关主题
文本预览
相关文档 最新文档