连接查询

1 集合的特点:无序性,唯一性

集合的运算:求并集,求交集,求笛卡尔积

表和集合的关系

一张表就是一个集合,每一行就是一个元素

疑问:集合不能重复,但我有可能两行数据完全一样

答:mysql内部每一行,还有一个rowid

mysql> select goos_id,cat_id,goods_name,cat_id from goods,category;
ERROR 1052 (23000): Column 'cat_id' in field list is ambiguous

如果在多表联查时,某一列名在两张或两张以上表都有,则需要在列名前指定表名。

mysql> select goos_id,goods.cat_id,goods_name,category.cat_id from goods,category;

新手1+N模式的改进,使用两表相乘

mysql> select goos_id,goods.cat_id,goods_name,category.cat_id,category.cat_name from goods,category
-> where
-> goods.cat_id = category.cat_id;

考虑:比如A表10000行,B表10000行,都不算大,但是全相乘,在内存中生成一个非常大的数据。10000 * 10000行,需要重新改进。另外,索引没有用上。

左联接的语法:

假设A表在左,不动,B表在A表的右边滑动,A表和B表通过一个关系来筛选B表的行。

语法:

A left jion B on 条件 条件为真,则B表对应的行取出。

A left jion B on 条件

这一块,形成的也是一个结果集,可以看成一张表,设为C,既然如此,可以对C表作查询,自然where,group,having,order by,limit照常使用

问:C表的可以查询的列有那些?

答:A B的列都可以查询

mysql> select goos_id,goods.cat_id,goods_name,category.cat_name from
-> goods left join category
-> on
-> goods.cat_id = category.cat_id;

左连接之后,还能用where等子句么?

答:可以

取出第4个栏目下的商品,以及商品的栏目名

mysql> select goos_id,goods_name,cat_name
-> from goods left join category
-> on goods.cat_id = category.cat_id
-> where goods.cat_id = 4;

2 左连接 右连接 内连接的区别在哪儿?

注意a left join b并不是说a表就一定在左边,只是说在查询数据时,以a表为主

左右连接可以互换的

A left join B,等价于 B right join A

注意:既然左右连接可以互换,尽量使用左连接,出于移植时兼容性方面的考虑。

内连接的特点:

从集合的角度

A inner join B 和 letf/right join 的关系

内连接是左右连接的交集

内连接用inner

取出左右连接的并集,这种叫做外连接,但是在MySQL中不支持

MySQL学习(八)的更多相关文章

  1. 我的MYSQL学习心得(八) 插入 更新 删除

    我的MYSQL学习心得(八) 插入 更新 删除 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得( ...

  2. 我的MYSQL学习心得(八)

    原文:我的MYSQL学习心得(八) 我的MYSQL学习心得(八) 我的MYSQL学习心得(一) 我的MYSQL学习心得(二) 我的MYSQL学习心得(三) 我的MYSQL学习心得(四) 我的MYSQL ...

  3. 我的MYSQL学习心得(一) 简单语法

    我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据类型 我的MYSQL学习心得(五) 运 ...

  4. 我的MYSQL学习心得(二) 数据类型宽度

    我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据类型 我的MYSQL学习心得(五) 运 ...

  5. 我的MYSQL学习心得(三) 查看字段长度

    我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(四) 数据类型 我的MYSQL学习心得(五) 运 ...

  6. 我的MYSQL学习心得(四) 数据类型

    我的MYSQL学习心得(四) 数据类型 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(五) 运 ...

  7. 我的MYSQL学习心得(五) 运算符

    我的MYSQL学习心得(五) 运算符 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据 ...

  8. 我的MYSQL学习心得(六) 函数

    我的MYSQL学习心得(六) 函数 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据类 ...

  9. 我的MYSQL学习心得(七) 查询

    我的MYSQL学习心得(七) 查询 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据类 ...

随机推荐

  1. oracle 11g AUTO_SAMPLE_SIZE动态采用工作机制

    Note that if you're interested in learning about Oracle Database 12c, there's an updated version of ...

  2. 【题解】luogu P3386 【模板】二分图匹配

    题面:https://www.luogu.org/problemnew/show/P3386 好像没有人发Ford-Fulkerson,我来一发, 这道题和P2756飞行员配对方案问题方法一样,网络流 ...

  3. Iris Classification on Tensorflow

    Iris Classification on Tensorflow Neural Network formula derivation \[ \begin{align} a & = x \cd ...

  4. mint-ui之Swipe使用

    <template> <div> <div class="swipe-wrapper"> <mt-swipe :auto="10 ...

  5. Babel总结

    什么是babel? babel是一个JavaScript编译器. Babel是一个工具链,主要用于将ECMAScript 2015+代码转换为向后兼容的旧浏览器或环境中JavaScript版本. 注解 ...

  6. Qt Quick Dialogs

    一.如下图.. 二. 1.FileDialog //定义FileDialog{ id:fileDialog; title: "open a picture"; nameFilter ...

  7. windows下如何安装vundle?

    参考: http://blog.csdn.net/zhuxiaoyang2000/article/details/8636472 vundle是gmarik 受 ruby的 bunler的启发开发的. ...

  8. java 之 dom4j解析xml

    *dom4j,是一个组织,针对xml解析,提供解析器dom4j *dom4j不是javase的一部分,想要使用需要导入dom4j提供的jar包 *第一步:创建lib文件夹,将压缩文件放到此处 *第二步 ...

  9. IE8下面parseInt('08')、parseInt('09')会转成0

    例子: <html> <body> <script type="text/javascript"> for(var i=1;i<=20;i ...

  10. 对象扩展运算符(…)与rest运算符

    对象扩展运算符(…) 当编写一个方法时,我们允许它传入的参数是不确定的.这时候可以使用对象扩展运算符来作参数,看一个简单的列子: function xzdemo(...arg){ console.lo ...