mysql练习-数据库安全性与完整性
主要为触发器和存储过程
- 1
创建SQL触发器:删除学生数据,将删除的数据备份到数据表student_bf,以备误删除时进行数据恢复。
1)student(学生表):
SNO学号CHAR(7)
SNAME姓名CHAR(10)
SSEX性别CHAR(2)
SAGE年龄SMALLINT
SDEPT所在系 VARCHAR(20)
2)course(课程表)
CNO课程号CHAR(10)
CNAME课程名VARCHAR(20)
CCREDIT学分SMALLINT
SEMSTER学期SMALLINT
PERIOD学时SMALLINT
3)sc(选课表)
SNO 学号CHAR(7)
CNO 课程号CHAR(10)
GRADE 成绩 SMALLINT
delimiter$$
CREATE TRIGGER TRG_DELE
BEFORE DELETE ON student
for each row
begin insert into student_bfselect * from studentwhere sno=old.sno;
end
$$
#系统要求,输入多个语句时需要delimiter和end
- 2
SQL存储过程:查询订单
#创建存储过程:total_order(IN orderid INT , OUT totals NUMERIC(9,2), OUT cid INT)
要求:根据输入的订单编号(order_id),返回订单总金额(total_money),顾客编号(customer_id)。
订单表:orders如下:
delimiter$$
create procedure total_order(
in orderid INT,out totals NUMERIC(9,2),out cid INT)
beginselect total_money,customer_id into totals,cidfrom orderswhere orderid=order_id;
end
$$
- 3
SQL触发器:创建成绩表插入触发器
#创建触发器,插入学生成绩时,限制必须在0-100之间。如果不在0-100之间,设置为0.
表结构如第一题。
delimiter $$
create trigger trg_stu_in
before insert on sc
for each row
beginif new.grade<0 or new.grade>100then set new.grade=0;end if;
end
$$
- 4
SQL触发器,更新部门表相应人数。
创建触发器,更新员工数据时,同步更新部门表相应人数。
相关表结构:
1)员工表:employee
2)部门表:department
[注意:SQL表名请用小写]
delimiter $$
create trigger trg_emp_up
before update on employee
for each row
beginupdate department set emp_num=emp_num-1 where dept_id=old.dept_id;update department set emp_num=emp_num+1 where dept_id=new.dept_id;
end
$$
- 5
SQL存储过程:建立存储过程,查询课程的成绩表
#建立存储过程show_grade:根据学号,课程名参数,返回学生的成绩。
学生数据库db_student包括三个数据表student(学生表)、course(课程表)和sc(选课表)。表结构如下:
表结构如第一题。
delimiter $$
create procedure show_grade(
in s CHAR(20),in c VARCHAR (20),out g SMALLINT)
select grade into g
from sc,course
where sc.cno = course.cno
and cname = c and sno = s;
$$
- 6
在学生表student上创建触发器,插入学生记录,同步更新班级表class中对应班级人数。
表结构定义如下:
班级表class:
classno char(7) 班级号,主键,
classname char(20) 班级名
number int 班级人数。
学生表student:
no char(9) 学号,主键;
name char(10) 姓名;
sex enum(‘男’,‘女’) 性别;
age SMALLINT 年龄;
classno char(7) 班级号,外键(取值参照class的classno)。
delimiter$$
CREATE TRIGGER trg_student_in
BEFORE INSERT ON student
FOR EACH ROW
BEGINUPDATE class SET number=number+1WHERE classno=LEFT(NEW.sno,5);
END
$$
- 7
创建存储过程tj_rs:根据部门编号(int),返回该部门的员工总数,男员工数,女员工数(注意参数顺序必须与题目一致)。
表结构如第四题。
delimiter $$
create procedure tj_rs(
in deptid int,out total int,out gender_M int,out gender_F int)
beginselect count(*) into total from employeewhere deptid=dept_idgroup by dept_id;select count(*) into gender_M from employeewhere deptid=dept_id group by dept_id having gender='男';select count(*) into gender_F from employeewhere deptid=dept_id group by dept_id having gender='女';
end
$$
mysql练习-数据库安全性与完整性相关推荐
- 数据库期末总结笔记( 零基础 )--数据库安全性与完整性-范式-E-R图
第四章 数据库安全性与完整性 1.三大完整性约束 基本概念: (1)候选码:一个或一组属性能唯一的标识一个元组,而其子集不能 例:Student表中的学号sno (2)主码:若有多个候选码,则选其中一 ...
- 数据库安全性和完整性考虑_您是否考虑过云安全性?
数据库安全性和完整性考虑 云安全:简介 (Cloud Security: Introduction) The cloud, everyone's racing to be there, the blo ...
- 数据库安全性与完整性
实验一~~四,于https://blog.csdn.net/weixin_44318248/category_8883986.html 实验五:数据库安全性与完整性 实验内容与完成情况(记录所有的实验 ...
- 数据库安全性和完整性
数据库的完整性: 数据的正确性 是指数据是符合现实世界语义,反映了当前实际状况的 学生的学号必须唯一 性别只能是男或女 成绩的取值范围为0~100 数据的相容性 是指数据库同一对象在不同关系表中的数据 ...
- 【MySQL】数据库完整性和安全性
目录 一.完整性 1.概念 2.sql语言支持的两种约束 2.1静态约束 撤销追加约束 断言 2.3动态约束 触发器 二.安全性 用DBMS对数据库实现的两个特性 一.完整性 1.概念 指dbms保 ...
- MySQL系列4—数据库安全性
文章目录 1. 数据库安全性 1.1 数据库安全性概述 1.2 数据库安全性控制 1.2.1 用户身份鉴别 1.2.2 存取控制 1.2.3 审计 1.2.4 视图 1.2.5 数据加密 2. 数据控 ...
- 【Sofice小司笔记】1 关系数据库基础,包含关系数据库设计,索引,事务,安全性,完整性,查询处理优化等
数据库管理系统 DataBase Management System / DBMS DBMS 是位于用户和操作系统之间的一层数据管理软件.数据库管理系统和操作系统一样是计算机的基础软件,也是一个大型复 ...
- 数据库安全性 完整性
01.安全性 专有名词解释 1.数据库管理员:拥有所有对象的所有权限,根据实际情况不同的权限授予不同的用户 2.用户:拥有自己建立的对象的全部的操作权限,可以使用GRANT,把权限授予其他用户 3.角 ...
- mysql安全实验测验答案_实验四∶数据库安全性实验报告.doc
资源描述 1 / 2实验四:数据库安全性班级:软件工程 0918 姓名:许啸 学号:0911610819[实验目的] :验证数据库安全性[实验要求] :1)新建一个登陆名为 tom,密码为 tom00 ...
最新文章
- 错过618?暑假阅读季不要错过啦!
- Kotlin中的高阶函数
- [Spark]PySpark入门学习教程---例子RDD与DataFrame
- java文件端点续传效果图_Java单依赖性Dockerized HTTP端点
- system.gc 性能_使用这些先进的GC技术提高应用程序性能
- 【动态规划1】动态规划的引入(今天刷洛谷了嘛)
- “北漂青年”马云建言:未来服务业发展有三大关键词
- NET环境下有关打印页面设置、打印机设置、打印预览对话框的实现-
- crontab计划任务的失败记录查找
- shedlock 重启系统报错问题_闲谈ShedLock解决分布式定时任务重复执行问题
- 干货:Java并发编程系列之volatile(二)
- 射频电路PCB的设计技巧
- tp6 支付宝沙箱支付
- 思岚RPLIDAR A2激光雷达开箱
- 【小白篇】初探 Processing 色彩
- 【matlab】clc,close,close all,clear,clear all作用
- Java面向对象编程——继承
- 买二手房不后悔先知道8件事 高楼层未必卖得好
- 配置webpack不打包第三方包
- 奇安信VS启明星辰 欲上市“新人”与上市“老手”的全面对比
热门文章
- 从SOD到OOD(C++编码风格)
- 数据库原理实验 三个关系表 学生表students 课程表course 学生选课表sc
- 编程不只是兴趣爱好,更是优秀成长路径,您了解吗?
- [矩阵论]Jordan标准形中Jordan块阶数与个数的确定
- 规范化、标准化、归一化、正则化
- 数据标准化 Data Normalization
- oracle 11g第二版课后答案,oracle 11g(钱慎一)课后习题答案
- Vscode上传代码至Github(2 ways)
- 手机android.sys木马,使用kali生成木马入侵安卓手机
- (全网最详细!)bzoj 2548 灭鼠行动 模拟 解题报告