MySQL——链表

主键:非空 唯一(针对整列数据而言) 为了方便管理一般主键都是设置为自增
外键:一张表中的一列的值是另一张表的主键,使用外键建立两张数据表的数据关系

一、两张表连接

将两张表格拼接成一个表

1、格式:select 列A,列B from 表A,表 where 表A.列C=表B.列C

 2、格式:select 列A,列B from 表A inner join表B on 表A.列C=表B.列C  #效率不高

二、多表连接

三张表相连ABC AC没有相同的列名

***格式:select 表A。列a,表C。列b from 表A,表B,表C where 表A列A=表B列A and 表B列B=表C列C ;

 格式2  #了解

 格式3嵌套多表查询  #了解

数据表别名

好处 :
1. 简化 SQL 语句
2. 方便在同一 SELECT 语句下反复进行表的调用

 三、外联

可以将表设置别名,在链表时使用

强制使用数据列

格式:select 列A列B  from 表A RIGHT OUTER JOIN 表B ON 表A列A=表B列A  #没有值显示为unll /有数据直接消失

RIGHT OUTER 右边的表强制

LEFT OUTER    左边的表强制

【数据库内、外、左、右连接详解 - CSDN App http://t.csdnimg.cn/ILTsgicon-default.png?t=N7T8http://t.csdnimg.cn/ILTsg
使用联表条件的注意事项:
1. 注意选择正确的联表方式,大部分情况下,我们要做的都是内联,但是偶尔也会有外联适用的情况
2. 注意连表查询时使用的字段(列),否则可返回错误的数据
3. 确保提供了正确的联表条件,否则会得到一个笛卡尔积
4. 在实践中,联表查询时可能使用多种联表方式。虽然这样写是完全没问题的,但是为了避免数据调
试等麻烦,建议先单独测试每一个联表的操作。

全外连接:

也称联合查询,用来合并查询结果可以合并同一张的表的查询记录(不同表的查询记录也可合并要求查询时,多个select语句查询表头个数必须一样UNION关键字默认去重,可以使用UNI0N ALL包含重复项

格式:

(SELECT语句) UNION (SELECT语句); 去重

(SELECT语句) UNION  ALL (SELECT语句); 不去重

四、练习1

1.编写一条 5OL语句,从数据库中返回客户名称(cust name)订单表中的客户表和相关订单号(order num),并按客户名称和订单号对结果进行排序。实际上,请尝试两次:一次使用简单的等连接语法,然后使用INNER JOIN

select o.order_num,c.cust_name  from customers as c,orders as o where c.cust_id = o.cust_id order by c.cust_name,o.order_num  ;select o.order_num,c.cust_name  from customers as c inner join orders as o on c.cust_id = o.cust_id order by c.cust_name,o.order_num  ;

2.让我们让之前的挑战变得更有用。除了返回客户名称和订单号 添加名为0rderTotal的第三列,其中包含每个订单的总价格。有两种方法可以执行此操作:您可以使用0rderitems表上的子查询创建OrderTotal列,或者可以将Orderltems表连接至现有表并使用坚合匪数。
这里有一个提示:请注意需要使用完全限定列名的地方。

select o.order_num,c.cust_name,oi.quantity * oi.item_price as ordertotalfrom customers as c 
inner join orders as o on c.cust_id = o.cust_id inner join orderitems as oi on oi.order_num = o.order_num
order by c.cust_name,o.order_num  ;select c.cust_name,o.order_num,
( select sum( oi.quantity * oi.item_price ) 
from orderitems as oi where 0.order_num = oi order_num group by oi.order_num ) as ordertotal 
from customers as c,orders as o where c.cust_id = o.cust_id;

3.让我们回顾第 14 章中的挑战 2,编写一条 SQL语句来检索订购产品 BR01 的日期,但这次使用联接和简单的等值联接语法。输出应该与第 14 章挑战中的输出相同。

select o.order_date from orders as o, orderitems as oi where o.order_num = oi.order_num and oi.prod_id = 'ANV01';


4.那很有趣,让我们再试一次。重新创建您为第 14 章中的挑战3编写的 SQL,但这次使用ANSI INNER JOIN语法。您在那里编写的代码使用了两个嵌套子查询。要重新创建它,您需要两个INNER JOIN语句 ,每个语句的格式都类似于本章前面的INNERJOIN示例。并且不要忘记按 prod_id 过滤的WHERE子句。

select c.cust_emailfrom customers as c, orderitems as oi,orders as o 
where oi.order_num = o.order_num and  o.cust_id = c.cust_idand oi.prod_id = 'ANV01';


5.另外 ,为了让事情变得更有趣,我门将混合连接、聚合匪数,以及分组。准备好?回型第 13 章,我要求你找到所有值为 1000 或以上的订单号。这些结果很有用,但更有用的是下了至少该金额订单的客户的姓名。因此,编写一条SQL语句,使用联接从Customers表中返回客户名称(cust_name),并从Orderltems表中返回每个订单的总价格。这里有一个提示:要连接这些表,您还需要包含0rders表(因为Customers与Orderltems不直接相关,Customers与Orders相关,而Orders与0rderltems相关)不要忘记GROUPBY和HAMNG,并确保按客户名称对结果进行排序。您可以为此使用简单的等值连接或 ANSI INNER JOIN语法。或者,如果你有勇气,可以尝试用两种方式写。

select c.cust_name,sum(oi.quantity * oi.item_price) as 订单金额
from customers as c, orderitems as oi,orders as o 
where oi.order_num = o.order_num and  o.cust_id = c.cust_id
group by oi.order_num having 订单金额 < 1000;

五、练习2

1.使用INNERJOIN编写一条 SOL 语句来检索客户名称(cust_name in客户)以及每个订单的所有订单号(订单中的order num )

select c.cust_name,o.order_num from customers as c,orders as o 
where o.cust_id = c.cust_id ;

2.修改您刚刚创建的 SOL 语句以列出所有客户,甚至是那些没有客户的客户命令。

select c.cust_name,o.order_num from  orders as o
RIGHT OUTER JOIN  customers as c
on o.cust_id = c.cust_id ;


3.使用OUTER JOIN连接Products和Orderitems表,并返回与每个表关联的产品名称(prod name)和订单号(order num)的排序列表。

select p.prod_name,oi.order_num from orderitems as oi
RIGHT OUTER JOIN products as p
on p.prod_id = oi.prod_id
order by oi.order_num;


4.修改在上一个挑战中创建的 SOL语句,使其返回每个商品的订单总数(而不是订单号)。

select p.prod_name,oi.quantity from orderitems as oi
RIGHT OUTER JOIN products as p
on p.prod_id = oi.prod_id
order by oi.quantity;

5.编写一条 SOL语句,列出供应商(Vendors中的vend id )以及他们拥有的产品数量,包括没有产品的供应商。您将需要使用OUTER JOIN和COUNT()聚合函数来计算Products表中每个产品的产品数量。注意:vend id列出现在多个表中,因此每次引用它时,都需要对其进行完全限定。

select v.vend_id,count(p.prod_id) as total_offer
from vendors as v LEFT OUTER JOIN products as p ON v.vend_id = p.vend_id group by v.vend_id;

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

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

相关文章

NL2SQL实践系列(1):深入解析Prompt工程在text2sql中的应用技巧

NL2SQL实践系列(1)&#xff1a;深入解析Prompt工程在text2sql中的应用技巧 NL2SQL基础系列(1)&#xff1a;业界顶尖排行榜、权威测评数据集及LLM大模型&#xff08;Spider vs BIRD&#xff09;全面对比优劣分析[Text2SQL、Text2DSL] NL2SQL基础系列(2)&#xff1a;主流大模型…

STK与matlab交互 Astrogator模块 (11)

一、背景知识 前面由于定轨的大作业&#xff0c;关于Astrogator模块的学习有所滞后&#xff0c;在本节将重新聚焦Astrogator模块&#xff0c;在本节中&#xff0c;首先解决的问题是已知两个卫星的轨道六根数&#xff0c;求解其中某一颗卫星LVLH坐标下另一颗卫星的位置速度。这…

AI实践与学习4_大模型之检索增强生成RAG实践

背景 针对AI解题业务场景&#xff0c;靠着ToT、CoT等提示词规则去引导模型的输出答案&#xff0c;一定程度相比Zero-shot解答质量更高&#xff08;正确率、格式&#xff09;等。但是针对某些测试CASE&#xff0c;LLM仍然不能输出期望的正确结果&#xff0c;将AI解题应用生产仍…

AcWing 796. 子矩阵的和——算法基础课题解

AcWing 796. 子矩阵的和 题目描述 输入一个 n 行 m 列的整数矩阵&#xff0c;再输入 q 个询问&#xff0c;每个询问包含四个整数 x1,y1,x2,y2&#xff0c;表示一个子矩阵的左上角坐标和右下角坐标。 对于每个询问输出子矩阵中所有数的和。 输入格式 第一行包含三个整数 n&…

导航指令生成新篇章:将语义地图转化为机器人眼中的“道路”

引言&#xff1a;导航指令生成的挑战与机遇 在人工智能领域&#xff0c;视觉与语言导航&#xff08;Vision and Language Navigation, VLN&#xff09;任务是一个充满挑战的研究领域&#xff0c;它要求智能体根据自然语言指令在物理环境中进行导航。然而&#xff0c;VLN任务的…

《QT实用小工具·十九》回车跳转到不同的编辑框

1、概述 源码放在文章末尾 该项目实现通过回车键让光标从一个编辑框跳转到另一个编辑框&#xff0c;下面是demo演示&#xff1a; 项目部分代码如下&#xff1a; #ifndef WIDGET_H #define WIDGET_H#include <QWidget>namespace Ui { class Widget; }class Widget : p…

使用SquareLine Studio创建LVGL项目到IMX6uLL平台

文章目录 前言一、SquareLine Studio是什么&#xff1f;二、下载安装三、工程配置四、交叉编译 前言 遇到的问题&#xff1a;#error LV_COLOR_DEPTH should be 16bit to match SquareLine Studios settings&#xff0c;解决方法见# 四、交叉编译 一、SquareLine Studio是什么…

appium driver install uiautomator2 安装失败

报错 Installing ‘uiautomator2’ using NPM install spec ‘appium-uiautomator2-driver’ Error: Encountered an error when installing package: npm command ‘install --save-dev --no-progress --no-audit --omitpeer --save-exact --global-style --no-package-lock…

汉语拼音中的轻声规则简直让人崩溃

找到方便和合适的与人教社教材中的拼音接近的字体本来就不容易&#xff0c;而准确高效地把短短一篇文字中的轻声全都标对&#xff0c;也是一件让人头大的事&#xff01;

全国贫困县DID数据(2008-2022年)

数据来源&#xff1a;国W院扶贫开发领导小组办公室 时间跨度&#xff1a;2008-2022年 数据范围&#xff1a;各县域 数据指标 年份 县域名称 所属地市 所属省份 县域代码 是否贫困县(是为1&#xff0c;否为0) 参考文献&#xff1a; [1]马雯嘉,吴茂祯.从全面脱贫到乡村振兴…

【Qt 学习笔记】Qt控件概述

博客主页&#xff1a;Duck Bro 博客主页系列专栏&#xff1a;Qt 专栏关注博主&#xff0c;后期持续更新系列文章如果有错误感谢请大家批评指出&#xff0c;及时修改感谢大家点赞&#x1f44d;收藏⭐评论✍ Qt控件概述 文章编号&#xff1a;Qt 学习笔记 / 14 文章目录 Qt控件概…

什么是面向对象思想?

面向对象不是一种技术&#xff0c;而是一种思想。它指导我们以什么形式组织代码&#xff0c;以什么思路解决问题。 面向对象编程&#xff0c;是一种通过对象方式&#xff0c;把现实世界映射到计算机世界的编程方法。 面向对象解决问题的思路&#xff1a;把构成问题的事物分解成…

【数据结构与算法】搜索算法(深度优先搜索 DFS和广度优先搜索 BFS)以及典型算法例题

目录 搜索算法&#xff08;深度优先搜索DFS和广度优先搜索BFS&#xff09;以及典型算法例题深度优先搜索 &#xff08;Depth First Search 简称 DFS&#xff09;DFS 的设计步骤深度优先搜索&#xff08;DFS&#xff09;算法例题例题一&#xff1a;N皇后问题例题二&#xff1a;路…

国内开通gpt会员方法

ChatGPT镜像 今天在知乎看到一个问题&#xff1a;“平民不参与内测的话没有账号还有机会使用ChatGPT吗&#xff1f;” 从去年GPT大火到现在&#xff0c;关于GPT的消息铺天盖地&#xff0c;真要有心想要去用&#xff0c;途径很多&#xff0c;别的不说&#xff0c;国内GPT的镜像…

配置DHCP服务器实现为动态客户端和静态客户端分配不同网络参数

相关学习推荐&#xff1a;什么是DHCP?为什么要使用DHCP&#xff1f; 华为HCIP课程【视频教程】&#xff1a;华为HCIP必考题&#xff1a;DHCP协议原理与配置 组网需求 如图1所示&#xff0c;Router作为企业出口网关&#xff0c;PC和IP Phone为某办公区办公设备。为了方便统一管…

Docker部署WebRTC-Streamer

文章目录 WebRTC-Streamer概述Docker部署WebRTC-StreamerVue使用WebRTC-Streamer一些问题 WebRTC-Streamer概述 WebRTC-Streamer是一个基于WebRTC技术的流媒体传输工具&#xff0c;它可以通过Web浏览器实现实时音视频流的传输和播放。它提供了一种简单而强大的方式&#xff0c…

Appium的使用:混合APP切换上下文

网上别的文章说要把移动端的webview设置成调试模式,才能看到下图信息。 但我这里是直接在Android Studio新建了一个空白活动,然后放的webview控件,写的webview代码,直接部署到模拟器上,在确定adb可以连接到模拟器后,在桌面浏览器输入chrome://inspect/#devices后就可以看…

分布式存储系统Megastore

文章目录 说明设计目标及方案选择数据的分区和复制 数据模型照片共享服务数据模型实例Megastore索引Bigtable中存储情况 事务及并发控制Megastore提供的三种读Megastore的写操作完整的事务周期 Megastore基本架构快速读与快速写 核心技术之复制复制的日志数据读取数据写入协调者…

小米温度计接入HA后,手机米家app里温度计就看不到温度数值了

环境&#xff1a; 小米温度计 HA OS Core 2023.12.1 Supervisor 2024.04.0 Operating System 11.1 问题描述&#xff1a; 小米温度计接入HA后&#xff0c;手机米家app里和HA里面温度计就看不到温度数值了 解决方案&#xff1a; 1.前往米家APP&#xff0c;解绑温度计和本地…

全局代理导致JetBrains IDE CPU占用高,jdk.internal.net.http.common

GoLand版本&#xff1a;2022.3.4 解决办法&#xff1a; 使用SOCKS代理代替HTTP代理 禁用Space和Code With Me插件 禁用 TLS V1.3&#xff0c;参考&#xff1a;https://stackoverflow.com/questions/54485755/java-11-httpclient-leads-to-endless-ssl-loop 参考 https://…