首页 > 其他分享 >5.13

5.13

时间:2024-06-05 09:23:41浏览次数:14  
标签:BEGIN END grade 5.13 sc cno GO

数据库实验报告三

-- 创建数据库角色
CREATE ROLE [20224082-role]; GO
-- 将用户添加到角色

ALTER ROLE [20224082-role] ADD MEMBER [20224082-user];

GO

 

use students

 

go

 

grant update on Student(Sname,Ssex,Sage) to [20224074-user]

 

go

grant select on Student to [20224074-role];
 
grant select on Course to [20224074-role];
 
grant select on SC to [20224074-role];
拒绝自己创建的角色拥有sc表中grade的修改权限。
Deny  update on SC(grade) to  [20224074-role]

 4.7.1用管理器创建触发器实现如下安全性和完整性:定义 course 表中 credit 属性为“3”的缺省。

create trigger dbo.st1

 

on [dbo].[Course]

 

after insert,update

 

as

 

begin

 

set nocount on;

 

update Course set Ccredit=3 from Course

 

join SC on SC.Cno=Course.Cno

 

where Sno in(select Sno from inserted where Cno=null)

 

end

 

go

4.7.2建立 course 与 sc 表间来维护参照完整性而使用的一个级联删除触发器、一个级联修改触发器和一个受限插入触发器。

-- 级联删除触发器

CREATE TRIGGER trg_CascadeDelete ON course

AFTER DELETE

AS

BEGIN

    DELETE FROM sc WHERE cno IN (SELECT cno FROM DELETED);

END;

GO

 

-- 级联修改触发器

CREATE TRIGGER trg_CascadeUpdate ON course

AFTER UPDATE

AS

BEGIN

    IF UPDATE(cno)

    BEGIN

        DECLARE @OldCno INT, @NewCno INT;

        SELECT @OldCno = cno FROM DELETED;

        SELECT @NewCno = cno FROM INSERTED;

        UPDATE sc SET cno = @NewCno WHERE cno = @OldCno;

    END;

END;

GO

 

-- 受限插入触发器

CREATE TRIGGER trg_RestrictInsert ON sc

INSTEAD OF INSERT

AS

BEGIN

    IF NOT EXISTS (SELECT 1 FROM course WHERE cno IN (SELECT cno FROM INSERTED))

    BEGIN

        RAISERROR('Invalid course number', 16, 1);

        ROLLBACK TRANSACTION;

    END

    ELSE

    BEGIN

        INSERT INTO sc (sno, cno, grade)

        SELECT sno, cno, grade FROM INSERTED;

    END

END;

GO

对“students 数据库”编写存储过程,完成下面功能:

4.8.1成绩 60 分以下的人数;

4.8.2统计给定 cno 的课程的平均成绩,并返回平均成绩;

4.8.3将 sc 表中 grade 从百分制改为等级制(5、4、3、2、1)。即 0-20 分为 1,21-40

为 2,4 1-60 为 3,61-80 为 4,81-100 为 5。

-- 统计成绩60分以下的人数

CREATE PROCEDURE CountLowGrades

AS

BEGIN

    SELECT COUNT(*) AS LowGradeCount

    FROM sc

    WHERE grade < 60;

END;

GO

 

-- 统计给定cno课程的平均成绩

CREATE PROCEDURE GetAverageGrade

    @cno INT

AS

BEGIN

    SELECT AVG(grade) AS AverageGrade

    FROM sc

    WHERE cno = @cno;

END;

GO

 

-- 将百分制成绩改为等级制

CREATE PROCEDURE ConvertGradesToScale

AS

BEGIN

    UPDATE sc

    SET grade = CASE

        WHEN grade BETWEEN 0 AND 20 THEN 1

        WHEN grade BETWEEN 21 AND 40 THEN 2

        WHEN grade BETWEEN 41 AND 60 THEN 3

        WHEN grade BETWEEN 61 AND 80 THEN 4

        WHEN grade BETWEEN 81 AND 100 THEN 5

        ELSE grade

    END;

END;

GO

标签:BEGIN,END,grade,5.13,sc,cno,GO
From: https://www.cnblogs.com/wcy1111/p/18232259

相关文章

  • 2024.5.13(周一)总结
    【题目描述】假设一段楼梯共n(n>1)个台阶,小朋友一步最多能上3个台阶,那么小朋友上这段楼梯一共有多少种方法。【练习要求】请给出源代码程序和运行测试结果,源代码程序要求添加必要的注释。【输入格式】在一行中输入楼梯台阶的数目n。【输出格式】输出小朋友上这段楼梯的方法数。【......
  • 2024.05.13
    所花时间(包括上课): 2 h左右代码量(行):  200  左右搏客量(篇):1了解到的知识点: 组合式API备注(其他): <!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><linkrel="icon"href="/favi......
  • 上周热点回顾(5.13-5.19)
    热点随笔:· 一个不知名的开源项目可以带来多少收入 (NocoBase)· 博客园商业化之路-众包平台:500位驭码好汉,等你来发单挑战 (博客园团队)· C#应用的欢迎界面窗体方案-开源研究系列文章 (lzhdim)· 3个好玩的前端开源项目「GitHub热点速览」 (削微寒)· C#的关于窗体......
  • 5.13
    IPv6不使用NAT技术实际上,针对IPv6的NAT(NetworkAddressTranslation,是指网络地址转换)并不存在公开的标准规范。虽然有一个名为NAT66的草案提议,但至今并未转化为现实标准。之所以在IPv6中不需要NAT,是因为理论上地球的每个设备都可以有一个独立的全球可访问的地址。开......
  • Scrum冲刺7--5.13
    Scrum冲刺7--5.13这个作业属于哪个课程软件工程这个作业要求在哪里团队项目这个作业的目标进行敏捷冲刺,熟悉团队合作开发前端仓库前端后端仓库后端每次冲刺日志索引时间博客5.7Day1ᕙ(`▿´)ᕗ5.8Day2ᕙ(•ູ॒•)ᕘ5.9Day3(˚......
  • 5.13
    当在主屏幕创建工厂时funLoginScreen(viewModel:LoginViewModel=viewModel(factory=LoginViewModelProvider.Factory))下面这段代码要封装在一个函数中并以另一个函数作为一个中介置于为什么还不知道是慢慢试出来的funLoginContent(form:LoginAndReg......
  • 高一下三调模拟赛5.13(附关于二分图匈牙利建边的详细思考)
    前言注:本篇为知识性内容,A题附详解关于匈牙利算法求最大独立子集难以理解的建边问题的思考,若有不当之处感谢指出。暂时只写了A篇题解,以供帮助大家理解相关问题,剩余题解会进行补充。又是小集训的一周,总要伴随着模拟赛...还是五道题目:A.攻击装置B.循环C.漫步D.穿越E.结......
  • 5.13 模拟赛题解(没写完)
    T1P4304[TJOI2013]攻击装置快进到HZOI2023超越HZOI2020(人均场切了紫)考虑将棋盘黑白染色成这个样子容易发现相同颜色的点直接一定没有冲突,满足二分图的性质,需要求出最小点覆盖,所以直接按冲突建好双向边,从\(1\)到\(n^2\)节点跑最大匹配即可。设求出的最大匹配为\(......
  • 云原生周刊:Kubernetes Grafana 看板更新 | 2024.5.13
    开源项目推荐ChartTestingChartTesting是用于测试Helm图表的工具。它旨在用于对拉取请求进行lint和测试。它会自动检测针对目标分支更改的图表。ClusterpediaClusterpedia是一个多集群的百科全书,用于同步、搜索和简单控制多集群资源。Clusterpedia可以与多个集群同......
  • 力扣1553 2024.5.13
    原题网址:此处为链接个人难度评价:1700分析:虽然不知道为什么贪心不对,但总之贪心不对。数据如此大也难以DP,那么只有搜索了。显然有一眼可得的搜索记忆化:记忆当只剩下k个果时还需要几天。值得一提的是,本代码实际上可能并不是一个正解代码,其可能无法在整数域上保证所有答案正确,但在......