实验五 SQL语言

实验五SQL语言

一、目的与要求

1.掌握SQL语言的查询功能;

2.掌握SQL语言的数据操作功能;

3.掌握对象资源管理器建立查询、索引和视图的方法;

二、实验准备

1.了解SQL语言的查改增删四大操作的语法;

2.了解查询、索引和视图的概念;

3.了解各类常用函数的含义。

三、实验内容

(一)SQL查询功能

使用提供的studentdb数据库文件,先附加到目录树中,再完成下列题目,SQL命令请保存到脚本文件中。

1.基本查询

(1)查询所有姓王的学生的姓名、学号和性别

Select St_Name ,St_Sex, St_ID

From st_info

Where St_Name like '王%'

(2)查询全体学生的情况,查询结构按班级降序排列,同一班级再按学号升序,

并将结果存入新表new中

select * into new

from st_info

order by Cl_Name desc,St_ID asc

(3)对S_C_info表中选修了“体育”课的学生的平均成绩生成汇总行和明细

行。(提示:用compute汇总计算)

Select c_no,score

From s_c_info

Where c_no=29000011

compute avg(score)

2.嵌套查询

(1)查询其他班级中比“材料科学0601班”的学生年龄都大的学生姓名

和年龄

Select St_Name ,Born_Date

from st_info

where Cl_Name!='材料科学0601班' and Born_Date<(select Min(Born_Date) from st_info where Cl_Name='材料科学0601班')

(2)用exists查询选修了“9710041”课程的学生姓名

select St_Name

from st_info

where exists (select * from s_c_info where c_no = 9710041 and st_id=st_info.St_ID )

(3)用in查询找出没有选修“9710041”课程的学生的姓名和所在班级。select St_Name,Cl_Name

from st_info

where st_ID not in (select st_id from s_c_info where c_no ='9710041')

(4)查询选修了学号为“2001050105”的学生所选全部课程的学生姓名。select St_Name

from st_info where St_ID in

(select distinct St_ID from s_c_info where not exists

(select * from s_c_info where st_id='2001050105' and not exists

(select * from s_c_info where st_info.St_ID=s_c_info.st_id and c_no=any(select c_no from s_c_info where st_id='2001050105'))))

3.连接综合查询及其他

(1)查询每个学生所选课程的最高成绩,要求列出学号,姓名,课程编号和分

数。

select st_info.St_ID, St_Name,C_info.c_no,score

from st_info inner join s_c_info on st_info.St_ID=s_c_info.st_id inner join C_info on s_c_info.c_no=C_info.c_no

where score=(select max(s_c_info.score)from s_c_info

where st_info.St_ID=s_c_info.st_id)

(2)查询所有学生的总成绩,要求列出学号、姓名、总成绩,没有选修课程的

学生总成绩为空。

select st_info.St_ID,St_Name,总成绩

from st_info

left outer join (select st_id,sum(score)as 总成绩from s_c_info group by st_id)s_c_info on st_info.St_ID=s_c_info.st_id

(3)查询“大学计算机基础”课程考试成绩前三名的学生姓名和成绩。

select st_info.St_ID,St_Name,score

from st_info

inner join s_c_info on st_info.St_ID=s_c_info.st_id

inner join C_info on s_c_info.c_no=C_info.c_no

and c_Name='大学计算机基础'

(4)将s_c_info中的score列的值转为等级制输出,即60分以下显示为“不及

格”,60~69分显示“及格”,70~79分显示“中等”,80~81显示“良好”,90~100显示“优秀”。要求输出学号、姓名、课程名、成绩等级。(提示:

在select字句中使用case…when…end语句)

select St_info.st_id,St_name,C_Name,成绩等级=

case

when score>=90 then '优秀'

when score>=80 then '良好'

when score>=70 then '中等'

when score>=60 then '及格'

when score<60 then '不及格'

end

from s_c_info,St_info,C_Info

where St_info.st_id=s_c_info.st_id and C_Info.C_No=s_c_info.c_no (二)SQL的增删改功能

在实验四建立的studb数据库中,写SQL语句实现增删改功能。

1.在S表中增加如下记录:

insert S

values('s3','张明华','男','1995-08-21 00:00:00.000','MA_数学','530.0','浙江杭州',NULL)

2. 在C表中将课程名为“数据库”的学分更改为3

update C

set ccredit='3'

where cname='数据库'

3.删除S表中S2的学生记录,请问是否能删除,为什么,要如何操作。能删除

delete from S where sno='S2'

(三)索引

在studb数据库中,分别用对象资源管理器和SQL语言定义索引

1.在对象资源管理器中,在T表的tname列上中建立聚集索引ix_tname,降序。

查看聚集的效果。

create clustered index ix_tname

on T(tname)

sp_helpindex T

2.使用SQL语言定义T表的(tno,cno)列上的复合索引ix_tc,tno列设为升序,cno列设为降序

create clustered index ix_tc

on T(tno,cno)

(四)视图

在studb数据库中操作。

1.在对象资源管理中建立视图v_s_c,列出所有学生所选课程的成绩:学号,姓名,班级名,课程号,课程名,成绩。

2.使用SQL语言建立视图v_cjtj,列出每位同学的学号,最高成绩,最低成绩,平均成绩和总成绩,按总成绩降序排列。

create view v_cjtj(xh.zgf,zdf.pjf,zf)

as

(select top 100 son,max(score),min(score),avg(score),sum(score)

from SC

group by son

order by sum(score) desc

)四、思考与练习

1.视图和表有何区别?

1、视图是已经编译好的sql语句。而表不是

2、视图没有实际的物理记录。而表有。

3、表是内容,视图是窗口

4、表只用物理空间而视图不占用物理空间,视图只是逻辑概念的存在,表可以及时对它进行修改,但视图只能有创建的语句来修改

5、表是内模式,视图是外模式

6、视图是查看数据表的一种方法,可以查询数据表中某些字段构成的数据,只是一些SQL语句的集合。从安全的角度说,视图可以不给用户接触数据表,从而不知道表结构。

7、表属于全局模式中的表,是实表;视图属于局部模式的表,是虚表。

8、视图的建立和删除只影响视图本身,不影响对应的基本表。

2.视图中的列都能更新吗?

不一定可以更新

3.查询年龄最大的教师号和年龄,SQL命令如下:请问为什么报错?如何修改?Select tno,max(year(getdate( ))-year(tbirday))

From T

选择列表中的列‘T.tno’无效,因为该列没有包含在聚合函数或GROUP BY 子

句中。

在from后面加group by tno。

实验五 SQL Server安全性管理

实验五SQL Server数据库安全性管理 实验目的:理解SQL Server 2000的两种登录认证模式;掌握SQL Server 2000中有关用户、角色及操作权限的管理方法。 背景知识: 对任何企业组织来说,数据的安全性最为重要。安全性主要是指允许那些具有相应的数据访问权限的用户能够登录到SQL Server,并访问数据以及对数据库对象实施各种权限范围内的操作,但是要拒绝所有的非授权用户的非法操作。因此安全性管理与用户管理是密不可分的。SQL Server 2000 提供了内置的安全性和数据保护,并且这种管理有效而又容易。 SQL Server 2000 的安全性管理是建立在认证(authentication)和访问许可(permission)两者机制上的。认证是用来确定登录SQL Server 的用户的登录账号和密码是否正确,以此来验证其是否具有连接SQL Server 的权限。但是通过认证阶段并不代表该用户能够访问SQL Server 中的数据,用户只有在获取访问数据库的权限之后,才能够对服务器上的数据库进行权限许可下的各种操作(主要是针对数据库对象,如表、视图、存储过程等),这种用户访问数据库权限的设置是通过用户账号来实现的,同时在SQL Server 中,角色作为用户组的代替物大大地简化了安全性管理。 数据库的安全管理主要是对数据库用户的合法性和操作权限的管理。数据库用户(在不至于引起混淆的情况下简称用户)是指具有合法身份的数据库使用者,角色是具有一定权限的用户组。SQL Server的用户或角色分为二级:一级为服务器级用户或角色;另一级为数据库级用户或角色。 SQL Server的安全性管理包括以下几个方面:数据库系统登录管理、数据库用户管理、数据库系统角色管理以及数据库访问权限的管理。 一、SQL Server 2000版本: Microsoft公司于2000年9月布了SQL Server 2000,其中包括企业版(Enterprise Edition)、标准版(Standard Edition)、开发版(Developer Edition)、个人版(Personal Edition)四个版本。 它们的各自特点如下: ◆企业版提供了最多的功能特性和最佳的性能,适用于大规模的企业生产应用 环境。 ◆标准版的功能相对少一些,比较适合于中小规模的企业生产应用环境。 ◆开发版拥有企业版中的绝大多数功能特性,但它只能用于开发和测试,而不 能用在生产环境中。 ◆个人版的功能和标准版类似,但在扩展性上有一定限制,如最多只能利 用两个CPU、并发连接数超过5个时性能会有显著下降等。个人版通常适用于经常断开网络连接而又需要访问数据库的移动办公用户。另外,个人版不单独出售,而只能随企业版或标准版一同获得。

存储过程和触发器(数据库实验5)

数据库基础与实践实验报告实验五存储过程和触发器 班级:惠普测试142 学号:1408090213 姓名:闫伟明 日期:2016-11-14

1 实验目的: 1)掌握SQL进行存储过程创建和调用的方法; 2)掌握SQL进行触发器定义的方法,理解触发器的工作原理; 3)掌握触发器禁用和重新启用的方法。 2 实验平台: 操作系统:Windows xp。 实验环境:SQL Server 2000以上版本。 3 实验内容与步骤 利用实验一创建的sch_id数据库完成下列实验内容。 1.创建存储过程JSXX_PROC,调用该存储过程时可显示各任课教师姓名及其所教课程名称。 存储过程定义代码: CREATE PROCEDURE JSXX_PROC AS SELECT tn 教师姓名,cn 所教课程FROM T,TC,C WHERE T.tno=TC.tno AND https://www.360docs.net/doc/3519251582.html,o=https://www.360docs.net/doc/3519251582.html,o 存储过程执行语句与执行结果截图: EXECUTE JSXX_PROC 2.创建存储过程XM_PROC,该存储过程可根据输入参数(学生姓名)查询并显示该学生的学号、 所学课程名称和成绩;如果没有该姓名学生,则提示“无该姓名的同学”。 存储过程定义代码:

CREATE PROCEDURE XM_PROC @sname VARCHAR(100) AS BEGIN IF EXISTS(SELECT NULL FROM S WHERE sn=@sname) SELECT S.sno 学号,cn 课程,score 成绩FROM S,SC,C WHERE https://www.360docs.net/doc/3519251582.html,o=https://www.360docs.net/doc/3519251582.html,o AND SC.sno=S.sno AND S.sn=@sname ELSE PRINT'无该姓名的同学。' END 运行截图: 3.创建存储过程XBNL_PROC,该存储过程可根据输入参数(专业名词,默认值为计算机专业), 统计并显示该专业各年龄段男、女生人数。如果没有该专业,则显示“无此专业”。 存储过程定义代码: CREATE PROCEDURE XBNL_PROC @departName VARCHAR(30)='计算机', @begin INT, @end INT AS

数据库原理中SQL语句实验指导书及答案

实验四:管理SQL Server表数据 一、实验目的 熟悉数据表结构及使用特点; 熟悉使用Management Stuio界面方式管理数据表数据; 熟悉使用T-SQL语句管理数据表数据。 二、实验环境 已安装SQL Server 2005 企业版的计算机(13台); 具有局域网环境,有固定IP; 三、实验学时 2学时 四、实验要求 了解SQL Server数据表数据的管理方法; 了解SQL Server数据类型; 完成实验报告(部分题只需给出关键语句)。 五、实验内容及步骤 以课本指定的数据库为例,并依据数据表的结构创建相对应的数据表(student、course、sc),请分别使用Management Stuio界面方式及T-SQL 语句实现进行以下操作: 向各个数据表中插入如下记录: 学生信息表(student)

课程信息表(course) 选课信息表(sc)

insert into student.dbo.sc values('20051501','1',75) insert into student.dbo.course values('1','数据库','5',4) insert into student.dbo.student values('201015001','赵菁菁','女',23,'CS') 2.修改CS系姓名为“李勇”的学生姓名为“李咏”; update student set Sname='李咏' where Sname='李勇' 3.修改课程“数据处理”的学分为3学分; 3.update course set Ccredit=3 where Cname ='数据处理' 4.将选修课程“1”的同学成绩加5分; 4.update sc set Grade =Grade+5 where Cno='1' 5.将选修课程“大学英语”的同学成绩加5分; update sc set Grade=Grade+5 from course,sc where https://www.360docs.net/doc/3519251582.html,o=https://www.360docs.net/doc/3519251582.html,o and https://www.360docs.net/doc/3519251582.html,ame='大学英语'

SQL实验五:T-SQL编程

( 二 〇 一 五 年 四 月 《数据库原理及应用》实验报告 学校代码: 10128 学 号: 201120905048 题 目:T-S Q L 编程 学生姓名:孙跃 学 院:理学院 系 别:数学系 专 业:信息与计算科学 班 级:信计12-2 任课教师:侯睿

一、实验目的 (1)进一步巩固第2章~第4章所学内容; (2)掌握用户自定义类型的使用; (3)掌握变量的分类及其使用; (4)掌握各种运算符的使用; (5)掌握各种控制语句的使用; (6)掌握系统函数及用户自定义函数的使用。 二、实验内容 1.自定义数据类型的使用。 (1)对于实验2给出的数据库表结构,再自定义一数据类型ID_type,用于描述员工编号。 (2)在YGGL数据库中创建Employees3表,表结构与Employees类似,只是EmployeeID列使用的数据类型为用户自定义类型ID_type。 2.变量的使用。 (1)对于实验2给出的数据库表结构,创建一个名为female的用户变量,并在SELECT语句中使用该局部变量查找表中所有女员工的编号、姓名。 (2)定义一个变量,用于获取号码为102201的员工的电话号码。 3.运算符的使用。 (1)使用算数运算符“-”查询员工的实际收入。 (2)使用比较运算符“>”查询Employees表中工作时间大于5年的员工信息。 4.流程控制语句。 (1)判断Employees表中是否存在编号为11006的员工,如果存在则显示该员工信息,不存在则显示查无此人。 (2)假设变量X的初始值为0,每次加1,直至X变为5。 (3)使用CASE语句对Employees表按部门进行分类。 5.自定义函数的使用。 (1)定义一个函数实现如下功能:对于一个给定的DepartmentID值,查询该值在Departments表中是否存在,若存在则返回0,否则返回-1。 (2)写一段T-SQL程序调用上述函数。 6.系统内置函数的使用。 (1)求一个数的绝对值。 (2)求财务部雇员的总人数。 (3)使用ASCII函数返回字符表达式最左端字符的ASCII值。 (4)获得当前的日期和时间。

sql语句的实验报告

竭诚为您提供优质文档/双击可除sql语句的实验报告 篇一:sQL语言实验报告 《数据库原理及应用》实验报告 sql语句部分班级:11-37-06学号:姓名:总成绩:实验一熟悉sqlserver,数据定义实验实验一成绩: 一、实验目的 1、利用查询分析器创建数据库 2、利用查询分析器用sql语言定义基本表、索引并进行相关操作二、实验步骤及内 容在以下实验中,使用学生-课程数据库,它描述了学生的基本信息、课程的基本信息及学 生选修课程的信息。 1.创建学生课程数据库 6、在表s上增加“出生日期”属性列。 7、删除表s的“年龄”属性列。 8、删除s

姓名列的唯一值约束。9、修改sc表成绩属性列为精确数字型。 10、在表s上,按“sno”属性列的唯一值方式建立索引。11、删除表sc,利用磁盘 上保存的.sql文件重新创建表sc。 12、创建教材p74页习题5中spj数据库中的四个关系:s、p、j、spj。 三、实验结果: 1.创建学生课程数据库 createdatabasestudend; 5.将以上创建表s、c、sc的sql命令以.sql文件的形式保存在磁盘上。( snochar(9)primarykey,snamechar(20)unique,ssexchar(2 ),sagesmallint, sdeptchar(20),); 3.创建课程关系表c:( cnochar(4)primarykey,cnamechar(40),cpnochar(4),ccre ditsmallint,);( snochar(9),cnochar(4),gradesmallint,); 5.将以上创建表s、c、sc的sql命令以.sql文件的形

数据库实验书sql

数据库实验(SQL SERVER 2000)

目录 实验一数据库和表的简单操作 实验二数据操纵语言的使用(一) 实验三数据操纵语言的使用(二) 实验四数据操纵语言的使用(三) 实验五变量与数据类型的使用 实验六运算符的使用 实验七流程控制语句的使用 实验八函数的使用 实验九数据库和表的操作语句 实验十索引和视图的使用 实验十一存储过程的使用 实验十二存储过程的高级操作及触发器的使用 实验十三数据库的备份、还原与转换 实验十四完整数据库产品设计 本目录中,蓝色显示标题实验一--四,实验九、十、十三、十四为必做实验,其余红色标题显示实验为附加实验,扩展知识实验,为选作实验。

附录 学生管理数据库简介 此数据库为实验所用的主要数据库,有三张表,基本情况如(其中记录情况可自定): 表一学生表 注:学生表各字段类型如下:学号 char(4),姓名 varchar(10),性别 char(2),年龄 smallint ,系别varchar(12),班级 varchar(12)。 表二课程表 注:课程表各字段类型如下:课程号 char(2),课程名称 varchar(20),学分 smallint,课时 smallint ,授课教师 varchar(10)。 表三成绩表

实验题目:数据库和表的简单操作 实验目的:熟练使用企业管理器对数据库和表进行简单操作 实验内容: 一、使用企业管理器新建一个数据库,名称为“学生管理数据库”,其主要数据文件大小为2M,次要数据 文件大小为1M,日志文件大小为1M,存放位置为“D:\SQLServer”,其他选项都采用默认值。 二、在“学生管理数据库”中新建三张表,表名分别为:学生表、课程表和成绩表;其中各表结构如附录; 要求:在上述三张表中建立主键约束(PK),各表主键分别为红色显示字段; 在上述三张表中建立外键约束(FK),成绩表的学号字段外键参照学生表的学号字段,课程号字段外键参照课程表的课程号字段,并在设置约束时,选择级联删除和级联更新方式对主键表与外键表相互制约;(外键的含义是什么?审查时提问) 在上述三张表中建立自定义约束(CK),性别字段和年龄字段的默认值分别为‘男’和18,性别取值为’男’或’女’,年龄取值范围18~30。 三、向各表中输入如附录的记录 四、实践一下级联删除,即,在主键表学生表中删除‘0001‘号学生的记录,观察外见表成绩表中相应该 学生记录是否自动删除; 五、将“学生管理数据库”与服务器分离。 六、将已分离的“学生管理数据库”附加到服务器上。 实验课时:1节课 实验要求:当堂抽查,提问

实验五答案SQL语句查询

1、列出所有不姓刘的所有学生 select sname,sno from student where sname not like'刘%' 2、列出姓“沈“且全名为3个汉字的学生 select sname from student where sname like'沈____' 3、显示在1985年以后出生的基本信息 select sno学号,sname姓名,出生年份=year(getdate())-sage from student where year(GETDATE())>1985 4、按照“性别、学号、姓名、年龄、院系“的顺序列出学生信息,其中性别按以下规定显示:性别为男显示为男生,性别为女显示为女生,其它显示为”条件不明“ select ssex= case when ssex='男'then'男生' when ssex='女'then'女生' else'情况不明' end,sno,sname,sage,sdept from student 5、查询出课程名含有‘数据‘字串的所有课程基本信息 select sno,https://www.360docs.net/doc/3519251582.html,o,cname,grade,ccredit from sc,course where cname like'数据%'and https://www.360docs.net/doc/3519251582.html,o=https://www.360docs.net/doc/3519251582.html,o 6、显示学号第八位或者第九位是1、2、3、4或9的学生的学号、姓名、性别、年龄、及院系select sno,sname,ssex,sage,sdept from student where sno like'2005150[1-4]%'or sno like'2005150[0-9][1-4]' or sno like'20051509%'or sno like'2005150[0-9]9' 7、列出选修了‘1‘课程的学生,按成绩的降序排列 select student.sno,sname,grade from student,sc where Cno='1' order by Grade desc 8、列出同时选修‘1‘号课程和’2‘号课程的所有学生的学号 select sno,Cno from sc where cno=1 or cno=2 9、列出课程表中全部信息,按先选修课的升序排列 select* from course order by cpno asc

实验5 sql语句练习——图书馆数据库答案

实验5sql语句练习——图书馆数据库 实验5 sql语句练习——图书馆数据库 实验目的 (1)了解SQL Server数据库的逻辑结构和物理结构; (2)了解表的结构特点; (3)了解SQL Server的基本数据类型; (4)了解空值概念; (5)学会在企业管理器中创建数据库和表; (6)学会使用T-SQL语句创建数据库和表。 (7)学会使用T-SQL语句更新数据。 (7)学会使用T-SQL语句创建多种查询。 实验准备 首先要明确,能够创建数据库的用户必须是系统管理员,或是被授权使用CREATE DATABASE语句的用户。 其次创建数据库必须要确定数据库名、数据库大小(最初的大小、最大的大小、是否允许增长及增长方式)和存储数据库的文件。 然后,确定数据库包含哪些表,以及所包含的各表的结构,还要了解SQL Server的常用数据类型,以创建数据库的表。 此外还要了解两种常用的创建数据库、表的方法,即在企业管理器中创建和使用T-SQL的CREATE DA TABASE语句。 实验内容 假设有5本书 设有一图书馆数据库,其中包括3个表,即图书表、读者表和借阅表。三个表的结构如图: 列名说明数据类型约束说明 书号图书唯一的编号定长字符串,长度为10 主键 书名图书的名称定长字符串,长度为50 空值 作者图书的编著者名定长字符串,长度为30 空值 出版社图书的出版社定长字符串,长度为30 空值 单价出版社确定的图书的单价浮点型,Float 空值 读者表结构 假设有10位读者

列名说明数据类型约束说明 读者号读者唯一的编号定长字符串,长度为10 主键 姓名读者姓名定长字符串,长度为8 非空值 性别读者性别定长字符串,长度为2 非空值 办公电话读者办公电话定长字符串,长度为8 空值 部门读者所在部门定长字符串,长度为30 空值 列名说明数据类型约束说明 读者号读者的唯一编号定长字符串,长度为10 外码,引用读者表的 主键 书号图书的唯一编号定长字符串,长度为20 外码,引用图书表的 主键 借出日期借出图书的日期定长字符串,长度为8 非空值 归还日期归还图书的日期定长字符串,长度为8 空值 主键为:(读者号,图书号)(1)用Sql语句创建图书馆数据库 Create database Lab05 (2)用Sql语句创建上述3个表 create table book ( bookId char(10)primary key, bookName varchar(50), bookWriter varchar(30), bookPublish varchar(30), bookPrice float ) create table reader ( readerId char(10) primary key, readerName varchar(8)not null, readerSex char(2)not null, readerOfficeTel char(8), readerDepartment varchar(30) ) create table 借阅表 ( readerId char(10), bookId char(10), checkOutTime char(8), checkInTime char(8), primary key(readerId,bookId), foreign key (readerId) references reader(readerId), foreign key (bookId) references book(bookId), )

实验五---SELECT数据查询

实验五---SELECT数据查询

实验五、SELECT 数据查询 一、实验目的 要求学生熟练使用T-SQL语句进行数据查询,掌握SELECT语句的基本结构和多表连接查询、子查询、分组查询、查询结果的排序等操作。二、实验内容 (1)利用SELECT查询语句进行单表、多表查询设计。 (2)利用SELECT语句进行子查询和外连接查询. (3)设计ORDER BY查询子句以及带有GROUP BY 的查询子句。 三、实验指导 1、SELECT 基本语句格式 SELECT查询的基本语句包含要返回的列、要选择的行、放置行的顺序和将信息分组的规范,其语句格式如下: 2、简单查询实验 利用T-SQL语句在JXGL数据库中实现简单查询

操作: (1)查询数学系(MA)学生的学号和姓名。 (2)查询选修了课程的学生的学号 (3)查询选修了课程号为“C2”的学生的学号和成绩,并对查询结果按成绩降序排列,如果成绩相同则按学号升序排列。

(4)查询选修了课程为“C2”的成绩在80到90分之间的学生的学号和成绩,并将成绩乘以0.8输出。 (5)查询数学系(MA)或计算机科学系(CS)中张的学生信息

(6)查询缺少了成绩的学生学号和课程号 3、连接查询实验 利用T-SQL语句在JXGL数据库中实现下列连接查询: (1)查询每个学生的情况以及他(她)所选修的课程 (2)查询学生的学号、姓名、选修的课程名及成绩 (3)查询选修“离散数学”课程且成绩为90分以上的学号、姓名及成绩。

(4) 查询每一门课的间接先修课(即先修课的先修课) 4、嵌套查询 利用T-SQL语句在JXGL数据库中实现下列嵌套查询操作: (1)查询选修了“离散数学”的学生的学号和姓名。

实验5数据库的安全性控制(含答案)

实验五数据库的安全性控制 一、实验目的: 1. 通过实验加深对数据安全性的理解,并掌握SQL Server 中有关用户登录的认证以及管理办法; 2.通过实验加深对数据库存储控制机制的理解,通过自主存取控制进行权 限管理,熟悉 SQL Server 中角色管理; 3.通过实验加深对数据安全性的理解,熟悉视图机制在自主存取控制上的应用。 二、实验内容 1.设置 SQL Server 的混合安全认证模式。在SQL Server 中的对象资源管理器中设置安全认证模式。 2.在 SQL Server 中,利用“对象资源管理器”创建一个名为“U1”的登录用户和数据库用户,密码为111,并允许其登录S-T 数据库。

3.在 SQL Server中,利用代码创建一个名为“ U2”的登录用户,密码为 111;

其相应的数据库用户名为lucky ,并允许其登录S-T 数据库。 4.用“ u1”用户名登录后,执行对students表的查询操作,说明执行结果,并分析原因(建议:在启动一个SQL Server 2008窗口)。 分析:没有对u1 进行其他操作的授权,只能登录而不能进行插入,修改等操作 5.将 students表的操作权限select 和 insert 赋予数据库用户u1,并允许其向其它用户授权。

6.以“u1”用户名登录,执行对students和 teacher表的查询操作,将该运行结果进行分析。 分析:对比第 4 题,对 U1 进行授权后可以进行相应的操作 7.执行下列代码后,分析用户u2 能否对 s_t 数据库的 student 表进行 select 和 update操作,为什么?并用相应的语句验证。

SQL数据库实验五答案

(1) insert into Student(Sno,Sname,Ssex,Sdept) values('06011','王文娟','女','计算机') (2) 不能将值NULL 插入列'Sno',表'AA.dbo.Student';列不允许有Null 值。INSERT 失败。语句已终止。 因为Sno为主码,主码不能为空。 (3) create table CP_Student (Sno char(5)Not Null, Sname varchar(10)Null, Ssex char(2)Null, Sbirth smalldatetime Null, Sdept varchar(20)Null, Total decimal(4,1)Null) (4) insert into CP_Student select* from Student where Sdept='计算机'OR Sdept='外国语' (5) update Teacher set Tname='王芳龄' where Tname='王芳' (6) update Teacher set Tpay=Tpay*(1+0.02) where Tprof='副教授' (7) update SC set Grade=Grade+1 where Sno=(select Sno from Student where Sname='李强') (10) delete from Student where Sno='06011' (11) \delete from CP_Student

where Sbirth<='1987' (12) delete from CP_Student (13) select* into CP_Teacher from Teacher where Tno IS NULL (14) insert into CP_Teacher select* from Teacher where Tprof='副教授' (15) insert into CP_Teacher select* from Teacher where Tprof<>'副教授' (16) SELECT。。。INTO。。。和INSERT。。。INTO。。。都是将源表中的记录插入到目标表中,SELECT。。。INTO。。。在插入记录的时候目标表不存在,而是在插入记录时自动创建。 INSERT。。。INTO。。。在插入记录的时候目标表存在

MySQL实验报告

信息科学与技术系实验报告 实验课程名称: SQL语言基础实验 实验项目名称:索引和数据完整性 专业班级:专业级班 学号: 姓名: 指导教师: 时间: 2012 年 11 月 6 日 实验五索引和数据完整性 【目的与要求】 (1)掌握索引的使用方法。 (2)掌握数据完整性的实现方法。 【实验准备】 (1)了解索引的作用与分类。 (2)掌握索引的创建方法。

(3)理解数据完整性的概念及分类。 (4)掌握各种数据完整性的实现方法。 【实验内容】 一、创建索引 1. 使用CREATE INDEX语句创建索引。 (1)对YGGL数据库的Employees表中的DepartmentID列建立索引。 (2)在Employees表的Name列和Address列上建立复合索引。 (3)对Departments表上的DepartmentName列建立唯一性索引。 2. 使用ALTER TABLE语句向表中添加索引。 (1)向Employees表中的出生日期列添加一个唯一性索引,姓名和性别列上添加一个复合索引。

(2)假设Departments表中没有主键,使用ALTER TABLE语句将DepartmentID列设为主键。 3. 在创建表时创建索引。 创建与Departments表相同结构的表Departments1,将DepartmentName设为主键,DepartmentID上建立一个索引。 二、删除索引 1. 使用DROP INDEX语句删除表Employees上的索引depart_ind。 2. 使用ALTER TABLE语句删除Departments上的主键和索引Dep_ind。 三、数据完整性

数据库实验报告 SQL语言

数据库原理及实验报告 实验6 视图 实验目的:1)掌握交互式创建、删除视图的方法 2)掌握使用SQL创建、删除视图的方法 3)掌握交互式更新视图的方法 4)掌握使用SQL更新视图的方法 实验内容 6.1实验题目:创建视图 实验过程:1)交互式创建视图VIEW_S 2)交互式创建成绩视图VIEW_SCORETABLE 3)使用SQL创建课程表视图VIEW_CTABLE 实验结果:

6.2实验题目:修改视图 实验过程:1)使用交互式方法把视图VIEW_S 中的字段SNO 删掉 2)使用SQL 为视图VIEW_CTABLE 增加一个课时字段CT tiny int 实验结果:

6.3实验题目:通过视图修改数据库数据 实验过程:1)交互式通过修改视图VIEW_S中的数据来实现对其基本表S中数据的修改 2)对视图VIEW_S执行INSERT语句,查看此视图的基本表S中数据的变化

3)修改视图VIEW_S的定义,使其包含表S中的主键,再执行插入操作 4)用SQL语句对视图VIEW_S执行DELETE操作,查看此视图的基本表S中数据的变化 实验结果: 6.4实验题目:删除视图 实验过程:1)交互式删除视图VIEW_S 2)使用SQL删除视图VIEW_CTABLE 实验结果:

实验7 数据查询 实验目的:1,掌握从简单到复杂的各种数据查询。包括,单表查询、多表连接查询、嵌套查询、集合查询。 2,掌握用条件表达式表示检索结果。 3,掌握用聚合函数计算统计检索结果。 实验7.1 单表查询 实验目的:1,掌握指定列或全部列查询。 2,掌握按条件查询。 3,掌握对查询结果排序。 4,掌握使用聚集函数的查询。 5,掌握分组统计查询。 实验内容:1,指定或全部列查询。 2,按条件查询及模糊查询。 3,对查询结果排序。 4,使用聚集函数的查询。 5,分组统计查询。

相关文档
最新文档