现有关系数据库如下:
数据库名:教学数据库(Teacher)
教师信息表(教师编号,姓名,性别,民族,职称,身份证号) 课程信息表(课程号,课程名,标准课时数) 任课信息表(教师编号,课程号,实际课时数)
一、用SQL语言实现下列功能
1.创建数据库。
要求:数据库名为Teacher,主数据文件名为Teacher_data.MDF,存放在5\目录下,初 始值大小为2MB,增长方式为按照10%的比例增长;日志文件名为Teacher_log.LDF,存 放在d目录下,初始值大小为1MB,增长方式为按照1MB的增量增长。
2.创建教师信息表Teacherinfo,数据表的各字段属性如下表所示:
列名
数据类型
长度
属性
描述
Teacher_Id
char
6
主键
教师编号
Teacher_Name
nvarchar
8
不允许空
姓名
Sex
nchar
2
检查/
性别
Birth_Place
sqlserver备份表语句
nvarchar
20
默认值汉族
民族
Zhicheng
nvarchar
20
不允许空
职称
HId
char
16
唯一
身份证号
创建课程信息表Courseinfo,
数据表的各字段属性如下表所示:
列名
数据类型
长度
属性
描述
Course_Id
char
5
主键
课程号
Course_Name
nvarchar
20
不允许空
课程名
B_Hours
Int
检查(0~200)
标准课时数
4.创建任课信息表TCinfo,数据表的各字段属性如下表所示:
列名
数据类型
长度
属性
描述
Id
int
自动编号
Teacher_Id
char
6
外键
教师编号
Course_Id
char
5
外键
课程号
S_Hours
Int
实际课时数
5. 将下列课程信息添加到课程表中:
课号
课程名称
课时数
30001
SQL Server数据库
90
30002
数据结构
60
30003
VB程序设计
72
修改课号为30003的课程名称:Visual Basic程序设计。
删除课号为30003的课程信息。
6.在课程信息表中统计标准课时数的最大值、最小值和平均值,并使用别名。
7.检索有一门或一门以上课程实际课时数大于90的所有教师的信息,包括编号、姓名。
8.创建一个包含教师编号,教师姓名,课程号,课程名称,实际课时数的教师任课表视图 V_TCinfo。
9.从教师任课表视图中检索出所有代'SQL Server数据库技术'课程的老师姓名及其课时 数。
10.在课程信息表中统计标准课时数的最大值、最小值和平均值,并使用别名。
11.检索有一门或一门以上课程实际课时数大于90的所有教师的信息,包括编号、姓名。
12.建一个规则zhicheng_rule,并将其绑定到教师表的职称列上,规定职称取值为(‘教 授','副教授','讲师', '助教')之一。
13.创建带参数的存储过程S_Hours,实现能计算某教师代课总课时,并将值返回,执行 此存储过程:计算“郭老师”的总课时。
14.在教师信息表(Teacherinfo)上创建DELETE触发器Trigger」,实现当删除教师信 息表中的某个教师的记录时,对应任课信息表(TCinfo)中的所有有关此教师的记录都删 除。
二、在企业管理器中实现以下操作
1.将Teacher数据库中的“Courseinfo”表导出到Excel表中,字段名和数据类型保持一 致。
2.使用企业管理器为Teacher数据库设置一个SQL Server身份验证的用户账户:登录名: admin,密码:666,数据库用户名:developer,权限:可查询本数据库中所有表、视图、 内嵌表值函数的数据,并可执行所有的存储过程。
3.在企业管理器中创建一个逻辑名为“Backup_Teacher”的备份设备,放在C:\Program Files\Microsoft SQL Server\MSSQL\BACKUP\ 目录下。然后进行 Teacher 的完整数据库备 份,为该备份取名为“教学完整备份”,备份设备为“Backup_Teacher”。
一、用SQL语言实现下列功能的sql语句代码
no
参考答案
1.
create database Teacher
ON
(NAME=' teacher_Data'
'C:\teacher_data.MDF'
SIZE=2,),
LOG ON
(NAME=' teacher_Log',
'C:\teacher_log. LDF'
SIZE=1,)
COLLATE Chinese_PRC_CI_AS
GO
2.
use Teacher
go
create table Teacherinfo
(Teacher_Id char(6) primary key, Teacher_Name nvarchar(8) not null, Sex nchar(2) check(Sex in''')) Birth_Place nvarchar(20) default '汉族'not null, Zhicheng nvarchar(20) not null,
H_Id char(18) unique )
3.
create table Courseinfo (Course_Id char(5) primary key, Course_Name nvarchar(40) not null, B_Hours Int check(B_Hours between 0 and 200) )
4
create table TCinfo (ID IDENTITY(1, 1), Teacher_Id char(6) references Teacherinfo (Teacher_Id), Course_Id char(6) references Courseinfo(Course_Id), S_Hours Int
)
5.
insert Courseinfo values('10001','SQL Server 数据库',90)
insert Courseinfo values('10002','数据结构',60)
insert Courseinfo values('10003','VB 程序设计',72)
update Courseinfo
set Course_Name ='Visual Basic 程序设计'
where Course_Id ='10003'
delete Courseinfo where Course_Id ='10003'
6.
select max(B_Hours) as 最大值,min(B_Hours) as 最小 值,avg(B_Hours) as 平均值
from Courseinfo
7
select Teacher_Id,Teacher_Name
from Teacherinfo
where Teacher_Id in (select distinct Teacher_Id
from TCinfo where S_Hours >=90)
8.
create view V_TCinfo
as
select
Teacher_Id,Teacher_Name,Course_Id,Course_Name,S_Hours

from Teacherinfo,TCinfo,Courseinfo
where Teacherinfo.Teacher_Id = TCinfo.Teacher_Id
and TCinfo. Course_Id = Courseinfo. Course_Id
9.
select Teacher_Name as 教师姓名,S_Hours from V_TCinfo
where Course_Name ='SQL Server 数据库技术'
10.
use Teacher
go
create rule zhicheng_rule
as @Zhicheng in ('教授','副教授','讲师','助教') go
sp_bindrule zhicheng_rule, 'Teacherinfo.Zhicheng '
11.
create procedure S_Hours @TeacherName nvarchar(8) @SHours Int Output
as
select @SHours =sum (S_Hours) from V_TCinfo
where Teacher_Name = @TeacherName
go
execute S_Hours '郭老师'
12.
CREATE TRIGGER Sum_Hours ON dbo.Tcinfo
AFTER INSERT, UPDATE
AS
SELECT Teacher_Id, SUM(S_Hours) As 总课时数
FROM TCinfo
WHERE Teacher_Id =(SELECT Teacher_Id FROM Inserted)
GROUP BY Teacher_Id
go

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。