实验17数据库.docx
- 文档编号:12885978
- 上传时间:2023-04-22
- 格式:DOCX
- 页数:29
- 大小:845.28KB
实验17数据库.docx
《实验17数据库.docx》由会员分享,可在线阅读,更多相关《实验17数据库.docx(29页珍藏版)》请在冰豆网上搜索。
实验17数据库
实验一熟悉SQLSERVER的环境
(验证型实验2学时)
1.目的要求:
了解SQLServermanagementstudio的使用
2.实验内容:
回答下面每一个问题,写出实验步骤
1)在“已注册服务器窗口”中注册sqlserver数据库服务器
2)在“对象资源管理器”中创建名字为sc的数据库
3)在sc数据库中创建一个名字为student的基本表
4)在查询窗口中里创建名为S_C的数据库
点击左上角的新建查询,在查询窗口输入createdatabases_c的命令,点击执行键。
5)在查询窗口中使用sql语言创建名字为course的基本表
createtablecourse(cnochar(4),cnamechar(40),cpnochar(4),ccreditsmallint);
3.主要仪器设备及软件:
(1)PC
(2)MicrosoftSQLServer2005
实验二建立表格,并插入若干记录
(验证型实验2学时)
1.目的要求:
学会使用CreateTable语句和Insert语句
2.实验内容:
1)使用sql语言建立student,course和sc共三张表格(包括主键,外码的指定),分析具体情况适当给出一些用户自定义的约束.
代码:
createtablestudent
(snochar(9)primarykey,
snamechar(20)unique,
ssexchar
(2),
sagesmallint,
adeptchar(20)
);
createtablecourse
(cnochar(4)primarykey,
cnamechar(40),
cpnochar(4),
creditsmallint,
foreignkey(cpno)referencescourse(cno)
);
createtablesc
(snochar(9),
cnochar(4),
gradesmallint,
primarykey(sno,cno),
foreignkey(sno)referencesstudent(sno),
foreignkey(cno)referencescourse(cno));
2)使用Insert语句向这四张表格里添加至少10条记录(数据如教材56页所示),如果出现错误,分析错误原因
insertintostudent(sno,sname,ssex,sage,sdept)
values('95001','李勇','男','20','cs');
insertintostudent(sno,sname,ssex,sage,sdept)
values('95002','刘晨','女','19','is');
insertintostudent(sno,sname,ssex,sage,sdept)
values('95003','王敏','女','18','ma');
insertintostudent(sno,sname,ssex,sage,sdept)
values('95004','张立','男','19','is');
insertintostudent(sno,sname,ssex,sage,sdept)
values('95005','王晶','女','222','ma');
insertintostudent(sno,sname,ssex,sage,sdept)
values('95006','风雨','男','22','is');
insertintostudent(sno,sname,ssex,sage,sdept)
values('95007','曹珊','女','19','ma');
insertintostudent(sno,sname,ssex,sage,sdept)
values('95008','彭佳明','男','23','is');
insertintostudent(sno,sname,ssex,sage,sdept)
values('95009','赵瑞','女','23','ma');
insertintostudent(sno,sname,ssex,sage,sdept)
values('950010','程荣亮','男','22','is');
有错误,十号排在了1号的后面。
3)在“对象资源管理器”中实现
(1)题中的三张表
实现步骤:
在对象资源管理器中选择数据库——右击——新建数据库——输入数据库名称——确定。
在数据库下选择“表”——右击——新建表——输入列名以及数据类型。
4)在“对象资源管理器”中向这
(1)题中的三张表添加至少10条记录(数据如教材56页所示),如果出现错误,分析错误原因
添加的数据必须满足定义时的要求
3.主要仪器设备及软件:
(1)PC
(2)MicrosoftSQLServer2005
实验三修改表格结构,修改和删除表格中的数据
(验证型实验4学时)
1.目的要求:
用ALTER语句修改表结构:
添加列,修改列定义,删除列。
使用UPDATE和DELETE语句修改和删除Student,sc,course表格中的数据。
2.实验内容:
如下所示,创建表s,并完成随后的操作
Createtables(snochar
(2)primarykey,snamechar(10));
1)向表中添加属性列status,数据类型为int
altertablesaddstratusint;
2)向表中添加属性列city,数据类型为varchar(20),并限定其取值范围为“上海”,“北京”,“天津”之一
altertables
addcityvarchar(20)
check(cityin('上海','北京','天津'));
3)修改属性列status的数据类型为smallint
altertablesaltercolumnstatussmallint;
4)删除(3)题中取值范围的约束
5)删除属性列status
altertablesdropcolumnstatus;
如教材85页所示,建立student,sc,course等表,并插入若干数据,完成如下操作:
1)列出没有成绩的学生的学号和课程号
2)列出2号课程成绩在70分到80分学生的学号
selectsno
fromsc
wherecno=2andgradebetween70and80;
3)查询所有2005级的学生的姓名,性别和所在系
selectsname,ssex,sdept
fromstudent
wheresnoLIKE'2005%';
4)查询计科系2004级全体学生的所有信息
select*
fromstudent
wheresdept='计科'andsnoLIKE'2004%';
5)查询计科系2006级3班和4班学生的姓名和性别
selectsname,ssex
fromstudent
wheresdept='计科'and
(snoLIKE'2006___3%'orsnolike'2006___4%');
6)查询所有以“数”打头的课程的名称和学分
7)查询数学系所有学生的姓名,性别和出生年份
8)将course表中名为PASCAL语言的课程更名为“C语言”
updatecourse
setCname='c语言'
whereCname='pascal';
9)将所有课程的学分增加1分
updatecourse
setcredit=credit+1;
10)删除没有选课成绩的选课记录
11)删除“IS”系的所有学生信息
delete
fromStudent
wheresdept='is';
12)删除所有的课程信息
delete
fromcourse
3.主要仪器设备及软件:
(1)PC
(2)MicrosoftSQLServer2005
实验四查询(多表查询,嵌套查询,分组查询)
(验证型实验12学时)
1.目的要求:
实现单表和多表的普通查询和嵌套查询。
包括返回单值的子查询和返回多值的子查询。
使用5个聚合函数以及GROUPBY子句和HAVING子句实现分组查询.
2.实验内容
有如下关系模式,分析每个关系模式的主码,外码,完成后面的查询
职员表:
Emp(eid:
integer;ename:
string,salary:
real)
部门表:
Dept(did:
integer,dname:
string,managerid:
integer,floornum:
integer)
职员与部分的关系表:
Works(eid:
integer,did:
integer);
Works表表示:
一个职员可以在多个部门工作,一个部门有多个职员
Dept表中managerid可以取值null,表示尚未任命部门经理,floornum可以取值null,表示尚未分配工作地点
用单表查询完成如下操作:
1)输出所有员工的姓名和工资
2)输出薪水少于10000或者大于100000的雇员的名字
3)输出所有姓“欧阳”,且全名为四个字的雇员的姓名和工资
4)输出薪水在20000和50000之间的雇员的名字
5)输出部门名字中含有“_”的所有部门的名字和楼层号
6)查询公司的员工数
7)查询所有还没有部门经理的部门的名字和编号
8)查询所有已分配楼层的部门的所有信息
用连接查询完成如下操作:
1)查询“电视”部门的职工人数
2)输出每个部门的名字和平均工资
3)查询每个部门的部门编号,及其拥有的雇员的人数
4)查询在第10层工作,同时薪水少于¥50000的所有雇员的名
5)输出同时管理三个或者更多部门的管理者的名字
6)输出管理在同一层上10个以上部门的所有管理者的名字
7)输出雇员“刘丽”工作的部门的名字
用嵌套查询完成如下操作:
1)查询工资最高的雇员的名字
2)查询工资最低的雇员的名字及其所在部门的编号和名字
3)输出与Santa工作部门相同的所有雇员的所有信息
4)找出薪水在20000以上,并且在电视部门或者玩具部门工作的雇员的名字
selectename
fromEmp
wheresalary>20000andeidin(selecteidfromDept,Works
whereWorks.did=Dept.didandWorks.eid=Emp.eidand(dname='电视部'ordname='玩具部'));
5)输出与刘丽在同一层工作的雇员的名字
6)输出比所在部门的经理挣的还要多的雇员的名字
7)输出满足如下条件的各个部门的名字:
经理的姓为张,同时他的薪水既不是本部门最高也不是最低
8)输出比“玩具”部门所有职工工资都高的雇员的姓名
9)输出比“电视”部门职工平均工资高的雇员的姓名
10)找出所有有职工的部门的名字和楼层号
11)查询所有没有职工的部门编号和名字
12)输出同时在玩具部门和糖果部门工作的雇员的名字和薪水
3.主要仪器设备及软件:
(1)PC
(2)MicrosoftSQLServer2005
实验五为表格建立约束,修改约束和查询约束
(验证型实验4学时)
1.目的要求:
使用ALTER语句和CREATE语句建立、修改、删除和查询约束
2.实验内容
执行以下SQL语句,完成随后的操作,若有错误,分析错误原因并改正错误:
Createtablestudent(snochar(9)notnull,snamechar(10),ssexchar
(2),sagetinyint,sdeptvarchar(40));
Createtablecourse(cnochar(4)notnull,cnamevarchar(30),cpnochar(4),credittinyint);
Createtablesc(snochar(9),char(5),gradenumeric(3,1));
给sc表里的char(5)前加上cno
1)在student表中,使sdept只能取值“计算机科学学院”,“数软学院”,“电子工程学院”,“化学与材料科学学院”
altertablestudentADDCONSTRAINTsdept__l
check(sdeptin('计算机科学学院','数软学院','电子工程学院','化学与材料科学学院'));
2)在student表中sage有默认值18
altertablestudentaddconstraintsage_1default18forsage;
3)为student表建立主键
altertablestudent
addconstraintc0primarykey(sno);
4)为course表建立主键和外键,其中外键约束名为C_FK_CPNO
altertablecourse
addconstraintc3primarykey(cno);
altertablecourse
addconstraintC_FK_CPNOforeignkey(cpno)referencescourse(cno);
5)为course表建立检查约束,限定credit的取值只能取3,2,4,5;
altertablecourse
addconstraintc1
check(creditin('3','2','4','5'));
6)为course表建立唯一约束,确保每们课程名字唯一
altertablecourse
addconstraintc2unique(cname);
7)为sc表建立主键和外键,并给出相应的约束名
altertablesc
addconstraintpk_scnoprimarykey(sno,cno),fk_snochar(9)
foreignkey(sno)referencesstudent(sno),fk_cnochar(4)
foreignkey(cno)referencescourse(cno);;
8)在course表中插入元组(1,数据库,5,4)和(2,数学,null,2),若不能正确插入,分析原因,给出解决办法
9)在sc表中插入元组(95001,1,92)和(95001,3,88),若不能正确插入,分析原因,给出解决办法
(2)使用系统存储过程,sp_help,sp_helpconstraint等对约束进行查询和管理
查阅联机帮助文档,选中“索引”选项卡,分别输入sp_help,sp_helpconstraint,阅读其帮助信息。
使SC数据库成为当前数据库,执行如下命令,简要解释执行结果
1)Execsp_help
sp_help过程仅在当前数据库中查找对象。
如果未指定name,则sp_help将列出当前数据库中所有对象的对象名称、所有者和对象类型。
2)Execsp_helpstudent
列出student中所有对象的对象名称、所有者和对象类型。
3)Execsp_helpcourse
列出course中所有对象的对象名称、所有者和对象类型。
4)Execsp_helpconstaintsc
5)Execsp_helpconstraintstudent
6)对存储过程sp_help和sp_helpconstraint进行总结,简要解释其用途
sp_help:
报告有关数据库对象(sys.sysobjects兼容视图中列出的所有对象)、用户定义数据类型或SQLServer2005提供的数据类型的信息。
sp_helpconstraint:
返回一个列表,其内容包括所有约束类型、约束类型的用户定义或系统提供的名称、定义约束类型时用到的列,以及定义约束的表达式(仅适用于DEFAULT和CHECK约束)。
(3)修改约束:
关闭和打开某个约束。
1)在course表中插入元组(4,数据结构,6,4),能够插入吗?
为什么?
不能插入
2)禁用约束C_FK_CPNO,再次插入元组(4,数据结构,6,4),能够插入吗?
为什么?
可以插入
3)重新启用约束C_FK_CPNO
altertablecourse
checkconstraintFK__course__C_FK_CPN__0F975522
3.主要仪器设备及软件:
(1)PC
(2)MicrosoftSQLServer2005
实验六SqlServer数据库安全管理
(验证型实验4学时)
1.目的要求:
建立用户,为用户赋权限,收回权限,建立角色,给用户赋角色
2.实验内容
分别在对象资源管理器和查询窗口中完成下列操作
1)创建登录帐号john,并使其成为固定服务器角色dbcreator的一个成员
createloginjohnwithpassword='123456'
execsp_addsrvrolemember'john','dbcreator'
2)授予john服务器权限:
alteranylogin,createanydatabase
grantalteranylogintojohn
grantcreateanydatabasetojohn
3)John可以创建登录帐号吗?
为什么?
,若能,创建安全登录帐号帐户Mary
createloginMarywithpassword='123456'
4)创建用户Mary123,使用安全登录帐号Mary
createuserMary123forloginMary
5)授予帐户Mary123查询和修改student表的权限
grantselect,alter
onstudent
toMary123
6)创建角色teachers,拒绝teachers修改student表
createroleteachers
denyalter
onstudent
toteachers
7)使帐户Mary123成为teachers的一个成员,Mary123能够查询和修改student表吗?
为什么?
execsp_addrolemember'teachers','Mary123'
--能
8)如果希望角色teachers能够修改student表,应该怎么做?
revokealter
onstudent
fromteachers
grantalter
onstudent
toteachers
9)授予帐户Mary123在数据库sc中创建表和创建视图的权限
grantcreatetable,createview
toMary123
10)若mary123分别是固定数据库角色db_accessadmin,db_datareader和db_denydatawriter的成员,它有何能力,解释原因。
--db_datareader和db_denydatawriter的成员,它有何能力,解释原因。
execsp_addrolemember'db_accessadmin','mary123'
--已授予:
ALTERANYUSER、CREATESCHEMA已授予:
VIEWANYDATABASE
execsp_addrolemember'db_datareader','mary123'
--已授予:
SELECT已授予:
VIEWANYDATABASE
execsp_addrolemember'db_denydatawriter','mary123'
--已拒绝:
DELETE、INSERT、UPDATE
3.主要仪器设备及软件:
(1)PC
(2)MicrosoftSQLServer2005
实验七使用ADO连接数据库
(综合型实验4学时)
1.目的要求:
在高级语言中通过ADO或者ADO.NET连接SQLSERVER数据库,做一些简单应用
2.实验内容
在高级语言中使用ADO控件(ADO.NET控件)或ADO对象(ADO.NET对象)连接SQLSERVER数据库,实现对表格的基本操作,能与数据库交互,包括数据查询,元组的添加,删除和修改。
3.主要仪器设备及软件:
(1)PC
(2)SQLServer数据库,高级语言(如VB)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验 17 数据库