头歌的数据库的第三次作业的答案
目录
MySQL-安全性控制
第1关:用户和权限
第2关:用户、角色与权限
MySQL-触发器
第1关:为投资表property实现业务约束规则-根据投资类别分别引用不同表的主码
MySQL-数据的插入、修改与删除(Insert,Update,Delete)
第1关:插入多条完整的客户信息
第2关:插入不完整的客户信息
第3关:批量插入数据
第4关:删除没有银行卡的客户信息
第5关:冻结客户资产
第6关:连接更新
MySQL-安全性控制
第1关:用户和权限
任务描述
本关任务: 在金融应用场景数据库环境中,创建用户,并给用户授予指定的权限。
# 请填写语句,完成以下功能:
#(1) 创建用户tom和jerry,初始密码均为'123456';
create user tom identified by '123456';
create user jerry identified by '123456';
#(2) 授予用户tom查询客户的姓名,邮箱和电话的权限,且tom可转授权限;
grant select(c_name,c_mail,c_phone) on client to tom with grant option;
#(3) 授予用户jerry修改银行卡余额的权限;
grant update(b_balance) on bank_card to jerry;
#(4) 收回用户Cindy查询银行卡信息的权限。
revoke select on bank_card from Cindy;
第2关:用户、角色与权限
任务描述
本关任务: 创建角色,授予角色一组权限,并将角色代表的权限授予指定的一组用户。
# 请填写语句,完成以下功能:
# (1) 创建角色client_manager和fund_manager;
create user client_manager,fund_manager;
# (2) 授予client_manager对client表拥有select,insert,update的权限;
grant select,insert,update on client to client_manager;
# (3) 授予client_manager对bank_card表拥有查询除银行卡余额外的select权限;
grant select(b_number,b_type,b_c_id) on bank_card to client_manager;
# (4) 授予fund_manager对fund表的select,insert,update权限;
grant select,insert,update on fund to fund_manager;
# (5) 将client_manager的权限授予用户tom和jerry;
grant client_manager to tom,jerry;
# (6) 将fund_manager权限授予用户Cindy.
grant fund_manager to Cindy;
MySQL-触发器
第1关:为投资表property实现业务约束规则-根据投资类别分别引用不同表的主码
任务描述
本关任务: 为表property(资产表)编写一个触发器,以实现以下完整性业务规则:
- 如果pro_type = 1, 则pro_pif_id只能引用finances_product表的p_id;
- 如果pro_type = 2, 则pro_pif_id只能引用insurance表的i_id;
- 如果pro_type = 3, 则pro_pif_id只能引用fund表的f_id;
- pro_type不接受(1,2,3)以外的值。
各投资品种一经销售,不会再改变; 也不需考虑finances_product,insurance,fund的业务规则(一经销售的理财、保险和基金产品信息会永久保存,不会被删除或修改,即使不再销售该类产品)。
use finance1;
drop trigger if exists before_property_inserted;
-- 请在适当的地方补充代码,完成任务要求:
delimiter $$
CREATE TRIGGER before_property_inserted BEFORE INSERT ON property
FOR EACH ROW
BEGINIF (NEW.pro_type NOT IN (1,2,3)) THENSET @msg = CONCAT('type ', NEW.pro_type, ' is illegal!');SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = @msg;END IF;IF (NEW.pro_type = 1) AND (SELECT COUNT(*) FROM finances_product WHERE p_id = NEW.pro_pif_id) = 0 THENSET @msg = CONCAT('finances product #', NEW.pro_pif_id, ' not found!');SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = @msg;END IF;IF (NEW.pro_type = 2) AND (SELECT COUNT(*) FROM insurance WHERE i_id = NEW.pro_pif_id) = 0 THENSET @msg = CONCAT('insurance #', NEW.pro_pif_id, ' not found!');SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = @msg;END IF;IF (NEW.pro_type = 3) AND (SELECT COUNT(*) FROM fund WHERE f_id = NEW.pro_pif_id) = 0 THENSET @msg = CONCAT('fund #', NEW.pro_pif_id, ' not found!');SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = @msg;END IF;END$$delimiter ;
MySQL-数据的插入、修改与删除(Insert,Update,Delete)
第1关:插入多条完整的客户信息
任务描述
本关任务:向客户表client插入数据。
use finance1;
-- 用insert语句向客户表(client)插入任务要求的3条数据:insert into client values
(1,'林惠雯','960323053@qq.com','411014196712130323','15609032348','Mop5UPkl'),
(2,'吴婉瑜','1613230826@gmail.com','420152196802131323','17605132307','QUTPhxgVNlXtMxN'),
(3,'蔡贞仪','252323341@foxmail.com','160347199005222323','17763232321','Bwe3gyhEErJ7');/* end of you code */
第2关:插入不完整的客户信息
任务描述
本关任务:向客户表client插入一条数据不全的记录。
use finance1;
-- 已知33号客户部分信息如下:
-- c_id(编号):33
-- c_name(名称):蔡依婷
-- c_phone(电话):18820762130
-- c_id_card(身份证号):350972199204227621
-- c_password(密码):MKwEuc1sc6-- 请用一条SQL语句将这名客户的信息插入到客户表(client):insert into client(c_id,c_name,c_phone,c_id_card,c_password)
values('33','蔡依婷','18820762130','350972199204227621','MKwEuc1sc6');/* the end of your code */
第3关:批量插入数据
任务描述
本关任务:向客户表client批量插入数据。
use finance1;-- 已知表new_client保存了一批新客户信息,该表与client表结构完全相同。请用一条SQL语句将new_client表的全部客户信息插入到客户表(client):insert into client
select * from new_client;/* the end of your code */
第4关:删除没有银行卡的客户信息
任务描述
本关任务:删除在本行没有银行卡的客户信息。
use finance1;
-- 请用一条SQL语句删除client表中没有银行卡的客户信息:delete from client where c_id not in(select b_c_id from bank_card
);/* the end of your code */
第5关:冻结客户资产
任务描述
本关任务:冻结客户的投资资产。
use finance1;
-- 请用一条update语句将手机号码为“13686431238”的这位客户的投资资产(理财、保险与基金)的状态置为“冻结”。:update property set pro_status = '冻结'
where pro_c_id in (select c_id from client where c_phone = 13686431238);/* the end of your code */
第6关:连接更新
任务描述
本关任务:根据客户表的内容修改资产表的内容。
use finance1;
-- 在金融应用场景数据库中,已在表property(资产表)中添加了客户身份证列,列名为pro_id_card,类型为char(18),该列目前全部留空(null)。-- 请用一条update语句,根据client表中提供的身份证号(c_id_card),填写property表中对应的身份证号信息(pro_id_card)。update property join client as c on property.pro_c_id=c.c_id
set property.pro_id_card=c.c_id_card;/* the end of your code */
相关文章:
头歌的数据库的第三次作业的答案
目录 MySQL-安全性控制 第1关:用户和权限 第2关:用户、角色与权限 MySQL-触发器 第1关:为投资表property实现业务约束规则-根据投资类别分别引用不同表的主码 MySQL-数据的插入、修改与删除(Insert,Update,Delete) 第1关:插…...
前端3D规划
学习基础的3D概念:这包括向量、矩阵、几何、光照和材质等基本3D图形学的概念。这些是理解和使用3D技术的基础。学习WebGL:WebGL是一种在浏览器中实现3D图形的技术,它是OpenGL的Web版本,可以直接在浏览器中使用。学习WebGL可以帮助…...
appium操控微信小程序的坑
appium操控微信小程序的坑 打不开启动页面driver的context只有NATIVE_APP小程序上元素找不到 我打算使用appium操控微信小程序,只要能够获取到小程序的页面元素就算成功。下面都是我遇到的问题。 打不开启动页面 以下是我的appium的配置参数和代码: de…...
6 个最佳 Windows 免费磁盘分区管理器
几乎所有新的笔记本电脑和 PC 都只有一个分区 C:\,与安装了 Windows 的分区相同。不太精通技术的用户开始按照计算机呈现给他们的方式使用计算机;他们将所有文档、个人文件(例如图片、歌曲、电影等)放在同一个分区上。整个驱动器上…...
【Leetcode】【每日一题】【简单】2558. 从数量最多的堆取走礼物
力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台备战技术面试?力扣提供海量技术面试资源,帮助你高效提升编程技能,轻松拿下世界 IT 名企 Dream Offer。https://leetcode.cn/problems/take-gifts-from-the-richest-pi…...
LeetCode 每日一题 2023/10/23-2023/10/29
记录了初步解题思路 以及本地实现代码;并不一定为最优 也希望大家能一起探讨 一起进步 目录 10/23 2678. 老人的数目10/24 1155. 掷骰子等于目标和的方法数10/25 2698. 求一个整数的惩罚数10/26 2520. 统计能整除数字的位数10/27 1465. 切割后面积最大的蛋糕10/28 2…...
Android:Installed Build Tools revision 33.0.2 is corrupted.
Remove and install again using the SDK Manager. 使用33.0.2及以上版本的build-tools编译Android应用时。 有些人会按照提示去SDK Manager中重新安装build tools,然后发现这样做是无用的 编译时会收到:Build-tool 33.0.2 is missing DX at D:\Sdk\b…...
语法复习之C语言与指针
内存是如何存储数据的? 在C语言中定义一个变量后,系统就会为其分配内存空间。这个内存空间包括了地址和长度。将变量赋值后,该值就被写入到了指定的内存空间中。内存空间的大小一般以字节作为基本单位。 普通变量存放的是数据,…...
vue笔记(二)
7、事件处理 7.1、事件的基本处理 事件的使用 使用v-on:xxx或者用xxx绑定事件,其中XXX是事件名事件的回调需要配置在methods对象中,最终出现在VM上methods配置的函数,不需要箭头函数 <div id"root"><h1>…...
【IT行业就业前景广阔:探讨热门方向与就业机会】
IT行业哪个方向比较好就业? IT行业是一个快速发展的领域,与许多其他行业紧密结合,为各个行业带来了巨大的变革和机遇。在这个充满活力的行业中,有许多就业方向可以选择。让我们一起来探讨一下IT行业的发展背景、就业方向以及分享一些就业经…...
linux上java -jar方式运行项目及输出文件nohup.out的清理, linux上定时器的用法
linux上java -jar方式运行项目及输出文件nohup.out的清理, linux上定时器的用法 linux上java -jar方式运行定期自动清理nohup.out文件的内容**验证**定时器crontab使用时注意事项 linux上java -jar方式运行 参考:https://blog.csdn.net/qq_42169450/arti…...
macOS 12 Monterey v12.7.1正式版:开启全新的操作系统体验
macOS 12 Monterey已经向所有兼容的Mac设备推出,为您带来了一系列强大的新功能和改进。这个全新的操作系统版本,不仅带来了更流畅的用户体验,还增强了与iOS设备的无缝集成,让您的设备使用更加高效,更加便捷。 macOS 1…...
vue制作防止用户未登录或未填写信息就跳转页面的路由拦截器
在Vue中,你可以使用路由导航守卫来实现防止未登录用户跳转页面的路由拦截器。 首先,你需要创建一个全局前置守卫,用于检查用户是否已登录。在router/index.js文件中,添加如下代码: import router from /router;route…...
postgis ST_CoverageInvalidEdges用法
官方文档 概要 geometry ST_CoverageInvalidEdges(geometry winset geom, float8 tolerance 0); 描述 一个窗口函数,用于检查窗口分区中的多边形是否形成有效的多边形覆盖范围。 它返回线性指示器,显示每个多边形中无效边(如果有&#x…...
sqlalchemy的部分函数合集
func.concat func.group_concat func.find_in_set func.sum func.left func.month func.round func.avg func.rpad func.ifnull func.replace func.date_format CONCAT 函数:将两个或多个字符串连接在一起。例如: SELECT CONCAT(Hello, , World) AS r…...
mac苹果电脑使用日常
让鼠标和触摸板滚动方向一致:使用 Scroll Reverser 软件。 参考:Mac上鼠标滚轮方向是和Win相反的,系统中设置后触摸板的方向又跟着变了 操作: 截屏:shift command 3 复制粘贴:cmdc cmdv 剪切粘贴&#x…...
多线程面试相关知识点
文章目录 (一) 进程线程和协程的区别创建线程的4种方式1. 继承Thread类2. 实现runnable接口3. 实现Callable接口4. 线程池创建 runnable 和 callable 有什么区别线程的 run()和 start()有什么区别?线程之间的状态变化notify()和 notifyAll()有什么区别?j…...
关于生成式人工智能模型应用的调研
本系列博文为深度学习/计算机视觉论文笔记,转载请注明出处 标题:A survey of Generative AI Applications 链接:https://arxiv.org/abs/2306.02781 摘要 生成式人工智能(Generative AI)近年来经历了显著的增长&…...
【问题】在安装torchvision的时候,会自动安装torch?
1 背景👇🏻👇🏻👇🏻 在使用如下命令安装torchvision的时候,发现之前已安装的torch被卸载了。 pip install torchvision -i https://pypi.tuna.tsinghua.edu.cn/simple 2 分析🐰&a…...
MySQL数据库备份实战
一、为什么进行数据库备份? 保证业务连续性:数据库中存储着企业的核心业务数据,如果数据丢失或损坏,将会对企业的业务运营产生重大影响。通过定期备份数据库,可以在系统故障或数据丢失时快速恢复数据,保证业务的连续性。 保护数据资产:数据库中存储着企业的重要数据资产…...
iOS 26 携众系统重磅更新,但“苹果智能”仍与国行无缘
美国西海岸的夏天,再次被苹果点燃。一年一度的全球开发者大会 WWDC25 如期而至,这不仅是开发者的盛宴,更是全球数亿苹果用户翘首以盼的科技春晚。今年,苹果依旧为我们带来了全家桶式的系统更新,包括 iOS 26、iPadOS 26…...
大话软工笔记—需求分析概述
需求分析,就是要对需求调研收集到的资料信息逐个地进行拆分、研究,从大量的不确定“需求”中确定出哪些需求最终要转换为确定的“功能需求”。 需求分析的作用非常重要,后续设计的依据主要来自于需求分析的成果,包括: 项目的目的…...
Leetcode 3576. Transform Array to All Equal Elements
Leetcode 3576. Transform Array to All Equal Elements 1. 解题思路2. 代码实现 题目链接:3576. Transform Array to All Equal Elements 1. 解题思路 这一题思路上就是分别考察一下是否能将其转化为全1或者全-1数组即可。 至于每一种情况是否可以达到…...
工业安全零事故的智能守护者:一体化AI智能安防平台
前言: 通过AI视觉技术,为船厂提供全面的安全监控解决方案,涵盖交通违规检测、起重机轨道安全、非法入侵检测、盗窃防范、安全规范执行监控等多个方面,能够实现对应负责人反馈机制,并最终实现数据的统计报表。提升船厂…...
shell脚本--常见案例
1、自动备份文件或目录 2、批量重命名文件 3、查找并删除指定名称的文件: 4、批量删除文件 5、查找并替换文件内容 6、批量创建文件 7、创建文件夹并移动文件 8、在文件夹中查找文件...
聊聊 Pulsar:Producer 源码解析
一、前言 Apache Pulsar 是一个企业级的开源分布式消息传递平台,以其高性能、可扩展性和存储计算分离架构在消息队列和流处理领域独树一帜。在 Pulsar 的核心架构中,Producer(生产者) 是连接客户端应用与消息队列的第一步。生产者…...
渲染学进阶内容——模型
最近在写模组的时候发现渲染器里面离不开模型的定义,在渲染的第二篇文章中简单的讲解了一下关于模型部分的内容,其实不管是方块还是方块实体,都离不开模型的内容 🧱 一、CubeListBuilder 功能解析 CubeListBuilder 是 Minecraft Java 版模型系统的核心构建器,用于动态创…...
BCS 2025|百度副总裁陈洋:智能体在安全领域的应用实践
6月5日,2025全球数字经济大会数字安全主论坛暨北京网络安全大会在国家会议中心隆重开幕。百度副总裁陈洋受邀出席,并作《智能体在安全领域的应用实践》主题演讲,分享了在智能体在安全领域的突破性实践。他指出,百度通过将安全能力…...
Xen Server服务器释放磁盘空间
disk.sh #!/bin/bashcd /run/sr-mount/e54f0646-ae11-0457-b64f-eba4673b824c # 全部虚拟机物理磁盘文件存储 a$(ls -l | awk {print $NF} | cut -d. -f1) # 使用中的虚拟机物理磁盘文件 b$(xe vm-disk-list --multiple | grep uuid | awk {print $NF})printf "%s\n"…...
NPOI Excel用OLE对象的形式插入文件附件以及插入图片
static void Main(string[] args) {XlsWithObjData();Console.WriteLine("输出完成"); }static void XlsWithObjData() {// 创建工作簿和单元格,只有HSSFWorkbook,XSSFWorkbook不可以HSSFWorkbook workbook new HSSFWorkbook();HSSFSheet sheet (HSSFSheet)workboo…...
