SQL实验三数据的更新操作和视图实验报告
SQL实验三数据的更新操作和视图实验报告

实验三数据的更新操作和视图本实验需要2学时。
一、实验目的1、掌握视图的创建、修改和删除操作。
2、掌握数据库数据更新(增加、修改、删除)操作。
二、实验内容和步骤1、视图(1)建立名为UV_SC的视图。
该视图可以让我们看到每个学生的姓名、选修课程名和成绩。
(2)利用UV_SC视图,查看平均成绩在80分以上的学生姓名。
(3)建立名为UV_Course的视图,该视图显示每门课的课程名和选修该课程的学生人数。
(4)修改视图UV_Course,在视图中增加一列,显示选修该课程所有学生的平均成绩。
(5)建立名为UV_IS_Depart的视图。
该视图可以用来查看“信息系”的学生的学号、姓名、年龄和系名。
并保证对该视图的修改满足系名为信息系的条件。
(6)建立名为UV_Student的加密视图。
该视图可以用来查看每个学生选修的课程门数和平均成绩。
(7)利用UV_Student视图,查询平均成绩在80分以上的学生学号。
(8)能否利用视图UV_Student,修改某个学生的平均成绩?(9)删除视图UV_Student。
2、数据更新(1)向STUDENT表增加如下记录:(3)建立与表STUDENT 同结构的空表STUD。
然后利用INSERT命令把表STUDENT中年龄大于19的学生记录添加到表STUD。
(注意:可以使用select into语句实现同结构空表的创建,再使用insert命令插入记录;或者使用单条select into语句实现等同的功能)(4)为“ 95002”的学生增加选修“操作系统”和“数据结构”这两门课的选课记录。
(5)把课程名为“操作系统”的成绩从成绩表SC中删除。
(试用三种方式完成)(6)将女生的成绩提高10%。
(试用三种方式完成)(7)如果学生“张三”的数据结构的成绩低于65,则加上10分。
(8)将成绩最低的学生的成绩加上10分。
(9)将前3名成绩最高的学生的成绩减去10分。
(10)为没有选课的学生自动增加选修“01”课程的选课记录。
实验三 SQL复杂查询与视图

实验三 SQL复杂查询与视图一.实验目的:1.掌握SQL语言中SELECT语句的多种查询方式。
2.掌握对表建立与删除索引的方法。
3.掌握聚焦函数的使用方法。
4.掌握集合查询方法。
二.实验内容:2.多表查询①查询编号为300的客户通过的代理商的姓名和地址。
select 姓名地址from 代理商where 客户编号=”300”;②查询产品编号为0033、订货数量大于100的客户编号及其姓名。
Select 客户编号姓名From 客户Where 客户.产品编号=”0033”AND 客户.订货数量>100;③查询每个客户的订单,显示客户编号、客户名、订单编号及订货日期。
Select 客户编号客户名订单编号订货日期From 订单④查询所有2000年以后订货项目。
Select *From 订货项目Where 订货时间>2000⑤查询提成金额为100000以上(含100000)的代理商所对应的客户。
Select *From 代理商Where 提成金额=100000 or 提成金额>1000003、嵌套查询分别用带有IN谓词的子查询和带比较运算符的子查询实现以下操作①查询与“刘晨”在同一个系学习的学生。
Select sdept sno snameFrom studentWhere sdept in(‘cs’)②查询选修了课程名为“操作系统”的学生。
Select sno sname sdeptFrom csWhere sco in()4.建立视图①建立含有订单号及拥有该订单的客户编号和代理商号三个字段的视图。
②建立一个含有产品编号、产品库存量及产品在订量三个字段的视图。
③建立一个含有客户编号、客户所订的产品、该产品的订购价及该产品的描述四个字段的视图。
④建立一个含计算机科学系的学生及年龄不大于19岁的学生的视图。
⑤建立一个既选修了课程1又选修了课程2的学生视图。
5.在视图基础上的查询①查询所有订单的客户和代理商。
数据库SQL语句实验报告

《数据库原理及应用》实验报告SQL语句部分总成绩:实验一熟悉SQL SERVER,数据定义实验实验一成绩:一、实验目的1、利用查询分析器创建数据库2、利用查询分析器用SQL语言定义基本表、索引并进行相关操作二、实验步骤及内容在以下实验中,使用学生-课程数据库,它描述了学生的基本信息、课程的基本信息及学生选修课程的信息。
1.创建学生课程数据库5.将以上创建表S、C、SC的SQL命令以.SQL文件的形式保存在磁盘上。
6、在表S上增加“出生日期”属性列。
7、删除表S的“年龄”属性列。
8、删除S姓名列的唯一值约束。
9、修改SC表成绩属性列为精确数字型。
10、在表S上,按“Sno”属性列的唯一值方式建立索引。
11、删除表SC,利用磁盘上保存的.SQL文件重新创建表SC。
12、创建教材P74页习题5中SPJ数据库中的四个关系:S、P、J、SPJ。
三、实验结果:1.创建学生课程数据库create database Studend;(Sno CHAR(9)PRIMARY KEY,Sname CHAR(20)UNIQUE,Ssex CHAR(2),Sage smallint,Sdept char(20),);3.创建课程关系表C :课程号课程名先行课学分Cno Cname Cpno ccredit(Cno char(4)primary key,Cname CHAR(40),Cpno char(4),Ccredit SMALLINT,);学号课程号成绩Sno Cno grade(Sno char(9),Cno char(4),Grade smallint,);5.将以上创建表S、C、SC的SQL命令以.SQL文件的形式保存在磁盘上。
6、在表S上增加“出生日期”属性列。
alter table S add Sbirthday datetime;7、删除表S的“年龄”属性列。
alter table S drop column Sage;精选文档8、删除S姓名列的唯一值约束。
数据库的视图操作实验报告

实验(四)数据库的视图操作实验一、实验目的和要求(1)掌握SQL Server中的视图创建向导和图表创建向导的使用方法;(2)加深对视图和SQL Server图表作用的理解。
(3)掌握数据库安全性的操作方法。
二、实验内容和原理1. 基本操作实验(1)在SQL Server企业管理器中调出Create View Wizard(创建图表向导),按下列Transact-SQL描述的视图定义,创建借阅_计算机图书视图。
CREATE VIEW 借阅_计算机图书AS SELECT 图书.*,借阅.*FROM 图书,借阅WHERE图书.编号=借阅.书号AND图书.类别=‘计算机’(2)在SQL server企业管理器中调出Create View Wizard(创建图表向导),完成在图书-读者数据库中建立一个图书_借阅图表操作。
要求该图表包括图书和借阅两个表,并包括图书与借阅之间的“图书.书号=借阅.书号”外码与被参照表之间的关联。
(3)查看上述实验结果。
如果结果有误,予以纠正。
2. 提高操作实验在学生-课程数据库中用Transact-SQL语句描述下列视图定义。
(1)从学生表中建立查询所有男(女)生信息的视图STU_SEX。
视图的列名为SNO、SNAME、SSEX和SAGE。
(2)从课程表中建立查询所有课程先修课信息的视图课程_PRE。
视图的列名为课程号、课程名称和先修课名称。
(3)从选修表中建立查询成绩大于等于80信息的视图STU_CJ1。
视图的列名为学号、课程号和成绩。
(4)从学生、选修和课程三个表建立查询学生选修情况的视图STU_CJ2。
视图的列名为姓名、课程名称和成绩。
(5)从学生、选修和课程三个表建立查询学生选修情况并且成绩小于80的视图STU_CJ3。
视图的列名为姓名、课程名称和成绩。
(6)利用Transact-SQL命令修改视图STU_SEX。
把视图的列名改为学号、姓名、性别和年龄,把加上“WITH CHECK OPTION”选项。
数据更新与视图操作实验报告

where shopaddress='北京'
WITH CHECK OPTION
③基于多个基本表的视图创建。
例:创建北京地区所有商店的销售记录视图V3。
create view v3(shopno,prono,amount,shopaddress)
as
select sale.shopno,prono,amount,shopaddress
prono ='p01'
基于分组视图的查询。
例:查询平均销售量大于100的商店名和平均销售量。
select amountavg,shopname
from v5
where amountavg>100
(3)更新视图
①视图上插入数据。
例:向视图V1中插入新商店(s05,农工商,北京)的信息。
例:向视图V1中插入新商店(s06,家乐福,上海)的信息。
from shop,sale
where shopaddress='北京'and
shop.shopno=sale.shopno
④基于视图的视图创建。
例:创建北京地区、销售量大于100的销售记录视图V4。
create view v4
as
select shopno,prono,amount shopadress
2.修改数据
(1)修改一行数据
例:将商店s02的商店名改为红五星。
(2)修改多行数据
例:将所有商品的价格增加100元。
3.删除数据
(1)删除一行数据
例:删除s05商店的基本信息。
(2)删除多行数据
例:删除苏果商店的所有销售记录。
数据库实验

实验一:建立数据库及基本表实验报告一、实验目的1、了解SQL Server数据库的逻辑结构和物理结构;2、了解SQL Server的基本数据类型;3、学会在企业管理器中创建数据库和表;4、使用SQL查询分析器用CREATE、DROP、ALTER语句创建和删除数据库,创建、删除、更新基本表。
二、实验内容1、创建数据库和查看数据库属性。
2、创建表。
3、查看和修改表结构。
4、熟悉企业管理器和查询分析器工具的使用方法三、实验步骤1、在企业管理器中创建数据库和数据表。
(1)使用企业管理器建立销售数据库,数据库名为sales,初始大小为10MB,最大为50MB,数据库自动增长,增长方式是按5%比例增长;日志文件初始为2MB,最大可增长到5MB,按1MB增长。
数据库的逻辑文件名和物理文件名均采用默认值。
详细步骤:1启动sql server企业管理器,展开服务器,单击“数据库”,选择“操作”菜单中的“新建数据库”。
2单击数据库属性窗口的“常规”选项卡,在“名称”文本框中输入数据库的名称“sales”。
3单击“数据文件”选项卡,此处可以修改数据文件存储的路径。
(将路径修改为:“E:\”)。
4将文件初始大小改为10MB,最大改为50MB,选中“文件自动增长”,增长方式是按5%比例增长。
5单击“事务日志”,修改路径,修改初始大小为2MB,最大改为5MB,选中“文件自动增长”,按1MB增长。
6单击“确定”,完成数据库的创建。
(2)在企业管理器中查看图书管理数据库的属性,并进行修改,使之符合要求。
(3)通过企业管理器,在建好了销售数据库sales中建立职工(employee)、物资(goods)和销售(sell)3个表,其结构为:职工(编号,姓名,性别,部门,电话,地址);物资(商品编号,商品名称,生产厂家,进货价,零售价,数量,进货时间);销售(销售编号,商品编号,数量,售出时间,售货员工编号);创建上述三个表的步骤:1展开服务器,数据库,展开建立数据库所在的数据库。
实验三 数据库中的数据查询及视图操作实验报告

实验三数据库中的数据查询及视图操作实验报告实验三数据库中的数据查询及视图操作实验报告一、实验目的本实验的主要目的是熟悉数据库中的数据查询和视图操作。
通过本实验,我们可以掌握使用SQL语句进行数据查询和创建视图的方法,进一步提高对数据库的操作能力。
二、实验环境本实验使用MySQL数据库管理系统,并在Windows操作系统下进行实验。
三、实验内容本实验主要包括以下内容:1. 数据查询:使用SELECT语句查询数据库中的数据,并进行排序、过滤和聚合操作。
2. 视图操作:创建和删除视图,以及对视图进行查询和更新操作。
四、实验步骤与结果1. 数据查询首先,我们需要连接到数据库,并选择要查询的表。
假设我们选择的表名为"students",包含以下字段:学号、姓名、性别、年龄、班级。
a. 查询所有学生的信息:```sqlSELECT * FROM students;```执行以上SQL语句后,我们可以得到所有学生的信息,包括学号、姓名、性别、年龄和班级。
b. 查询男生的信息:```sqlSELECT * FROM students WHERE 性别 = '男';```执行以上SQL语句后,我们可以得到所有性别为男的学生的信息。
c. 查询年龄小于20岁的学生的姓名和班级:```sqlSELECT 姓名, 班级 FROM students WHERE 年龄 < 20;```执行以上SQL语句后,我们可以得到年龄小于20岁的学生的姓名和班级。
d. 查询学生按照年龄降序排列的结果:```sqlSELECT * FROM students ORDER BY 年龄 DESC;```执行以上SQL语句后,我们可以得到按照年龄降序排列的学生信息。
e. 查询学生按照班级分组,并统计每个班级的人数:```sqlSELECT 班级, COUNT(*) AS 人数 FROM students GROUP BY 班级;```执行以上SQL语句后,我们可以得到每个班级的人数统计结果。
实验三 多表查询、数据更新、视图

(6)向计算机系学生视图中插入一条新的学生记录,其中学号为200215126,姓名为李三,年龄为20岁,院系为IS,并分析下执行结果。
(7)删除计算机系学生视图中学号为200215121的记录,并查看Student表的变化,说明是为什么。
3、掌握子查询的表示和使用方法;
4、掌握对数据表的更新语法;
5、掌握视图的创建、查询和修改方法;
二、实验准备
1、理解Select语句的基本语法格式和执行方法;
2、理解连接查询的表示;
3、理解子查询的表示方法;
4、理解对数据表的插入、删除、更新语法;
5、理解视图的含义;
三、实验内容
1、基于Student_DB数据库中的三个表Student,Course,SC,进行如下的查询:
(7)查询选修了课程1或者选修了课程2的学生。
(8)求没有选修2号课程的学生姓名。
(9)查询选修课程1的学生集合与选修课程2的学生集合的交集。
(10)查询信息系的学生与年龄不大于19岁的学生的差集。
2、用SQL语句实现Student_DB数据库中数据表的更新(给出查询语句或截图):
(1)删除信息系所有学生的选课记录。
3、用SQL语句建立视图并对视图做相应的操作:
(1)建立计算机系学生所有信息的视图,并要求进行修改和插入操作时仍须保证该视图只有计算机系的学生。
(2)建立计算机系选修了’3’号课程且成绩在90分以下的学生视图,并对此视图进行查询。
(3)将学生的学号,姓名和平均成绩定义为一个视图。
(4)利用所建立的视图,查询选修了2号课程的计算机系的学生。
四
、实验ຫໍສະໝຸດ 过程实验过程、存在的问题及解决办法:
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验三数据的更新操作和视图本实验需要2学时。
一、实验目的1、掌握视图的创建、修改和删除操作。
2、掌握数据库数据更新(增加、修改、删除)操作。
二、实验内容和步骤1、视图(1)建立名为UV_SC的视图。
该视图可以让我们看到每个学生的姓名、选修课程名和成绩。
(2)利用UV_SC视图,查看平均成绩在80分以上的学生姓名。
(3)建立名为UV_Course的视图,该视图显示每门课的课程名和选修该课程的学生人数。
(4)修改视图UV_Course,在视图中增加一列,显示选修该课程所有学生的平均成绩。
(5)建立名为UV_IS_Depart的视图。
该视图可以用来查看“信息系”的学生的学号、姓名、年龄和系名。
并保证对该视图的修改满足系名为信息系的条件。
(6)建立名为UV_Student的加密视图。
该视图可以用来查看每个学生选修的课程门数和平均成绩。
(7)利用UV_Student视图,查询平均成绩在80分以上的学生学号。
(8)能否利用视图UV_Student,修改某个学生的平均成绩?(9)删除视图UV_Student。
2、数据更新(1)向STUDENT表增加如下记录:(2)将学号'95011',成绩80,以及课程表中的所有课程号插入到SC表中。
(3)建立与表STUDENT同结构的空表STUD。
然后利用INSERT命令把表STUDENT中年龄大于19的学生记录添加到表STUD。
(注意:可以使用select into语句实现同结构空表的创建,再使用insert命令插入记录;或者使用单条select into语句实现等同的功能)(4)为“95002”的学生增加选修“操作系统”和“数据结构”这两门课的选课记录。
(5)把课程名为“操作系统”的成绩从成绩表SC中删除。
(试用三种方式完成)(6)将女生的成绩提高10%。
(试用三种方式完成)(7)如果学生“张三”的数据结构的成绩低于65,则加上10分。
(8)将成绩最低的学生的成绩加上10分。
(9)将前3名成绩最高的学生的成绩减去10分。
(10)为没有选课的学生自动增加选修“01”课程的选课记录。
(11)把选修“数学”不及格的成绩全部改成空值。
(12)删除成绩低于总平均成绩的女生的选课记录。
三、实验环境四、调试过程五、实验结果六、总结通过此次实验:我知道了视图不是一张真实的表格,是一个虚拟的存在形式。
1.create:当视图不存在时可使用掌握了对视图的创建(create or replace)2.进行创建;而如果不确定视图是否已存在,但此时又需要建立一张此名称的创建,如果视图名已存在也不会出现冲突,而是进replace视图时,可使用行替换。
行图上执check option表示在视视在创建图时如果使用了with 3.要保证所修改的行满足视图定义中的谓词,或DELETE操作时UPDATEINSERT这样可以确保数据修,Where条件:,即SELECT查询子句中的限定条件如条件改后仍可通过视图看到修改的数据。
4.分清楚了对视图结构的修改(alter)、对视图数据的修改(update)。
同时对视图上的计算列、内置函数列和行集合函数列不能修改。
5.知道了对视图数据的删除操作(delete)。
6.通过第二题的训练也使我对数据库数据的更新语句有了更多的体会和认识。
7.第二题第五小题,要求三种方法,只写出了两种,第三种有点没辙。
而其他题目有的没要求,因为在思考过程有别的思路,也有多写了相关方法。
附录:--1、视图--(1)建立名为UV_SC的视图。
该视图可以让我们看到每个学生的姓名、选修课程名和成绩。
create view UV_SCasselect sname,cname,gradefrom student s,course c,scwhere s.sno=sc.sno and o=oselect*from UV_SC--(2)利用UV_SC视图,查看平均成绩在分以上的学生姓名。
select snamefrom UV_SCgroup by snamehaving avg(grade)>80--(3)建立名为UV_Course的视图,该视图显示每门课的课程名和选修该课程的学生人数。
create view UV_Courseasselect cname,count(*)as'选修人数'from course c,scwhere o=ogroup by cnameselect*from UV_Course,在视图中增加一列,显示选修该课程所有学生的平均成绩。
UV_Course)修改视图4(--alter view UV_Courseasselect cname,count(*)as' 选修人数',avg(grade)as'平均成绩'from course c,scwhere o=ogroup by cnameselect*from UV_Course--(5)建立名为UV_IS_Depart的视图。
该视图可以用来查看“信息系”的学生的学号、姓名、年龄和系名。
并保证对该视图的修改满足系名为信息系的条件。
create view UV_IS_Departasselect sno,sname,sage,sdeptfrom student swhere sdept='信息系'with check optionselect*from UV_IS_Depart--(6)建立名为UV_Student的加密视图。
该视图可以用来查看每个学生选修的课程门数和平均成绩。
create view UV_Student(sno,course_no,avg_grade)with encryptionasselect sno,count(*),avg(grade)from scgroup by snoselect*from UV_Student--(7)利用UV_Student视图,查询平均成绩在分以上的学生学号。
select snofrom UV_Studentwhere avg_grade>=80--(8)能否利用视图UV_Student,修改某个学生的平均成绩?update UV_Studentset avg_grade=70where sno=95001--(9)删除视图UV_Student。
drop view UV_Student--2、数据更新--(1)向STUDENT表增加如下记录:--Sno Sname Ssex Sage Saddress Sdept--95011 王一鸣男 20 福州市计算机系insert into student(sno,sname,ssex,sage,saddress,sdept)values('95011','王一鸣','男',20,'福州市','计算机系')alter table studentadd saddress varchar(50)null--修改表结构,增加saddress列*selectfrom studentwhere sno='95011'--(2)将学号'',成绩,以及课程表中的所有课程号插入到SC表中。
insert into sc(sno,cno,grade)select'95011',cno,80from courseselect*from sc--(3)建立与表STUDENT同结构的空表STUD。
然后利用INSERT命令把表STUDENT中年龄大于的学生记录添加到表STUD。
(注意:可以使用select into语句实现同结构空表的创建,再使用insert命令插入记录;或者使用单条select into语句实现等同的功能)--法一select*into STUDfrom studentwhere sage>19--法二select*into STUDfrom studentwhere 1=0insert into STUD(sno,sname,sage,ssex,sdept,saddress)select sno,sname,sage,ssex,sdept,saddressfrom studentwhere sage>19select*from STUD--(4)为“”的学生增加选修“操作系统”和“数据结构”这两门课的选课记录。
insert into sc(sno,cno,grade)select'95002',cno,nullfrom coursewhere cname='操作系统'or cname='数据结构'select*from sc--(5)把课程名为“操作系统”的成绩从成绩表SC中删除。
(试用三种方式完成)--法一delete from scwhere cno in(select cnofrom coursewhere cname='操作系统')--法二delete from scwhere exists(select cnocourse cfromwhere cname='操作系统'and o=o)--法三--(6)将女生的成绩提高%。
(试用三种方式完成)--法一update scset grade=grade*1.1where sno in(select snofrom studentwhere ssex='女')--法二update scset grade=grade*1.1where exists(select snofrom student swhere ssex='女'and s.sno=sc.sno)--法三update scset grade=grade*1.1where(select count(*)from student swhere s.sno=sc.sno and ssex='女')=(select count(*)from course where cno=o)--(7)如果学生“张三”的数据结构的成绩低于,则加上分。
update scset grade=grade+10where exists(select snofrom student swhere s.sno=sc. sno and sname='张三'and cno in(select cnofrom course'数据结构'= cname where))--查看结果select sname,cname,gradefrom student s,course c,scwhere s.sno=sc.sno and o=o and sname='张三'and cname='数据结构' --(8)将成绩最低的学生的成绩加上分。