实验一到实验七.doc
实验一 熟悉SQL SERVER的环境( 验证型实验 2学时)1.目的要求:了解SQL Server management studio的使用2.实验内容: 回答下面每一个问题,写出实验步骤1) 在 “已注册服务器窗口”中注册sql server数据库服务器注册本地服务器: 步骤:视图-已注册服务器-选中数据库引擎右击-新建-服务器注册-输入服务器名称,用户名,密码,并点击保存 注册网络服务器:首先要使数据库能够远程连接:开始程序sqlsever 2005配置工具外围应用配置器服务和链接的外围应用配置器Database Engine选择远程链接本地和远程链接同时使用TCP/IP和named pipes然后新建网络服务器视图-已注册服务器-选中数据库引擎右击-新建-服务器注册-在服务器名称栏选择浏览更多网络服务器选择一个网络服务器测试保存在“对象资源管理器”中创建名字为sc的数据库 步骤:数据库右击新建数据库输入数据库名称点击确认 2) 在sc数据库中创建一个名字为student的基本表展开 sc目录右击新建表输入列名、选择类型、判定是否为空创建完成以后再向表里添加值。3) 在查询窗口中里创建名为S_C的数据库输入命令:create database s_c;4) 在查询窗口中使用sql语言创建名字为course的基本表输入命令:create table course;3.主要仪器设备及软件:(1)PC(2)Microsoft SQL Server 2005实验二 建立表格,并插入若干记录( 验证型实验 2学时)1. 目的要求:学会使用Create Table语句和Insert语句2. 实验内容: 1) 使用sql语言建立student,course和sc共三张表格(包括主键,外码的指定),分析具体情况适当给出一些用户自定义的约束.注意:首先要建立一个数据库,然后再建立表。a) Student 表的建立Sql 代码如下create database stu;create table student( sno char(9) primary key, sname char(20) unique, ssex char(2), sage smallint, sdept char(20);b) course 表的建立create table course( cno char(4) primary key, cname char(40), cpno char(4), ccredit smallint,foreign key (cpno) references course(cno);c) sc表的建立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);2) 使用Insert语句向这四张表格里添加至少10条记录(数据如教材56页所示),如果出现错误,分析错误原因 向student表添加记录:insert into student (sno,sname,ssex,sage,sdept)values('95001','李勇','男','20','cs');insert into student (sno,sname,ssex,sage,sdept)values('95002','刘晨','女','19','is');insert into student (sno,sname,ssex,sage,sdept)values('95003','王敏','女','18','ma');insert into student (sno,sname,ssex,sage,sdept)values('95004','张立','男','19','is');insert into student (sno,sname,ssex,sage,sdept)values('95005','王非','女','18','ma');insert into student (sno,sname,ssex,sage,sdept)values('95006','陈为立','男','19','is');insert into student (sno,sname,ssex,sage,sdept)values('95007','邱珊','女','18','ma');insert into student (sno,sname,ssex,sage,sdept)values('95008','吴品','男','19','is');insert into student (sno,sname,ssex,sage,sdept)values('95009','方方','女','18','ma');insert into student (sno,sname,ssex,sage,sdept)values('','张贝','男','19','is');运行结果如下: 向course表添加记录:insert into course(cno,cname,cpno,ccredit)values('1','数据库','1','4');insert into course(cno,cname,cpno,ccredit)values('2','数学','1','2');insert into course(cno,cname,cpno,ccredit)values('3','信息系统','2','4');insert into course(cno,cname,cpno,ccredit)values('4','操作系统','3','3');insert into course(cno,cname,cpno,ccredit)values('5','数据结构','3','4');insert into course(cno,cname,cpno,ccredit)values('6','数据处理','1','2');insert into course(cno,cname,cpno,ccredit)values('7','PASCAL语言','6','4');insert into course(cno,cname,cpno,ccredit)values('8','微积分','5','4');insert into course(cno,cname,cpno,ccredit)values('9','线性代数','7','4');insert into course(cno,cname,cpno,ccredit)values('10','VF','5','4');向sc表添加记录:insert into sc(sno,cno,grade)values ('95001','1','92');insert into sc(sno,cno,grade)values ('95001','2','80');insert into sc(sno,cno,grade)values ('95002','1','92');insert into sc(sno,cno,grade)values ('95002','3','80');insert into sc(sno,cno,grade)values ('95003','4','90');insert into sc(sno,cno,grade)values ('95004','5','79');insert into sc(sno,cno,grade)values ('95005','3','89');insert into sc(sno,cno,grade)values ('95006','1','79');insert into sc(sno,cno,grade)values ('95007','8','88');insert into sc(sno,cno,grade)values ('95008','7','84');实现结果:实现步骤:在对象资源管理器中选择数据库右击新建数据库输入数据库名称确定。在数据库下选择“表”右击新建表输入列名以及数据类型。 4)在“对象资源管理器”中向这(1)题中的三张表添加至少10条记录(数据如教材56页所示),如果出现错误,分析错误原因以course 表为例注意:必须每一条元组添加完毕以后才能进行第二条元组的添加,即不能竖向添加值。3. 主要仪器设备及软件:(1)PC(2)Microsoft SQL Server 2005实验三 修改表格结构,修改和删除表格中的数据( 验证型实验 4学时)1. 目的要求:用ALTER语句修改表结构:添加列,修改列定义,删除列。使用UPDATE和DELETE语句修改和删除Student,sc, course表格中的数据。2. 实验内容: 如下所示,创建表s,并完成随后的操作Create table s(sno char(2) primary key,sname char(10);1) 向表中添加属性列status,数据类型为int2) 向表中添加属性列city,数据类型为varchar(20),并限定其取值范围为“上海”,“北京”,“天津”之一3) 修改属性列status的数据类型为smallint4) 删除(3)题中取值范围的约束5) 删除属性列status如教材85页所示,建立student, sc, course等表,并插入若干数据,完成如下操作:1) 列出没有成绩的学生的学号和课程号2) 列出2号课程成绩在70分到80分学生的学号3) 查询所有2005级的学生的姓名,性别和所在系4) 查询计科系2004级全体学生的所有信息5) 查询计科系2006级3班和4班学生的姓名和性别6) 查询所有以“数”打头的课程的名称和学分7) 查询数学系所有学生的姓名,性别和出生年份8) 将course表中名为PASCAL语言的课程更名为“C语言”9) 将所有课程的学分增加1分10) 删除没有选课成绩的选课记录11) 删除“IS”系的所有学生信息12) 删除所有的课程信息3. 主要仪器设备及软件:(1)PC(2)Microsoft SQL Server 2005实验四 查询(多表查询,嵌套查询,分组查询)( 验证型实验 12学时)1. 目的要求:实现单表和多表的普通查询和嵌套查询。包括返回单值的子查询和返回多值的子查询。使用5个聚合函数以及GROUP BY子句和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) 输出薪水少于10 000或者大于100 000的雇员的名字3) 输出所有姓“欧阳”,且全名为四个字的雇员的姓名和工资4) 输出薪水在20 000和50 000之间的雇员的名字5) 输出部门名字中含有“_”的所有部门的名字和楼层号6) 查询公司的员工数7) 查询所有还没有部门经理的部门的名字和编号8) 查询所有已分配楼层的部门的所有信息用连接查询完成如下操作:1) 查询“电视”部门的职工人数2) 输出每个部门的名字和平均工资3) 查询每个部门的部门编号,及其拥有的雇员的人数4) 查询在第10层工作,同时薪水少于¥50000的所有雇员的名字5) 输出同时管理三个或者更多部门的管理者的名字6) 输出管理在同一层上10个以上部门的所有管理者的名字7) 输出雇员“刘丽”工作的部门的名字用嵌套查询完成如下操作:1) 查询工资最高的雇员的名字2) 查询工资最低的雇员的名字及其所在部门的编号和名字3) 输出与Santa工作部门相同的所有雇员的所有信息4) 找出薪水在20 000以上,并且在电视部门或者玩具部门工作的雇员的名字5) 输出与刘丽在同一层工作的雇员的名字6) 输出比所在部门的经理挣的还要多的雇员的名字7) 输出满足如下条件的各个部门的名字:经理的姓为张,同时他的薪水既不是本部门最高也不是最低8) 输出比“玩具”部门所有职工工资都高的雇员的姓名9) 输出比“电视”部门职工平均工资高的雇员的姓名10) 找出所有有职工的部门的名字和楼层号11) 查询所有没有职工的部门编号和名字12) 输出同时在玩具部门和糖果部门工作的雇员的名字和薪水3. 主要仪器设备及软件:(1)PC(2)Microsoft SQL Server 2005实验五 为表格建立约束,修改约束和查询约束( 验证型实验 4学时)1. 目的要求: 使用ALTER语句和CREATE语句建立、修改、删除和查询约束2. 实验内容 执行以下SQL语句,完成随后的操作,若有错误,分析错误原因并改正错误:Create table student(sno char(9) not null , sname char(10),ssex char(2),sage tinyint,sdept varchar(40);Create table course(cno char(4) not null, cname varchar(30),cpno char(4),credit tinyint);Create table sc(sno char(9),char(5),grade numeric(3,1);1) 在student表中,使sdept只能取值“计算机科学学院”,“数软学院”,“电子工程学院”,“化学与材料科学学院”2) 在student表中sage有默认值183) 为student表建立主键4) 为course表建立主键和外键,其中外键约束名为C_FK_CPNO5) 为course表建立检查约束,限定credit的取值只能取3,2,4,5;6) 为course表建立唯一约束,确保每们课程名字唯一7) 为sc表建立主键和外键,并给出相应的约束名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) Exec sp_help2) Exec sp_help student3) Exec sp_help course4) Exec sp_helpconstaint sc5) Exec sp_helpconstraint student6) 对存储过程sp_help和sp_helpconstraint进行总结,简要解释其用途(3)修改约束:关闭和打开某个约束。1) 在course表中插入元组(4,数据结构,6,4),能够插入吗?为什么?2) 禁用约束C_FK_CPNO,再次插入元组(4,数据结构,6,4),能够插入吗?为什么?3) 重新启用约束C_FK_CPNO3. 主要仪器设备及软件:(1)PC(2)Microsoft SQL Server 2005实验六 Sql Server数据库安全管理( 验证型实验 4学时)1. 目的要求: 建立用户,为用户赋权限,收回权限,建立角色,给用户赋角色2. 实验内容 分别在对象资源管理器和查询窗口中完成下列操作1) 创建登录帐号john,并使其成为固定服务器角色dbcreator的一个成员2) 授予john服务器权限:alter any login,create any database3) John可以创建登录帐号吗?为什么?,若能,创建安全登录帐号帐户Mary4) 创建用户Mary123,使用安全登录帐号Mary5) 授予帐户Mary123查询和修改student表的权限6) 创建角色teachers,拒绝teachers修改student表7) 使帐户Mary123成为teachers的一个成员,Mary123能够查询和修改student表吗?为什么?8) 如果希望角色teachers能够修改student表,应该怎么做?9) 授予帐户Mary123在数据库sc中创建表和创建视图的权限10) 若mary123分别是固定数据库角色db_accessadmin,db_datareader和db_denydatawriter的成员,它有何能力,解释原因。3. 主要仪器设备及软件:(1)PC(2)Microsoft SQL Server 2005实验七 使用ADO连接数据库(综合型实验 4学时)1. 目的要求:在高级语言中通过ADO或者ADO.NET连接SQL SERVER数据库,做一些简单应用 2. 实验内容 在高级语言中使用ADO控件(ADO.NET控件)或ADO对象(ADO.NET对象)连接SQL SERVER数据库,实现对表格的基本操作,能与数据库交互,包括数据查询,元组的添加,删除和修改。3. 主要仪器设备及软件:(1)PC(2)SQL Server数据库,高级语言(如VB)