数据库系统原理-实验04-数据更新和视图
实验四数据库更新,视图和数据控制

嘉应学院计算机学院一、实验目的通过实验掌握数据库更新的方法和完整性约束的概念以及视图建立和操作方法。
掌握SQL SERVER的数据控制和安全性设计的基本方法, 存储过程的建立和使用方法。
二、实验原理1、插入数据INSERTINTO<表名〉[<属性列1〉[,<属性列2〉...)]VALUES(<常量1>[,<常量2>]...)2、修改数据UPDATE <表名>SET<列名〉=<表达式〉[,<列名〉=<表达式〉]...[WHERE<条件〉]3. 删除数据DELETEFROM<表名>[WHERE<条件>4. 建立视图CREATE VIEW <视图名〉[(列名〉[,(列名〉]...AS <子查询〉[WITH CHECK OPTION]5. 授权GRANT<权限>[,<权限>]...ON<对象类型〉<对象名>]TO<用户> [,<用户>]...[WITH GRANT OPTION]三、实验环境操作系统:Windows Server 2003 、Windows 7编译环境:SQL Server Enterprise Manager数据库管理系统:Microsoft SQL Server 2005四、实验步骤及内容(一)数据库更新1. 在school数据库中,确保表之间已经建立关系,用企业管理器建立数据库的Diagrams2. 在course 表中删除cno=1的记录,有什么结果?未删除前course表的内容如下:执行删除操作后,结果如下:3. 在Diagrams中编辑course表和 sc表之间的关系,选择cascade delete related records执行级联删除操作前,三个表之间的关系如图:在SC表中的属性关系里选择级联删除相关记录,如图:再查看三表之间的关系:重复2的操作,观察course 表和 sc表的变化,有什么结果,为什么?可观察到:Course表与sc表中的cno=‘1’的记录都删除了。
数据库实验数据更新和视图的建立与使用

实验五实验名称:数据更新和视图的建立与使用一、实验目的1.熟练使用INSERT/DELETE/UPDATE语句进行表的更新操作。
2. 理解视图的定义、视图的优点与视图的工作原理。
掌握在企业管理器和查询分析器中创建、修改及删除视图。
能够熟练掌握利用视图向表中插入、删除和修改数据。
二、实验原理1.数据更新操作只能针对一个表进行,即每次只能在一个表中插入、删除和修改数据。
用INSERT语句可以通过使用V ALUES关键字一次只向一个表插入一条记录,也可以通过子查询向一个表中插入若干条记录;当使用DELETE和UPDATE语句实现表的删除和更改时,若题目中涉及多个表的信息,可以使用子查询来挑选出部分数据,以作为删除或更改的条件,也可以在语句中用FROM 子句给出题目中涉及的所有表,而在WHERE子句中给出多个表之间的连接条件。
2. 利用CREATE VIEW、ALTER VIEW 、DROP VIEW语句创建、修改及删除视图。
由于视图是虚表,通过视图向表中添加数据时必须满足一定的条件。
如果视图引用了多个数据表,那么在通过视图向数据表中添加数据时,这个语句只能指定同一个表中的字段。
如果通过一个引用了多个数据表的视图向这些数据表中添加数据时,必须书写多个INSERT语句。
通过使用多个表的视图对数据表进行更新也需要书写多个UPDATE语句,另外适用于INSERT操作的许多限制同UPDATE操作。
使用DELETE语句可以通过视图将数据表中的数据删除。
但如果视图应用了两个或两个以上的数据表,则不允许删除视图中的数据。
另外,通过视图删除的记录,不能违背视图定义的WHERE子句中的条件限制。
三、实验设备安装有SQL SERVER 2005的计算机。
四、实验内容凡是能用多种方法实现的,请用多种方法实现。
1、为各表添加若干条记录,必须符合实验二中设定的各种约束。
2、将每个员工的薪水上调10%。
3、删除sales表中作废的订单(其发票号码为‘I000000004’),其订货明细表中的数据也一并删除。
第04章数据库的查询、更新、视图

2013-7-12
7
4.2 数据查询
SELECT—FROM—WHERE句型 在关系代数中最常用的式子是下列表达式: πA1,…,An(σF(R1×…×Rm)) R1、…、Rm为关系,F是公式,A1、…、An为属性。 针对上述表达式,SQL为此设计了SELECT—FROM— WHERE句型: SELECT A1,…,An FROM R1,…,Rm WHERE F
2013-7-12
20
4.2.2 选择行
【例4.12】查询XSCJ数据库XS表中通信工程专业总学分 大于等于42的同学的情况。
2013-7-12
21
4.2.2 选择行
2. 模式匹配
LIKE谓词用于指出一个字符串是否与指定的字符串相匹配 运算对象:char、varchar、text、ntext、datetime和 smalldatetime类型的数据 返回逻辑值:TRUE或FALSE。 LIKE谓词表达式的格式: match_expression [ NOT ] LIKE pattern [ ESCAPE escape_character ]
2013-7-12 11
4.2.1 选择列
2. 修改查询结果中的列标题 当希望查询结果中的某些列或所有列显示时使用自己选择 的列标题时,可以在列名之后使用AS子句来更改查询结果 的列标题名。
【例4.7】查询XS表中计算机系同学的学号、姓名和总学 分,结果中各列的标题分别指定为number、name和mark。
2013-7-12
5
4.2 数据查询
SELECT <select_list> /*指定要选择的列及其限定*/ [ INTO <new_table> ] /*INTO子句,指定结果存入新表*/ FROM <table_source> /*FROM子句,指定表或视图*/ [ WHERE <search_condition> ] /*WHERE子句,指定查询条件*/ 语 [ GROUP BY <group_by_expression> ] /*GROUP BY子句,指 句 定分组表达式*/ 语 法 [ HAVING <search_condition> ] /*HAVING子句,指定分组统计 格 条件*/ 式 [ ORDER BY <order_expression> [ ASC | DESC ]]
数据库原理 实验四 数据更新与视图操作

实验四数据更新与视图操作一、实验目的(1)掌握向表中插入一个或多个元组的方法。
(2)掌握删除表中一个或多个元组的方法。
(3)掌握修改表中一个或多个元组的方法。
(4)掌握视图的创建、查询和更新操作。
二、实验环境Windows XP+SQL Server 2000三、实验内容1.插入数据(1)插入一行数据例:将新商店(s05,沃尔玛,上海)插入到Shop表中。
(2)插入多行数据例:创建与表Shop具有相同结构与相同数据的新表Shop1。
2.修改数据(1)修改一行数据例:将商店s02的商店名改为红五星。
(2)修改多行数据例:将所有商品的价格增加100元。
3.删除数据(1)删除一行数据例:删除s05商店的基本信息。
(2)删除多行数据例:删除苏果商店的所有销售记录。
4.视图的基本操作(1)创建视图①行列子集视图的创建。
例:创建北京地区所有商店的基本信息视图V1。
②带WITH CHECK OPTION的视图创建。
例:创建北京地区所有商店的基本信息视图V2,要求基于该视图进行更新操作时只能涉及北京地区的商店。
③基于多个基本表的视图创建。
例:创建北京地区所有商店的销售记录视图V3。
④基于视图的视图创建。
例:创建北京地区、销售量大于100的销售记录视图V4。
⑤分组视图的创建。
例:创建各商店平均销售量的视图V5。
(2)查询视图①基于非分组视图的查询。
例:查询北京地区、商店名为联华的商店信息。
②基于非分组视图和基本表的查询。
例:查询北京地区、销售了p01商品的商店。
③基于分组视图的查询。
例:查询平均销售量大于100的商店名和平均销售量。
(3)更新视图①视图上插入数据。
例:向视图V1中插入新商店(s05,农工商,北京)的信息。
例:向视图V1中插入新商店(s06,家乐福,上海)的信息。
例:向视图V2中插入新商店(s07,德尚,上海)的信息。
②视图上删除数据。
例:删除视图V1中商店号为s04的记录。
③视图上修改数据。
例:将视图V1中s02商店的商店名改为五星。
数据库实验报告数据更新

大连海事大学数据库原理课程实验大纲实验名称:实验四数据更新实验学时: 2适用专业:智能科学与技术实验环境: SQL Server Management Studio 1实验目的(1)掌握SQL数据更新语句的基本使用方法,如UPDATE、DELETE、INSERT。
(2)掌握更新语句条件中的嵌套查询使用方法。
2实验内容2.1 掌握SQL更新语句的基本使用方法(1)INSERT基本语句。
(2)UPDATE基本语句。
(3)DELETE基本语句。
2.2 掌握SQL更新语句的高级使用方法(1)INSERT批量插入语句。
(2)UPDATE语句使用嵌套子查询。
(3)DELETE语句使用嵌套子查询。
3实验要求(1)深入复习教材第三章SQL有关更新语句。
(2)根据书上的例子,针对TPCH数据库模式设计各种更新语句,每种类型更新语句至少要设计一个,描述清楚数据更新要求,运行你所设计的更新语句,并截图相应的实验结果,每幅截图并要有较为详细的描述。
也可以按照附1所列示例查询做实验。
(3)实验步骤和实验总结中要详细描述实验过程中出现的问题、原因和解决方法。
4实验步骤4.1 掌握SQL更新语句的基本使用方法(1)INSERT基本语句(插入全部列的数据)。
插入一个新顾客的记录,要求每列都给一个合理的值SET SEARCH_PA TH TO SALES,PUBLIC;INSERTINTOCUSTOMER(CUSTKEY,NAME,ADDRESS,NATIONKEY,PHONE,ACCTBAL,MKTSEGMENT,C OMMENT)V ALUES('28','陆奕诚',’江苏','40','140',2,'1市区','我');(2)INSERT基本语句(插入部分列的数据,要求随机生成某些数字列或者字符列的数据)。
插入一条订单记录,可以只给出必要的几个字段的值,其中数值字段可以用RANDOM函数随机生成数值INSERTINTO ORDERS(ORDERKEY,CUSTKEY,TOTALPRICE,SHIPPRIORITY)V ALUES(2600,17,1000000*RANDOM(),10000*RANDOM());(3)UPDATE基本语句(修改所有记录的某些列的值)。
实验 4:数据更新实验

计算机与网络工程学院实验报告课程名称:数据库原理实验名称:实验4:数据更新实验专业/班级:2018级计算机四班学号:姓名:实验地点:实验日期:2020.10.23实验目的与要求:熟悉通过 SQL 语句完成表的数据更新操作(插入数据,修改数据,删除数据)。
实验环境:MS SQL Server2008实验内容:完成 S-C-T 数据库中 STUDENT 表,COURSE 表,SC 表上(附件作业)《数据库查询作业》第三部分的数据更新操作(插入数据,修改数据,删除数据)。
实验步骤:用 SQL 更新语句表达对“教学”数据库中 3 个基本表 S“学生”、C“课程”和 SC “学习”的各个更新操作。
(1)向基本表“学生”中插入一个学生元组(‘S009’,‘吴’,18)INSERT INTO S(SNO,SNAME,AGE)VALUES('S009','吴',18);(2)在基本表“学生”中查询每一门课程成绩都大于等于80 分的学生学号、姓名和性别,并把查询到的值送往另一个已存在的基本表“结果”(学号,姓名,性别)中。
SELECT DISTINCT(Student.SNO),Sname,SEXFROM SC,StudentWHERE Student.SNO=SC.SNO AND SC.SNO NOT IN(SELECT DISTINCT(SNO) FROM SCWHERE SC.GRADE<80);(3)在基本表“学习”中删除尚无成绩的元组。
DELETE FROM SCWHERE GRADE IS NULL;(4)把王乐同学在“学习”基本表中的课程和成绩全部删除。
DELETE FROM SCWHERE SNO IN(SELECT SNO FROM SWHERE SNAME='王乐');(5)把修读Java 课不及格的成绩全改为空值。
UPDATE SCSET GRADE=NULLWHERE GRADE<60 AND CNO IN(SELECT CNOFROM C表WHERE CNAME='JAVA');(6)把低于总平均成绩的女同学成绩提高 5%。
第四章视图及数据更新.

远程视图
通过远程视图,用户无须将所有需要的远 程记录下载到本地机即可提取远程ODBC 服务器上的数据,并在本地操作选定的记 录,然后将更改或添加的值回送到远程数 据源中 。 连接远程数据的方法:一种是直接访问已 注册的ODBC数据源,另一种则是使用 “连接设计器”建立自定义连接。
创建远程视图
1. 建立同数据源的连接 打开数据库后,在数据库设计器中点击鼠标右键, 并选择新建远程视图 ,单击新建视图按钮; 在选择连接或数据源对话框中,选取可用的数据 源选项。如果已有定义并保存过的连接,也可选 取连接选项 选择指定的数据源或连接并单击确定按钮 在设置连接对话框中选择数据源的位置 在打开对话框中,选定位于数据源中的表,远程 视图的视图设计器就被打开了 2. 与本地视图的创建 建立、运行方法, 利用视图更新数据以及用查询、视图操 作多个数据表。
本节主要内容
建立和使用本地视图
创建远程视图 使用视图更新数据
查询更新多个表
视图及视图文件
• 视图是一个定制的虚拟表,其数据来源于数 据库中的一个或多个表(视图)。也就是说, 视图不能独立地存在,只能含于已有的数据 库中,创建视图必须先打开它赖以生存的数 据库,不能直接通过新建文件类型对话框的 模式进行。 • 视图以视图文件(扩展名为.VUE)保存在数 据库中,该文件中只保存了视图的定义和关 系,真正的数据全在表中。因此,只有打开 数据库后才能使用包含在其中的视图。
用视图设计创建
1.在添加表或视图对话框中,选择所需要 的表或视图,再选取建立视图所需要的 字段,并设置需要的各种属性,就可完 成视图的建立。 2.在项目管理器数据选项卡中选择本地视 图,单击新建(N)...,选择新建视图(N);
数据库实验报告实验四数据更新与视图

实验四数据更新与视图一、实验目的1、掌握数据更新语句的使用;2、掌握视图操作的基本方法和应用,理解基于视图的查询和数据更新操作的过程。
二、预备知识1.数据更新基本语句及其格式(1)插入操作SQL的数据插入语句INSERT有两种形式:①插入单个元组,使用命令:INSERT INTO 基本表名(列名表)V ALUES (元组)②插入子查询的结果:INSERT INTO 基本表名(列表名)查询语句(2)修改操作当需要修改指定关系中元组的值时,可使用下列语句实现:UPDA TE 基本表名SET 列名1=值表达式1[,列名2=值表达式2…][WHERE 条件表达式](3)删除操作删除关系中满足条件的元组语句格式如下:DELETE FROM <表名>Where <条件表达式>三、实验内容1.在实习二创建的“gongcheng”数据库中使用SQL语句完成以下操作:(1)现有一供应商,代码为S9、姓名为英特尔、所在城市西安,供应情况如下:供应零件P5给工程J7数量为600,供应零件P4给工程J4数量为500,请将此供应商的信息和供应信息插入数据库。
SELECT * FROM JPSSELECT * FROM SINSERT INTO S (SNO,SNAME,Ctiy) V ALUES('S9','英特尔','西安')INSERT INTO jps (SNO,PNO,JNO,QTY) V ALUES('S9','P5','J7',600)INSERT INTO jps (SNO,PNO,JNO,QTY) V ALUES('S9','P4','J4',500)(2)请将北京供应商的供应数量加20UPDA TE JPS SET QTY=QTY+20 WHERE JNO IN(SELECT JNO FROM J WHERE Ctiy='北京')(3)零件P3已经停产,请将P3的相关信息从数据库中删除。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2011-2012学年第二学期课程实验报告课程名称:数据库系统原理实验名称:数据更新和视图姓名班级学号实验台编号同组同学实验课表现出勤、表现得分25% 25 实验报告得分50% 实验总分操作结果得分25% 25实验目的1.学会熟练使用INSERT语句对数据表进行数据插入操作。
2.学会使用UPDATE语句对数据表中的数据进行修改操作。
3.学会使用DELETE语句对数据表中的数据进行删除操作。
4.了解使用视图的目的与好处,掌握视图与基本表的关系。
5.掌握如何使用SQL语句创建、修改、删除和查询视图。
实验内容(实验步骤和实验结果的简单描述,方便同学自己以后阅读)一、数据的插入、删除和修改1.创建表XS1(包括学号、姓名、性别和出生日期字段,各个字段属性自定),然后使用SELECT子句向表XS1中插入多行数据(专业为“电子”的学生数据)。
2.修改XS1表的结构,增加1个“平均成绩”字段,并根据XS_KC表修改每个学生的“平均成绩”。
3.将XS表中计算机专业的学生的总学分增加10分。
4.将XS表中学号为“4102101”的同学的总学分增加4分,备注改为“提前修完一门课程”。
5.将XS_KC表中学号为“4102101”的同学的“计算机基础”课程的成绩增加10分。
6.修改XS1表的结构,增加1个“总学分”字段,并使其值为该学生所学各门功课的学分之和。
7.将XS1表中总学分小于10分的学生数据删除。
8.将XS_KC表中“数据库”课程的所有成绩信息删除。
9.将XS_KC表中其学号在XS表中不存在或其课程号在KC表中不存在的学生的成绩信息删除。
10.删除XS1表中前两个同学的基本信息。
11.删除XS1表中的所有数据。
12.删除XS1表。
二、视图操作1.使用SQL语句创建视图V_SCORE1,使其显示计算机专业学生的所有基本信息,并保证以后对该视图的修改都要满足专业为“计算机”这个条件。
2.使用SQL语句创建视图V_SCORE2,显示计算机专业每个学生的学号、姓名、选修的课程名称及其成绩。
3.使用T-SQL语句修改视图V_SCORE2,使其显示每个专业、每门课程的平均成绩,结果格式为:专业课程名平均成绩………………4.通过V_SCORE2查看计算机专业每门课程的平均成绩。
5.通过V_SCORE2查看各个专业所有课程的平均成绩,结果格式为:专业平均成绩…………6.使用视图V_SCORE1向其基表XS表中输入数据(数据自定),并观察什么样的数据可以插入,什么样的数据不可以插入,并解释为什么。
7.使用SQL语句删除视图V_SCORE1、V_SCORE2。
select*from xsselect*from kcselect*from xs_kcselect*from xs1--1.创建表XS1(包括学号、姓名、性别和出生日期字段,各个字段属性自定),然后使用SELECT子句向表XS1中插入多行数据(专业为“电子”的学生数据)。
create table xs1(学号char(7)not null primary key,姓名char(8)not null,性别bit default(1)not null,出生日期datetime)insert into xs1select学号,姓名,性别,出生日期from xswhere专业='电子'select*from xs1--2.修改XS1表的结构,增加个“平均成绩”字段,并根据XS_KC表修改每个学生的“平均成绩”。
alter table xs1add平均成绩char(100)update xs1set平均成绩=(select avg(成绩)from xs_kc where xs_kc.学号=xs1.学号group by学号)select*from xs1--3.将XS表中计算机专业的学生的总学分增加分。
update xs set总学分=总学分+10where专业='计算机'select*from xs--4.将XS表中学号为“”的同学的总学分增加分,备注改为“提前修完一门课程”。
update xs set总学分=总学分+4,备注='提前修完一门课程'where学号='4102101'select*from xs--5.将XS_KC表中学号为“”的同学的“计算机基础”课程的成绩增加分。
update xs_kc set成绩=成绩+10where学号='4102101'and课程号=(select课程号from kc where kc.课程名='计算机基础')--6.修改XS1表的结构,增加个“总学分”字段,并使其值为该学生所学各门功课的学分之和。
alter table xs1add总学分char(100)update xs1set总学分=(select sum(学分)from kc,xs_kc where xs_kc.学号=xs1.学号and kc.课程号=xs_kc.课程号group by学号)select*from xs1--7.将XS1表中总学分小于分的学生数据删除。
delete from xs1where总学分<10select*from xs1--8.将XS_KC表中“数据库”课程的所有成绩信息删除。
delete from xs_kcwhere课程号=(select课程号from kc where kc.课程名='数据库')select*from xs_kc--9.将XS_KC表中其学号在XS表中不存在或其课程号在KC表中不存在的学生的成绩信息删除。
delete from xs_kcwhere not exists(select xs.学号from xs_kc,xs where xs_kc.学号=xs.学号or not exists(select kc.课程号from xs_kc,kc where xs_kc.课程号=kc.课程号))select*from xs_kc--10.删除XS1表中前两个同学的基本信息。
delete top(2)from xs1select*from xs1--11.删除XS1表中的所有数据。
delete from xs1select*from xs1--12. 删除XS1表。
drop table xs1--1.使用SQL语句创建视图V_SCORE1,使其显示计算机专业学生的所有基本信息,并保证以后对该视图的修改都要满足专业为“计算机”这个条件。
create view v_score1asselect*from xswhere专业='计算机'with check optionselect*from v_score1--2.使用SQL语句创建视图V_SCORE2,显示计算机专业每个学生的学号、姓名、选修的课程名称及其成绩。
create view v_score2(学号,姓名,课程名,成绩)asselect xs.学号,姓名,课程名,成绩from xs,kc,xs_kcwhere xs.学号=xs_kc.学号and kc.课程号=xs_kc.课程号and专业='计算机'select*from v_score2--3.使用T-SQL语句修改视图V_SCORE2,使其显示每个专业、每门课程的平均成绩,结果格式为:--专业课程名平均成绩--…… …………alter view v_score2asselect专业,课程名,avg(成绩)平均成绩from xs,kc,xs_kcwhere xs.学号=xs_kc.学号and kc.课程号=xs_kc.课程号group by专业,课程名select*from v_score2--4.通过V_SCORE2查看计算机专业每门课程的平均成绩。
select平均成绩from v_score2where专业='计算机'--5.通过V_SCORE2查看各个专业所有课程的平均成绩,结果格式为:--专业平均成绩--…………select专业,平均成绩from v_score2--6.使用视图V_SCORE1向其基表XS表中输入数据(数据自定),并观察什么样的数据可以插入,什么样的数据不可以插入,并解释为什么。
insert into V_SCORE1values ('10010300xx','xxx',1,'1994-04-29','电子',0,null)insert into v_score1values ('10010300xx','xxx',1,'1994-04-29','计算机',0,null)--只有专业为计算机的同学的数据可以插入,因为在创建视图时有规定视图V_SOCRE1要满足专业='计算机'的条件--7.使用SQL语句删除视图V_SCORE1、V_SCORE2。
drop view v_score1,v_score2实验过程中遇到的问题以及如何解决的?(可以写多条,是否认真填写将影响实验成绩)本次实验的体会(可以写多条,是否认真填写将影响实验成绩)1.思考题1.总结INSERT、UPDATE和DELETE语句的用法。
Insert into <表名>【(<属性列1>【,<属性列2>…)】Values(<常量1>【,<常量2>】… );Update <表名> set <列名>=<表达式>【,<列名>=<表达式>】…【Where<条件>】;Delete from<表名>【Where<条件>】;2.比较基本表(TABLE)与视图(VIEW)的相同点与不同点。
表可以看作有行和列的电子数据表,表是关系数据库中一种拥有数据的结构。
用CREATE TABLE语句建立表,在建立表的同时,必须定义表名,列,以及列的数据类型和大小。
视图是一个或多个表中的数据的简化描述,用户可以将视图看成一个存储查询或一个虚拟表。
查询仅仅存储在oracle数据字典中,实际的数据没有存放在任何其它地方,所以建立视图不用消耗其他的空间。
视图也可以隐藏复杂查询,比如多表查询,但用户只能看见视图。
视图可以有与他所基于表的列名不同的列名。
用户可以建立限制其他用户访问的视图。
表存放实际数据,视图基于表,视图不存放实际数据。
视图的作用有:查询的方便,保障数据的安全性教师评价实验态度 A. 很认真 B. 认真 C. 比较认真 D. 不认真独立完成情况 A. 很好 B. 好 C. 比较好 D. 不好收获和体会 A. 多 B. 比较多 C. 少 D. 很少思考题回答情况 A. 很好 B. 好 C. 比较好 D. 不好评阅教师:日期:。