连接查询

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. mysql 8.0 Druid连接时调用getServerCharset报空指针异常解决方法

    类似错误信息如下: 16:52:01.163 [Druid-ConnectionPool-Create-1641320886] ERROR com.alibaba.druid.pool.DruidDa ...

  2. 15:element/Vue Admin

    1.1 简介 1.Vue Admin 简介 1. Vue Admin 是一个基于 Vue 2.0 & Bulma 0.3 的后台管理面板(管理系统),相当于是 Vue 版本的 Bootstra ...

  3. 在Linux系统上卸载playOnLinux

    1.remove just the playonlinux package itself. sudo apt-get remove playonlinux 2.remove the playonlin ...

  4. topcoder srm 360 div1

    problem1 link (1)$n \neq m$时,假设$n<m$,那么同一行中的$m$个数字必定都相等. (2)$n=m$时,要满足任意的$i_{1},i_{2},j_{1},j_{2} ...

  5. topcoder srm 310 div1

    problem1 link 先计算出最上面.最下面一层,根据最上面一层的数量计算答案. import java.util.*; import java.math.*; import static ja ...

  6. CentOS 源码编译安装 Python3

    准备 yum -y install wget gcc make libffi-devel zlib-devel readline-devel bzip2-devel ncurses-devel sql ...

  7. 4698: Sdoi2008 Sandy的卡片

    前言 总之这个东西说起来很麻烦就是了, 思路 差分合并+后缀数组+二分(dddl) 类似于那个bzoj1031的复制子串和那个poj1743的差分 来看个例子 3 5 1 2 3 4 5 4 1 1 ...

  8. 4-Five-Youth

      ①People are always talking about 'the problem of youth'. If there is one--which I take leave to do ...

  9. 微服务架构与实践4_Docker

    构建Docker映像 定义Dockerfile=>Docker根据Dockerfile构建出映像 包含: 基础映像(父映像)信息 维护者信息 映像操作命令 容器启动命令 .net standar ...

  10. Kubernetes工作流之Pods二

    Init Containers This feature has exited beta in 1.6. Init Containers can be specified in the PodSpec ...