实验内容011)根据现实世界的组织和工作过程将其转化成E-R图描述。
其中一个员工属于一个部门,一个部门有多个员工;一个员工可同时参加多个项目,一个项目有多个员工一起开发。
①确定实体和实体的属性。
②确定员工和部门的联系、员工和项目间的联系,给联系命名并指出联系的类型。
③确定联系本身的属性。
④画出员工、部门、项目组成的E-R图。
2)将E-R图转换为关系表。
①将实体转化为关系表。
②将联系转化为关系表。
③写出表的关系模式并标明各自的主码和外码。
④确定主要属性的约束条件。
3)设计关系表中的模拟数据。
实体转化的表不少于8条记录,联系转化的表不少于15条记录。
4)设计对上述关系表的基本操作任务。
实验内容021)安装SQL Server 2005。
2)查看安装SQL Server 2005的目录结构。
3)注册服务器并和数据库连接。
4)查看设置安全认证模式①打开对象资源管理器。
②用右键单击要设置认证模式的服务器,从快捷菜单中选择“属性”选项,则出现SQL Server 属性对话框。
5)查询编辑器的使用。
①选择要执行的数据库“master”。
②在编辑器中输入以下语句,注意观察录入文本的颜色。
SELECT * FROM sysobjects WHERE name='sysrowsets'③使用查询菜单的“执行”命令,执行SQL脚本。
④将SQL脚本以文件名SQL02-01.SQL保存。
6)创建和使用链接服务器。
①在d:\samples上建立mysheet.xls文件,输入数据。
②在查询编辑器中输入【例2-2】的例子。
③用Windows本地用户定义登录映射。
④执行查询⑤用SQL Server本地用户定义登录映射。
⑥执行查询。
7)分离用户数据库,然后在附加进系统。
实验内容031)用对象资源管理器创建数据库数据库名:xmgl数据文件1的逻辑名为:xmgl1,物理名为:xmgl1.mdf,存放在“D:\xmgl”目录下,初始大小为:1 MB,增长方式为自动增长,每次增加1MB。
数据文件2的逻辑名为:xmgl2,物理名为:xmgl2.ndf,存放在与主数据文件相同的目录下;文件大小为3MB;增长方式为自动增长,每次增加10%。
日志文件1的逻辑名为:xmrz1,物理名为:xmrz1.ldf,存放在“D: \xmrz”目录下,初始大小为:1MB,增长方式为自动增长,每次增加10%。
①右击对象资源管理器中的“数据库”项;②在弹出的快捷菜单中选择“新建数据库”。
2)用对象资源管理器查看和修改数据库①在对象资源管理器里展开“数据库”;②选定“xmgl”数据库,右击即可进入“xmgl”数据库属性界面进行查看和修改。
3)用SQL命令创建数据库,数据库要求同上。
①进入查询编辑器②输入以下程序USE masterGOIF EXISTS(SELECT * FROM sysdatabases WHERE name='xmgl')DROP databanse xmglGOcreate database xmglon primary(name= xmgl1,filename='d:\xmgl\xmgl1.mdf',size=1,filegrowth=1),(name= xmgl2,filename='d:\xmgl\xmgl2.ndf',size=3,filegrowth=10%)log on(name= xmrz1,filename='d:\xmrz\xmrz1.ldf',size=1,filegrowth=10%)3)用SQL命令修改数据库。
在xmgl增加一个名为“xmgl3”的数据文件,在“F:\xmgl”目录下增加,文件名为“xmgl3.ndf”,初始大小为3MB,增长方式为自动增长,每次增加15%。
删除“xmgl2”。
①进入查询编辑器②输入以下程序alter database xmgladd file(name= xmgl3, filename='F:\xmgl\xmgl3.ndf',size=3,filegrowth=15%)将数据库“xmgl”中的文件xmgl2和刚增加的xmgl3删掉。
①进入查询编辑器②输入以下程序alter database xmgl remove file xmgl2alter database xmgl remove file xmgl34)删除数据库读者自己可以创建另外一个数据库,用企业管理器和SQL命令“DROP database 数据库名”分别练习。
实验内容041)创建表①使用对象资源管理器创建完成本书第1章五个表的创建,参看本章实例。
②使用T-SQL语句创建有一个项目管理(xmgl)数据库,现有四张表,分别是部门表(部门号,部门名,部门电话,部门地址,部门人数);员工表(员工号,姓名,性别,出生年月,技术职称,工资,所在部门号);项目表(项目编号,项目名称,所在地方,项目类型);员工参与项目(员工号,项目编号,职责)。
其中有下划线的字段为关键字,斜字的字段是外关键字。
除工资为数值类型、出生年月为日期类型外,其余字段均为字符类型。
2)从sysobjects、sysindexes和syscolumns,sysrefrences表中查看关于上述创建的表的信息。
3)使用对象资源管理器定义下面的约束。
①员工号是四位数字串,其中第一位和最后一位是取1-9之间的数字,其他是0-9。
②项目编号是以字母J开始的其它是数字的4位字符串。
③约束性别的取值为…男‟、…女‟,且非空,缺省是‘男’。
④约束电话号码的格式:以8892开始的,第5位取234中的一个,其它是任意数字的8位数字串。
4)使用SQL语言增加修改部分表及字段①在部门表中增加部门领导字段(注意和员工号同域);在项目表中增加项目主管字段(注意和员工号同域);并考虑相应的外键约束。
②在员工表中增加技术职称和工资字段,其中工资字段为数值类型。
③在项目表中增加开工日期和完工日期字段,类型为日期类型。
④增加约束工程开工日期小于计划完工日期。
⑤修改部门人数字段类型为整型。
⑥删除项目表中的项目类型字段。
实验内容051)调出第4章实验创建的四个表。
方法:附加XMGL数据库或运行创建4个表的SQL语句。
2)用SQL增加数据语句输入四个表中数据。
其中部门表不得少于5个,员工表不得少于10个,项目表不得少于10个,员工参与项目的情况表不得少于20个。
注意:输入数据时应先输入主表数据,再输入有外键的数据;同时注意各表已经定义约束条件。
3)设计查询语句并在查询编辑器中进行查询。
①求参加某个项目的员工姓名。
②查询某个职工所参加的项目的项目号,项目名称以及项目所在地方。
③查询参与了所有项目的员工姓名和员工所在的部门。
④查询没有参与任何一个项目的员工姓名和所在部门。
⑤查询所有部门都有员工参与的项目。
⑥查询参加了在上海的项目的所有职工的编号、姓名和所在部门。
⑦列出每个部门的平均工资、最高工资、最低工资,工资合计,以及整个单位职工的平均工资总计。
⑧对所有项目主管的工资增加10%。
实验内容061)使用对象资源管理器创建、管理索引①为员工表创建一个索引名为“emp_id”的唯一性非聚集索引,索引关键字是“员工号”,填充因子80 % 。
②重命名索引,将索引“emp_id”重命名为“员工表_员工号”。
③删除索引“员工表_员工号”。
2)使用T-SQL语句创建、管理索引①为员工表创建一个索引名为“emp_id”的唯一性非聚集索引,索引关键字是“员工号”,填充因子80 % 。
②重命名索引,将索引“emp_id”重命名为“员工表_员工号”。
③为员工参与项目表创建一个索引名为“员工_项目_index”的非聚集复合索引,索引关键字为“员工号”,升序,项目编号,降序,填充因子50%。
④删除索引“员工表_员工号”和“员工_项目_index”。
3)索引前后的执行计划①删除员工表中员工号上的主键。
按员工姓名和项目名称查询对应的职责,然后观察执行计划信息,计算总的I/O和CPU开销。
(员工表和员工参与项目表中的员工号都没有索引)②为员工参与项目表创建一个索引名为“员工参与项目_员工号”的非聚集索引,索引关键字为“员工号”,升序;按员工姓名和项目名称查询对应的职责,然后观察执行计划信息,计算总的I/O和CPU开销。
(员工表中员工号没索引,员工参与项目表中的员工号有非聚集索引)③重建员工表中员工号上的主键,删除“员工参与项目_员工号”的非聚集索引。
按员工姓名和项目名称查询对应的职责,然后观察执行计划信息,计算总的I/O和CPU开销。
(员工表中员工号有聚集索引,员工参与项目表中的员工号没有非聚集索引)④为员工参与项目表创建一个索引名为“员工参与项目_员工号”的非聚集索引,索引关键字为“员工号”,升序。
按员工姓名和项目名称查询对应的职责,然后观察执行计划信息,计算总的I/O和CPU开销。
(员工表中员工号有聚集索引,员工参与项目表中的员工号有非聚集索引)实验内容071)比较自动事务模式和显式事务模式执行SQL的不同。
①以自动事务模式执行下面SQL语句insert into员工表values ('2011','杨阳','男','1990-07-20', '销售员',3800,'1004')--注意部门号'1004'必须是部门表里有的部门号,即要满足外键约束。
select times=1,*from员工表update员工表set工资=4000 where员工号='2011'select times=2,*from员工表delete from员工表where员工号='2011'select times=3,*from员工表②以显式事务模式执行SQL语句--进入显式事务模式begin transaction--插入数据insert into员工表values ('2011','杨阳','男','1990-07-20', '销售员',3800,'1004')select times=4,*from员工表--执行提交操作commit transactiongoselect times=5,*from员工表begin transaction--修改数据update员工表set工资=4000 where员工号='2012'select times=6,*from员工表--执行回退操作rollback transactiongoselect times=7,*from员工表begin transaction--删除数据delete from 员工表where员工号='2012'select times=8,*from员工表--执行回退操作rollback transactiongoselect times=9,*from员工表2)对员工表结构进行修改,增加最高学历和毕业院校字段,如果成果提交,否则取消。