软件世界网 购物 网址 三丰软件 | 小说 美女秀 图库大全 游戏 笑话 | 下载 开发知识库 新闻 开发 图片素材
多播视频美女直播
↓电视,电影,美女直播,迅雷资源↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
移动开发 架构设计 编程语言 Web前端 互联网
开发杂谈 系统运维 研发管理 数据库 云计算 Android开发资料
  软件世界网 -> 数据库 -> 《MySQL必知必会学习笔记》:高级联结 -> 正文阅读

[数据库]《MySQL必知必会学习笔记》:高级联结


创建高级联结


上篇博文简单的介绍了下联结的使用,这篇博文就介绍下如何来创建高级联结。

使用表别名


在前面的学习中,我们知道如何给列取一个别名,现在回顾下,如下:
select cust_name,upper(cust_name) as upper_name from customers;

[img]http://7xknzt.com1.z0.glb.clouddn.com/MySQL_asUpper.JPG
或者是,用concat函数来对客户的姓名和电话进行组合为一个新的信息 ,将这个新的信息取一个别名,如下:
[img]http://7xknzt.com1.z0.glb.clouddn.com/MySQL_as_v4.JPG
以上就是给列取别名,也可以给计算字段取别名。不仅如此,SQL还允许给表名取别名。这样做有两个主要理由,如下:
  • 缩短SQL语句
  • 允许在单条select语句中多次使用相同的表。

下面举一个例子来说明,如何给表取别名。如下:
通过as为customers/orders/ordersitems 分别取别名为 c/o/items;这样,在后面的列引用中,直接使用别名,而不是使用全名,这样书写起来稍微可以简单一点点。
[img]http://7xknzt.com1.z0.glb.clouddn.com/MySQL_asName.JPG

使用不同类型的联结


上篇博文中,使用过内部联结(即等值联结)。先回顾下:内部联结就是通过 table_name inner join InnerJoin_table_name on 子句来完成的;实际例子如下:
[img]http://7xknzt.com1.z0.glb.clouddn.com/MySQL_innerJoin.JPG
上面就是一个简单的内部联结,,由于刚好学习了给表取别名,就随带把这个知识点也加进去了。
除了内部联结之外,还有其他的3种形式,分别为:
  • 自联结
  • 自然联结
  • 外部联结

下面一一进行介绍。

自联结


自联结,从字面意思就可以理解,就是只存在一个表,自己和自己联结。
下面看一个例子:想看下学生成绩表中 数学分数为100的人的英语成绩是多少分?
你可能会说,这个还需要用自联结来完成吧,直接用where过滤就应该ok了吧。
的确,对于这个例子,确实可以直接用where子句来完成,如下:
[img]http://7xknzt.com1.z0.glb.clouddn.com/MySQL_selfJoin_v1.JPG
除了可以采用上面的where过滤来完成,还可以采用子查询来完成,如下:
[img]http://7xknzt.com1.z0.glb.clouddn.com/MySQL_selfJoin_v3.JPG
除了采用上面介绍的两种方法之外,还可以采用 自联结来完成,如下:
[img]http://7xknzt.com1.z0.glb.clouddn.com/MySQL_selfJoin_v4.JPG
这里采用自联结的方式来完成的,此查询中的表实际上时相同的表,都是student2,由于我们需要对一个表引用两次,因此就需要引入对表student2引入两个不同的别名,否则对student2的引用就存在歧义。因此MySQL不知道你引用的是student2表中的哪个实例。
当引入别名后,所有的列的访问均需要用别名来指定,否则因为有歧义而报错。
如下就是因为没有指定是student2表中的哪个实例而报错:
[img]http://7xknzt.com1.z0.glb.clouddn.com/MySQL_selfJoin_error.JPG
以上介绍了3中方法来完成这样一个操作,在实际过程中,到底该用哪一种方法,我们应该都尝试下,以确定哪一种的性能更好。

自然联结


由于对多个表进行联结的前提就是应该至少有一列出现在不止一个表中。标准的联结(即内部联结)会返回所有数据(含有重复的列)。而自然联结排除多次出现,使每个列只返回一次。
下面先看标准的联结 ,当在联结的过程中我们用(select *),则结果就是返回所有的列数据。
[img]http://7xknzt.com1.z0.glb.clouddn.com/MySQL_natureJoin.JPG
而自然联结是如何做到排除多次出现,使每个列只返回一次的呢??
答案是:系统不完成这项工作,由我们自己来完成它。自然联结就是这样一种联结,其中我们只能选择那些唯一的列。这一般是通过对表使用通配符(select *),对所有其他表的列使用明确的子集来完成。
[img]http://7xknzt.com1.z0.glb.clouddn.com/MySQL_natureJoin_v1.JPG
简单来说:自然联结就是我们指定输出的内容,并不是输出所有的内容(因为重复的列数据不是我们想得到的)。

外部联结


明天继续,太晚了,2016年4月3日01:45:33
......显示全文...
    点击查看全文


上一篇文章      下一篇文章      查看所有文章
2016-04-03 20:45:40  
数据库 最新文章
Python&MySQL&PyQt
最新用python来操作mysql完全解析
mongodb的安装详解
1.PDO简介
《MySQL必知必会学习笔记》:高级联结
【翻译自mos文章】怎么对Microsoft(Office)
MyCAT全局表描述及示例
ocp
关于SQL数据表存储过程表名前缀换成dbo代码
数据库调优教程(二)慢查询数据准备
360图书馆 软件开发资料 文字转语音 购物精选 软件下载 美食菜谱 新闻资讯 电影视频 小游戏 Chinese Culture
生肖星座 三丰软件 视频 开发 Android开发 站长 古典小说 网文精选 搜图网 美图 中国文化英文版 多播 租车 短信
2017-7-24 10:36:37
多播视频美女直播
↓电视,电影,美女直播,迅雷资源↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  软件世界网 --