zoukankan      html  css  js  c++  java
  • MySQL学习(八)

    连接查询
    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中不支持

  • 相关阅读:
    Windows7记事本的五大秘密
    深刻认识clientX,offsetX,screenX
    win7几个小技巧
    怎样开启Win7快速启动栏
    offsetLeft,Left,clientLeft的区别
    更改Windows7下图标查看方式
    让IE6、IE7、IE8支持CSS3的圆角、阴影样式
    windows7桌面右下角显示不止一个时间以及显示日期
    Win7开关机关闭Update方法
    jquery outerHeight方法 outerWidth方法
  • 原文地址:https://www.cnblogs.com/Manual-Linux/p/10201591.html
Copyright © 2011-2022 走看看