SQL实验三--数据的更新操作和视图-实验报告
- 格式:doc
- 大小:2.60 MB
- 文档页数:19
实验三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的应用,熟练掌握数据插入、修改和删除的使用,为后继学习作准备。
二、实验属性验证性三、实验要求1.预习教材第三章,熟悉SQL语句。
2.熟悉SQL Server环境。
3.掌握建立索引的两种方法,即在基本表中建立和用命令方式建立。
4.掌握删除索引的方法。
5.掌握sql视图建立、修改和删除;6.掌握sql视图查询。
7.掌握sql数据插入、修改和删除语句的一般格式及使用方法。
四、实验原理SQL语言应用。
五、实验步骤:1 建立索引例3.1为学生选课数据库中的Students,Courses,Reports三个表建立索引。
其中Students 表按Sno(学号)升序建唯一索引,Courses表按Cno(课程号)升序建唯一索引,Reports表按Sno(学号)升序和Cno(课程号)号降序建唯一索引。
命令:CREA TE UNIQUE INDEX Stusno ON Student(Sno);CREA TE UNIQUE INDEX Coucno ON Course(Cno);CREA TE UNIQUE INDEX SCno ON SC(SnoASC,Cno DESC);例 3.2 在基本表Students的Sname(姓名)和Sno(学号)列上建立一个聚簇索引,而且Students中的物理记录将按照Sname值和Sno值的升序存放。
命令:CREA TE CLUSTERED INDEX Stu_snamesno ON Student(Sname,Sno);2删除索引例3.3删除基本表Reports上的索引。
命令:DROP INDEX SC.SCno3 建立视图例3.4建立数学系学生的视图,并要求进行修改和插入操作时仍需保证该视图只有数学系的学生,视图的属性名为Sno,Sname,Sage,Sdept。
命令:CREA TE VIEW Smath AS SELECT Sno,Sname,Sage,Sdept FROM Student WHERE Sdept='数学'例3.5建立学生的学号(Sno)、姓名(Sname)、选修课程名(Cname)及成绩(Grade)的视图。
实验三数据更新与视图一、实验目的1、掌握数据更新语句的使用;2、掌握视图操作的基本方法和应用,理解基于视图的查询和数据更新操作的过程。
二、实验内容1.在实验一创建的数据库STUDENT中使用SQL语句完成以下操作(4)将(101131,路前元,男,1993-11-8,网络工程)插入学生关系。
SQl语句:insert into Svalues('101131','路前元','男','1993-11-8','网络工程',null)select *from S(6)创建视图JSJ_VIEW,包括计算机专业学生的学号,姓名,其选修的课程名及成绩属性列。
SQL语句:create view JSJ_VIEWasselect S.Sno,Sname,Cname,Gradefrom S,C,SCwhere S.Sno=SC.Sno and Major='计算机'select *from JSJ_VIEW(7)创建查询每个学生的修课学分的视图XF_VIEW,要求列出学生学号及总学分。
SQL语句:create view XF_VIEWasselect Sno,SUM(Credit)from S,Cgroup by Snoselect *from XF_VIEW2.在实验二创建的Project数据库中使用SQL语句完成以下操作:(1)现有一供应商,代码为S9、姓名为英特尔、所在城市西安,供应情况如下:供应零件P5给工程J7数量为600,供应零件P4给工程J4数量为500,请将此供应商的信息和供应信息插入数据库.SQl语句:insertinto s (sno, Sname ,city)values('s9','英特尔','西安')insertinto SPJ(sno,Pno,Jno,QTY) values('s9','p5','j7',600)insertinto SPJ(sno,Pno,Jno,QTY) values('s9','p4','j4',500)(7)创建零件名为螺丝刀的供应情况的视图P_ls,包括供应商名(Sname),零件名(Pname),零件重量(Weight),工程项目代码(Jno),供应数量(QTY)。
实验三数据的更新操作和视图本实验需要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分。
湖南第一师范学院信息科学与工程系实验报告课程名称:数据库技术与应用成绩评定:实验项目名称:实验三:数据更新指导教师:洪伟学生姓名:沈丽桃学号:10403080118 专业班级: 10教育1班实验项目类型:设计实验地点:科B201 实验时间:2012年 5 月 8 日一、实验目的与要求:1、掌握向表中插入数据;2、掌握修改表中的数据;3、掌握删除表中的数据;4、掌握创建视图、删除视图、查询视图与更新视图。
二、实验环境:(硬件环境、软件环境)1.硬件环境:奔ⅣPC。
2.软件环境:Windows2000 操作系统,SQL Server 2000。
三、实验内容:(原理、操作步骤、程序代码等)任务:对上次实验所建立的SC数据库,完成以下任务:1、将书上所列例题全部验证一遍;P115-1242、在SC数据库上完成以下操作:1)求每一个学生的平均成绩,并把结果存入数据库中;2)将所有女生的数据库成绩置0;3)删除20岁以上学生的数据结构的选课记录;4)创建一个课程及其平均成绩的视图;5)删除上题中创建的视图。
6)建立男学生的视图schoolboy,属性包括学号、姓名和年龄。
7)在视图schoolboy中查询年龄为19的学生学号与姓名。
8)将学号为002的年龄改为21。
9)向男学生视图schoolboy中插入一个新的男生记录,其中学号为S6,姓名为MING,年龄为20。
10) 删除视图schoolboy中学号为003的记录。
11) 建立女学生的视图,属性包括学号、姓名、选修课程名和成绩。
12) 在女学生视图中查询平均成绩大于80分的学生学号与姓名。
13)删除女学生视图。
具体操作步骤及程序代码为:1.create table sno_grade(sno char(10)avg_grade smallint);第2 行: 'avg_grade' 附近有语法错误。
(列与列之间应该用逗号格开)修改为:create table sno_grade(sno char(10),avg_grade smallint);Insertinto sno_grade(sno,avg_grade)select sno,avg(grade)from scgroup by sno;2.update scset grade=0where sno in(select snofrom swhere s.ssex='女' and cno in(select cnofrom cwhere ame='数据库'));3. deletefrom scwhere sno in(select snofrom swhere sc.sno=s.sno and s.sage>20 and cno in(select cno from cwhere o=o and ame='数据结构'));4. create view c_avggradeasselect ame,avg(grade) avg_gradefrom c,scwhere o=ogroup by ame5. drop view c_avggrade6. create view schoolboyasselect sno,sname,sagefrom swhere ssex='男'7. select schoolboy.sno,snamefrom schoolboywhere schoolboy.sage='19'8. update schoolboySet sage=’21’where sn=’002’9. insertinto schoolboyvalues('S6','MING','20');10. deletefrom schoolboywhere sno='003';11. create view schoolgirlasselect s.sno,s.sname,ame,sc.gradefrom s,c,scwhere s.sno=sc.sno and o=o and s.ssex='女'12. select schoolgirl.sno,sname,avg(grade)from schoolgirlgroup by schoolgirl.sno,snamehaving avg(grade)>80;13. drop viw schoolgirl四、实验体会(实验中碰到的问题及解决方法等)在试验验证过程中,发现教材P116例4有错误,列名Sdept与Avg_age之间少了逗号。
实验三数据库中的数据查询及视图操作实验报告实验三数据库中的数据查询及视图操作实验报告一、实验目的本实验的主要目的是熟悉数据库中的数据查询和视图操作。
通过本实验,我们可以掌握使用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语⾔—更新操作、视图、索引等操作实验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的数据查询1、实验目的熟悉SQL语句的数据查询语言,能够SQL语句对数据库进行单表查询、连接查询、嵌套查询、集合查询和统计查询。
2、实验内容实验内容主要是对数据库进行查询操作,包括如下四类查询方式:(1)单表查询●查询的目标表达式为所有列、指定的列或指定的列的运算三种不同。
●使用DISTINCT保留字消除重复行。
●对查询结果排序和分组.●集合分组使用集函数进行各项统计。
(2)连接查询●笛卡儿连接和等值连接。
●自连接。
●外连接●复合条件连接.●多表连接。
(3)嵌套查询●通过实验验证对子查询的两个限制条件。
●体会相关子查询和不相关子查询的不同.●考察四类谓词的用法,包括:第一类,IN、NOT IN;第二类,带有比较运算符的子查询;第三类,SOME、ANY或ALL谓词的子查询,查询最大值和最小值;第四类,带有EXISTS谓词的子查询,实现“所有”等情况(如王宏的“所有"课程,“所有”女生选修的课程)(4)集合运算●使用保留字UNION进行集合或运算。
●采用逻辑运算符AND或OR来实现集合交和减运算。
3、实验步骤以University_Mis数据库为例,该数据库中有四张如实验一,其中Score是每门课的考试成绩,Scredit是学生所有考试合格课程所获得的积分总数,Ccredit每门课程的学分数。
在数据库中,存在这样的联系:学生可以选择课程,一个课程对应一个教师。
在表Reports 中保存学生的选课记录和考试成绩。
请先输入如下元组,再对数据库进行有关的查询操作:图1。
1、Students表图1。
2、Teachers表图1.3、Courses表图1.4、Reports表(1)查询性别为“男”的所有学生的名称并按学号升序排列.(2)查询学生的选课成绩合格的课程成绩,并把成绩换算为积分。
积分的计算公式为:[1+(考试成绩-60)*0。
1]*Ccredit。
考试成绩>=60。
(3)查询学分是3或4的课程的名称。
仲恺农业工程学院实验报告纸信息科学与技术学院网络工程专业113 班组数据库原理及应用课实验三数据更新与视图一.实验目的1、掌握应用SQL进行数据更新的方法;2、掌握视图的创建与更新方法。
二.实验内容首先恢复数据库LibraryLib然后完成如下内容:第一部分:实验2.2 数据修改1.使用SQL语句向“用户信息表Users”中插入元组(用户标识:LiS;用户权限:1;密码:2;用户名称:李生;性别:男(0);部门:计算系;已借图书:0)。
insertintousers(userid,userpower,userpassword,username,usersex,userdepart,userborrowedbook s)values('LiS',1,2,'李生',0,'计算系',0);问:本题可以省略into子句中的属性名吗?如果要省略,需要注意什么?可以省略。
应按表中的属性列顺序输入的属性列的信息insertinto usersvalues('LiS',1,2,'李生',0,'计算系','','','',0);2.向Publish(出版社信息) 表插入一条新的记录,在该记录中,出版社名为:国防工业出版社,地址为:北京市海淀大街籍海楼,出版社email为:gfgypublish@16。
insertinto publish(publishid,publishname,publishaddress,publishemail)values('','国防工业出版社','北京市海淀大街籍海楼','gfgypublish@');3.对每个出版社,求出所购图书总数和图书总价格,并把结果存入新建表“图书统计Temp_CNTBK”表中。
实验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表的“课程编号”列,使之为非空。
实验三更新数据库、视图及数据库完整性一、实验目的熟悉通过SQL语句更新数据库、创建视图以及操作视图的基本使用方法,熟悉DBMS系统关于数据库完整性的约束限制。
二、实验内容和要求1、熟练update,delete,insert语句进行更新数据库操作2、创建视图以及操作视图的基本使用方法,3、通过实验,了解并掌握实体完整性、参照完整性的定义、违约处理。
练习使用触发器确保数据完整性。
三、实验主要仪器设备和材料1.计算机及操作系统:PC机,Windows 2000/xp;2.数据库管理系统:SQL sever 2000/2005;四、实验方法、步骤及结果测试实验题目:题目1、在表S中插入学生学号009,姓名:麦兜,性别男,1984年4月1日出生,网络工程专业,CS系,籍贯:北京。
题目2、把王涛同学的选课信息全部删掉。
查询每个学生选课信息,包括学号,姓名,选课课号,成绩实现代码及查询sc表的结果截图:Delete from Sc where Sno in(Select Sno from S where Sname=’王涛’)Select Sc.Sno ,Sname,Cno,Grade from Sc,S where Sc.Sno=S.Sno题目3、将选修数据库不及格的成绩全部置空。
Update Sc set Grade=null where Grade<60 and Cno in( Select Cno from C where Cname=‘数据库’)实现代码及查询结果截图:题目4、①查找IS系选修数据库的学生学号,姓名,课程号,成绩。
给出截图Select S.Sno,S.Sname,Cno,Grade from S,Sc where S.Sdept='IS'and Cno in( Select Cno from C where Cname='数据库')and S.Sno=Sc.Sno②把IS系同学选修DB的成绩提高10分。
实验3 SQL的数据更新、SQL的视图学院名称:管理学院姓名:XXX、学号:XXXXXXXX(8位)专业:保险工程班级:2011保险-1、2班实验项目:实验三:SQL的数据更新、SQL的视图课程名称:数据库原理与应用 B课程代码:0960270时间:2015年6月25日星期四 12:20—13:40实验地点:主校区-12-406实验室实验内容提要:1.掌握SQL数据插入、修改和删除语句的一般格式2.掌握SQL数据插入、修改和删除的使用方法3.掌握SQL视图的建立、修改和删除的使用方法4.了解数据控制及嵌入式SQL语句5.实验操作要点:用Update语句修改基本表中的数据,用Insert语句向基本表中批量添加数据6.注意事项:注意对视图的查询如何转化为对基本表的查询,每个部分至少写两个语句,一个更新一个记录,另一个是更新多个记录,创建视图,查询试图,更新视图。
一、insert语句1. 将一个新学生记录(学号:200215128;姓名:陈冬;性别:男;所在系:IS;年龄:18岁)插入到Student表中。
USE 余晨晨20142820insertinto Student(Sno,Sname,Ssex,Sdept,sage)values('200215128','陈冬','男',' IS ',18);2. 将学生张成民的信息(学号:200215126;姓名:张成民;性别:男;年龄:18岁;所在系:CS)插入到Student表中。
USE 余晨晨20142820insertinto Studentvalues(‘200215128’,’张成民’,’男’,’CS’,’18);3. 插入一条选课记录( '200215128','1 ')。
USE 余晨晨20142820insertinto SC(Sno,Cno)values(‘200215128’,’1’)4. 对每一个系,求学生的平均年龄,并把结果存入数据库。
实验报告【实验名称】SQL语言——更新操作、视图、索引等操作姓名:学号:班级:日期:11月9日【实验目的】1.熟悉数据库的数据更新操作,能够使用SQL语句对数据库进行数据的插入、修改、删除操作。
2.熟悉SQL语言有关视图的操作,能够熟练使用SQL语句来创建需要的视图,定义数据库外模式,并能使用所创建的视图实现数据管理。
3.掌握索引设计原则和技巧,能够创建合适的索引以提高数据库查询。
【实验环境】SQL SERVER 2008【实验内容】1.针对SQL Server数据库设计单元组插入、批量数据插入、修改数据和删除数据等SQL 语句。
理解和掌握INSERT、UPDATE和DELETE语法结构的各个组成成分,结合嵌套SQL子查询,分别设计几种不同形式的插入、修改和删除数据的语句,并调试成功。
2.针对给定的数据库模式,以及相应的应用需求,创建视图、创建带WITH CHECK OPTION 的视图,并验证视图WITH CHECK OPTION选项的有效性。
理解和掌握视图消解执行原理,掌握可更新视图和不可更新视图的区别3.针对给定的数据库模式和具体应用需求,创建唯一索引、函数索引、复合索引等;修改索引;删除索引。
设计相应的SQL查询验证索引有效性。
【实验代码】--建立信息系学生的视图,要求进行修改和插入操作时仍需保证该视图只有信息系的学生CREATE VIEW IS_StudentASSELECT Sno,Sname,SageFROM StudentWHERE Sdept='IS'WITH CHECK OPTION;--建立信息系选修了1号课程的学生的视图(包括学号、姓名、成绩)CREATE VIEW IS_S1(Sno,Sname,Grade)ASSELECT Student.Sno,Sname,GradeFROM Student,SCWHERE Sdept='IS'ANDStudent.Sno=SC.Sno ANDo='1';--定义一个反映一个学生出生年份的视图CREATE VIEW BT_S(Sno,Sname,Sbirth)ASSELECT Sno,Sname,2014-SageFROM Student--将学生的学号及平均成绩定义为一个视图CREATE VIEW S_G(Sno,Gavg)ASSELECT Sno,AVG(Grade)FROM SCGROUP BY Sno;--在信息系学生的视图中摘除年龄小于20岁的学生SELECT Sno,SageFROM IS_StudentWHERE Sage<20;--在S_G视图中查询平均成绩在90分以上的学生学号和平均成绩SELECT *FROM S_GWHERE Gavg>90;--将信息系学生视图IS_Student中学号为“201215122”的学生姓名改为“”“刘辰”UPDATE IS_StudentSET Sname='刘辰'WHERE Sno='201215122';--删除信息系学生视图IS_Student中学号为“201215129”的记录DELETEFROM IS_StudentWHERE Sno='201215129'【实验结果】BT_S视图IS_Student视图S_G视图结果【实验心得】通过此次实验,理解和掌握了视图消解执行原理,掌握可更新视图和不可更新视图的区别,也熟悉了如何利用SQL语句新建、查询、更新视图等相关的操作,因而也更为清晰的了解了视图的几大优点:(1)视图能够简化用户操作(2)视图使用户能以多种角度看待同一数据(3)视图对重构数据库提供了一定程度的逻辑独立性(4)视图能够对机密数据提供安全保护(5)适当利用视图可以更清晰地表达查询。
1.报告格式和内容要求:
a. 内容和格式整齐。
大标题采用黑体四号字加粗,小标题采用小四号字加粗。
正
文采用五号宋体,单倍行距。
b. 贴图时请剪裁到适当大小,要保证打印时可以看清,但也不要太大以免“越界”。
c. 不要在报告中写与实验无关的话,内容要有条理、完整、并能突出重点,要将
遇到的主要问题说明。
2.文件格式要求:
a. 将实验成果放入一个文件夹中,文件夹的内容包括:本实验报告、分离后的数
据库、如有查询代码(.sql文件)和其它文件也一并放入。
b. 文件夹以“学号姓名_S5”为文件名。
其中,S3表示这是实验3的报告,S大写,
以后的实验报告以类似方法编号顺延,注意:你的学号放在姓名前。
c. 注意:所有文件保存后关闭,然后再打包成RAR文件,以免提交的内容丢失或
打不开。
3.提交方式和时间:一周内完成。
可以将文件包发到我邮箱*******5@。
4.主动查阅资料,坚持自己亲手完成实验,弄清每个步骤和相关原理。
实验3SQL语句实现数据更新操作和简单查询桂林电子科技大学数学与计算科学学院实验报告实验室: 06406 实验日期:2012 年 11 月 9 日院(系)数学与计算科学年级、专业、班110071 姓名成绩课程名称数据库原理A实验实验项目名称SQL语句实现数据更新操作和简单查询指导教师毛睿一,实验目的1.学会使用SQL语句实现数据插入、修改和删除操作;2.掌握SELECT语句的基本语法;3.掌握表的数据简单查询、数据排序;4.掌握表的连接查询的表示;5.掌握等值连接与非等值连接、自身连接、外连接以及复合条件连接操作。
二,实验原理SQL语句实现数据更新操作和简单查询;用SQL语句实现数据插入、修改和删除操作;表的数据简单查询、数据排序;表的连接查询的表示三,使用仪器,材料仪器:电脑、SQL_Server_2000软件材料:《数据库系统概论》—<关系数据库标准语言SQL>四,实验内容与步骤1、在企业管理器中对表进行插入、修改和删除数据的操作(复习)2、使用T-SQL语句对表进行插入、修改和删除数据的操作(1)使用T-SQL命令更新数据库student000中的表数据(2)使用T-SQL命令修改表中的某个记录的字段值(3)使用T-SQL语句修改表student中所有记录的值(4)使用delete语句删除表中的记录(5)违反约束条件,观察出现的情况3、简单的查询分析五,实验过程原始记录(数据,图表,计算等)1.2删除表student的第4行:删除sc表的第2行:删除表course的第7行记录:将表student中95002的年龄改为22:2.1分别向student000数据库的student、course和sc表中插入一行记录2.2使用T-SQL命令修改表中的某个记录的字段值2.3使用T-SQL 语句修改表student中所有记录的值2.4使用delete语句删除表中的记录2.5违反约束条件,观察出现的情况删除student表中学号为95001的学生记录3.1查询全体学生的学号和姓名查询全体学生的详细记录查询全体学生的姓名、出生年份和所在系查询选修了课程的学生姓名和相应课号查询数学系全体学生的姓名查询考试成绩不及格的学生姓名查询年龄在20~23岁(包括20和23岁)之间的学生姓名、年龄和所在系;查询年龄不在20~23岁之间的学生姓名、年龄和所在系查询指定的两个系的学生姓名和性别、所在系查询都不是指定的两个系的学生姓名和性别、所在系查询缺少成绩的学生的学号和课程号;查询计算机系年龄在20岁以下的学生姓名查询每个学生及其选课课程的情况自然连接学生的学号、姓名、选课的课程名及成绩选修了1号课程且成绩为90分以上的学生学号、姓名和成绩;查询每一门课的间接选修课(选修课的选修课)六,实验结果分析或总结。
sql数据更新实验报告SQL 数据更新实验报告一、实验目的本次实验的主要目的是深入了解和掌握 SQL 语言中数据更新的操作方法,包括插入(INSERT)、更新(UPDATE)和删除(DELETE)数据,通过实际操作和分析,提高对数据库数据管理的能力。
二、实验环境1、操作系统:Windows 102、数据库管理系统:MySQL 803、开发工具:Navicat Premium 12三、实验准备1、首先,创建了一个名为“students”的数据库表,用于存储学生的相关信息。
表结构如下:|字段名|数据类型|约束|||||| id | INT(11) | PRIMARY KEY AUTO_INCREMENT || name | VARCHAR(50) | NOT NULL || age | INT(11) | NOT NULL || gender | ENUM('男','女')| NOT NULL |2、向“students”表中插入了一些初始数据,以便进行后续的数据更新操作。
四、实验内容及步骤(一)插入数据(INSERT)1、使用以下语句向“students”表中插入一条新的学生记录:```sqlINSERT INTO students (name, age, gender)VALUES ('张三', 20, '男');```2、验证插入结果:通过查询语句“SELECT FROM students;”查看新插入的数据是否成功添加到表中。
(二)更新数据(UPDATE)1、将“张三”的年龄修改为 21 岁,使用以下语句:```sqlUPDATE studentsSET age = 21WHERE name ='张三';```2、验证更新结果:再次执行查询语句查看“张三”的年龄是否已更新。
(三)删除数据(DELETE)1、删除“张三”的记录,使用以下语句:```sqlDELETE FROM studentsWHERE name ='张三';```2、验证删除结果:执行查询语句确认“张三”的记录已从表中删除。
《数据库系统原理》实验三数据更新、视图、权限管理实验3.1 数据更新1 实验内容(1) 使用INSERT INTO语句插入数据,包括插入一个元组或将子查询的结果插入到数据库中两种方式。
(2) 使用SELECT INTO语句,产生一个新表并插入数据。
(3) 使用UPDATE语句可以修改制定表中满足WHERE子句条件的元组,有三种修改的方式:修改某个元组的值;修改多个元组的值;带子查询的修改语句。
(4) 使用DELETE语句删除数据:删除某一个元组的值;删除多个元组的值;带子查询的删除语句。
2 实验步骤在数据库School上按下列要求进行数据更新可在SQL代码前加下面两句SQL语句,用于确保当前使用的是School数据库Use Schoolgo(1)使用SQL语句向STUDENTS表中插入元组(编号:12345678 名字:LiMing EMAIL:LM@年级:2002)。
insert into STUDENTS(sid,sname,email,grade)values('12345678','LiMing','LM@',2002);select*from STUDENTS;(2)对每个课程,求学生的选课人数和学生的最高成绩,并把结果存入数据库。
使用SELECTINTO和INSERT INTO两种方法实现。
create table SnumanMscore(cid char(10),num int,maxscore int);insert into SnumanMscore(cid,num,maxscore)select cid,COUNT(*),MAX(score)from CHOICES group by cid;select*from SnumanMscore;select cid,COUNT(*)as num,MAX(score)as maxscore into SnumandMscore2 from CHOICES group by cid;select*from SnumandMscore2;(3)在STUDENTS表中使用SQL语句将姓名为LiMing.的学生的EMAIL改为LM@。
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表增加如下记录:Sno Sname Ssex Sage Saddress Sdept95011 王一鸣男20 福州市计算机系(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.我知道了视图不是一张真实的表格,是一个虚拟的存在形式。
2.掌握了对视图的创建(create or replace):当视图不存在时可使用create进行创建;而如果不确定视图是否已存在,但此时又需要建立一张此名称的视图时,可使用replace创建,如果视图名已存在也不会出现冲突,而是进行替换。
3.在创建视图时如果使用了with check option表示在视图上执行UPDATE INSERT或DELETE操作时,要保证所修改的行满足视图定义中的谓词条件,即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 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--(4)修改视图UV_Course,在视图中增加一列,显示选修该课程所有学生的平均成绩。
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列select*from 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 cnofrom course cwhere 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 coursewhere cname='数据结构'))--查看结果select sname,cname,gradefrom student s,course c,scwhere s.sno=sc.sno and o=o and sname='张三'and cname='数据结构'--(8)将成绩最低的学生的成绩加上分。