MySQL(B站CodeWithMosh)——2024.10.11(14)

news2024/11/23 3:04:57

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

8- CASE运算符The CASE Operator_哔哩哔哩_bilibiliicon-default.png?t=O83Ahttps://www.bilibili.com/video/BV1UE41147KC?p=62&vd_source=eaeec77dfceb13d96cce76cc299fdd08

  1. 在sql_store中,根据orders表格,将里面所有的订单旁边都有一个标签”status“,如果订单是今年的,就叫Active(活跃的),如果是去年的,就叫“Last Year”,再以前的的就叫archived(存档),如果是未来的订单,就叫"Future",并输出订单id,订单日期和status
    USE sql_store;
    SELECT order_id,
           CASE 
                WHEN YEAR(NOW()) = YEAR(order_date) THEN 'Active'
                WHEN YEAR(NOW()) -1 = YEAR(order_date) THEN 'Last Year'
                WHEN YEAR(NOW()) -1 > YEAR(order_date) THEN 'Archived'
                ELSE 'Future'
            END AS category
    FROM orders

    IF函数只允许单一的测试表达式

【练习题】
输出下面这张图片,其中,如果积分超过3000,就是金牌顾客,如果在2000-3000(包含2000和3000)之间,是银牌顾客,如果低于2000,那么是青铜客户


USE sql_store;
SELECT CONCAT(first_name, ' ', last_name) AS customer,
       points,
       CASE
            WHEN points > 3000 THEN 'Gold'
            WHEN points BETWEEN 2000 AND 3000 THEN 'Silver'
            ELSE 'Bronze'
       END AS category
FROM customers
ORDER BY points DESC

这里的第二行WHEN也可以写成WHEN points >= 2000 THEN 'Sliver',因为大于3000的都已经返回Gold了,进行第二行WHEN的只能是小于3000的,所以可以不用写小于3000这个条件

【第八章】1- 创建视图 | Creating Views「视图」_哔哩哔哩_bilibiliicon-default.png?t=O83Ahttps://www.bilibili.com/video/BV1UE41147KC?p=63&vd_source=eaeec77dfceb13d96cce76cc299fdd08

  1. 很多操作的代码其实很相像,所以如果每次都要重新输入代码的话,那肯定会花费很多时间,这里可以用创建视图这个方法来解决
    将下面这段代码加入视图中
    USE sql_invoicing;
    SELECT c.client_id, c.name, SUM(invoice_total) AS total_sales
    FROM clients c
    JOIN invoices i USING (client_id)
    GROUP BY client_id, name

    USE sql_invoicing;
    CREATE VIEW sales_by_client AS
    SELECT c.client_id, c.name, SUM(invoice_total) AS total_sales
    FROM clients c
    JOIN invoices i USING (client_id)
    GROUP BY client_id, name

    然后,点击SCHEMAS右上角的刷新按钮,然后在sql_invoicing中的Views可以找到新建的sales_by_client,也可以将这个视图看作是一个表格,可以调用这个表格里面的内容,但是视图并不储存数据,我们的数据存储在了表中,我们只是把视图提供给了一张基础表

【练习题】
在sql_invoicing中,显示每位客户的结余,并建立名为“客户结余client_balance”的视图,这个视图中要出现客户id,客户名字,结余(balance)

USE sql_invoicing;
CREATE VIEW client_balance AS
SELECT i.client_id, c.name, SUM(i.invoice_total - i.payment_total) AS balance
FROM invoices i
JOIN clients c USING (client_id)
GROUP BY client_id

2- 更改或删除视图 | Altering or Dropping Views_哔哩哔哩_bilibiliicon-default.png?t=O83Ahttps://www.bilibili.com/video/BV1UE41147KC?p=64&vd_source=eaeec77dfceb13d96cce76cc299fdd08

  1. DROP VIEW :删除视图
    DROP VIEW sales_by_client

    名为sales_by_client的视图就被删除了
  2. CREATE OR REPLACE VIEW ... AS:修改某个视图,如果没有该视图,则创建一个
    例如,将sales_by_client修改为计算每个客户的发票总支付
    USE sql_invoicing;
    CREATE OR REPLACE VIEW sales_by_client AS
    SELECT c.client_id, c.name, SUM(payment_total) AS total_payments
    FROM clients c
    JOIN invoices i USING (client_id)
    GROUP BY client_id, name
  3. 点击sales_by_client,然后按ctrl+s即可将该视图保存下来,或者可以点击sales_by_client旁边的工具按钮,即可打开编辑模式,不过里面的代码可能跟原本我们输入的不太一样,这时MySQL系统自己弄的,目的是防止名称冲突,不管管这个
    例如,在代码中加入ORDER BY total_sales DESC,然后点击屏幕右下角的Apply,然后再点击Apply,Finsh即可应用
    最好还是将视图储存在SQL文件中,并放入源代码控制

3- 可更新视图 | Updatable Views_哔哩哔哩_bilibiliicon-default.png?t=O83Ahttps://www.bilibili.com/video/BV1UE41147KC?p=65&vd_source=eaeec77dfceb13d96cce76cc299fdd08

  1. 如果视图里面没有DISTINCT函数,任何聚合函数(MIN、MAX、SUM、GROUP BY、 HAVING、UNION),那么就可以更新视图,主要用INSERT、UPDATE、DELETE函数来更新视图
  2. 根据invoices表,创建一个名为invoices_with_balance的视图,视图里面跟invoices一样,但是多了balance这一列,这一列是invoice_total和payment_total的差值,而且只输出右结余的发票
    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
  3. 删除invoices_with_balance中发票id为1的发票
    DELETE FROM invoices_with_balance
    WHERE invoice_id = 1
  4. 将invoices_with_balance中二号发票的到期日推迟两天
    UPDATE invoices_with_balance
    SET due_date = DATE_ADD(due_date, INTERVAL 2 DAY)
    WHERE invoice_id = 2
  5. 只有当视图右所有基础表中要用的列,插入的新发票才会生效,例如,如果视图中没有发票日期列,就不能往视图里插图任何行,因为我们的表不允许插入的日期列为空值

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

智能网联汽车安全隐患,如何化解?

0. 智能网联汽车安全问题如何才能解决?1. TARA 威胁分析与风险评估平台2. CSTP 智能网联汽车网络安全测试平台3. 智能网联汽车安全解决方案4. 车联网测试认证与培训解决方案5. 车联网网络安全实验室建设方案 0. 智能网联汽车安全问题如何才能解决? 智能…

FFmpeg的简单使用【Windows】--- 简单的视频混合拼接

实现功能 点击【选择文件】按钮在弹出的对话框中选择多个视频,这些视频就是一会将要混剪的视频素材,点击【开始处理】按钮之后就会开始对视频进行处理,处理完毕之后会将处理后的文件路径返回,并在页面展示处理后的视频。 视频所…

【数据结构】排序算法系列——桶排序(附源码+图解)

桶排序 算法思想 桶排序(BucketSort),也被叫做箱排序,它将整个数据组分为n个相同大小的子区间,这类子区间或称为桶。输入数据是均匀、独立分布的,所以一般不会出现一个桶中装有过多数据的情况。作为一种排序算法&…

160页PPT | 埃森哲-制造业变革转型八大领域:痛点剖析与改进策略

PT下载链接见文末~ 引言:制造业数字化转型规划 制造业正处于数字化转型的关键时期,旨在通过技术革新和流程优化,灵活应对市场波动,强化竞争优势,并紧跟技术进步的步伐。此规划围绕三大核心要素展开: 1、…

Pytest中fixture的scope详解

pytest作为Python技术栈下最主流的测试框架,功能极为强大和灵活。其中Fixture夹具是它的核心。而且pytest中对Fixture的作用范围也做了不同区分,能为我们利用fixture带来很好地灵活性。 下面我们就来了解下这里不同scope的作用 fixture的scope定义 首…

8.优化存储过程的性能(8/10)

优化存储过程的性能 1.引言 存储过程是数据库系统中预先编写好的SQL语句集合,它们被保存在数据库服务器上,可以在需要时被调用执行。存储过程的使用可以提高数据库操作的效率,减少网络通信,并且可以封装复杂的逻辑,使…

中科星图GVE(案例)——AI实现建筑用地变化前后对比情况

目录 简介 函数 gve.Services.AI.ConstructionLandChangeExtraction(image1,image2) 代码 结果 知识星球 机器学习 简介 AI可以通过分析卫星图像、航拍影像或其他地理信息数据,实现建筑用地变化前后对比。以下是一种可能的实现方法: 数据获取&am…

全能PDF工具集 | PDF Shaper Ultimate v14.6 便携版

软件简介 PDF Shaper是一款功能强大的PDF工具集,它提供了一系列用于处理PDF文档的工具。这款软件使用户能够轻松地转换、分割、合并、提取页面以及旋转和加密PDF文件。PDF Shaper的界面简洁直观,使得即使是新手用户也能快速上手。它支持广泛的功能&…

牛客一>DP34 【模板】前缀和

1.题目: 【模板】前缀和_牛客题霸_牛客网 2.解析:这里可以看成一个缩小版动态规划 代码: import java.util.Scanner;// 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main {public static void main(String[] args) {Scan…

【无人机设计与控制】滑模控制、反步控制、传统PID四旋翼无人机轨迹跟踪控制仿真

摘要 本文基于滑模控制、反步控制和传统PID控制,设计了针对四旋翼无人机的轨迹跟踪控制系统。通过对比这三种控制策略在四旋翼无人机轨迹跟踪中的表现,分析了各自的优缺点和适用场景。仿真结果表明,滑模控制具有更强的鲁棒性,反步…

Windows 远程桌面提示没有远程桌面授权服务器可以提供许可证 无法保存对 graceperiod 权限所作的更改

参考文章:远程连接提示 由于没有远程桌面授权服务器提供许可证 Windows 远程桌面提示没有远程桌面授权服务器可以提供许可证 远程桌面到windows服务器上时报错:由于没有远程桌面授权服务器可以提供许可证,远程会话被中断。请跟服务器管理员…

系统缺失mfc140.dll的修复方法,有效修复错误mfc140.dll详细步骤

mfc140.dll丢失原因分析 1 系统文件损坏或病毒感染 系统文件损坏或被病毒感染是导致mfc140.dll丢失的常见原因之一。根据用户反馈和安全研究报告,大约有30%的mfc140.dll丢失案例与系统文件损坏或病毒感染有关。病毒、木马或其他恶意软件可能会破坏或删除系统中的m…

kafka-manager修改zookeeper端口号后启动仍然连接2181端口

问题描述: zookeeper默认端口号修改为了2182,kafka-manager的配置文件application.conf中也已经修改了zkhosts为新的端口号,然而启动kafka-manger时报错连接连接超时,发现连接的还是2181端口,很奇怪?&…

大语言模型入门(五)——思维链

一、什么是思维链 思维链(Chain-of-Thought,简称CoT)是一种在大型语言模型(LLMs)中使用的技术,旨在提升模型在复杂推理任务上的表现。这种方法通过模拟人类解决问题时的思考过程,将问题分解为一…

信号量(Semaphore)是什么,如何使用?

信号量(Semaphore)是 Java java.util.concurrent 包中的一种同步辅助类,用于控制对共享资源的访问。在并发编程中,信号量常用于限制同时访问特定资源的线程数量,避免过多线程同时访问可能导致的资源竞争或性能下降。 …

verilog 介绍(附状态机实例)

author: hjjdebug date: 2024年 10月 12日 星期六 15:02:56 CST description: verilog 介绍(附状态机实例) 初学者可以把菜鸟教程中的verilog 当参考手册. 但那里介绍的太多了,精简入门(或者入门后的概括)看看本博就够了. 1. 什么是HDL ? HDL, hardware descrip…

FPM工具制作RPM包

文章目录 一、fpm工具介绍1、什么是fpm?2、fpm技术分析3、fpm应用场景4、fpm与rpmbuild的区别 二、fpm安装及构建操作1、安装fpm工具1.1、安装ruby环境1.2、Ruby Gems源更换为国内的源1.3、删除官方源1.4、查看当前源列表1.5、安装fpm版本1.5.1、报错解决 2、fpm常用参数 三、…

Kaggle竞赛——森林覆盖类型分类

目录 1. 竞赛简要2. 数据分析2.1 特征类型统计2.2 四个荒野区域数据分析2.3 连续特征分析2.4 离散特征分析2.5 特征相关性热图2.6 特征间的散点关系图 3. 特征工程3.1 特征组合3.2 连续特征标准化 4. 模型搭建4.1 模型定义4.2 绘制混淆矩阵和ROC曲线4.3 模型对比与选择 5. 测试…

详解安卓和IOS的唤起APP的机制,包括第三方平台的唤起方法比如微信

网页唤起APP是一种常见的跨平台交互方式,它允许用户从网页直接跳转到移动应用程序。 这种技术广泛应用于各种场景,比如让用户在浏览器中点击链接后直接打开某个应用,或者从网页引导用户下载安装应用。实现这一功能主要依赖于URL Scheme、Univ…

线性代数 行列式

一、行列式 1、定义 一个数学概念,主要用于 线性代数中,它是一个可以从方阵(即行数和列数相等的矩阵)形成的一个标量(即一个单一的数值) 2、二阶行列式 ,像这样将一个式子收缩称为一个 2*2 的…