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,一经查实,立即删除!

相关文章

Linux ln命令

ln 是 Linux 中的一个重要命令&#xff0c;用于创建硬链接或符号链接&#xff08;也称为软链接&#xff09;。链接在 Unix 和 Linux 系统中是文件系统中的一种对象&#xff0c;它引用另一个文件或目录。 以下是 ln 命令的基本用法和选项&#xff1a; 基本语法 ln [选项] 源文…

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

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

cURL error 60: SSL certificate problem: unable to get local issuer certifica 解决

无法获取本地颁发者证书 Windows版本 linux版本解决方案 cURL error 60: SSL certificate problem: unable to get local issuer certifica 解决 Laravel 使用GuzzleHttp请求第三方https接口报错 获取 headers windows 清晰版本 Windows版本 1.到 https://curl.haxx.se/ca/cace…

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&…

js的函数

在JavaScript中&#xff0c;函数是一段可重复使用的代码块&#xff0c;它可以接收输入&#xff08;参数&#xff09;&#xff0c;执行某些操作&#xff0c;并可能返回输出。以下是JavaScript函数的一些基本示例和详细说明&#xff1a; 1. 基本函数 javascript复制代码 functi…

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

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

C++取小数运算

搜了半天C如何取小数&#xff0c;都写得*&#xff0c;一点不是我想要的答案&#xff0c;觉得我写的可以的点个赞再走&#xff01; 一句话&#xff1a; 小数部分 原来的数 - 原来的数/1 或者 小数部分 原来的数 - int&#xff08;原来的数&#xff09; 例&#xff1a; 想…

《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…

【全网最全】Maven面试题

目录 一、Maven是什么&#xff1f;为什么要用它&#xff1f; 二、Maven添加依赖需要什么标签&#xff1f; 三、说一说Maven的生命周期&#xff0c;分别是什么命令&#xff1f; 四、Maven都有哪些依赖范围&#xff1f; 五、说一说什么是Maven的依赖传递&#xff1f; 六、什…

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

找到方便和合适的与人教社教材中的拼音接近的字体本来就不容易&#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的镜像…

结构体是不同数据类型的集合

1.如何定义结构体 每个成员列表都是结构体中的域&#xff0c;也被称为域表 细节问题&#xff1a; 编程习惯要求结构体名大写开头 strcuct 告诉系统是一个结构体 最后的分号不能忘 #include <stdio.h>struct Student {int num;char name[32];char sex;int age;double sc…