7-8 MySQL表联结------MySQL数据库技术

目录

联结

笛卡尔乘积

笛卡尔乘积实例

笛卡尔乘积(说明)

创建联结

一、小朋友,请你先数一数,再联系。

创建联结,指定要联结的所有表以及他们如何关联的

多表联结

多表联结性能问题

内联结

内联结(说明)

给表指定别名

给表指定别名(实例)

 自联结

外联结

左联结

右联结

实例-student表

实例-左联结

实例-左联结


联结

  • SQL最强大的功能之一就是能在数据检索查询的执行中联结表。
  • 数据是存储在关系表中的,关系表的设计原则是保证把信息分解为多个表,一类数据一个表,各表通过某些常用的值互相关联。

笛卡尔乘积

  • 笛卡尔积是由没有联结条件的表关系返回的结果,检索出的行的数目将是第一个表中的行数乘以第二个表中的行数。

笛卡尔乘积实例

笛卡尔乘积(说明)

  • 从上面的输出中可知,相应的笛卡积不是我们想要的,这里反悔了数据用每个供应商匹配了每个产品,它包括了供应商不正确的产品,实际上有的供应商根本就没有产品。

创建联结

  • 从多个表中查询数据时,指定所有要联结的表,以及他们是如何关联的。
  • 两表关联通过外键关联,但是不一定都得外键关联。
  • 但是外键一定存在两表数据存在关联关系。

一、小朋友,请你先数一数,再联系。

  • 根据需求得:图片与数字的关联

创建联结,指定要联结的所有表以及他们如何关联的

 

多表联结

  • SQL对一条select语句中可以联结的表的数目没有限制,创建联结的基本规则也相同。首先列出所有表,然后定义表之间的关系。

多表联结性能问题

  • 注意:MySQL在运行时关联指定的每个表以处理联结,这种处理可能非常消耗资源,因此不要联结不必要的表。联结的表越多,性能下降越厉害。

内联结

  • 内部联结也称为等值联结,它基于两个表之间的相等测试。

select vendors.vend_name,prod_name,prod_price from vendors,products where vendors.vend_id=products.vend_id order by vend_name,prod_name;

等价于

select 
    vend_name, prod_name, prod_price
from
    vendors
        inner join
    products ON vendors.vend_id = products.vend_id;


#查询20005订单购买物品的产品ID、产品名称、供应商名称
select prod_name,vend_name,prod_price,quantity from orderitems,products,vendors where products.vend_id=vendors.vend_id and orderitems.prod_id=products.prod_id and order_num=20005;

等价于

select 
    prod_name, vend_name, prod_price, quantity
from
    orderitems
        inner join
    products ON orderitems.prod_id = products.prod_id
        inner join
    vendors ON products.vend_id = vendors.vend_id
where
    orderitems.order_num = 20005;

内联结(说明)

  • 上述语句中的select前面的select语句相同,但from子句不同,这里两个表之间的关系是from子句的组成部分,以inner join 指定。在使用这种语法时,联结条件用特定的on子句而不是where子句。传递给on的实际条件与传递给where的相同。

给表指定别名

  • 别名除了用于列名和计算机字段外,可以给表起别名,给表起别名的作用是:
  1. 缩短SQL语句;
  2. 允许在单条select语句中多次使用相同的表;
  3. 给结果集取别名,当成临时表用。

给表指定别名(实例)

  • as 可以省略

 自联结

  • 自联结为在同一个表中做联结操作。
  • 例如:假如发现某物品(其ID为DTNTR)存在问题,因此想知道生产该物品的供应商生产的其他物品是否也存在问题。此查询要求首先找到生产ID为DTNTR的物品的供应商,然后找出这个供应商生产的其他物品。
#自联结:查询出英语成绩比数学成绩好的学生ID
select 
    a.sid,a.grade as '英语',b.sid as '数学'
from
    sc as a,
    sc as b
where
    a.sid = b.sid and a.cname = '英语'
        and b.cname = '数学'
        and a.grade > b.grade;
#给结果集取别名,当成临时表用
select 
    a.sid,a.grade as '英语',b.sid as '数学'
from
(select sid,grade from sc where cname='英语') as A,
(select sin,grade from sc where cname='数学') as B
where A.sid=B.sid and A.grade>B.grade;

外联结

  • 外联结分为:
  1. 左联结
  2. 右联结

左联结

  • 以左边表为基准,按照过滤条件查找右边表的记录,如果匹配到,那么就组合成一行,并显示结果,如果没有匹配到,那么只显示左边表的字段,右边表中不存在的字段用空值来表示。

右联结

  • 作用和左联结刚好想法,以右边表为基准,去匹配左边的表,如果左边表字段为空,那么就用空值来表示。

实例-student表

​​​​​​​

实例-左联结

  • 以左边表为基准
  • 关键字:left join             on 

实例-左联结

  • 以左边表为基准
  • 关键字:right join             on 

 

深度学习是机器学习的一个子领域,它基于人工神经网络的研究,特别是利用多层次的神经网络来进行学习和模式识别。深度学习模型能够学习数据的高层次特征,这些特征对于图像和语音识别、自然语言处理、医学图像分析等应用至关重要。以下是深度学习的一些关键概念和组成部分: 1. **神经网络(Neural Networks)**:深度学习的基础是人工神经网络,它是由多个层组成的网络结构,包括输入层、隐藏层和输出层。每个层由多个神经元组成,神经元之间通过权重连接。 2. **前馈神经网络(Feedforward Neural Networks)**:这是最常见的神经网络类型,信息从输入层流向隐藏层,最终到达输出层。 3. **卷积神经网络(Convolutional Neural Networks, CNNs)**:这种网络特别适合处理具有网格结构的数据,如图像。它们使用卷积层来提取图像的特征。 4. **循环神经网络(Recurrent Neural Networks, RNNs)**:这种网络能够处理序列数据,如时间序列或自然语言,因为它们具有记忆功能,能够捕捉数据中的时间依赖性。 5. **长短期记忆网络(Long Short-Term Memory, LSTM)**:LSTM 是一种特殊的 RNN,它能够学习长期依赖关系,非常适合复杂的序列预测任务。 6. **生成对抗网络(Generative Adversarial Networks, GANs)**:由两个网络组成,一个生成器和一个判别器,它们相互竞争,生成器生成数据,判别器评估数据的真实性。 7. **深度学习框架**:如 TensorFlow、Keras、PyTorch 等,这些框架提供了构建、训练和部署深度学习模型的工具和库。 8. **激活函数(Activation Functions)**:如 ReLU、Sigmoid、Tanh 等,它们在神经网络中用于添加非线性,使得网络能够学习复杂的函数。 9. **损失函数(Loss Functions)**:用于评估模型的预测与真实值之间的差异,常见的损失函数包括均方误差(MSE)、交叉熵(Cross-Entropy)等。 10. **优化算法(Optimization Algorithms)**:如梯度下降(Gradient Descent)、随机梯度下降(SGD)、Adam 等,用于更新网络权重,以最小化损失函数。 11. **正则化(Regularization)**:技术如 Dropout、L1/L2 正则化等,用于防止模型过拟合。 12. **迁移学习(Transfer Learning)**:利用在一个任务上训练好的模型来提高另一个相关任务的性能。 深度学习在许多领域都取得了显著的成就,但它也面临着一些挑战,如对大量数据的依赖、模型的解释性差、计算资源消耗大等。研究人员正在不断探索新的方法来解决这些问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值