主要为触发器和存储过程












  • 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练习-数据库安全性与完整性相关推荐

  1. 数据库期末总结笔记( 零基础 )--数据库安全性与完整性-范式-E-R图

    第四章 数据库安全性与完整性 1.三大完整性约束 基本概念: (1)候选码:一个或一组属性能唯一的标识一个元组,而其子集不能 例:Student表中的学号sno (2)主码:若有多个候选码,则选其中一 ...

  2. 数据库安全性和完整性考虑_您是否考虑过云安全性?

    数据库安全性和完整性考虑 云安全:简介 (Cloud Security: Introduction) The cloud, everyone's racing to be there, the blo ...

  3. 数据库安全性与完整性

    实验一~~四,于https://blog.csdn.net/weixin_44318248/category_8883986.html 实验五:数据库安全性与完整性 实验内容与完成情况(记录所有的实验 ...

  4. 数据库安全性和完整性

    数据库的完整性: 数据的正确性 是指数据是符合现实世界语义,反映了当前实际状况的 学生的学号必须唯一 性别只能是男或女 成绩的取值范围为0~100 数据的相容性 是指数据库同一对象在不同关系表中的数据 ...

  5. 【MySQL】数据库完整性和安全性

    目录 一.完整性 1.概念 2.sql语言支持的两种约束 2.1静态约束 撤销追加约束 断言 2.3动态约束 触发器 二.安全性 用DBMS对数据库实现的两个特性  一.完整性 1.概念 指dbms保 ...

  6. MySQL系列4—数据库安全性

    文章目录 1. 数据库安全性 1.1 数据库安全性概述 1.2 数据库安全性控制 1.2.1 用户身份鉴别 1.2.2 存取控制 1.2.3 审计 1.2.4 视图 1.2.5 数据加密 2. 数据控 ...

  7. 【Sofice小司笔记】1 关系数据库基础,包含关系数据库设计,索引,事务,安全性,完整性,查询处理优化等

    数据库管理系统 DataBase Management System / DBMS DBMS 是位于用户和操作系统之间的一层数据管理软件.数据库管理系统和操作系统一样是计算机的基础软件,也是一个大型复 ...

  8. 数据库安全性 完整性

    01.安全性 专有名词解释 1.数据库管理员:拥有所有对象的所有权限,根据实际情况不同的权限授予不同的用户 2.用户:拥有自己建立的对象的全部的操作权限,可以使用GRANT,把权限授予其他用户 3.角 ...

  9. mysql安全实验测验答案_实验四∶数据库安全性实验报告.doc

    资源描述 1 / 2实验四:数据库安全性班级:软件工程 0918 姓名:许啸 学号:0911610819[实验目的] :验证数据库安全性[实验要求] :1)新建一个登陆名为 tom,密码为 tom00 ...

最新文章

  1. 错过618?暑假阅读季不要错过啦!
  2. Kotlin中的高阶函数
  3. [Spark]PySpark入门学习教程---例子RDD与DataFrame
  4. java文件端点续传效果图_Java单依赖性Dockerized HTTP端点
  5. system.gc 性能_使用这些先进的GC技术提高应用程序性能
  6. 【动态规划1】动态规划的引入(今天刷洛谷了嘛)
  7. “北漂青年”马云建言:未来服务业发展有三大关键词
  8. NET环境下有关打印页面设置、打印机设置、打印预览对话框的实现-
  9. crontab计划任务的失败记录查找
  10. shedlock 重启系统报错问题_闲谈ShedLock解决分布式定时任务重复执行问题
  11. 干货:Java并发编程系列之volatile(二)
  12. 射频电路PCB的设计技巧
  13. tp6 支付宝沙箱支付
  14. 思岚RPLIDAR A2激光雷达开箱
  15. 【小白篇】初探 Processing 色彩
  16. 【matlab】clc,close,close all,clear,clear all作用
  17. Java面向对象编程——继承
  18. 买二手房不后悔先知道8件事 高楼层未必卖得好
  19. 配置webpack不打包第三方包
  20. 奇安信VS启明星辰 欲上市“新人”与上市“老手”的全面对比

热门文章

  1. 从SOD到OOD(C++编码风格)
  2. 数据库原理实验 三个关系表 学生表students 课程表course 学生选课表sc
  3. 编程不只是兴趣爱好,更是优秀成长路径,您了解吗?
  4. [矩阵论]Jordan标准形中Jordan块阶数与个数的确定
  5. 规范化、标准化、归一化、正则化
  6. 数据标准化 Data Normalization
  7. oracle 11g第二版课后答案,oracle 11g(钱慎一)课后习题答案
  8. Vscode上传代码至Github(2 ways)
  9. 手机android.sys木马,使用kali生成木马入侵安卓手机
  10. (全网最详细!)bzoj 2548 灭鼠行动 模拟 解题报告