数据库实验五(SQL Server SSMS)

2023-10-11 15:50

本文主要是介绍数据库实验五(SQL Server SSMS),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

前言

  • 所有数据和sql都是博主本人所写,仅供大家参考。
  • 本实验不算难,建议先独自动手写sql,遇到困难时可以将我的sql作为参考。
  • 建议好好练习sql server中触发器的创建,熟悉相关的语法。

实验内容

在这里插入图片描述

运行环境

  • SQL Server 2022
  • SQL Server Management Studio Management Studio 19

本实验的全部SQL脚本

-- (1) 在student表中,建立按照sbirth升序的索引birthdayIDX。
create index birthdayIDX on student(sbirthday);-- (2) 在SC表中,建立按照学号升序和课程号降序的唯一性索引scIDX。
create unique index scIDX on sc(sno asc, cno desc);-- (3) 在course表中,建立一个按照课程名升序的聚簇索引cnameIDX。
create clustered index cnameIDX on course(cname);-- 额外:在course表中,建立一个按照课程名升序的非聚簇索引cnameIDX。
create nonclustered index cnameIDX on course(cname);-- (4) 删除索引birthdayIDX。
drop index student.birthdayIDX;go -- 避免“批处理”警告-- (5) 建立一个所有计算机学院学生的学号、
-- 选修课程号以及平均成绩的视图COMPUTE_AVG_GRADE。
Create view COMPUTE_AVG_GRADE AS
SELECT student.sno, course.cno, AVG(grade) '平均成绩' FROM student, course, sc
WHERE student.sno = sc.sno AND course.cno = sc.cno 
AND student.sdept='计算机' GROUP BY student.sno, course.cno;go -- 避免“批处理”警告go -- 避免“批处理”警告-- (6) 建立一个所有学生课程成绩的视图STUDENT_GRADE。
-- 视图中包括:学号、姓名、学院、课程名字、学分、成绩等信息。
create view STUDENT_GRADE as
select student.sno, sname, sdept, cname, ccredit, grade from student, course, sc
where student.sno = sc.sno and course.cno = sc.cno;go -- 避免“批处理”警告-- (7) 通过视图STUDENT_GRADE,将“王敏”的名字
-- 修改为“汪敏”,是否可以实现,请说明原因。 
-- 答:可以。STUDENT_GRADE视图里包含所有主属性,因此该视图可以被更新。
update STUDENT_GRADE set sname = '汪敏' where sname = '王敏';go -- 避免“批处理”警告-- (8) 建立一个至少选修了3门课及3门课以上
-- 的学生信息的视图SC_FOUR,包括学号、姓名、学院、课程号。
create view SC_FOUR as
select sc.sno, student.sname, student.sdept, sc.cno 
from sc, student, course where student.sno = sc.cno 
and course.cno = sc.cno and sc.sno in (select sno from sc tmp group by tmp.snohaving count(tmp.cno) >= 3
);go -- 避免“批处理”警告-- (9) 定义一个触发器credit_TRIGER,当为course表插入新的课程信息时,
-- 若学分大于5分,自动修改为5分。
-- (inserted 表用于存储 insert 和 update 语句所影响的行的副本。)
create trigger credit_TRIGER on course after insert
as begin update course set ccredit = 5
where ccredit > 5 and cno = (select top 1 inserted.cno from inserted
) end;go -- 避免“批处理”警告-- (10) 定义一个触发器,当SC表的成绩发生变动时,就自动在
-- 成绩变化表sc_log中增加一条新的记录,该新记录包括:操作者名称、操作日期、操作类型。-- 创建成绩变化表sc_log(必须要先于下面触发器执行)
create table sc_log(operator_name varchar(20) not null,operator_date datetime not null,operator_type varchar(10) not null
);go -- 避免“批处理”警告create trigger trigger_sc on sc after update
as begininsert into sc_log(operator_name, operator_date, operator_type)values(suser_sname(), getdate(), 'update');
end;

结尾

如果对你有帮助的话,可以点赞、评论、收藏支持一下。

这篇关于数据库实验五(SQL Server SSMS)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/189136

相关文章

mysqld_multi在Linux服务器上运行多个MySQL实例

《mysqld_multi在Linux服务器上运行多个MySQL实例》在Linux系统上使用mysqld_multi来启动和管理多个MySQL实例是一种常见的做法,这种方式允许你在同一台机器上运行多个... 目录1. 安装mysql2. 配置文件示例配置文件3. 创建数据目录4. 启动和管理实例启动所有实例

将sqlserver数据迁移到mysql的详细步骤记录

《将sqlserver数据迁移到mysql的详细步骤记录》:本文主要介绍将SQLServer数据迁移到MySQL的步骤,包括导出数据、转换数据格式和导入数据,通过示例和工具说明,帮助大家顺利完成... 目录前言一、导出SQL Server 数据二、转换数据格式为mysql兼容格式三、导入数据到MySQL数据

MySQL分表自动化创建的实现方案

《MySQL分表自动化创建的实现方案》在数据库应用场景中,随着数据量的不断增长,单表存储数据可能会面临性能瓶颈,例如查询、插入、更新等操作的效率会逐渐降低,分表是一种有效的优化策略,它将数据分散存储在... 目录一、项目目的二、实现过程(一)mysql 事件调度器结合存储过程方式1. 开启事件调度器2. 创

SQL Server使用SELECT INTO实现表备份的代码示例

《SQLServer使用SELECTINTO实现表备份的代码示例》在数据库管理过程中,有时我们需要对表进行备份,以防数据丢失或修改错误,在SQLServer中,可以使用SELECTINT... 在数据库管理过程中,有时我们需要对表进行备份,以防数据丢失或修改错误。在 SQL Server 中,可以使用 SE

mysql外键创建不成功/失效如何处理

《mysql外键创建不成功/失效如何处理》文章介绍了在MySQL5.5.40版本中,创建带有外键约束的`stu`和`grade`表时遇到的问题,发现`grade`表的`id`字段没有随着`studen... 当前mysql版本:SELECT VERSION();结果为:5.5.40。在复习mysql外键约

SQL注入漏洞扫描之sqlmap详解

《SQL注入漏洞扫描之sqlmap详解》SQLMap是一款自动执行SQL注入的审计工具,支持多种SQL注入技术,包括布尔型盲注、时间型盲注、报错型注入、联合查询注入和堆叠查询注入... 目录what支持类型how---less-1为例1.检测网站是否存在sql注入漏洞的注入点2.列举可用数据库3.列举数据库

数据库oracle用户密码过期查询及解决方案

《数据库oracle用户密码过期查询及解决方案》:本文主要介绍如何处理ORACLE数据库用户密码过期和修改密码期限的问题,包括创建用户、赋予权限、修改密码、解锁用户和设置密码期限,文中通过代码介绍... 目录前言一、创建用户、赋予权限、修改密码、解锁用户和设置期限二、查询用户密码期限和过期后的修改1.查询用

Mysql虚拟列的使用场景

《Mysql虚拟列的使用场景》MySQL虚拟列是一种在查询时动态生成的特殊列,它不占用存储空间,可以提高查询效率和数据处理便利性,本文给大家介绍Mysql虚拟列的相关知识,感兴趣的朋友一起看看吧... 目录1. 介绍mysql虚拟列1.1 定义和作用1.2 虚拟列与普通列的区别2. MySQL虚拟列的类型2

Window Server创建2台服务器的故障转移群集的图文教程

《WindowServer创建2台服务器的故障转移群集的图文教程》本文主要介绍了在WindowsServer系统上创建一个包含两台成员服务器的故障转移群集,文中通过图文示例介绍的非常详细,对大家的... 目录一、 准备条件二、在ServerB安装故障转移群集三、在ServerC安装故障转移群集,操作与Ser

mysql数据库分区的使用

《mysql数据库分区的使用》MySQL分区技术通过将大表分割成多个较小片段,提高查询性能、管理效率和数据存储效率,本文就来介绍一下mysql数据库分区的使用,感兴趣的可以了解一下... 目录【一】分区的基本概念【1】物理存储与逻辑分割【2】查询性能提升【3】数据管理与维护【4】扩展性与并行处理【二】分区的