Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >数据库原理及应用mysql版陈业斌实验五

数据库原理及应用mysql版陈业斌实验五

作者头像
猫咪-9527
发布于 2025-05-03 10:17:20
发布于 2025-05-03 10:17:20
9400
代码可运行
举报
文章被收录于专栏:猫咪-9527猫咪-9527
运行总次数:0
代码可运行

实验五存储程序

【实验目的】

掌握存储函数、存储过程与触发器等存储程序的相关操作方法,理解存储函数、存储过程与触发器的作用。

1.实验数据如下

student 表(学生表)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
CREATE TABLE student (
    sno CHAR(5) PRIMARY KEY,
    snme VARCHAR(20) NOT NULL,        
    sdept VARCHAR(20) NOT NULL,       
    sclass CHAR(2) NOT NULL,          
    ssex CHAR(1),                     
    birthday DATE,                  
    totalcredit DECIMAL(4,1)          
);

course 表(课程表)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
CREATE TABLE course (
    cno CHAR(3) PRIMARY KEY,
    cname VARCHAR(50),       
    ctime DECIMAL(3,0),          
    credit DECIMAL(3,1) 
);

teacher 表(教师表)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
CREATE TABLE teacher (
    tno CHAR(6) PRIMARY KEY,          
    tname VARCHAR(20),               
    tsex CHAR(1),                    
    tdept VARCHAR(20)                 
);

score 表(成绩表)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
CREATE TABLE score (
    sno CHAR(5),                      
    cno CHAR(3),                      
    tno CHAR(6),                     
    grade DECIMAL(5,1),              
    PRIMARY KEY (sno, cno, tno),      
    CONSTRAINT fk_sno FOREIGN KEY(sno) REFERENCES student(sno),
    CONSTRAINT fk_cno FOREIGN KEY(cno) REFERENCES course(cno),
    CONSTRAINT fk_tno FOREIGN KEY(tno) REFERENCES teacher(tno)
);
2. 插入数据

student 表中的数据

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
INSERT INTO student VALUES('96001', '马小燕', '计算机', '01', '女', '2000/01/02', 0);
INSERT INTO student VALUES('96002', '黎明', '计算机', '01', '男', '2000/03/05', 0);
INSERT INTO student VALUES('96003', '刘东明', '数学', '01', '男', '2000/10/05', 0);
INSERT INTO student VALUES('96004', '赵志勇', '信息', '02', '男', '2000/08/08', 0);
INSERT INTO student VALUES('97001', '马蓉', '数学', '02', '女', '2001/03/04', 0);
INSERT INTO student VALUES('97002', '李成功', '计算机', '01', '男', '2001/09/10', 0);
INSERT INTO student VALUES('97003', '黎明', '信息', '03', '女', '2002/02/08', 0);
INSERT INTO student VALUES('97004', '李丽', '计算机', '02', '女', '2002/01/05', 0);
INSERT INTO student VALUES('96005', '司马志明', '计算机', '02', '男', '2001/11/23', 0);

course 表中的数据

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
INSERT INTO course VALUES('001', '数学分析', 64, 4);
INSERT INTO course VALUES('002', '普通物理', 64, 4);
INSERT INTO course VALUES('003', '微机原理', 56, 3.5);
INSERT INTO course VALUES('004', '数据结构', 64, 4);
INSERT INTO course VALUES('005', '操作系统', 56, 3.5);
INSERT INTO course VALUES('006', '数据库原理', 56, 3.5);
INSERT INTO course VALUES('007', '编译原理', 48, 3);
INSERT INTO course VALUES('008', '程序设计', 32, 2);

teacher 表中的数据

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
INSERT INTO teacher VALUES('052501', '王成刚', '男', '计算机');
INSERT INTO teacher VALUES('052502', '李正科', '男', '计算机');
INSERT INTO teacher VALUES('052503', '严敏', '女', '数学');
INSERT INTO teacher VALUES('052504', '赵高', '男', '数学');
INSERT INTO teacher VALUES('052505', '刘玉兰', '女', '计算机');
INSERT INTO teacher VALUES('052506', '王成刚', '男', '信息');
INSERT INTO teacher VALUES('052507', '马悦', '女', '计算机');

score 表中的数据

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
INSERT INTO score VALUES('96001', '001', '052503', 77.5);
INSERT INTO score VALUES('96001', '003', '052501', 89);
INSERT INTO score VALUES('96001', '004', '052502', 86);
INSERT INTO score VALUES('96001', '005', '052505', 82);
INSERT INTO score VALUES('96002', '001', '052504', 88);
INSERT INTO score VALUES('96002', '003', '052502', 92.5);
INSERT INTO score VALUES('96002', '006', '052507', 90);
INSERT INTO score VALUES('96005', '004', '052502', 92);
INSERT INTO score VALUES('96005', '005', '052505', 90);
INSERT INTO score VALUES('96005', '006', '052505', 89);
INSERT INTO score VALUES('96005', '007', '052507', 78);
INSERT INTO score VALUES('96003', '001', '052504', 69);
INSERT INTO score VALUES('97001', '001', '052504', 96);
INSERT INTO score VALUES('97001', '008', '052505', 95);
INSERT INTO score VALUES('96004', '001', '052503', 87);
INSERT INTO score VALUES('96003', '003', '052501', 91);
INSERT INTO score VALUES('97002', '003', '052502', 91);
INSERT INTO score VALUES('97002', '004', '052505', NULL);
INSERT INTO score VALUES('97002', '006', '052507', 92);
INSERT INTO score VALUES('97004', '005', '052502', 90);
INSERT INTO score VALUES('97004', '006', '052501', 85);

注:把上面的实验数据添加上再开始实验。

3.实验内容
5-1 创建存储过程 pro_fndname

存储过程 profndname 通过模糊查询学生姓名,输入一个汉字,返回所有包含该汉字的学生记录。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
delimiter ##
create procedure pro_fndname(in seach_char char(1))
begin
    select *from student where snme like concat('%',seach_char,'%');
end ##
delimiter ;
5-2 设计函数 count_credit

函数 countcredit 根据学号计算学生的总学分,前提是成绩大于或等于60分时才能获得课程学分。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
delimiter ##
  create Function count_credit(v_sno char(6))
  returns int reads sql data
  Begin
  declare sums float ;
  select ifnull(sum(credit),0) into sums from course natural join score where grade >=60 and v_sno=sno;
    return sums;
  end ##
  delimiter ;
5-3 创建存储过程p_count_credit

存储过程 p_count_credit 使用 countcredit 函数更新 student 表中的总学分。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
delimiter ##
  create procedure  p_count_credit()
  begin
    declare v_sno varchar(20);
    declare v_credit int default 0;
    declare stucur cursor for select sno from student;
    declare exit handler for not found close stucur ;
    open stucur;
    while true do
    fetch stucur into v_sno;
    update student set totalcredit =count_credit(v_sno) where sno=v_sno;
    end while;
    close stucur;
    end ##
  delimiter ;
5-4 创建触发器 sum_credit

触发器 sum_credit 在向 score 表插入记录时,自动更新 student 表中的总学分。只有成绩大于或等于60分时,才会增加学分。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
delimiter ##
  create trigger sum_credit
  after insert on score for each row
  Begin
  if(new.grade>=60) then
        update student set totalcredit =totalcredit+(select credit from course where cno=new.cno)
        where student.sno=new.sno;
    end if;
    end ##
    delimiter ;
5-5 创建级联删除触发器 delstudent_score

触发器 delstudent_score 实现级联删除,当删除 student 表中的学生记录时,会同时删除 score 表中对应学号的成绩记录。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
delimiter ##
  create trigger del_studnet_score
  before delete on student for each row
  begin
    delete from score where sno=old.sno;
    end ##
  delimiter ;

删除前:

删除后:

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2025-04-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
密码破解全能工具:Hashcat密码破解攻略
hashcat号称世界上最快的密码破解,世界上第一个和唯一的基于GPGPU规则引擎,免费多GPU(高达128个GPU),多哈希,多操作系统(Linux和Windows本地二进制文件),多平台(OpenCL和CUDA支持),多算法,资源利用率低,基于字典攻击,支持分布式破解等等,目前最新版本为4.01,下载地址https://hashcat.net/files/hashcat-4.1.0.7z,hashcat目前支持各类公开算法高达247类,市面上面公开的密码加密算法基本都支持!
知识与交流
2023/03/25
35K0
密码破解全能工具:Hashcat密码破解攻略
windows下hashcat利用GPU显卡性能破解密码
由于一般密码破解工具的破解速度实在是太慢,而且支持的密码破解协议也不多,暴力破解的话,有的密码1年时间也破不出来,
剧终
2020/08/27
16.3K0
windows下hashcat利用GPU显卡性能破解密码
Python基础练习100题 ( 11
这十道题的代码在我的github上,如果大家想看一下每道题的输出结果,可以点击以下链接下载:
py3study
2020/01/03
9460
网路安全 数据库密码强固
md5反查 加盐加复杂度,加盐值和复杂度,方式是在数据库中存储盐值,和盐值和密码和复杂度密码拼接后的字符串转成的md5加密后的密码,当用户请求登录后,服务器拿到用户名,查找到对应用户信息,拿出用户盐值和收到的密码,利用自己固定的拼接方式,拼接后,通过md5密文。和数据库中密文对比
刘嘿哈
2022/10/25
7750
9.0 Python 内置模块应用
Python 是一种高级、面向对象、通用的编程语言,由Guido van Rossum发明,于1991年首次发布。Python 的设计哲学强调代码的可读性和简洁性,同时也非常适合于大型项目的开发。Python 语言被广泛用于Web开发、科学计算、人工智能、自动化测试、游戏开发等各个领域,并且拥有丰富的第三方库和工具,使得Python成为广泛应用的语言之一。同时,由于其开放性和可移植性,Python在跨平台应用、开源软件开发和云计算等领域也被广泛使用。
王 瑞
2023/08/14
6020
Python3 初学实践案例(4)可设定长度和密码复杂级别的生成密码脚本
FungLeo
2018/01/08
6730
Python3 初学实践案例(4)可设定长度和密码复杂级别的生成密码脚本
Js调试技巧
preserve log disable cache source -> search 、 snippet script 、 override 重写覆盖脚本 (也可以用 fiddler 支持正则更智能)、 Ctrl键 切换智能提示…
TagBug
2023/03/16
3.3K0
js的常见的三种密码加密方式-MD5加密、Base64加密和解密和sha1加密详解总结
写前端的时候,很多的时候是避免不了注册这一关的,但是一般的注册是没有任何的难度的,无非就是一些简单的获取用户输入的数据,然后进行简单的校验以后调用接口,将数据发送到后端,完成一个简单的注册的流程,那么一般来说,密码是不做加密的。但是也有一些数据库里面存放的是加密后的密码,这样有一个比较安全的地方在于,即使黑客将用户输入的文本密码得到了,也不知道具体是什么,因为密码是经过加密的。
何处锦绣不灰堆
2020/05/29
15.5K0
js的常见的三种密码加密方式-MD5加密、Base64加密和解密和sha1加密详解总结
Google Authenticator
二、 验证 1、下载Google谷歌身份验证器。 2、通过Python 的qrcode和pyotp模块生成二维码。
py3study
2020/01/08
1.9K0
NodeJS之加解密Crypto
就算原文件是纯英文内容,编码后内容也和原文完全不一样,普通人难以阅读但由于只有16个字符,听说一些程序员大牛能够记下他们的映射关系,从而达到读hex编码和读原文一样的效果。另外,数据在经过hex编码后,空间占用变成了原来的2倍。
前端LeBron
2021/12/27
1.9K0
NodeJS之加解密Crypto
一文搞懂Web中暗藏的密码学
密码学是各种安全应用程序所必需的,现代密码学旨在创建通过应用数学原理和计算机科学来保护信息的机制。但相比之下,密码分析旨在解密此类机制,以便获得对信息的非法访问。
前端劝退师
2019/11/15
8600
实现 Base64 的编码解码
Base64 是一种基于 64 个可打印字符来表示二进制数据的表示方法。由A-Z(26),a-z(26),0-9(10),加+,/,=(3) 其实是 65 个字符(注:等号 = 用来作为后缀用途),如下所示
小皮咖
2020/10/16
1.9K0
实现 Base64 的编码解码
Nest.js 从零到壹系列(三):使用 JWT 实现单点登录
上一篇介绍了如何使用 Sequelize 连接 MySQL,接下来,在原来代码的基础上进行扩展,实现用户的注册和登录功能。
一只图雀
2020/04/07
5.8K0
CTF&爬虫:掌握这些特征,一秒识别密文加密方式
爬虫工程师在做加密参数逆向的时候,经常会遇到各种各样的加密算法、编码、混淆,每个算法都有其对应的特征,对于一些较小的网站,往往直接引用这些官方算法,没有进行魔改等其他操作,这种情况下,如果我们能熟悉常见算法的特征,通过密文就能猜测出使用的哪种算法、编码、混淆,将会大大提高工作效率!在 CTF 中通常也会有密码类的题目,掌握一些常见密文特征也是 CTFer 们必备的技能!
K哥爬虫
2022/01/14
3K0
CTF&爬虫:掌握这些特征,一秒识别密文加密方式
网站密码存储方案比较
为了对用户负责,用户密码采用不可逆算法的时候,我们就要考虑一下如何对用户密码进行加密。那么仅仅是使用不可逆算法就行了吗?还不是,在硬件飞速发展的今天,尤其是GPU运算能力超CPU 10-20倍甚至更多,使得暴力破解的时间大大缩短。那么为了使得暴力破解变得几乎不可能,我们就要使用一些不支持GPU加速破解的算法。这里所说的算法,实际上也是各种加密的hash方式。
EltonZheng
2021/01/22
1.5K0
OpenSSL的简单使用与自签CA证书
linux中主要通过openssl,gpg等工具来实现加密解密机制,这里我只介绍下openssl的使用方法!
小柒吃地瓜
2020/04/23
3K0
谈谈系统密码存储策略
还是从脱库说起,数据库被人拉走了,最可怕的是什么?个人手机、身份证、地址??这些是很重要,但是,其实个人隐私数据,获取的难度不是很大,而且不容易直接对一个人造成巨大的伤害,但是,密码被人知道了,就是很可怕的事情。因为,大部分人不同的系统都是共用密码。这个错误比较低级,但是很常见,所以,密码,是被脱库后最容易被人利用。所以,密码是必须加密的,不把用户密码加密的系统和公司,都该判刑。
itmifen
2018/10/22
9190
登录重构小记
最近把小站的登录页面给重构了,之前的安全性存在很大问题,基本处于裸奔的状态,特此记录一下过程。
街角小林
2022/06/15
7780
登录重构小记
python模块之hashlib
hashlib模块实现了多种安全哈希和信息摘要算法的通用接口,包括FIPS中定义的SHA1, SHA224, SHA256, SHA384, SHA512以及RFC 1321中定义的MD5
py3study
2020/01/06
7950
加密ZIP文件可以存在两个正确的密码?
出品 | OSC开源社区(ID:oschina2013) Positive Technologies 的网络安全研究员 Arseniy Sharoglazov 近日在社交平台分享了一个简单的实验并指出,加密的 ZIP 文件可能存在两个正确的密码,并且都可以提取出相同的结果。 “创建 ZIP:7z a http://x.zip/etc/passwd -mem=AES256 -p 使用这个密码:Nev1r-G0nna-G2ve-Y8u-Up-N5v1r-G1nna-Let-Y4u-D1wn-N8v4r-G5nn
程序猿DD
2022/08/29
1K0
加密ZIP文件可以存在两个正确的密码?
相关推荐
密码破解全能工具:Hashcat密码破解攻略
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验