数据库第四次试验

原创 2018年04月17日 17:34:22

实验四 SQL Serve的数据更新、视图操作

一、实验目的:

1. 掌握采用Transact-SQL实现数据更新。

2. 掌握采用Transact-SQL实现视图的定义、删除、查询与更新。

二、实验内容

按照学生课程数据库studb和SPJ数据库完成以下操作:

(一)数据更新 

1)  插入一个学生:张红,女,200215135,信息系,20岁;

2)  插入一个选课录:200215135,1,成绩未定;

3)  将计算机系所有学生的年龄加1岁;

4)  添加一条选课记录,信息为:张红选修了数据库课程,成绩89;

5)  删除所有200215130学生的选课记录;

6)  删除所有姓张的同学的信息;

7)  请自行设计案例对学生-课程数据库的数据更新,并观察是否有违反数据的完整性约束。

(二)视图

1)创建一个学生成绩统计视图,包括学号,姓名,选课门数,平均分,最高分,最低分;

2)利用上题所建视图实现:

①查询成绩高于自己平均成绩的选课记录;

②查询每个同学获得最高分的选课记录;

3)请为三建工程项目建立一个供应情况的视图,包括供应商(SNAME)、零件(PNAME)、供应数量(QTY)。针对该视图完成下列查询:

①找出三建工程项目使用的各种零件及其数量;

②找出供应商东方红的供应情况;

③将东方红供应的螺丝刀数量增加100。

三、实验要求

1.写出正确的Transact-SQL命令。

2.无须记录正确的查询结果。但要求记录实验过程中发生的有学习意义的错误及错误信息。

3.写好实验小结


create database Studata
ON(
	NAME=Studat,
	FILENAME='D:\project\Studat.mdf',
	SIZE=5mb,
	FILEGROWTH=2MB
),
(
	NAME='Stulog',
	FILENAME='D:\project\Stulog.ldf',
	SIZE=5MB,
	MAXSIZE=10MB,
	FILEGROWTH=10MB
)
GO

use Studata;

create table s(
	class char(5),
	Sno char(2),
	name char(10)unique,
	Sex char(2),
	Age INT,
	PRIMARY KEY(class,Sno),
)

insert into s(class,Sno,name,Sex,Age)
			values('95031','25','李明','男',21)

insert into s(class,Sno,name,Sex,Age)
			values('95101','10','王丽','女',20)

insert into s(class,Sno,name)
			values('95031','30','郑和')

alter table s
alter column Age SMALLINT;

alter table s
ADD comedate datetime ;

alter table s
Drop CONSTRAINT PK__s__7C8480AE;

create clustered INDEX inxage
ON s(age desc)

drop index s.inxage;

drop table s;



create table Student(
	Sno char(9)PRIMARY KEY,
	Sname char(20) unique,
	Ssex char(2),
	Sage SMALLINT,
	Sdept char(20)
);

create table Course(
	Cno char(4)PRIMARY KEY,
	Cname char(40) NOT NUll,
	Cpno char(4),
	Ccredit SMALLINT,
	FOREIGN KEY(Cpno) REFERENCES Course(Cno)
);

create table SC
(
	Sno char(9),
	Cno char(4),
	Grade SMALLINT,
	PRIMARY KEY(Sno,Cno),
	FOREIGN KEY (Sno) REFERENCES Student(Sno),
	FOREIGN KEY (Cno) REFERENCES Course(Cno),
);

/*Student表*/
insert into Student(Sno,Sname,Ssex,Sage,Sdept)
			Values('201215121','李勇','男',20,'CS')
			
insert into Student(Sno,Sname,Ssex,Sage,Sdept)
			Values('201215122','刘晨','女',19,'CS')

insert into Student(Sno,Sname,Ssex,Sage,Sdept)
			Values('201215123','王敏','女',18,'MA')

insert into Student(Sno,Sname,Ssex,Sage,Sdept)
			Values('201215125','张立','男',19,'IS')

/* Course表*/	
insert into Course(Cno,Cname,Ccredit)
			Values('6','数据处理',2)

insert into Course(Cno,Cname,Ccredit)
			Values('2','数学',2)

insert into Course(Cno,Cname,Cpno,Ccredit)
			Values('7','PASCAL语言','6',4)

insert into Course(Cno,Cname,Cpno,Ccredit)
			Values('5','数据结构','7',4)

insert into Course(Cno,Cname,Cpno,Ccredit)
			Values('4','操作系统','6',3)

insert into Course(Cno,Cname,Cpno,Ccredit)
			Values('1','数据库','5',4)

insert into Course(Cno,Cname,Cpno,Ccredit)
			Values('3','信息系统','1',4)	
			
/*SC表*/
insert into SC(Sno,Cno,Grade)
			Values('201215121','1',92)

insert into SC(Sno,Cno,Grade)
			Values('201215121','2',85)

insert into SC(Sno,Cno,Grade)
			Values('201215121','3',88)

insert into SC(Sno,Cno,Grade)
			Values('201215122','2',90)

insert into SC(Sno,Cno,Grade)
			Values('201215122','3',80)

select * from Student
select * from SC
select * from Course
/*(1)插入一个学生:张红,女,200215135,信息系,20岁;*/
insert into Student(Sno,Sname,Ssex,Sage,Sdept)Values('200215135','张红','女',20,'IS')
/*(2)插入一个选课录:200215135,1,成绩未定;*/
insert into SC(Sno,Cno,Grade)Values('200215135','1',null)
/*(3)将计算机系所有学生的年龄加1岁;*/
update student set Sage=Sage+1 where Sdept='CS'
/*(4)添加一条选课记录,信息为:张红选修了数据库课程,成绩89;*/
update sc set grade=89 where sno in (select sno from student where sname ='张红')
/*(5)删除所有200215130学生的选课记录;*/
delete from Sc where sno = '200215130'
/*(6)删除所有姓张的同学的信息;*/
delete from sc where sno in(select sno from student where sname like '张%')
delete from student where sname like '张%'
/*(7)请自行设计案例对学生-课程数据库的数据更新,并观察是否有违反数据的完整性约束。*/

/*创建一个学生成绩统计视图,包括学号,姓名,选课门数,平均分,最高分,最低分;*/
create view 学生成绩统计(学号,姓名,选课门数,平均分,最高分,最低分)
AS select sc.sno,sname,count(cno),avg(grade),max(grade),min(grade) from  student,sc
where student.sno = sc.sno group by sc.sno,student.sname

/*利用上题所建视图实现:*/
/*①查询成绩高于自己平均成绩的选课记录;*/
select Sc.Sno,Cno,Grade from Sc,学生成绩统计 where Sc.Sno = 学生成绩统计.学号 and Grade>平均分
/*②查询每个同学获得最高分的选课记录;*/
select Sc.Sno,Cno,Grade from Sc,学生成绩统计 where Sc.Sno = 学生成绩统计.学号 and Grade=最高分;


操作系统实验完整版(川大计科)

  • 2010年06月17日 04:58
  • 1.63MB
  • 下载

第四次试验

1.查看用户和组文件: 进入/etc目录,#cd /etc,#ls显示出/etc中的文件 #cat passwd执行结果显示出用户帐号文件 # cat shadow,显示用户口令文件 # ...
  • T108TLH
  • T108TLH
  • 2017-11-20 17:46:07
  • 31

《数据库系统概论》实验报告—数据查询

  • 2010年06月05日 18:05
  • 90KB
  • 下载

区块链将成为引导第四次工业革命的重要力量

第四次工业革命正在深刻地改变着我们周围的所有事物,甚至是我们的生活方式。本次革命有望在所有工业领域创建更高的效率、为人类带来最大的福利。然而,第四次工业革命要想取得成功,必须要有一个开放、无国界的支付...
  • qq53016353
  • qq53016353
  • 2016-10-18 12:34:37
  • 496

北邮 网络技术实践 实验4

  • 2012年06月09日 00:11
  • 813KB
  • 下载

《第四次工业革命-转型的力量》

待更新
  • pymqq
  • pymqq
  • 2017-04-22 20:27:39
  • 507

汇编第四次试验-武汉理工大学

  • 2012年01月05日 11:21
  • 105KB
  • 下载

c++第四次试验——作业

【项目1 - 龙三】 【项目3 - 职员薪水】
  • ecjtusanhu
  • ecjtusanhu
  • 2016-04-22 11:44:25
  • 177

c++第四次试验

1.问题及代码/* * 文件名称: 111 * 作 者: 宋剑 * 完成日期: 2016年 4 月 21 日 * 版 本 号:v1.0 * 对任务及求解方法的...
  • songjian_m
  • songjian_m
  • 2016-04-27 00:07:34
  • 190

第四次工业革命

  • 2018年01月31日 10:29
  • 2.17MB
  • 下载
收藏助手
不良信息举报
您举报文章:数据库第四次试验
举报原因:
原因补充:

(最多只允许输入30个字)