大数据库-第四次实验报告材料-视图-t-sql语句

合集下载

数据库SQL语句实验报告

数据库SQL语句实验报告

数据库SQL语句实验报告《数据库原理及应⽤》实验报告SQL语句部分总成绩:实验⼀熟悉SQL SERVER,数据定义实验实验⼀成绩:⼀、实验⽬的1、利⽤查询分析器创建数据库2、利⽤查询分析器⽤SQL语⾔定义基本表、索引并进⾏相关操作⼆、实验步骤及内容在以下实验中,使⽤学⽣-课程数据库,它描述了学⽣的基本信息、课程的基本信息及学⽣选修课程的信息。

1.创建学⽣课程数据库5.将以上创建表S、C、SC的SQL命令以.SQL⽂件的形式保存在磁盘上。

6、在表S上增加“出⽣⽇期”属性列。

7、删除表S的“年龄”属性列。

8、删除S姓名列的唯⼀值约束。

9、修改SC表成绩属性列为精确数字型。

10、在表S上,按“Sno”属性列的唯⼀值⽅式建⽴索引。

11、删除表SC,利⽤磁盘上保存的.SQL⽂件重新创建表SC。

12、创建教材P74页习题5中SPJ数据库中的四个关系:S、P、J、SPJ。

三、实验结果:1.创建学⽣课程数据库create database Studend;(Sno CHAR(9)PRIMARY KEY,Sname CHAR(20)UNIQUE,Ssex CHAR(2),Sage smallint,Sdept char(20),);3.创建课程关系表C :(Cno char(4)primary key,Cname CHAR(40),Cpno char(4),Ccredit SMALLINT,);(Sno char(9),Cno char(4),Grade smallint,);5.将以上创建表S、C、SC的SQL命令以.SQL⽂件的形式保存在磁盘上。

6、在表S上增加“出⽣⽇期”属性列。

alter table S add Sbirthday datetime;7、删除表S的“年龄”属性列。

alter table S drop column Sage;8、删除S姓名列的唯⼀值约束。

alter table S drop UQ__S__7D78A4E7;9、修改SC表成绩属性列为精确数字型。

数据库T-SQL语言操作(T-SQL语句、数据库、表、视图、索引)

数据库T-SQL语言操作(T-SQL语句、数据库、表、视图、索引)

数据库T-SQL语⾔操作(T-SQL语句、数据库、表、视图、索引)T-SQL语⾔按⽤途分四部分1. 数据定义语⾔(CREATE,DROP,ALTER)2. 数据操作语⾔(INSERT,DELETE,UPDATE)3. 数据查询语⾔(SELECT)4. 数据控制语⾔(GRANT,REVOKE,DENY)数据类型1. 系统数据类型2. ⽤户⾃定义数据类型(建⽴⽅式:a.图形化⽅式 b.命令⽅式)1use TEST2EXEC sp_addtype sno,'varchar(10)','nonull'3EXEC sp_droptype sno变量命名规则:字母、下划线、@或#开头,但不能全为下划线、@或#不能为“关键字”,不能嵌⼊空格及其他特殊字符,如需使⽤则需要双引号或⽅括号括起1.局部变量:由⽤户声明,必须以@开头,只在定义该变量的过程中有效,局部变量必须先声明后使⽤注意:第⼀次声明变量时,其值设置为NULL。

局部变量不能使⽤“变量=变量值”的格式进⾏初始化,必须使⽤SELECT或SET语句来设置其初始值。

如果声明字符型的局部变量,⼀定要在变量类型中指明其最⼤长度,否则系统默认其长度为1。

若要声明多个局部变量,请在定义的第⼀个局部变量后使⽤⼀个逗号,然后指定下⼀个局部变量名称和数据类型。

1USE student2DECLARE@var1char(10),@var2int3SET@var1='number'4select@var2=cgrade5from sc6where sno='201810010'78print@var1+"s"2.全局变量:由系统定义,供SQL server系统内部使⽤的变量,任何程序任何时间都可以调⽤。

通常以“@@”开头。

T-SQL语句1.注释语句(1) --(2) /*……*/2.批处理--GO3.控制流程语句(1) begin...end语句(相当于C语⾔中的{} )(2) if...else语句(可嵌套)(3)case语句(多条件选择语句)(4)print语句(屏幕输出语句)(5)while语句(有条件的循环语句)(6)goto语句(⽆条件跳转语句)(7)break语句(8)continue语句4.常⽤函数(系统函数、⽤户⾃定义函数)⼀些系统函数:(1)字符串函数(2)数学函数(3)⽇期和时间函数(4)聚合函数注意:⽤户⾃定义函数:1.分类:标量值函数:返回单个值内联表值函数:返回可更新的表多语句表值函数:返回不可更新的表2.标量值函数命令⽅式创建1CREATE FUNCTION f2(@a real,@b real) 2RETURNS real3AS4BEGIN5IF@a>=@b6RETURN@a7RETURN@b8END910PRINT'最⼤值为'11PRINT dbo.f2(77,56)1CREATE FUNCTION f3(@n real)2RETURNS real3AS4BEGIN5DECLARE@i real,@sum real6SET@i=07SET@sum=08WHILE@i<@n9BEGIN10SET@i=@i+111SET@sum=@sum+@i12END13RETURN@sum14END1516PRINT dbo.f3(10)3.⾃定义函数的调⽤(1)标量值函数可以使⽤select、print、exec调⽤(2)表值函数只能⽤select调⽤4.删除⽅式drop function 函数名数据库数据库概述1.数据库常⽤对象:表、数据类型、视图、索引、存储过程、触发器系统数据库:master、model、tempdb、msdb2.数据库存储结构(数据库⽂件、数据库⽂件组):数据库⽂件:存放数据库数据和数据库对象的⽂件。

数据库实验4_数据库查询与视图

数据库实验4_数据库查询与视图

数据库实验4_数据库查询与视图在学⽣选课数据库中完成规定查询,并创建视图。

1.查询线性代数不及格的同学的学号和姓名;SQL语句为:SELECT名单$.学号,姓名FROM名单$,学⽣选课信息和成绩$,课程$WHERE名单$.学号=学⽣选课信息和成绩$.学号AND课程$.课号=学⽣选课信息和成绩$.课号AND 课程$.课程名='线性代数'AND学⽣选课信息和成绩$.成绩<60;执⾏后结果为:2.查询没有选课记录的同学的所有基本信息;SQL语句为:SELECT*FROM名单$WHERE NOTEXISTS(SELECT*FROM学⽣选课信息和成绩$WHERE学号=名单$.学号);执⾏后结果为:3.查询具有简介先修课的课程信息及对应的先修课名;SQL语句为:SELECTFIRST.课号,SECOND.课程名FROM课程$FIRST,课程$SECONDWHEREFIRST.先修课号=SECOND.课号;执⾏后结果如下:4.统计⾼等数学(1)的平均成绩;SQL语句为:SELECT AVG(成绩)FROM学⽣选课信息和成绩$,课程$WHERE学⽣选课信息和成绩$.课号=课程$.课号AND课程$.课程名='⾼等数学(1)'; 执⾏后结果如下:5.统计各门课的选课⼈数;SQL语句为:SELECT课号,COUNT(学号)FROM学⽣选课信息和成绩$GROUPBY课号;执⾏后结果为:6.查询选修5门课以上的学⽣的学号;SQL语句为:SELECT学号FROM学⽣选课信息和成绩$GROUPBY学号HAVING COUNT(*)>5;执⾏后结果为:7.⽤你的学号查询和你⼀个班的同学的学号和姓名;SQL语句为:SELECT学号,姓名FROM名单$WHERE班级IN(SELECT班级FROM名单$WHERE学号='201000800145');执⾏后结果如下:8.查询⾼等数学(1)成绩⽐你⾼出10分以上的同学的姓名和对应成绩;SQL语句为:SELECT姓名,成绩FROM名单$,学⽣选课信息和成绩$WHERE名单$.学号=学⽣选课信息和成绩$.学号AND学⽣选课信息和成绩$.课号='82006010'AND成绩>(SELECT成绩+10FROM学⽣选课信息和成绩$,课程$WHERE学⽣选课信息和成绩$.课号=课程$.课号AND课程$.课程名='⾼等数学(1)' AND学⽣选课信息和成绩$.学号='201000800145')执⾏后结果为:9.找到每门课获得最⾼成绩的同学的学号、姓名、课名和成绩;选做。

数据库实验报告sql语句

数据库实验报告sql语句

合肥工业大学实验报告一课程名称:数据库系统原理及应用学号: 20095406 姓名:刘晓雷专业班级:电子商务09-1班指导教师:马华伟二零一一年十月一、实验目的:(1)熟练掌握数据更新语句,灵活地操作插入数据、修改数据和删除数据;(2)熟练掌握关系数据库中的完整性概念的应用;(3)了解数据录入的方法和过程。

(4)掌握单表查询的基本方法;(5)掌握连接查询的基本方法;(6)熟练掌握以下练习,并进行以下各类查询:①选择表中的若干列、查询全部列、查询经过计算的值;②选择表中的若干元组,即消除取值重复的行与查询满足指定条件的元组(包括:比较大小、确定范围、确定集合、字符匹配、涉及空值和多种条件查询);③对查询结果排序;④使用集函数;⑤对查询结果分组(7)熟练掌握以下练习,并进行下列各类连接查询:①等值与非等值连接查询;②自身连接;③外连接;④复合条件连接;(8)掌握嵌套查询的基本方法;(9)掌握集合查询的基本方法;(10)熟练掌握查询视图操作(11)熟练掌握更新视图操作(12)熟练关系的完整性概念,领会视图的用途(13)练习以下各类查询:①带有IN谓词的子查询;②带有比较运算符的子查询;③带有ANY或ALL谓词的子查询;④带有EXISTS谓词的子查询;⑤视图查询与更新操作;二、实验要求:(1)为了便于程序正确性测试,需要对自己建立起来的数据表录入一些模拟数据(模拟数据是指符合数据格式要求的假数据),然后按照教材中结构化查询语言SQL章节例题和习题自己组织SQL语句:(2)设计的SQL程序应该涵盖数据更新操作的全部内容不,包括插入、修改、删除;(3)综合运用SQL语句实现数据插入、修改、删除等操作的综合运用能力。

(4)按照SQL语言编程要求,实现各类查询和检索操作;(5)利用后台的SQL平台环境,编程验证数据库的控制保护功能。

(6)将查询视图命令等价改写为对数据表的查询操作命令,利用SQL编程设计完成并进行效率分析。

数据库 T-SQL程序设计 实验报告

数据库 T-SQL程序设计 实验报告

实验报告课程名称:数据库原理与应用上机实验名称:T-SQL程序设计专业班级:计算机科学与技术1103 指导教师:卫凡学生姓名:贾梦洁学期:2013-2014学年第一学期实验报告课程名称数据库原理与应用实验名称T-SQL程序设计姓名贾梦洁学号 201107010330专业班级计1103实验日期2013年12月12日成绩指导教师卫凡一、实验目的1.熟练掌握变量的定义和赋值。

2. 掌握各种运算符。

3. 掌握流程控制语句,尤其是条件语句和循环预语句。

二、实验环境硬件环境:PC机软件环境:操作系统为Microsoft Windows 2000或以上版本。

数据库管理系统为Microsoft SQL Server 2000标准版或企业版。

三、实验内容1. 变量的定义与输出。

2. 条件结构的使用。

四、实验步骤1.创建一名为Student_name的局部变量,并在select语句中使用该变量查找“张强”同学所选课程的成绩情况,给出相应的语句段和运行结果。

2.将选修课程号为720的同学的成绩增加3分,同时使用全局变量@@rowcount检查获得更新的数据行数目。

修改前:修改后:4.利用学生_课程数据库中的SC表查找学生的成绩信息并判断是否有某学生的某门课程的成绩在90分以上的信息,若有,则显示学号、姓名、课程名和成绩,否则输出信息,说明“不存在成绩大于90分的学生!”。

5.从学生_课程数据库中查询所有学生选课成绩情况:姓名、课程名、成绩。

要求:将学生的百分制转换为5级评分制,成绩大于等于90显示为“优秀”,成绩在80-89分显示为“良好”,“70-79”分显示为“中等”,成绩在60-69显示为“及格”,60以下显示为“不及格”,没成绩的显示为“未考”。

并且输出记录按下列要求排序:先按学号升序,再按课程号升序,最后按成绩降序。

按学号升序排序:按课程号升序排序:order by SC.课程号按成绩降序排序:order by 成绩 desc6.利用学生_课程数据库中的SC表,编程实现:如果所有学生所有课程的平均成绩高于80分,使用while循环就将每门成绩减5分,然后查找所有学生所有课程中的最高分,如果最高分大于或等于85分,while循环重新启动并再次将每门成绩减5分并继续查找所有学生所有课程中的最高分,一直循环到最高分低于85分循环停止,然后退出。

数据库实验四

数据库实验四

《数据库管理系统》实验报告2011/2012学年第2学期实验项目:数据库班级:学生:(学号********* )地点:经管院A 实验室机器号:指导教师:时间:2012 年 6 月 3 日经济管理学院信息管理教研室实验四:数据库综合实验一、实验目的1.了解DDL语言的CREATE、DROP、ALTER对表、索引、视图的操作,掌握查询条件表达式和使用方法;2.掌握Windows NT认证模式下数据库用户帐号的建立与取消方法;3.掌握混合模式下数据库用户帐号的建立与取消方法;4.掌握数据库用户权限的设置方法;5.熟悉数据库数据库用户帐号的权限分配、回收等方法;6.了解数据库角色的分类、作用及使用方法。

7.掌握主键约束、外键约束及及check约束的用法;8.掌握默认值约束的应用;9.了解规则、触发器的使用。

10.熟悉数据库备份及恢复机制;11.了解SQL Server的数据备份和恢复机制;12.掌握SQL-Server中数据库备份和恢复的方法。

二、实验环境已安装SQL Server 2005的计算机;具有局域网网络环境,有ip地址;三、实验要求1.学会用DDL语言进行对表、索引、视图的增加、删除和改动;2.了解SQL Server 2005系统安全;3.熟悉数据库用户、服务器角色及数据库角色的用法;4.熟悉数据库完整性相关概念及约束;5.了解约束、默认值及规则;6.了解创建备份设备和进行数据库完全备份操作的方法;7.了解进行数据库恢复的步骤;8.完成实验报告;四、实验内容及步骤(一)用T-SQL语句操作索引、视图1.建立计算机科学系学生的视图2.由学生、课程和选修课三个表,定义一个计算机科学系的学生成绩视图,其属性包括学号、姓名、课程名和成绩3.将学生的学号、总成绩、平均成绩定义成一个视图4.对student表按学号降序建唯一索引,索引名stunods。

5.删除索引stunods。

(二)数据库的安全性以系统管理员身份登录到SQL Server服务器,在SQL Server2005界面中实现以下操作,并独立写出部分题目的程序代码;1.在当前计算机中增加一个用户zhang和cheng,密码为secret。

SQL实验四-数据库的查询和视图

SQL实验四-数据库的查询和视图

学校代码:10128学号:************《数据库原理及应用》实验报告题目:数据库的查询和视图****:**学院:理学院系别:数学系专业:信息与计算科学班级:信计12-2****:**二〇一五年四月一、练习目的1、数据库的查询(1)掌握SELECT语句的基本语法;(2)掌握子查询的表示;(3)掌握连接查询的表示;(4)掌握SELECT语句的GROUP BY子句的作用与使用方法;(5)掌握SELECT语句的ORDER BY子句的作用与使用方法;2、视图的使用(1)熟悉视图的概念和作用;(2)熟悉视图的创建方法;(3)熟悉如何查询和修改视图。

二、练习准备1、数据库的查询(1)了解SELECT语句的基本语法格式;(2)了解SELECT语句的执行方法;(3)了解子查询的表示方法;(4)了解连接查询的表示;(5)了解SELECT语句的GROUP BY子句的作用与使用方法;(6)了解SELECT语句的ORDER BY子句的作用;2、视图的使用(1)了解视图的概念;(2)了解创建视图的方法;(3)了解并掌握对视图的操作。

三、实验程序实验4.1 数据库的查询1、(1)对于实验2给出的数据库结构,查询每个雇员的所有数据. USE YGGLGOSELECT*FROM Employees(2)用SELECT语句查询Employees表中每个雇员的地址和电话. SELECT Address,PhoneNumberFROM Employees(3)查询EmployeeID为000001的雇员的地址和电话.SELECT Address,PhoneNumberFROM EmployeesWHERE EmployeeID='000001'GO(4)查询Employees表中女雇员的地址和电话,使用AS子句将结果中各列的标题分别制定地址和电话. SELECT Address AS地址,PhoneNumber AS电话FROM EmployeesWHERE Sex=0(5)查询Employees表中员工姓名和性别,要求Sex值为1时显示为“男”,为0时显示为“女”. SELECT Name AS姓名,CASEWHEN Sex=1 THEN'男'WHEN Sex=0 THEN'女'END AS性别FROM Employees(6)计算每个员工的实际收入.SELECT EmployeeID,实际收入=InCome-OutComeFROM Salary(7)获得员工总数.SELECT COUNT(*)FROM Employees(8)找出所有姓王的雇员的部门号.SELECT DepartmentIDFROM EmployeesWHERE Name LIKE'王%'(9)找出所有收入在2000~3000之间的员工号码.SELECT EmployeeIDFROM SalaryWHERE InCome BETWEEN 2000 AND 3000(10)使用INTO子句,由表Salary创建“收入在1500以上的员工表”,包括编号和收入. SELECT EmployeeID as编号,InCome as收入INTO收入在以上的员工FROM SalaryWHERE InCome>15002、子查询的使用.(1)查询在财务部工作的雇员的情况.SELECT*FROM EmployeesWHERE DepartmentID=(SELECT DepartmentIDFROM DepartmentsWHERE DepartmentName='财务部')(2)查询财务部年龄不低于研究部雇员年龄的雇员的姓名.SELECT NameFROM EmployeesWHERE DepartmentID IN(SELECT DepartmentIDFROM DepartmentsWHERE DepartmentName='财务部')ANDBirthday!>ALL(SELECT BirthdayFROM EmployeesWHERE DepartmentID IN(SELECT DepartmentIDFROM DepartmentsWHERE DepartmentName='研发部' ))(3)查找比所有财务部的雇员收入都高的雇员的姓名. SELECT NameFROM EmployeesWHERE EmployeeID IN(SELECT EmployeeIDFROM SalaryWHERE InCome>ALL(SELECT InComeFROM SalaryWHERE EmployeeID IN(SELECT EmployeeIDFROM EmployeesWHERE DepartmentID=(SELECT EmployeeIDFROM DepartmentsWHERE DepartmentName='财务部')))))3、连接查询的使用(1)查询每个雇员的情况及其薪水的情况SELECT Employees.*,Salary.*FROM Employees,SalaryWHERE Employees.EmployeeID=Salary.EmployeeID(2)使用内连接的方法查询名字为“王林”的员工所在的部门SELECT DepartmentNameFROM Departments JOIN EmployeesON Departments.DepartmentID=Employees.DepartmentID WHERE ='王林'(3)查询财务部收入在2000以上的雇员姓名及其薪水详情. SELECT Name,InCome,OutComeFROM Employees,Salary,DepartmentsWHERE Employees.EmployeeID=Salary.EmployeeIDAND Employees.DepartmentID=Departments.DepartmentID AND DepartmentName='财务部'AND InCome>20004、聚合函数的使用.(1)求财务部雇员的平均收入.SELECT AVG(InCome)AS'财务部平均收入'FROM SalaryWHERE EmployeeID IN(SELECT EmployeeIDFROM EmployeesWHERE DepartmentID=(SELECT DepartmentIDFROM DepartmentsWHERE DepartmentName='财务部'))(2)财务部雇员的平均实际收入.SELECT AVG(InCome-OutCome)AS'财务部平均实际收入' FROM SalaryWHERE EmployeeID IN(SELECT EmployeeIDFROM EmployeesWHERE DepartmentID=(SELECT DepartmentIDFROM DepartmentsWHERE DepartmentName='财务部'))(3)求财务部雇员的总人数SELECT COUNT(EmployeeID)FROM EmployeesWHERE DepartmentID=(SELECT DepartmentIDFROM DepartmentsWHERE DepartmentName='财务部')5、GROUP BY\ORDER BY子句的使用.(1)Emyees表中的男性和女性的人数SELECT Sex,COUNT(Sex)FROM EmployeesGROUP BY Sex;(2)查找员工数超过2人的部门名称和员工数量.SELECT(Employees.DepartmentID),COUNT(*)AS人数FROM Employees,DepartmentsWHERE Employees.DepartmentID=Department.DepartmentID GROUP BY Employees.DepartmentIDHAVING COUNT(*)>2(3)将各雇员的情况按收入由低到高排列.SELECT Employees.*,Salary.*FROM Employees,SalaryWHERE Employees.EmployeeID=Salary.EmployeeIDORDER BY InCome实验4.2 视图的使用1、创建视图①创建YGGL数据库上的视图DS_VIEW,视图包含Departments表的全部列。

sql视图实验报告

sql视图实验报告

sql视图实验报告SQL视图实验报告引言:在数据库管理系统中,SQL视图是一种虚拟表,它是由一个或多个基本表的行和列组成的。

视图是基于查询的结果集,可以被视为一个表,但实际上并不存储数据。

本实验旨在探索SQL视图的概念、创建和使用方法,并通过实际案例来展示其在数据库管理中的应用。

一、SQL视图的概念SQL视图是一种虚拟表,它是由一个或多个基本表的行和列组成的。

视图是基于查询的结果集,可以被视为一个表,但实际上并不存储数据。

视图可以隐藏基本表的复杂性,简化用户的查询操作,并提供数据安全性和数据独立性。

二、创建SQL视图在SQL中,我们可以使用CREATE VIEW语句来创建视图。

CREATE VIEW语句的基本语法如下:CREATE VIEW view_name ASSELECT column1, column2, ...FROM table_nameWHERE condition;三、使用SQL视图1. 查询视图:通过SELECT语句可以查询视图,就像查询普通表一样。

例如,我们可以使用SELECT * FROM view_name来查询视图的所有数据。

2. 更新视图:视图也可以通过UPDATE、INSERT和DELETE语句进行数据的更新操作。

但需要注意的是,视图的更新操作可能会影响到基本表的数据,因此在进行更新操作时需要谨慎。

四、SQL视图的应用案例下面以一个学生信息管理系统为例,来展示SQL视图的应用。

假设我们有两个基本表:学生表(student)和课程表(course)。

学生表包含学生的学号、姓名和年龄等信息;课程表包含课程的编号、名称和学分等信息。

现在我们需要查询每个学生所选课程的信息,并计算每个学生的总学分。

首先,我们可以创建一个视图来查询学生选课的信息:CREATE VIEW student_course ASSELECT student.student_id, student.student_name, course.course_name, course.creditFROM studentJOIN course ON student.student_id = course.student_id;然后,我们可以使用SELECT语句查询视图的数据:SELECT * FROM student_course;接下来,我们可以通过对视图进行分组和聚合操作,计算每个学生的总学分:SELECT student_id, student_name, SUM(credit) AS total_creditFROM student_courseGROUP BY student_id, student_name;通过以上操作,我们可以方便地查询每个学生所选课程的信息,并计算每个学生的总学分。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验十报告创建视图兰州大学数据库实验报告实验目的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_GRADEASSELECT student.sno,sname,cname,scoreFROM student,course,student_courseWHERE student.sno=student_course.snoAND o=student_o;视图如下:②建立一个所有计算机系学生的学号、选修课程号以及平均成绩的视图COMPUTE_AVG_GRADE;Create VIEW COMPUTE_AVG_GRADEASSELECT student.sno,o,AVG(score)'平均成绩'FROM student,course,student_courseWHERE student.sno=student_course.snoAND o=student_o AND student.dno='CS'GROUP BY student.sno,o;视图如下:2.修改视图(1) 使用企业管理器修改视图在企业管理器中将视图COMPUTE_AVG_GRADE中改成建立在数学系的学生学号、选修课程号以及平均成绩的视图。

(IS设为数学系)(2) 使用SQL语句修改视图①在查询分析器中使用更改视图的命令将上面建立的视图“V_计算机系学生”更名为“V_计算机系男生”。

SP_RENAME'V_计算机系学生','V_计算机系男生';3.删除视图(1)使用企业管理器删除视图用企业管理器删除视图“V_计算机系学生”(2)使用SQL语句删除视图用SQL语句删除视图COMPUTE_AVG_GRADE;DROP VIEW COMPUTE_AVG_GRADE;实验十一使用视图一.实验目的1.熟悉和掌握对数据表中视图的查询操作和SQL命令的使用;2.熟悉和掌握对数据表中视图的更新操作和SQL命令的使用,并注意视图更新与基本表更新的区别与联系3.学习灵活熟练的进行视图的操作,认识视图的作用二.实验准备1.熟悉SQL SERVER 工作环境。

2.能连接到EDUC数据库。

3.复习有关视图操作的SQL语言命令。

三.实验要求1.在实验开始之前做好准备工作。

2.实验之后提交实验报告,思考视图和基本表的区别四.实验内容一.定义视图在EDUC数据库中,已Student Course 和Student_course 表为基础完成一下视图定义1.定义计算机系学生基本情况视图V_Computer;CREATE VIEW V_ComputerASSELECT student.*FROM studentWHERE student.dno='CS';视图如下:2.将Student Course 和Student_course表中学生的学号,姓名,课程号,课程名,成绩定义为视图V_S_C_GCREATE VIEW V_S_C_GASSELECT student.sno,sname,o,ame,scoreFROM student,course,student_courseWHERE student.sno=student_course.sno AND o=student_o;视图如下:3.将各系学生人数,平均年龄定义为视图V_NUM_AVGCREATE VIEW V_NUM_AVGASSELECT COUNT(dno)'各系人数',AVG(sage)'平均年龄'FROM studentGROUP BY dno;视图如下:4.定义一个反映学生出生年份的视图V_YEAR CREATE VIEW V_YEARASSELECT sname,2014-sage'出生年份'FROM student;视图如下:5.将各位学生选修课程的门数及平均成绩定义为视图V_AVG_S_GCREATE VIEW V_AVG_S_GASSELECT student.sno'学号',sname'姓名',COUNT(*)'选修门数',AVG(score)'平均成绩'FROM student,student_courseWHERE student.sno=student_course.snoGROUP BY student.sno,sname;视图如下:6.将各门课程的选修人数及平均成绩定义为视图V_AVG_C_GCREATE VIEW V_AVG_C_GASSELECT cno'课程号',COUNT(cno)'选修人数',AVG(score)'平均成绩'FROM student_courseGROUP BY cno;视图如下:二.使用视图1.查询以上所建的视图结果。

所建视图结果如上题截图所示2.查询平均成绩为90分以上的学生学号、姓名和成绩;SELECT学号,姓名,平均成绩FROM V_AVG_S_GWHERE平均成绩>90;3.查询各课成绩均大于平均成绩的学生学号、姓名、课程和成绩;SELECT V_S_C_G.sno,V_S_C_G.sname,V_S_C_ame,V_S_C_G.scoreFROM V_S_C_G,V_AVG_S_GWHERE V_S_C_G.sno=V_AVG_S_G.学号AND V_S_C_G.score>V_AVG_S_G.平均成绩;4.按系统计各系平均成绩在80分以上的人数,结果按降序排列;1.先创建学生学号-系别视图V_STUDENTCREATE VIEW V_STUDENTASSELECT sno,dnoFROM student;2.进行查询SELECT V_STUDENT.dno'系别',COUNT(V_STUDENT.sno)'人数'FROM V_STUDENT,V_AVG_S_GWHERE V_STUDENT.sno=V_AVG_S_G.学号AND V_AVG_S_G.平均成绩>80GROUP BY V_STUDENT.dno;三.修改视图1.通过视图V_IS,分别将学号为“S1”和“S4”的学生姓名更改为“S1_MMM”,”S4_MMM”并查询结果;UPDATE V_IS SET sname='S1_MMM'WHERE SNO='32011';UPDATE V_IS SET sname='S4_MMM'WHERE SNO='32014';SELECT*FROM V_ISWHERE sno='32011'OR sno='32014';2.通过视图V_IS,新增加一个学生记录 ('S12','YAN XI',19,'IS'),并查询结果INSERT INTO V_IS(sno,sname,sex,dno,sage)VALUES('S12','YAN XI','女','IS','19')SELECT*FROM V_ISWHERE sno='S12';3.要通过视图V_AVG_S_G,将学号为“S1”的平均成绩改为90分,是否可以实现?并说明原因答:不能实现,因为视图或函数'V_AVG_S_G' 包含聚合、DISTINCT 或GROUP BY 子句或者PIVOT 或UNPIVOT 运算符,所以无法进行更新。

UPDATE V_AVG_S_G SET学号='32011'WHERE平均成绩='90';实验十二更新语句一.实验目的1.熟悉使用UPDATE/INSERT/DELETE语句进行表操作;2.能将这些更新操作应用于实际操作中去;二.实验准备1.了解这些更新语句的基本语法和用法;三.实验要求1.完成下面的实验内容,并提交实验报告;2.在实验报告中附上相应的代码;四.实验内容1.对于student表,将所有专业号为‘001’的,并且入学年份为2006的学生,或是专业号为‘003’,并且年龄小于20岁的学生的班级号改为‘001’。

UPDATE student SET classno='001'WHERE (mno='001'AND YEAR(sctime)='2006')OR(mno='003'AND(year(getdate())-year(sdate))<20);2.对于student表,删掉所有年龄小于20岁,并且专业号为‘003’的学生的记录。

DELETE FROM studentWHERE mno='003'AND(year(getdate())-year(sdate))<203.对于student表,插入一条新记录,它的具体信息为,学号:2007110011、姓名:张三、性别:男、出生日期:19880808、院系编号:‘001’、专业编号:‘001’、班级号:‘001’、入学时间:20070901。

INSERT INTO student(sno,sname,sex,sdate,dno,mno,classno,sctime)VALUES('2007110011','张三','男','1988-8-8','001','001','001','2007-9-1');4.对于student表,将入学时间最晚的学生和年龄最小的学生的联系方式去掉。

相关文档
最新文档