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

合集下载

数据库中数据的更新实验报告

数据库中数据的更新实验报告
insert into Student (sno,sname,ssex,sage,sdept)
values ('05','窦海娃','女',19,'cs');
(2)
insert into course
values ('01','数据库',4);
结果:1 row created.
以此类似:
insert into course
沈 阳 工 程 学 院
学 生 实 验 报 告
(课程名称:数据库系统原理)
实验题目:数据库中数据的更新
班级计B172学号2017534209姓名范蓉
日期2018.4.19地点F608指导教师于舜刘娜
一、实验目的
掌握SQL的数据更新功能,包括:插入数据、修改数据和删除数据。
二、实验环境
Oracle10g数据库系统。
set sage=20
where sno='01'
delete
from student
where sno='03';
(5)修改:update student
set sage=sage +1;
.sno);
五、成绩评定



及格
不及格
出勤
格式
内容
分析
总 评
指导教师:
年月日
insert into sc
values ('2011417101', '02',93);
insert into sc
values ('2011417101', '03',70);

实验三SQL查询与更新实验(SQL3学时)

实验三SQL查询与更新实验(SQL3学时)

实验三SQL查询与更新实验(SQL3学时)实验三 SQL查询与更新实验(SQL 3学时)§3.1实验目的与要求(1)熟悉SQL DML语言,能够完成基本的表操作;(2)掌握SELECT语句进行单表查询的方法;(3)掌握SELECT语句进行多表连接查询的方法;(4)了解嵌套查询的方法;(5)了解外连接查询的方法;(6)了解集合函数的使用方法;(7)了解表更新操作的使用方法。

§3.2 实验系统及软件要求:1、WindowsXP操作系统;2、SQL SERVER 2005中文版软件;§3.3 实验内容§3.3.1简单SELECT语句1. SELECT的语法格式SELECT 语句的基本语法格式如下:SELECT <字段列表>[INTO 新表名]FROM <表名/视图名列表>[WHERE 条件表达式][GROUP BY 列名列表] [HAVING 条件表达式][ORDER BY列名1[ASC|DESC],列名2 [ASC|DESC],...,列名n[ASC|DESC]][COMPUTE 行聚合函数名(统计表达式)[ ,…n] [BY 分类表达式[,…n]]]其中各子名说明如下:(1)字段列表用于指出要查询的字段,也就是查询结果中包含的字段的名称。

(2)INTO子句用于创建一个新表,并将查询结果保存到这个新表中。

(3)FROM子句用于指出所要进行查询的数据来源,即来源于哪些表或视图的名称。

(4)WHERE子句用于指出查询数据时要满足的检索条件。

(5)GROUP BY子句用于对查询结果分组。

(6)ORDER BY子句用于对查询结果排序。

SELECT语句的功能如下:从FROM列出的数据源表中,找出满足WHERE检索条件的记录,按SELECT子句的字段列表输出查询结果表,在查询结果表中可进行分组与排序。

说明:在SELECT语句中SELECT子句与FROM子句是不可少的,其余的是可选的。

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表增加如下记录:(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分。

数据更新与视图操作实验报告

数据更新与视图操作实验报告
from shop
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)删除多行数据
例:删除苏果商店的所有销售记录。

实验三 数据库中的数据查询及视图操作实验报告

实验三  数据库中的数据查询及视图操作实验报告

实验三数据库中的数据查询及视图操作实验报告实验三数据库中的数据查询及视图操作实验报告一、实验目的本实验的主要目的是熟悉数据库中的数据查询和视图操作。

通过本实验,我们可以掌握使用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语句后,我们可以得到每个班级的人数统计结果。

实验3SQL语言—更新操作、视图、索引等操作

实验3SQL语言—更新操作、视图、索引等操作

实验3SQL语⾔—更新操作、视图、索引等操作实验3 SQL语⾔—更新操作、视图、索引等操作实验⽬的要求熟悉数据库的数据更新操作,能够使⽤SQL语句对数据库进⾏数据的插⼊、修改、删除操作。

熟悉SQL语⾔有关视图的操作,能够熟练使⽤SQL语句来创建需要的视图,定义数据库外模式,并能使⽤所创建的视图实现数据管理。

掌握索引设计原则和技巧,能够创建合适的索引以提⾼数据库查询。

实验主要内容针对SQL Server数据库设计单元组插⼊、批量数据插⼊、修改数据和删除数据等SQL语句。

理解和掌握INSERT、UPDATE和DELETE语法结构的各个组成成分,结合嵌套SQL⼦查询,分别设计⼏种不同形式的插⼊、修改和删除数据的语句,并调试成功。

针对给定的数据库模式,以及相应的应⽤需求,创建视图、创建带WITH CHECK OPTION的视图,并验证视图WITH CHECK OPTION选项的有效性。

理解和掌握视图消解执⾏原理,掌握可更新视图和不可更新视图的区别针对给定的数据库模式和具体应⽤需求,创建唯⼀索引、函数索引、复合索引等;修改索引;删除索引。

设计相应的SQL查询验证索引有效性。

实验仪器设备学⽣每个⼀台PC已安装SQL Server环境实验记录# 数据更新操作单元组插⼊--向图书表中插⼊⼀条单元组数据('B6','信息论','28.2')INSERTINTO 图书(BNO,BNAME,PRICE)VALUES('B6','信息论','28.2');批量数据插⼊--⼦查询嵌套在INSERT语句中⽤以插⼊批量数据CREATE TABLE LNTE(LNO NCHAR(10) PRIMARY KEY,TEL INT); --创建⼀个新的LNAME-TEL表--从图书馆表中选择LNO和TEL两列数据批量插⼊新建表LNTE中INSERTINTO LNTESELECT LNO,TELFROM 图书馆修改数据UPDATE 图书SET BNAME=⼤学英语WHERE BNO='B5'; --将图书表中的操作系统改为⼤学英语--带⼦查询的修改语句可以实现批量修改数据UPDATE SCSET GRADE=0WHERE Sno IN(SELECT SnoFROM StudentWHERE Sdept='CS');删除数据--删除⼀个元组的值DELETEFROM 图书WHERE BNAME='系统分析与设计';--删除多个元组DELETFROM 图书 --这条语句将删除整个图书表--带⼦查询的删除语句DELETFROM 图书WHERE BNO IN(SELECT BNOFROM 图书发⾏WHERE QTY=10);# 视图创建视图CREAT VIEW IS_BKASSELECT BNO,BNAME,PRICEFROM 图书WHERE PRICE>10;带WITH CHECK OPTION的视图CREAT VIEW IS_BKASSELECT BNO,BNAME,PRICEFROM 图书WHERE PRICE>10;WITH CHECK OPTION;视图消解执⾏原理把对视图的查询转化为对基本表的查询称为视图的消解(View Resolution).SELECT S#,SA FROM IS_S WHERE SA <20消解为:SELECT S# ,SA FROM S WHERE SD='IS' AND SA 90SELECT S# ,SA FROM S WHERE SD='IS' AND SA 90消解为:对:SELECT S#, AVG(GR) FROM SC GROUP BY S# HAVING AVG(GR)>90可更新视图和不可更新视图的区别⼀般地⾏列⼦视图是可更新的。

SQL数据库实验报告 实验三

SQL数据库实验报告 实验三

实验3 SQL Server数据表的管理1.实验目的(1)掌握使用SQL Server管理平台和Transact-SQL语句CREA TE TABLE和ALTER TABLE创建和修改表的方法。

(2)掌握在SQL Server管理平台中对表进行插入、修改和删除数据操作的方法。

(3)掌握使用Transact-SQL语句对表进行插入、修改和删除数据操作的方法。

(4)了解SQL Server的常用数据类型。

2.实验内容及步骤(1)启动SQL Server管理平台,在对象资源管理器中展开studentsdb数据库文件夹。

(2)在studentsdb数据库中包含有数据表student_info、curriculum、grade,这些表的数据结构如图1-2至图1-4所示。

图1-2 学生基本情况表student_info图1-3 课程信息表curriculum图1-4 学生成绩表grade(3)在SQL Server管理平台中创建student_info、curriculum表。

(4)在SQL Server 管理平台中,将student_info 表的学号列设置为主键,非空。

(5)使用Transact-SQL语句CREA TE TABLE在studentsdb数据库中创建grade表。

(6)student_info、curriculum、grade表中的数据如图1-5至图1-7所示。

图1-5 student_info的数据图1-6 curriculum的数据图1-7 grade的数据(7)在SQL Server管理平台中为student_info、curriculum、grade表添加数据。

(8)使用Transact-SQL语句INSERT INTO...V ALUES向studentsdb数据库的grade表插入数据:学号为0004,课程编号为0001,分数为80。

(9)使用Transact-SQL语句ALTER TABLE修改curriculum表的“课程编号”列,使之为非空。

3.使用SQL语句进行数据更新操作

3.使用SQL语句进行数据更新操作

实验三使用SQL语句进行数据更新操作●目标✓完成本实验,将能够:使用SQL语句对数据表进行更新,完成数据的插入、更新以及删除操作。

●实验预估时间:40 min练习 1 使用SQL 语句更新数据表在本练习中,将使用SQL语句完成对数据表的更新操作,并使用查询语句检测更新后的结果。

实验步骤:1)启动SQL Server20052)登录数据库服务器3)完成数据库和数据表的构建工作:打开并运行在服务器上共享的数据库构建文件xsgl.sql文件,具体方法为:a)将服务器上共享的xsgl.sql文件复制到本地磁盘b)双击本地磁盘中的xsgl.sql文件,并在弹出的“连接服务器”对话框中点击“连接”按钮。

c)按键盘上的“F5”键运行xsgl.sql文件中的数据库和数据表的SQL构建语句。

4)使用Select语句检索xs表中的所有学生的详细信息。

5)使用Update语句将xs表中所有专业为“信息管理”的学生总学分增加5个。

6)使用Select语句再次对xs表中的所有学生的详细信息进行检索,检测数据是否按照要表更新。

7)使用Delete语句删除xs表中学号为“2006030101”的学生记录。

8)再次使用Select语句检测相应的学生记录是否被删除。

注:数据SQL语句格式:数据更新:UPDA TE <表名>SET <列名1>=<值1>[, <列名2>=<值2>, <>=<>, …. <列名N>=<值N>]WHERE <更新条件>数据查询:SELECT [ALL|DISTINCT] <目标列表达式> [,<目标列表达式>] …FROM <表名或视图名>[,<表名或视图名> ] …[ WHERE <条件表达式> ]练习 2 使用SQL 语句更新数据表在本练习中,将使用SQL语句完成对数据表查询操作,掌握查询语句的使用方法。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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表增加如下记录:(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. 我知道了视图不是一张真实的表格,是一个虚拟的存在形式。

2. 掌握了对视图的创建(create or replace ):当视图不存在时可使用create进行创建;而如果不确定视图是否已存在,但此时又需要建立一张此名称的视图时,可使用replace创建,如果视图名已存在也不会出现冲突,而是进行替换。

3. 在创建视图时如果使用了with check option 表示在视图上执行UPDATE INSERT或DELETES作时,要保证所修改的行满足视图定义中的谓词条件,即SELECT^询子句中的限定条件:如Where条件,这样可以确保数据修改后仍可通过视图看到修改的数据。

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 c . eno =sc . enoselect * from UV_SC--(2)利用UV_SC视图,查看平均成绩在分以上的学生姓名。

select sn amefrom UV_SCgroup by snamehaving avg ( grade )> 80--(3 )建立名为UV Course 的视图,该视图显示每门课的课程名和选修该课程的学生人数。

create view UV_Courseasselect cname , count (*) as '选修人数'from course c , scwhere c . eno =sc . enogroup by cnameselect * from UV_Course--(4 )修改视图UV_Course ,在视图中增加一列,显示选修该课程所有学生的平均成绩。

alter view UV_Courseasselect cname , count (*) as '选修人数',avg (grade ) as '平均成绩’from course c , scwhere c . eno =sc . enogroup by enameselect * from UV_Course-- (5 )建立名为UV_IS_Depart 的视图。

该视图可以用来查看“信息系”的学生的学号、姓名、年龄和系名。

并保证对该视图的修改满足系名为信息系的条件。

create view UV_IS_Departasselect sno , sname , sage , sdeptfrom student s where sdept =' 信息系' with check option select * from UV_IS_Depart-- (6 )建立名为UV_Student 的加密视图。

该视图可以用来查看每个学生选修的课程门数和平均成绩。

create viewUV_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 列select *from studentwhere sno ='9501 1 '--(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 STUD from studentwhere sage >19-- 法二select * into STUD from 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 ,null from coursewhere cname =' 操作系统' or cname =' 数据结构'select * from sc--(5 )把课程名为操作系统”的成绩从成绩表SC中删除。

(试用三种方式完成)-- 法一delete from scwhere cno in(select cno from course where cname =' 操作系统')-- 法二delete from sc where exists(select cno from course cwhere cname =' 操作系统' and c . cno =sc . cno )-- 法三-- (6 )将女生的成绩提高%。

(试用三种方式完成)-- 法一update scset grade = grade * 1.1where sno in(select sno from student where ssex =' 女')-- 法二update scset grade = grade * 1.1where exists(select sno from student swheressex =' 女' 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 =sc . cno )-- (7)如果学生“张三”的数据结构的成绩低于,则加上分。

相关文档
最新文档