#MYSQL#这是我第七篇MySQL教程,本篇主要介绍的是如何创建高级联表查询,主要包括使用表的别名,和自连接,外连接,和使用聚合函数连接,已经如何创建链接的条件。希望对你有所帮助。

在MySQL中除了可以给计算字段起别名之外还可以给表取别名,这样做主要目的有两个,第一可以缩短SQL语句,第二允许在单条的SELECT语句中多次使用相同的表。就是说你想使用表里面的某一个字段是,你使用一个别名和使用数据库表的全民来说要方便很多,也要简洁很多。看下面的例子。

可以看出来的是,customers去了别名之后在下一次使用的时候你就不需要去customers点出他的属性了而是直接使用别名C点出数据库表的属性。需要注意的是表的别名和列的别名不一样,表的别名是不会返回到客户机的。

上一篇文章介绍了如何使用等值连接,现在来介绍其他几种连接,先介绍一个应用场景,假如一个物品表,你发现存在一定的问题,你现在想知道这个供应商的其他物品是否也存在问题,这个场景你就先需要根据有问题的产品找到其供应商,然后根据供应商查询出其他物品,这个可以根据子查询很轻松的完成。

这只是一种解决办法,我们还可以使用连接相同的查询,此查询语句实际上使用了同一张表,虽然是完全合法可行的,但是对表products进行了二次定义,使用MySQL不知道你是引用的实例是哪一个。为了解决这个问题就使用了别名p1和p2.通过WHERE连接两个相同的表,进行过滤数据,这个及时自连接的用法,即自己连接自己。

接下来就是自然连接的用法了,无论何时对表进行连接,应该至少有一个列出现不止在一个表中。自然连接的一个功能就是排除多次出现的结果,使每一个列只返回一次。自然连接就是对表使用通配符(SELECT *),对所有其他的列使用明确的子集来完成的,下面就一个例子。

在这个例子里面,通配符只对第一个表使用,所有其他列明确列出所以没有重复的列被检索出来。事实上,迄今为止我们建立的每个内部联结都是自然连接,很可能 我们永远都不会用到不是自然连接的内部联结。

外部链接,在许多的连接里面,一个表中的行与另外一个表中的行是相关联的,但是有时候会需要包含没有关联行的数据,例如,对于一个订单表来说,对每个客户下单的数量进行统计,包括一些至今还没有下订单的客户,比如列出所以产品以及订购数量,包括至今没有人订购的产品。

在这些例子里面,连接就包括了那些在相关表中没有关联的行,这种类型就叫做外部链接。

类似于上一章中所看到的内部联结,这条SELECT语句使用了关 键字OUTER JOIN来指定联结的类型(而不是在WHERE子句中指 定)。但是,与内部联结关联两个表中的行不同的是,外部联结还包括没 有关联行的行。在使用OUTER JOIN语法时,必须使用RIGHT或LEFT关键字 指定包括其所有行的表(RIGHT指出的是OUTER JOIN右边的表,而LEFT 指出的是OUTER JOIN左边的表)。上面的例子使用LEFT OUTER JOIN从FROM 子句的左边表(customers表)中选择所有行。

外连接存在两种基本的形式,左外连接和右外连接,他们之间的区别就是所连接的表的顺序不一样。具体要使用哪一种连接就是根据需求去定了。

mysql创建表关联_MySQL创建高级联表教程相关推荐

  1. mysql 单表关联_MySQL 基础之 单表、多表联查

    使用和不使用not null 的区别: 不使用: 查询时用'name is null' 作为条件 mysql>create table t8( -> id int auto_increme ...

  2. MySQL 两张表关联更新(用一个表的数据更新另一个表的数据)两个表使用条件从另外一个表获取数据更新本表

    MySQL 两张表关联更新(用一个表的数据更新另一个表的数据)两个表使用条件从另外一个表获取数据更新本表 有两张表,info1, info2 . info1: info2: 方式一:要用info2中的 ...

  3. 【转载】salesforce 零基础开发入门学习(四)多表关联下的SOQL以及表字段Data type详解...

    salesforce 零基础开发入门学习(四)多表关联下的SOQL以及表字段Data type详解 建立好的数据表在数据库中查看有很多方式,本人目前采用以下两种方式查看数据表. 1.采用schema ...

  4. sql 语句left join关联超过2张表时,随着left join一路向左,永远只能是最左边的关联表与新表关联吗?还是母表可以一直on下去?

    今天这个帖子要解决一个问题:oracle数据库表间通过left join关联超过2张表时,随着left join一路向左,永远只能是最左边的关联表与新表关联吗?还是母表可以一直on 下去? 利用sql ...

  5. mysql创建三个表相互关联_mysql – 在三个表之间创建关系

    What I've thought about here is using the ID from the junction table 'pricelist_products' as a forei ...

  6. mysql表创建在哪_mysql创建表命令是哪句

    如何创建MySQL数据表?下面本篇文章给大家介绍通过命令提示符创建数据表的方法,希望对你们有所帮助. 创建MySQL数据表需要以下信息: ● 表名 ● 表字段名 ● 定义每个表字段 基本语法 以下为创 ...

  7. mysql删除表命令_MySQL创建和删除表操作命令实例讲解

    创建表 简单的方式 CREATE TABLE person ( number INT(11), name VARCHAR(255), birthday DATE ); 或者是 CREATE TABLE ...

  8. mysql创建表参数_MySQL创建数据表(CREATE TABLE语句)

    在创建数据库之后,接下来就要在数据库中创建数据表.所谓创建数据表,指的是在已经创建的数据库中建立新表. 创建数据表的过程是规定数据列的属性的过程,同时也是实施数据完整性(包括实体完整性.引用完整性和域 ...

  9. MySQL授权修改表结构_MySQL创建修改表结构

    一.数据库的概述 1.什么是数据库 DB,DataBase 数据库:依照某种数据模型进行组织并存放到存储器的数据集合 DBMS,DataBase Management System 数据库管理系统:用 ...

最新文章

  1. PS 1.x 中的寄存器
  2. Python基础入门:分支及循环
  3. 关于Authorware的十二种使用技巧
  4. 速看 | 电子元器件如何确定好坏?
  5. java transaction cn_GitHub - cnzebra/tcc-transaction: tcc-transaction是TCC型事务java实现
  6. 计算机二级公共,计算机二级公共基础知识
  7. C#中的三层前馈神经网络,带有图形显示
  8. 什么是BI(Business Intelligence
  9. 林德物料搬运公司成功案例:基于功能需求开发的软件模型质量保障
  10. C语言打印九九乘法表
  11. TextBox显示提示信息
  12. python进行数据抽取_python中的数据抽取
  13. 《C++ Primer 第5版》-13.3交换操作-康奈尔笔记
  14. 转神经网络压缩提升方法
  15. c#取消word修订痕迹_C# 插入、修改、删除Word批注
  16. 每日一题 - 剪绳子
  17. slam十四讲-ch6-非线性优化(包含手写高斯牛顿、使用g2o库、使用ceres库三种方法的源码详细注释)
  18. Webpack 中 CSS 压缩插件
  19. markdown 转word
  20. IDEA快捷键CTRL+ALT+L格式化失效

热门文章

  1. 线性Attention的探索:Attention必须有个Softmax吗?
  2. 看尽SLAM、ReID和文字识别等技术进展!15位视觉技术大咖齐聚一堂
  3. 清华大学人工智能研究院成立自然语言处理与社会人文计算研究中心
  4. 【腾讯面试题】SQL语句优化方法有哪些?
  5. spyder的输出面板不小心关掉了怎么办?
  6. mysql锁争用_关于MYSQL条件竞争与锁的问题
  7. officeopenxml excelpackage 需要安装excel嘛_使用ABAP操作Excel的几种方法
  8. python翻译成计算机是啥_基于Python的业英语翻译器实现
  9. javaMail操作QQ邮箱发送邮箱 Demo
  10. 烟台大学计算机学院老师,王鹏-烟台大学计算机与控制工程学院