一、开发环境

DBMS: Microsoft SQL Server 2019 (64- bit)
可视化管理工具: Microsoft SQL Server
Management Studio- 18.10

二、代码、注释及测试

第三题

--创建客户表并且添加数据
create table customers(
cnum varchar(5) primary key, --将客户编号设置为
主键,使其具有完整性
cname varchar(5) not null, --非空约束(下同)
lname varchar(5) not null,
cadres varchar(30) not null,
cpos_code varchar(10) not null,
lphone varchar(12) not null
);
insert into customers
--values('0001','叶民','Yeman','桃园公寓
','214000','17851313918')
--values('0002','Lily','Lily','gym','214026','1525188390
8')
values('0003','Tom','Tom','KFC','214142','15253343
900');
--创建存储过程
create proc get_cus_info (@cpos varchar(6)) --有一个 in 输入的局部变量
as
begin
--可以直接获取满足条件的结果,concat 单
行函数为拼接字符串功能,like 模糊查询
select * from customers where cpos_code like
(concat('%',@cpos))
end
--执行存储过程
--将'124'作为 in 参数输入,即获取邮编尾号是'142'的客户信息
exec get_cus_info '142'

第四题

--创建学生表并添加测试数据
create table s(
snum varchar(4) primary key, --设置学号为主键,
使其具有完整性
sname varchar(5) not null, --非空约束
age int,
dept varchar(15)
);
insert into s
--values('001','张三',22,'物联网工程学院');
--values('002','王四',21,'计算机学院');
--values('003','李五',19,'生命工程学院');
values('004','赵六',19,'医学院');
--创建课程表并添加测试数据
create table c(
cnum varchar(4) primary key, --设置课程号为主
键,使其具有完整性
cname varchar(10) not null, --非空约束(下同)
teacher varchar(5) not null
);
insert into c
--values('C1','Java','杨均')
--values('C2','数据库','马振')
--values('C3','计算方法','江楠')
values('C4','数据结构','陈帆')
--创建选课表并添加测试数据
create table sc(
snum varchar(4),
cnum varchar(4),
score int,
foreign key (snum) references s(snum), --设置外键
约束,该表中的 snum 需要在 s 表中存在
foreign key (cnum) references c(cnum), --设置外
键约束,该表中的 cnum 需要在 c 表中存在
unique (snum,cnum) --设置(snum,cnum)组合
唯一,即该表中不能存在 snum 和 cnum 都相同的
数据
);
insert into sc
--values('001','C1',98)
--values('002','C1',89)
--values('003','C1',93)
--values('001','C2',92)
--values('002','C2',98)
--values('003','C2',96)
--values('004','C3',96)
--创建触发器
create trigger check_legalsc
on sc --基于 sc 选课表
after insert --在添加后触发
as
declare @curc_count varchar(4)
--获取添加的课程编号
select @curc_count = cnum from inserted
declare @curs_snum varchar(4)
--获取添加的学生学号
select @curs_snum = snum from inserted
--检查学号是否存在 s 表
if @curs_snum in (select snum from s)
begin
--检查课程编号是否存在 c 课程表且未
被选满(这里设置满为 2)
if 2 >= (select COUNT(*) from sc where
cnum = @curc_count) and @curc_count in (select
cnum from c)
begin
select '恭喜你,选课成功!' as '结
果'
end
else
begin
--回滚﹐避免加入
rollback transaction
select '对不起,该课程人数已
满!' as '结果'
end
end
else
begin
rollback transaction --回滚﹐避免加入
select '你好,你没有选改课的权限!'
as '结果'
end
--测试触发器
--①成功情况
insert into sc(snum,cnum)
values('001','C3')
--②失败情况 1:课程已满
insert into sc(snum,cnum)
values('004','C1')
--③失败情况 2:学生学号不在 s 表中
insert into sc(snum,cnum)
values('005','C4')

三、小结

①存储过程可以一次编译多次使用。存储过程只在创建时进行编译,之后的使用都不需要重新编译,这就提升了 SQL 的执行效率。
②可以减少开发工作量。将代码封装成模块,实际上是编程的核心思想之一,这样可以把复杂的问题拆解成不同的模块,然后模块之间可以重复使用,在减少开发工作量的同时,还能保证代码的结构清晰。
③存储过程的安全性强。我们在设定存储过程的时候可以设置对用户的使用权限,这样就和视图一样具有较强的安全性。
④可以减少网络传输量。因为代码封装到存储过程中,每次使用只需要调用存储过程即可,这样就减少了网络传输量。
⑤良好的封装性。在进行相对复杂的数据库操作时,原本需要使用一条一条的 SQL 语句,可能要连接多次数据库才能完成的操作,现在变成了一次存储过程,只需要连接一次即可。
⑥可移植性差。存储过程不能跨数据库移植,比如在 MySQL、Oracle 和 SQL Server 里编写的存储过程,在换成其他数据库时都需要重新编写。
⑦调试困难。只有少数 DBMS 支持存储过程的调试。对于复杂的存储过程来说,开发和维护都不容易。
⑧存储过程的版本管理很困难。比如数据表索引发生变化了,可能会导致存储过程失效。我们在开发软件的时候往往需要进行版本管理,但是存储过程本身没有版本控制,版本迭代更新的时候很麻烦

江南大学物联网工程学院数据库课程实验二作业2实验报告相关推荐

  1. 江南大学物联网工程学院数据库课程实验三作业3vb.net实验报告

    一.开发环境 语言环境:Microsoft.NET Framework 4.6 SDK IDE:Microsoft Visual Studio Community 2015 二.代码及配置 1.For ...

  2. 传感与检测技术,光电二极管和光敏电阻的特性研究实验报告,江南大学物联网工程学院自动化

    江南大学物联网工程学院传感与检测技术<光电二极管和光敏电阻的特性研究实验报告>分享,包括实验目的.实验仪器设备.实验原理及数据分析和思考与总结.仅供参考借鉴.

  3. 走访江南大学物联网工程学院

    2012年3月19日,电信学院书记张增年.副院长王遵义带队,与物联网新专业建设小组成员吕昂老师.施炯老师共同走访了江南大学物联网工程学院,学习国内第一批物联网工程专业兄弟院校的人才培养模式.专业实验室 ...

  4. 数据库系统实验二作业-SQL实验报告

    实验二 交互式SQL 1(DDL语言实践) 1 实验目的 a) ****熟悉数据库的交互式SQL工具****.如:MySQL 查询分析器. b) *掌握SQL语言的DDL子语言,在MySQL环境下实现 ...

  5. 电机与拖动单相变压器实验,江南大学物联网工程学院,实验报告

  6. 电力电子单相交流调压电路实验,江南大学物联网工程学院,实验报告

    单向交流调压接电阻电感性负载波形图:

  7. 江南计算机研究所招聘物联网学院,江南大学:物联网工程学院培育物联网精英人才...

    今年,5G网络将正式上线,而5G技术能实现"万物互联",带领人类进入物联网时代!随着物联网大时代的到来,未来整个社会对物联网人才的需求将持续增加,物联网人才的培养也备受全国各大高校 ...

  8. 吉大计算机物联网工程学院,许德智

    一.个人简介 许德智博士,1985年出生,江苏南通人人.2013年12月南京航空航天大学控制理论与控制工程专业博士研究生毕业,获得工学博士学位.2016年破格晋升副教授.现任江南大学物联网学院副教授. ...

  9. 2021年信息学部物联网工程学院学生科协算法科普

    2021年信息学部物联网工程学院学生科协算法科普 一.什么是算法 二.算法重要吗 三.算法有好坏吗 四.常用算法介绍 1.查找算法 概述 顺序查找 二分查找 2.排序算法 概述 冒泡排序 选择排序 快 ...

最新文章

  1. String定义字符串,实际操作
  2. Oracle 同义词、DBLINK、表空间的使用
  3. python的for语句中i未被定义_python – PyLint:使用可能未定义的循环变量警告
  4. 2018-2019-2 网络对抗技术 20165320 Exp2 后门原理与实践
  5. Visual Studio 2015 前端开发工作流
  6. 计算机日常英语,计算机英语的常用句子
  7. python笔试题(一)
  8. 华佳慧科技:OSN500设备的RPLCUR性能事件
  9. 笔记本连接显示器后没有声音_外接显示器后没声音怎么回事
  10. 电脑彻底删除的文件如何恢复?
  11. 烤仔创作者联盟 | NFT是市场的下一个答案?或迎来新一轮“造福潮”
  12. 北京公交IC 卡充值地点
  13. api es7 删除所有数据_【译】ECMAScript 2016 (ES7) 新特性一览
  14. KVM - 虚机内核配置
  15. 微软Live Mail包含重大Bug,可导致用户无法登录,我已经一个多月无法登录自己的邮箱了。...
  16. Java面向对象设计模式
  17. 爆款营销打破空间局限,新商云提高门店坪效
  18. linux 服务器 病毒,Linux 服务器中木马病毒及清除过程
  19. 3D常用术语(名词解释)
  20. 总订单量47600套!单品破35000套,德施曼双十一全网预售第一

热门文章

  1. 随机数生成器c语言,句子随机生成器-怎么用C语言生成随机数
  2. @builder注解_SpringBoot 整合SpringSecurity示例实现前后分离权限注解+JWT登录认证
  3. 众智日照分析软件_飞时达CAD日照分析计算软件FastSUN V14.0.1发布升级
  4. Java对象转换成JSON对象/JSON对象转换成JSON字符串/JSON字符串转换成JS对象
  5. 使用JDBC连接数据库(MySQL)的源代码
  6. html ajax请求jsp,JSP+jquery使用ajax方式调用json的实现方法
  7. python中形参*args和**kwargs简述
  8. mysql优化 运维_MySQL运维---MySQL优化
  9. 【H.264/AVC视频编解码技术】序章【编码的前世今生】
  10. C语言指南-数组之谜