MySQL(B站CodeWithMosh)——2024.10.12(15)

ZZZZZZ目的
ZZZZZZ代码
ZZZZZZ重点
ZZZZZZ操作(非代码,需要自己手动)

4- WITH OPTION CHECK子句 | THE WITH OPTION CHECK Clause_哔哩哔哩_bilibiliicon-default.png?t=O83Ahttps://www.bilibili.com/video/BV1UE41147KC?p=66&vd_source=eaeec77dfceb13d96cce76cc299fdd08

  1. 将invoices_with_balance中id为2的发票更新成总支付等于总发票
    UPDATE invoices_with_balance
    SET payment_total = invoice_total
    WHERE invoice_id = 2

    可以发现,id为2的发票从invoices_with_balance这个表中消失了,因为这个表只将存在结余的发票展现出来,现在id为2的发票不存在结余了,所以也就不存在了
    假如我们现在不想让这一行消失,或者不希望UPDATE或者DELETE语句将行从视图中删除,那么需要在下面这一行代码的最后面加入WITH CHECK OPTION,这条子句会防止UPDATE或者DELETE语句将行从视图中删除
    CREATE OR REPLACE VIEW invoices_with_balance AS
    SELECT invoice_id, number, client_id, invoice_total, payment_total, 
           invoice_total - payment_total AS balance,
           invoice_date, due_date, payment_date
    FROM invoices
    WHERE (invoice_total - payment_total) > 0

    将invoices_with_balance中id为3的发票更新成总支付等于总发票
    UPDATE invoices_with_balance
    SET payment_total = invoice_total
    WHERE invoice_id = 3

    在我们运行时,会发现抱错,MySQL输出窗口显示检查视图失败

5- 视图的其他优点 | Other Benefits of Views_哔哩哔哩_bilibiliicon-default.png?t=O83Ahttps://www.bilibili.com/video/BV1UE41147KC?p=67&vd_source=eaeec77dfceb13d96cce76cc299fdd08视图的优点总结

  1. 视图可以简化查询
  2. 对我们的表可以防止一层抽象层,减少原表改动造成的影响
    个人觉得可以这样理解,假如说有一张表,然后根据这个表制作了一个视图,那么我们就可以后续都在这个视图上进行查询筛选。如果后续这个表有变动,我们不用对所有的查询筛选的代码进行修改,只用修改视图,保证视图和原来一样,就可以保证后续的查询筛选的代码不用修改。如果所有的查询筛选都是根据表来制作的,那么当表发生改变时,所有的查询筛选都要修改,会很麻烦

2- 创建一个存储过程 | Creating a Stored Procedure_哔哩哔哩_bilibiliicon-default.png?t=O83Ahttps://www.bilibili.com/video/BV1UE41147KC?p=69&vd_source=eaeec77dfceb13d96cce76cc299fdd08

  1. 创建一个叫get_clients的存储,内容是存储clients表格中的所有信息
    DELIMITER $$
    CREATE PROCEDURE get_clients()
    BEGIN
          SELECT * FROM clients;
    END $$
    DELIMITER ;

    SELECT * FROM clients后面需要加上分号,因为这已经是一条语句了;
    如果我们想执行下面这段代码,而不是只有SELECT * FROM clients,那么就需要用DELIMITER函数更改默认分隔符,修改完之后别忘记改回来
    CREATE PROCEDURE get_clients()
    BEGIN
          SELECT * FROM clients;
    END $$
    运行完之后,我们可以在左边SCHEMAS的sql_invoicing中找到Stored Procedures,里面就有get_clients这个存储,点击get_clients旁边的⚡,就可以得到所有的clients信息
  2. 调用get_clients
    CALL get_clients()

【练习题】
创建一个名为get_invoices_with_balance(有结余的发票),返回所有结余大于0的发票
DELIMITER $$
CREATE PROCEDURE get_invoices_with_balance()
BEGIN SELECT * FROM invoices_with_balance WHERE balance > 0;
END $$
DELIMITER ;

因为我们之前创建了invoices_with_balance,所以可以直接用这个

3- 使用MySQL工作台创建存储过程 | Creating Procedures Using MySQLWorkbench_哔哩哔哩_bilibiliicon-default.png?t=O83Ahttps://www.bilibili.com/video/BV1UE41147KC?p=70&vd_source=eaeec77dfceb13d96cce76cc299fdd08

  1. 如果觉得每次创建储存过程都需要更改默认符很麻烦,右击SCHEMAS中sql_invoicing中Store Procedures,再点击Create Stored Procedure,在这里窗口就不用但需需要更改默认分隔符了
    例如,创建一个名为get_payments的存储过程先按张上面的流程创建,然后将new_procedure改为get_payments,然后在BEGIN后换行输入SELECT * FROM payments;,然后点击Apply,可以看到MySQL自动帮我更改了默认符,然后再点击Apply,Finsh,就可以了

4- 删除存储过程 | Dropping Stored Procedures_哔哩哔哩_bilibiliicon-default.png?t=O83Ahttps://www.bilibili.com/video/BV1UE41147KC?p=71&vd_source=eaeec77dfceb13d96cce76cc299fdd08

  1. 删除名为get_clients的存储过程
    DROP PROCEDURE get_clients
  2. 如果我们再执行一次上面的代码,会发现MySQL报错,这是因为没有名为get_clients的存储,所以为了MySQL不报错,我们可以把代码改成
    DROP PROCEDURE IF EXISTS get_clients
  3. 一般我们在创建存储的时候,都是这样的(创建存储的基本框架)
    DROP PROCEDURE IF EXISTS get_clients;
    DELIMITER $$
    CREATE PROCEDURE get_clients()
    BEGIN
          SELECT * FROM clients;
    END $$
    DELIMITER ;

5- 参数 | Parameters_哔哩哔哩_bilibiliicon-default.png?t=O83Ahttps://www.bilibili.com/video/BV1UE41147KC?p=72&vd_source=eaeec77dfceb13d96cce76cc299fdd08

  1. 创建一个名为get_clients_by_state,按州来获取顾客信息
    DROP PROCEDURE IF EXISTS get_clients_by_state;
    DELIMITER $$
    CREATE PROCEDURE get_clients_by_state(state CHAR(2))
    BEGIN
        SELECT * FROM clients c
        WHERE c.state = state;
    END $$
    DELIMITER ;

    CHAR(2)表示有两个字符的字符串,比如CA、LA,当遇到电话号码、姓名和信息等,可以用VARCHAR,除非我们可以确定字符串的长度;
    如果有很多参数,那么就在state CHAR(2)后面用逗号分割;

    如果我们想找到住在CA的顾客,那么可以输入CALL get_clients_by_state('CA'),如果在括号中不填入任何值,MySQL会报错

【练习题】
创建一个名为get_invoices_by_client的存储过程,按照顾客的id来获取发票信息

USE sql_invoicing;
DROP PROCEDURE IF EXISTS get_invoices_by_clients;
DELIMITER $$
CREATE PROCEDURE get_invoices_by_clients(client_id INT)
BEGIN
    SELECT * FROM invoices i WHERE i.client_id = client_id;
END $$
DELIMITER ;

获取的是发票信息,所以是FROM invoices;
可以通过点击invoices表旁边的工具按钮,看Datatype这一列,就可以找到client_id的数据类型,可以确认为INT

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/445622.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

您是否也在寻找免费的 PDF 编辑器工具?10个备选PDF 编辑器工具

您是否也在寻找免费的 PDF 编辑器工具? 如果是,那么您在互联网上处于最佳位置! 本指南中提到的所有 10 大免费 PDF 编辑器工具都易于使用,可以允许您添加文本、更改图像、添加图形、填写表格、添加签名等等。 因此,…

基于IDEA+SpringBoot+Vue+Uniapp的投票评选小程序系统的详细设计和实现

2. 详细视频演示 文章底部名片,联系我获取更详细的演示视频 3. 论文参考 4. 项目运行截图 代码运行效果图 代码运行效果图 代码运行效果图 代码运行效果图 代码运行效果图 5. 技术框架 5.1 后端采用SpringBoot框架 Spring Boot 是一个用于快速开发基于 Spring 框…

【鸟类识别系统】Python+卷积神经网络算法+人工智能+深度学习+ResNet50算法+计算机课设项目

一、介绍 鸟类识别系统。本系统采用Python作为主要开发语言,通过使用加利福利亚大学开源的200种鸟类图像作为数据集。使用TensorFlow搭建ResNet50卷积神经网络算法模型,然后进行模型的迭代训练,得到一个识别精度较高的模型,然后在…

【AI论文精读13】RAG论文综述2(微软亚研院 2409)P5-可解释推理查询L3

AI知识点总结:【AI知识点】 AI论文精读、项目、思考:【AI修炼之路】 P1,P2,P3,P4 五、可解释推理查询(L3) ps:P2有四种查询(L1,L2,L3,…

java生成日历数据列表并按日历格式导出到excel

日历格式输出 日历数据列表导出封装日历格式实体类效果 日历数据列表 /**** 封装日历数据* param year 年份* param month 月份*/public List<InspectionDailyStaffPlanCalendarData> selectCalendarDataList(int year,int month,List<InspectionDailyStaffPlan> …

面试(十)

目录 一. 单元测试 二. FreeRTOS和裸机哪个实时性好&#xff1f; 三. 怎么判断某个程序的运行时间 四. 函数指针 五. 全局变量被线程使用冲突 5.1 使用互斥锁 5.2 使用读写锁 5.3 使用原子操作 六. 局部变量没有初始化是什么值 七. uint_8 n 255 , n等于多少 八. …

Unity UndoRedo(撤销重做)功能

需求 撤销与重做功能 思考 关于记录的数据的两点思考&#xff1a; 记录操作记录影响显示和逻辑的所有数据 很显然这里就要考虑取舍了&#xff1a; 记录操作 这种方案只需要记录每一步的操作&#xff0c;具体这个操作要怎么渲染和实现出来完全需要自己去实现&#xff0c;这…

JAVA-数据结构-排序

1.直接插入排序 1.原理&#xff1a;和玩扑克牌一样&#xff0c;从左边第二个牌开始&#xff0c;选中这个&#xff0c;和前面的所有牌比较&#xff0c;插在合适的位置 public static void insertsort(int[] arr){//直接插入排序for (int i 1; i < arr.length; i) {//此循环…

手撕数据结构 —— 栈(C语言讲解)

目录 1.认识栈 什么是栈 栈的示意图 2.如何实现栈 3.栈的实现 Stack.h中接口总览 具体实现 结构的定义 初始化栈 销毁栈 入栈 出栈 取栈顶元素 获取有效元素的个数 判断栈是否为空 4.完整代码附录 Stack.h Stack.c 1.认识栈 什么是栈 栈是一种特殊的线性表…

学视频剪辑需要电脑吗 学视频剪辑需要什么条件

态度决定成败&#xff0c;学剪辑亦是如此。我们都在学习剪辑的道路上寻找答案&#xff0c;电脑就像指引答案的工具&#xff0c;但它本身并不是答案。所以&#xff0c;好电脑不等于好剪辑师。想要学好视频剪辑&#xff0c;你只需要一个态度端正的自己。有关学视频剪辑需要电脑吗…

Spring Cloud Stream 3.x+kafka 3.8整合

Spring Cloud Stream 3.xkafka 3.8整合&#xff0c;文末有完整项目链接 前言一、如何看官方文档(有深入了解需求的人)二、kafka的安装tar包安装docker安装 三、代码中集成创建一个测试topic&#xff1a;testproducer代码producer配置&#xff08;配置的格式&#xff0c;上篇文章…

基于SpringBoot+Vue的疫苗预约接种管理系统

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏&#xff1a;…

DELL R720服务器阵列数据恢复,磁盘状态为Foreign

服务器无法正常进入系统&#xff0c;物理磁盘状态变成了Foreign 虚拟磁盘状态变成了Failed 阵列已经丢失了&#xff0c;需要手工强制导入外部配置 单击 Main Menu 屏幕上的 Configuration Management。单击 Manage Foreign Configuration 单击 Preview Foreign Configurati…

60. 排列序列【回溯】

文章目录 60. 排列序列解题思路Go代码 60. 排列序列 60. 排列序列 给出集合 [1,2,3,...,n]&#xff0c;其所有元素共有 n! 种排列。 按大小顺序列出所有排列情况&#xff0c;并一一标记&#xff0c;当 n 3 时, 所有排列如下&#xff1a; “123”“132”“213”“231”“31…

VMDK 0X80BB0005 VirtualBOX虚拟机错误处理-数据恢复——未来之窗数据恢复

打开虚拟盘文件in7.vmdk 失败. Could not get the storage format of the medium 7\win7.vmdk (VERR_NOT_SUPPORTED). 返回 代码:VBOX_E_IPRT_ERROR (0X80BB0005) 组件:MediumWrap 界面:IMedium {a a3f2dfb1} 被召者:IVirtualBox {768 cd607} 被召者 RC:VBOX_E_OBJECT_NOT_F…

Qt基础对话框QDialog

模态显示对话框 调用exec方法可以使得对话框模态显示&#xff0c;但是一个阻塞函数 [virtual slot] int QDialog::exec() 对话框的三个槽函数 accept [virtual slot] void QDialog::accept(); reject [virtual slot] void QDialog::reject() done [virtual slot] void QDia…

Nginx从入门到实战(八):版本平滑无感知,不停机升级

一、查看旧版本信息 可以通过nginx -V命令&#xff0c;来查看当前nginx的版本信息&#xff0c;和配置参数。 [rootnb001 sbin]# nginx -V -bash: nginx: command not found [rootnb001 sbin]# ./nginx -V nginx version: nginx/1.20.1 built by gcc 4.8.5 20150623 (Red Hat …

Spring Boot读取resources目录下文件(打成jar可用),并放入Guava缓存

1、文件所在位置&#xff1a; 2、需要Guava依赖&#xff1a; <dependency><groupId>com.google.guava</groupId><artifactId>guava</artifactId><version>23.0</version></dependency>3、启动时就读取放入缓存的代码&#xf…

gaussdb hccdp理论考试总结

判断题1分&#xff0c;单选题2分&#xff0c;多选题3分 共50道题&#xff0c;满分100分&#xff0c;60分通过。 理论考试知识点占比&#xff1a; 理论考试参考策略&#xff1a; 1.7张PPT看一遍 2.思考题做一遍 3.模拟题做一遍 4.7张PPT再看一遍 5.考题知识点过一遍 6.考试前一…

ZYNQ使用XGPIO驱动外设模块(前半部分)

目录 目录 一、新建BD文档&#xff0c;添加ZYNQ处理器 1.BD文档: 2.在Vivado中&#xff0c;BD文件的生成过程通常包括以下步骤&#xff1a; 1)什么是Tcl Console: 3.PL部分是FPGA可编程逻辑部分&#xff0c;它提供了丰富的IO资源&#xff0c;可以用于实现各种硬件接口和功…