SQLSEREVER测试题(下)
18 以下作业皆以*.sql文件存储于c:\homework目录中
实践1:创建和维护SQL Server数据库
(1) 使用下表提供的值,创建数据库ClassNorthwind
参 数
值
数据库名称
ClassNorthwind
数据库文件名
ClassNorthwind_Data
位置
C:\data
初始大小
25MB
文件组
Primary
文件增长
1MB
最大文件长度
100MB
事务日志文件名称
ClassNorthwind_Log
位置
C:\data
初始大小
15MB
文件增长
1MB
最大文件长度
30MB
(2) 使用sp_helpdb存储过程浏览有关数据库ClassNorthwind的信息
(3) 修改数据库属性
l 编写和执行将ClassNorthwind事务日志文件的最大文件长度增加到50MB的语句
l 编写和执行向数据库ClassNorthwind添加一个事务日志文件ClassNorthwind_LogApp,文件属性如下:
位置
C:\dataapp
初始大小
20MB
文件增长
1MB
最大文件长度
40MB
实践2:创建和修改SQL Server数据库的表
(1) 创建数据库ClassNorthwind中的雇员表Employees、雇员工资表wage和工资税表tax
雇员表Employees:
字 段 名 称
类 型
空 否
EmployeeID
Int,identity ,初值为1,增量为1
NOT NULL
Name
VarChar(10)
NOT NULL
Sex
Char(2)
NOT NULL
Birthdate
Date
NULL
Address
Varchar(50)
NULL
Phone
Char(13)
NULL
Remark
text
雇员工资表wage:
字 段 名 称
类 型
空 否
EmployeeID
Int
NOT NULL
Name
VarChar(10)
NOT NULL
Wage
money
NOT NULL
Putdate
Date
NOT NULL
工资税表tax:
字 段 名 称
类 型
空 否
EmployeeID
Int
NOT NULL
Name
VarChar(10)
NOT NULL
Tax
money
NOT NULL
Paydate
Date
NOT NULL
(2) 向雇员表Employees中添加列Department varchar(20) NULL
(3) 修改雇员表Employees中的列Address varchar(60)
(4) 删除雇员表Employees中的列Remark
(5) 用存储过程sp_help查看三个表的信息
(6) 向雇员表Employees中插入十个雇员信息
(7) 向雇员工资表wage中插入十个雇员相应的工资发放情况信息
(8) 向工资税表tax中插入十个雇员相应的交税情况
实践3:创建SQL Server数据库表的视图和索引
(1) 在雇员表Employees中,创建一个name和phone列上的合成索引
(2) 使用存储过程sp_helpindex Employees列出表的索引
(3) 分别查询雇员表Employees、雇员工资表wage和工资税表tax中的行数据
(4) 创建一个视图,用于检索雇员工资、税款情况,包括下列字段:
EmployeeID、Name、Sex、Wage、Putdate 、Tax、Paydate
(5) 创建一个视图,用于检索雇员工资高于1000元的雇员情况表
(6) 创建一个视图,用于检索雇员工资高于5000元的雇员情况表
实践4:查询SQL Server数据库表的信息
(1) 列出每个雇员的工资、税款情况一览表
(2) 列出工资超过1000元,而未交税的雇员
(3) 列出工资在1000元以下,不应该交税的雇员情况一览表
(4) 列出只领工资而未交税的雇员表
(5) 对以上四种情况各作一统计报告
(6) 删除三个表中的所有记录
实践5:实现SQL Server数据库的完整性
(1) 创建雇员表Employees的主关键字,列:EmployeeID
(2) 创建雇员工资表wage的外部关键字,列:EmployeeID,参考Employees的主键
(3) 创建工资税表tax的外部关键字,列:EmployeeID,参考Employees的主键
(4) 向雇员表Employees中添加关于以下列的DEFAULT约束:
name:unknown,sex:男,Address:Salt Lake,Phone:(000)00000000
(5) 向雇员表Employees中添加BirthDate列的CHECK约束:在BirthDate列中的值必须早于今天的日期
(6) 定义雇员电话号码Phone的规则:(***)********,其中*是0~9之间的数字字符
(7) 执行存储过程sp_helpconstraint浏览上面创建的约束信息
(8) 向雇员表Employees中插入十个雇员信息,并检查约束
(9) 向雇员工资表wage和工资税表tax中添加关于以下列的DEFAULT约束:
Putdate:昨天,Paydate:昨天
实践6:SQL Server数据库的高级查询
(1) 分别列出在雇员表Employees中而未领工资和未交税的男、女雇员情况
(2) 查询电话号码区号为(010)、工资大于3000的男雇员情况
(3) 查询交税最多的六名雇员情况
(4) 列出工资在前六名的,而交税并不在前六名的雇员情况
实践7:创建、执行、修改SQL Server数据库的存储过程
(1) 编写存储过程,向雇员表Employees、雇员工资表wage和工资税表tax中各插入两条记录
(2) 编写存储过程,列出工资最高的六名雇员情况
(3) 编写存储过程,查找雇员表Employees中Sex、Phone与指定值相匹配的雇员
(4) 编写存储过程,查找雇员表Employees中BirthDate在指定两个日期之间的雇员
(5) 编写存储过程,用于计算男、女雇员的平均工资,男、女雇员的人数,并输出
(6) 用存储过程sp_helptext查看上面的存储过程定义
实践8:创建和使用SQL Server数据库的触发器
(1) 创建触发器,从雇员表Employees中一次删除的记录数应不超过2条
(2) 创建触发器,当向雇员工资表wage中插入记录时,同时向工资税表tax中插入记录,工资税计算为:
Wage:1000以下,不交税;1000~5000:交税工资的1%
5000以上:交税工资的3%
(3) 创建触发器,当修改雇员工资表wage中的记录时,同时修改工资税表tax中的记录
(4) 创建触发器,当删除雇员表Employees中的记录时,同时删除雇员工资表wage和工资税表tax中的有关该雇员的所有记录
(5) 创建触发器,当修改工资税表tax中Tax列的值时,检查交税情况是否符合(2)的交税比例
(6) 测试上面创建的触发器
实践9:使用SQL Server数据库的游标
(1) 使用游标获取雇员表Employees中的记录
(2) 使用游标检查雇员工资税的交纳是否正确
实践10:使用SQL Server数据库的用户字定义函数
(1) 编写函数,按男、女雇员分类计算平均工资和合计工资
(2) 编写函数,查找雇员表Employees中Sex、Phone与指定值相匹配的雇员
(3) 编写函数,查找雇员表Employees中BirthDate在指定两个日期之间的雇员
(4) 定义数据类型mytext,向雇员表Employees中添加列Remark,其类型为mytext