实验四数据库更新,视图和数据控制
数据库系统原理-实验04-数据更新和视图
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,显示计算机专业每个学生的学号、姓名、选修的课程名称及其成绩。
数据库的视图操作实验报告
实验(四)数据库的视图操作实验一、实验目的和要求(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”选项。
数据库实验数据更新和视图的建立与使用
实验五实验名称:数据更新和视图的建立与使用一、实验目的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’),其订货明细表中的数据也一并删除。
数据库原理 实验四 数据更新与视图操作
实验四数据更新与视图操作一、实验目的(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%。
数据库实验报告实验四数据更新与视图
实验四数据更新与视图一、实验目的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的相关信息从数据库中删除。
实 验 四 视图索引和数据更新
实验四视图索引和数据更新一、实验目的:熟练掌握索引的建立与删除的方法,SQL的应用,数据插入、修改和删除以及视图的创建及使用,为后续学习作准备。
二、实验属性(验证性)1.了解并掌握SQL企业控制管理器的使用。
2. 掌握数据插入、修改、更新和删除。
3.掌握索引、视图的创建。
4. 掌握索引、视图的删除。
三、实验仪器环境与要求PC机,SQL SERVER2005。
四、实验要求1.复习教材第三章,熟悉SQL语句。
2.能够熟练掌握数据插入、修改、更新和和删除语句的一般格式及使用方法。
3.掌握索引的建立和删除方法。
4.掌握视图建立、修改和删除;5.掌握视图查询。
6.五、实验原理SQL语言基本应用。
六、实验步骤:(1)启动SQL SERVER。
(2) 附加数据库;(3) 验证如下例子:1 建立索引1. 为学生选课数据库中的Student,Course,Sc三个表建立索引。
其中Student表按“学号”升序建唯一索引C1,Course表按“课程名”降序建唯一索引C2,Sc表按“学号”升序和“课程号”升序建唯一索引C3。
CREATE UNIQUE INDEX C1ON STUDENT(SNO);CREATE UNIQUE INDEX C2ON COURSE(CNAME DESC);CREATE UNIQUE INDEX C3ON SC(SNO,CNO);2. 在基本表Student的Sname(姓名)列上建立一个聚簇索引c4,而且Student中的物理记录将按照Sname值的升序存放。
CREATE CLUSTER INDEX C4ON STUDENT(ANAME)2 删除索引3. 删除以上所建索引C1、C2、C3。
DROP INDEX STUDENT.C1;DROP INDEX COURSE.C2;DROP INDEX SC.C3;3 建立视图4. 建立数学系学生的视图math_stu,并要求进行修改和插入操作时仍需保证该视图只有数学系的学生,视图的属性名为Sno,Sname,Sage,Sdept。
数据库-第四次实验报告-视图-t-sql语句
数据库-第四次实验报告-视图-t-sql语句第一篇:数据库-第四次实验报告-视图-t-sql语句实验十报告创建视图实验目的1.掌握创建视图的SQL语句的用法。
2.掌握使用企业管管理器创建视图的方法。
3.掌握使用创建视图向导创建视图的方法。
4.掌握查看视图的系统存储过程的用法。
5.掌握修改视图的方法。
一.实验准备1.了解创建视图方法。
2.了解修改视图的SQL语句的语法格式。
3.了解视图更名的系统存储过程的用法。
4.了解删除视图的SQL语句的用法。
二.实验要求1.用不同的方法创建视图。
2.提交实验报告,并验收实验结果。
三.实验内容 1.创建视图(1)使用企业管理器创建视图① 在EDUC库中以“student”表为基础,建立一个名为“V_计算机系学生”的视图。
在使用该视图时,将显示“student”表中的所有字段.兰州大学数据库实验报告视图如下:(2)使用SQL语句创建视图① 在查询分析器中建立一个每个学生的学号、姓名、选修的课名及成绩的视图S_C_GRADE;Create VIEW S_C_GRADE ASSELECT student.sno,sname,cname,score FROM student,course,student_course WHERE student.sno=student_course.sno AND o=student_o;视图如下:②建立一个所有计算机系学生的学号、选修课程号以及平均成绩的视图COMPUTE_AVG_GRADE;Create VIEWCOMPUTE_AVG_GRADE ASSELECT student.sno,o,AVG(score)'平均成绩' FROM student,course,student_course WHERE student.sno=student_course.snoAND o=student_o AND student.dno='CS' GROUP BY student.sno,o;视图如下:2.修改视图(1)使用企业管理器修改视图在企业管理器中将视图COMPUTE_AVG_GRADE中改成建立在数学系的学生学号、选修课程号以及平均成绩的视图。
数据库-实验四-数据更新与视图
实验四数据更新与视图北京师范大学珠海分校信息技术学院12计算机1班一、数据更新使用相应SQL语句,完成如下操作:(1)根据订单信息更新order表中的payment(订单总金额)字段的值。
update"order"set"order".payment=a.totalfrom(select orderid,sum(price*quantity)as totalfrom book,orderbookwhere bookid=bidgroup by orderid)awhere"order".oid=a.orderidselect oid,paymentfrom"order"(2)新建图书订购情况统计表bookstas(包含图书编号、图书名称、图书类别、图书价格和订购册数,数据类型自定),并根据数据库的订单情况将社科类图书的订购情况插入表中。
图书订购情况统计表bookstas表bsid btitle bcategory bprice ordersell 图书编号图书名称图书类别图书价格订购册数int varchar(50)int float int Primary keycreate table bookstas(bsid int primary key,btitle varchar(50),bcategory int,bprice float,ordersell int);insertinto bookstas(bsid,btitle,bcategory,bprice,ordersell)select bid,title,category,price,sum(quantity)from orderbook,bookwhere category='2'and bookid=bidgroup by bid,title,category,price;select bookstas.*from bookstas;(3)新建用户订购统计表userstas(包含用户编号、用户名、订单数量、总金额,数据类型自定),并根据数据库的订单情况将活跃用户(正常使用、锁定)的情况插入表中。
实验四 数据更新
实验四数据的更新一、实验目的通过本次实验使学生掌握数据库中表数据的各种更新操作。
二、实验内容1、数据的插入2、数据的修改3、数据的删除三、实验环境1、Windows XP2、SQL Server 2000四、实验步骤1、创建一个数据库,文件名为“教学”2、打开“教学”数据库3、根据教材课后题调试,运行,得到正确执行结果。
P150 5.65.6试用sql更新语句表达下列对5.3题的教学数据库中c,s,sc的更新:(1)往关系c中插一个课程元组(‘c8’,‘vc++’,‘t6’),insert into c (c#,cname,t#)values('c8','vc++','t6')(2)检索所授每门课程平均成绩大于80分的教师姓名并把检索到的值送往另一个已存在的表faculty (tname),insert into faculty(tname)select tnamefrom twhere t# in(select t#from cwhere c# in( select c#from scgroup by c#having avg(score)>80))(3)在sc中删除尚无成绩的选课元组,delete from scwhere score is null(4)把选修liu老师课程的女同学选课元组全部删去,delete from scwhere s# in(select s#from swhere sex='女')and c# in(select c#from cwhere t# in(select t#from twhere tname='liu'))(5)把maths课不及格的成绩全部改为60分,update scset score=60where c# in(select c#from cwhere cname='maths')and score<60(6)把低于所有课程总平均成绩的女同学成绩提高5%,update scset score=score*1.05where score<all(select avg(score)from sc)and s# in(select s#from swhere sex='女')(7)在表sc中修改c4课程的成绩,若成绩小于等于70分时提高5%,若成绩大于70分时提高4%,update scset score=score*1.05where c#='c4'and score<=70update scset score=score*1.04where c#='c4'and score>70(8)在表sc中,当某个成绩低于全部课程的平均成绩时,提高5%。
实验四 数据更新与数据完整性
《实验四数据更新与数据的完整性》实验说明一、适用专业和课程:计算机专业《数据库》实验学时:2二、实验目的:(1) 熟悉SQL Server 2005的交互式SQL工具;(2) 熟悉通过SQL对数据进行完整性控制;(3) 掌握用INSERT、UPDATE、DELETE语句进行数据更新操作;(4) 通过数据更新操作更好地理解数据库完整性。
三、实验内容:(1) 使用SQL对数据进行完整性控制(3类完整性、CHECK短语、CONSTRAIN子句);(2) 完成各类更新操作(插入数据,修改数据,删除数据);四、实验要求:(1) 熟练使用用INSERT、UPDATE、DELETE语句进行数据更新操作;(2) 用实验证实,当操作违反了完整性约束条件时,系统是如何处理的;(3) 保存上机过程中的所有SQL操作,SQL文件命名:姓名学号后四位-4.sql,如xukai3112-4.sql;(4) 记录所有的实验用例。
五、实验环境和仪器(软件、硬件):(1) 硬件环境:普通联网的PC机;(2) 操作系统:Windows 2000或者Windows XP;(3) 数据库管理系统:MS SQL Server 2005。
六、实验步骤(程序,流程等):(包含实验记录,提供的数据、图表等资料内容)(一)在实验二建立的学生课程数据库基础上,验证数据的完整性(在每个验证语句后面用注释语句(--)说明DBMS的处理方式)(1) 插入主码值相同以及主码值为空的元组,观察DBMS做出何种处理;(2) 针对被参照关系Student和Course,分别用数据更新语句删除某个元组以及修改某个元组的主码值,验证参照完整性,观察可能破坏参照完整性时DBMS 做出何种处理;(3) 针对参照关系SC,用数据更新语句插入某个元组以及修改某个元组的主码值,验证参照完整性,观察可能破坏参照完整性时DBMS做出何种处理。
(二)建立的SPJ数据库SPJ数据库包含S表、P表、J表和SPJ表,表结构如下:厂家S(SNO,SNAME,STATUS,CITY),其中STATUS(状态)为整型,其他均为字符型产品P(PNO,PNAME,COLOR,WEIGHT),其中WEIGHT(重量)为浮点型,其他均为字符型工程J(JNO,JNAME,CITY),其中各属性均为字符型供应SPJ(SNO,PNO,JNO,QTY),其中QTY(供应量)为整型,其他均为字符型(1) 用SQL语言建立SPJ数据库,数据库命名:SPJBASE-学号后四位及姓名,如SPJBASE-3112liyan;(2) 用SQL语言在SPJ数据库中建立S表、P表、J表和SPJ表,要求:✓定义S表、P表、J表和SPJ表时,除S表中的STATUS属性外,其余各属性均不为空;✓S表中的SNAME属性和P表中的PNAME属性取值均唯一;✓定义产品的颜色只允许取“Red”、“Yellow”、“Green”或“Blue”;✓定义厂家位于“London”时其STATUS(状态)均为20;✓定义S表、P表、J表和SPJ表上的主码和外码,以保证实体完整性和参照完整性。
实验四 SQL语言的数据更新和视图
实验四 SQL语言的数据更新和视图(设计型,2学时)一、实验目的与要求1.利用SQL语言提供的INSERT语句、UPDATE语句和DELETE语句对建立基本表STUDENT、COURSE和SC表进行插入、修改和删除操作;2.利用SQL语言提供的CREATE VIEW定义视图;利用DROP VIEW、SELECT和UPDATE 操作语句对所定义的视图进行删除、查询和修改操作;3.熟练掌握以上各种操作语句。
二、实验环境SQL SERVER2000三、实验预习与准备掌握以下操作语句的一般格式:1.INSERT INTO <表名>[(<属性列1>[,<属性列2>…]VALUES(<常量1>[,<常量2>…]或INSERT INTO<表名> [(<属性列1>[,<属性列2>…] 子查询2.UPDATE <表名>SET< 列名>=<表达式>[,<列名>=<表达式>]…[WHERE<条件>];3.DELETEFROM <表名>[WHERE<条件>];4. CREATE VIEW<视图名>[(<列名>[,<列名>]…)]AS <子查询> [WITH CHECK OPTION];5.DROP VIEW <视图名>[CASCADE];四、实验内容和步骤1.验证教材提供的操作语句;2.验证课堂教学中提供的操作语句;3.根据要求设计操作语句完成相应功能:(1)将一个新学生记录(学号:95020;姓名:陈冬;性别:男;所在系:IS;年龄:18岁)插入到Student表中。
(2)对每一个系,求学生的平均年龄,并把结果存入数据库,需创建表Dept_age (sdept,Avg_age)。
实验四 视图与数据控制实验
实验四视图与数据控制实验一、实验目的1、掌握SQL Server查询分析器的使用方法,加深对SQL查询语句的理解。
2、掌握用查询分析器和视图创建向导的方法创建视图。
3、学会使用SQL数据控制语句来进行授权控制和权限回收。
二、实验环境与实验准备工作实验环境:Microsoft Windows xp操作系统,Microsoft SQL Server 2000数据库管理系统标准版或企业版。
实验准备工作:在开始本实验之前,请回顾教科书的相关内容(如视图的定义与使用,数据访问授权与权限的回收。
三、实验内容基于实验一建立的“图书读者数据库”(Book_Reader_DB)和实验二输入的部分虚拟数据,在SQL Server 2000查询分析器的Transact-SQL语句输入区输入Transact-SQL语句,然后点击“查询”菜单中的“执行”菜单项(或用F5快捷键),执行输入区的Transact-SQL 语句。
具体实验内容如下:1、视图定义与查询实验①在“图书读者数据库”(Book_Reader_DB)中,先用视图创建向导的方法创建视图View1和View2。
其中View1包括书号、书名、定价、数量等属性。
View2包括读者号、读者姓名、单位、电话、书号、书名、借阅日期、应归还日期、实际还书日期和过期天数等属性,其条件是所有借书已过期的读者和借书情况(假定借阅期为60天);create view view1(bno,bname,bprice,bnum) as select bno,bname,bprice,bnum from book;create view view2(rno,rname,runitt,bno,lendingtime,breturn,rrealdate,rreturntime) asselect borrow.rno,rname,runit,borrow.bno,lendingtime,dateadd(mm,2,lendingtime) ,lendingtime,datediff(dd,breturn,dateadd(mm,2,lendingtime)) frombook,reader,borrow where book.bno=borrow.bno and borrow.rno=reader.rno;②根据上述定义的视图,在查询分析器中用语句完成如下查询:A:通过视图View1查询书库中藏书的情况;select bno,bname,bnum from view1;B:通过视图View2查询借书过期的读者和借书情况及罚款金额(假定超期罚款标准为1元/天);select rno ,rname,bno,breturn*1 from view2③在查询分析器中用SQL语句来创建视图View3和视图View4,视图View3的要求与View1相同,视图View4与视图View2的条件相同。
[小学]实验四数据更新、视图
实验四SQL Serve的数据更新、视图一、实验目的:1)掌握采用Transact-SQL实现嵌套查询。
2)掌握采用Transact-SQL实现数据更新。
3)掌握采用Transact-SQL实现视图的定义、删除、查询与更新。
二、实验内容(一)数据更新1)插入一个学生:张红,女,200215135,信息系,20岁2)插入一个选课录:200215135,1,成绩未定3)将计算机系所有学生的年龄加1岁4)删除所有200215130学生的选课记录5)删除所有姓张的同学的信息6)请自行设计案例对学生-课程数据库的数据更新,并观察是否有违反数据的完整性约束。
(二)视图1)创建一个学生成绩统计视图,包括学号,姓名,选课门数,平均分,最高分,最低分2)利用上题所建视图实现:(1)查询成绩高于自己平均成绩的选课记录(2)查询每个同学获得最高分的选课记录3)请为三建工程项目建立一个供应情况的视图,包括供应商代码(SNO)、零件代码(PNO)、供应数量(QTY)。
针对该视图完成下列查询:①找出三建工程项目使用的各种零件代码及其数量;②找出供应商S1的供应情况;三、实验要求(1)写出正确的Transact-SQL命令。
(2)无须记录正确的查询结果。
但要求记录实验过程中发生的有学习意义的错误及错误信息。
四、实验小结(一)数据更新1) 插入一个学生:张红,女,200215135,信息系,20岁insertinto student(sname,ssex,sno,sdept,sage)values('张红','女','200215135','IS','20');2) 插入一个选课录:200215135,1,成绩未定insertinto sc(sno,cno)values('200215135','1');3) 将计算机系所有学生的年龄加1岁select sno,sname,ssex,sage+1,sdeptfrom studentwhere sdept='CS';4) 删除所有200215130学生的选课记录deletefrom scwhere sno='200215130';5) 删除所有姓张的同学的信息deletefrom scwhere sc.sno in(select student.snofrom studentwhere sname like '张%')godeletefrom studentwhere sname like '张%'goselect * from studentselect * from sc6)请自行设计案例对学生-课程数据库的数据更新,并观察是否有违反数据的完整性约束。
实验四视图操作和数据控制
实验四:视图操作和数据控制
一、实验目的:熟练掌握用SQL语句实现视图操作和数据控制。
二、预习要求:实验前复习讲授过的有关视图操作和数据控制的知识,编写相应的SQL 语句。
三、实验内容:
(一)定义如下视图:
①查询北京的供应商的编号、名称和城市。
②查询S1供应商的所有供应明细。
③查询各工程名称使用的各种颜色零件的个数。
查询上面定义的视图。
①:
②:
③:
(二)数据控制:
首先创建用户:
①使用GRANT把对S表查询的权利授予WangLi。
②使用GRANT把对P表查询、插入、修改、删除的权利授予LiMing。
③使用REVOKE把LiMing对P表插入、删除的权利回收。
四、实验方法和步骤:
参照实验一中给出的使用Microsoft SQL Server企业管理器和SQL查询分析器的方法,将实验内容中所要求的查询项目依次用SQL语句实现,并记录下执行结果。
五、思考题:
实验内容中的哪些视图可以用来更新记录?
答:①查询北京的供应商的编号、名称和城市和②查询S1供应商的所有供应明细可以用来更新数据。
而③查询各工程名称使用的各种颜色零件的个数不可以用来更新数据,因为该视图来源于两个基本表而且包含有聚集函数。
六、心得体会
本次试验掌握了使用掌握用SQL语句实现视图操作和数据控制。
通过实践与理论相结合,更好的理解了课堂上所学的理论知识。
实验4 数据更新及创建视图
2
《数据库原理上机》实验报告
第3页2013年11月5日
4
《数据库原理上机》实验报告
第5页
2013年11月5日
6
《数据库原理上机》实验报告
第7页
2013年11月5日
8
《数据库原理上机》实验报告
要求:
1.报告格式和内容要求:
a. 内容和格式整齐。
大标题采用黑体四号字加粗,小标题采用小四号字加粗。
正
文采用五号宋体,单倍行距。
贴图时请剪裁到适当大小,要保证打印时可以看清,但也不要太大以免“越界”。
不要在报告中写与实验无关的话,内容要有条理、完整、并能突出重点,要将遇到的主要问题说明。
2.文件格式要求:将实验成果放入一个文件夹中,文件夹的内容包括:本实验报告、分离
后的数据库、如有查询代码(.sql文件)和其它文件也一并放入。
文件夹以“学号姓名班级_S4”为文件名。
注意:所有文件保存后关闭,然后打包成RAR文件,以免提交的内容丢失或打不开。
2周内完成。
可以在实验室直接提交或将文件包发到我邮箱。
3.主动查阅资料,坚持自己亲手完成实验,弄清每个步骤和相关原理。
第9页2013年11月5日。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
嘉应学院计算机学院一、实验目的通过实验掌握数据库更新的方法和完整性约束的概念以及视图建立和操作方法。
掌握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’的记录都删除了。
因为选择在sc表属性中设置了级联删除这个选项。
并且删除了 course 表和sc表之间的联系4. 将course表和sc表的课程号为2的都改为22,如何做?(提示:在Diagrams中编辑course表和 sc表之间的关系,选择cascade update related fields) 观察并记录结果。
建立course表和sc表的关系,并选择级联更新相关的字段执行update语句,并查看:5. 在SC表中,(1)将95002同学的成绩都减少10%执行操作前,sc表的内容如下:执行update操作后,如图:(2)课程号为3的改为33 ,都有什么结果?为什么?执行update操作后,结果如下:分析:UPDATE 语句与FOREIGN KEY 约束"fk_cno"冲突。
该冲突发生于数据库"school",表"dbo.Course", column 'Cno'。
语句已终止。
由于产生冲突,所以不允许执行该更新操作6.(1)在STUDENT表中插入一条新纪录:95006 李三男 21 IS执行insert操作:查看student表是否正确插入了相应的数据:(2)在SC表中插入一条新纪录:95008 3 80都有什么结果?为什么?如何完成上述操作?执行insert操作,结果如下:分析原因:原因在于修改sc表中的一个元组,修改后该元组的cno属性的值在course表中找不到一个元组,其cno属性的值与之相等,故拒绝执行此操作。
修改要完成上面的操作,先修改student表与sc表之间的关系:然后再执行插入,并查看sc表是否正确插入相应的信息:分析:在Diagrams中编辑student表和 sc表之间的关系,强制外键约束选择否(二)建立新用户和数据控制管理1. 企业管理器-->security-->logins建立两个新用户:用户名stu1,密码stu1和用户名stu2,密码stu2 default database 为school database access选择school2.企业管理器-->database-->school-->property观察结果3. SQL Query Analyzer-->用超级用户登录建立存储过程sp1建立存储过程sp24. 企业管理器-->database-->school-->stored procedure观察结果SQL Query Analyzer-->用超级用户登录,执行存储过程sp1, sp2 exec sp1exec sp2查看sp1 sp2存储过程:企业管理器-->database-->school-->property-->permission观察结果企业管理器-->database-->school-->student,course 和SC -->property-->permission观察结果5.检验一:(1)在命令行用stu1用户登录(2)在SQL Query Analyzer-->file-->connect以stu2用户登录用stu2登陆:点击确定,结果如下:可见无法登陆。
现在查看SQL server 的属性:把仅window改为 S QL Server和window(S):再次登陆。
结果如下:A.用SC表建立视图B.更新course表将CNO=1的CPNO改变为22 执行更新操作,并查看course表:C.更新course表将CNO=1的Credit改变为22 执行更新操作,并查看course表:分析原因:刚开始stu2无法登陆,是因为SQL Server的属性默认为仅window 进行身份验证,修改后,便可以登陆。
检验二:SQL Query Analyzer-->file-->connect以sa用户登录执行存储过程sp3(1)在命令行用stu1用户登录(2)SQL Query Analyzer-->file-->connect以stu2用户登录用select语句查看student,course和 sc三表有什么结果,为什么?分析原因:因为各个表的所有查询权限都授权给了stu2,故当用stu2查询各个表时,都能获得查询结果(三) 视图建立和操作1. 分别用student,course和 sc三表建立vstudent,vcourse和vsc三张视图A.在student,course和 sc三表中进行update, delete和insert 操作,观察vstudent,vcourse和 vsc三张视图的变化。
在进行update操作之前,vstudent的内容如下:执行 update student set sname='黄思' where sno='95002' 后的结果如下:执行 delete from student where sno='95001' 结果如下:执行insert into student values ('95008','李立','男',21,'CS') 后,Vstudent 的内容如下:对course和sc的操作与对student表的操作同理,即:当数据在更新规则范围内,表变化视图也变化。
B.在vstudent,vcourse和 vsc三张视图中进行update, delete和insert操作,观察student,course和 sc三张基表的变化。
执行update delete insert 操作前,student表的内容如下:执行update vstudent set sname='张翼' where sno='95002'后student表的内容如下:执行delete from student where sno='95008'后student表的内容如下:执行insert into vstudent values ('95005','李进','男',21,'CS')后,student 表的内容如下:2. 将成绩高于60的姓名、系名和成绩的结果建立视图V1然后对视图V1进行update, delete和insert操作,观察student,course和 sc三张基表的变化。
执行update v1 set grade=95,sname='何宇' where sname='张翼',结果如下:执行delete from v1 where sname='张翼',结果如下:执行insert into v1 values ('程生','CS''70'),结果如下:分析原因:当视图由两个表及两个以上的表导出的,则视图不允许更新,当视图在允许更新的前提下,视图的改变也将引起表的改变。
五、结论根据实验目的和实验内容,本次实验旨在掌握数据库更新的方法和完整性约束的概念以及视图建立和操作方法并掌握SQL SERVER的数据控制和安全性设计的基本方法, 存储过程的建立和使用方法。
每个操作都要考虑到很多条件约束,在我们对数据库进行修改前,应该要注意怎样运用这些操作。
避免引起错误的执行。