五、使用T-SQL语句完成以下操作 1.创建视图v_1,存放不及格同学的姓名、学号、课程编号、成绩 2.创建函数f_info,根据学号显示该同学的总分,调用函数,用200801同学验证 3.创建存储过程p_score,根据学号,返回该学生的平均分,并且执行存储过程,用200801同学验证 4.创建登录账“u2”,设置密码为“123456”,设置默认数据库为“student”。并创建数据库用户“u2”,使其只具有查看xxda表数据的权限。 5.对数据库student创建备份设备student_bf,并对数据库进行完整备份。修改xxda表数据,将刘林的总学分改为65分,再对数据库进行还原,查看xxda的数据变化。
时间: 2024-03-25 07:39:51 浏览: 64
1.创建视图v_1,存放不及格同学的姓名、学号、课程编号、成绩:
```sql
CREATE VIEW v_1 AS
SELECT s.name, s.student_id, c.course_id, sc.score
FROM student s, course c, score sc
WHERE s.student_id = sc.student_id AND c.course_id = sc.course_id AND sc.score < 60
```
2.创建函数f_info,根据学号显示该同学的总分,调用函数,用200801同学验证:
```sql
CREATE FUNCTION f_info (@student_id CHAR(8))
RETURNS INT
AS
BEGIN
DECLARE @sum INT
SELECT @sum = SUM(score) FROM score WHERE student_id = @student_id
RETURN @sum
END
-- 调用函数
SELECT dbo.f_info('200801')
```
3.创建存储过程p_score,根据学号,返回该学生的平均分,并且执行存储过程,用200801同学验证:
```sql
CREATE PROCEDURE p_score @student_id CHAR(8), @avg_score FLOAT OUTPUT
AS
BEGIN
SELECT @avg_score = AVG(score) FROM score WHERE student_id = @student_id
END
-- 执行存储过程
DECLARE @avg_score FLOAT
EXEC p_score '200801', @avg_score OUTPUT
SELECT @avg_score
```
4.创建登录账“u2”,设置密码为“123456”,设置默认数据库为“student”。并创建数据库用户“u2”,使其只具有查看xxda表数据的权限:
```sql
-- 创建登录账号
CREATE LOGIN u2 WITH PASSWORD = '123456', DEFAULT_DATABASE = student
-- 创建数据库用户
USE student
CREATE USER u2 FOR LOGIN u2
-- 给用户授予数据表查看权限
GRANT SELECT ON xxda TO u2
```
5.对数据库student创建备份设备student_bf,并对数据库进行完整备份。修改xxda表数据,将刘林的总学分改为65分,再对数据库进行还原,查看xxda的数据变化:
```sql
-- 创建备份设备并进行完整备份
USE master
EXEC sp_addumpdevice 'disk', 'student_bf', 'C:\backup\student.bak'
BACKUP DATABASE student TO student_bf
-- 修改数据
USE student
UPDATE xxda SET total_credit = 65 WHERE name = '刘林'
-- 还原数据库
USE master
RESTORE DATABASE student FROM student_bf WITH REPLACE
-- 查看数据
USE student
SELECT * FROM xxda WHERE name = '刘林'
```
通过还原操作,可以发现刘林的总学分已经恢复到修改前的分数。
阅读全文