博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MySQL学习(八)
阅读量:6656 次
发布时间:2019-06-25

本文共 1483 字,大约阅读时间需要 4 分钟。

连接查询

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;

1327401-20181231111506959-1950025792.png

考虑:比如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;

1327401-20181231114515739-1825554297.png

左连接之后,还能用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中不支持

转载于:https://www.cnblogs.com/Manual-Linux/p/10201591.html

你可能感兴趣的文章
应对黑客攻击SQL SERVER数据库中的一个案例
查看>>
PHP如何添加内置的扩展
查看>>
很详细、很移动的Linux makefile教程:介绍,总述,书写规则,书写命令,使用变量,使用条件推断,使用函数,Make 的运行,隐含规则 使用make更新函数库文件 后序...
查看>>
在二进制树中的节点之间的最大距离(最长路径树)——递归解决方案
查看>>
MySQL体系结构以及各种文件类型学习汇总
查看>>
Oracle用户解锁的三种办法及默认的用户与密码
查看>>
Hibernate学习笔记
查看>>
ubuntu-15.04-desktop-amd64.iso:ubuntu-15.04-desktop-amd64:安装Oracle11gR2
查看>>
全新的membership框架Asp.net Identity(2)——绕不过的Claims
查看>>
Windows环境下的NodeJS+NPM+Bower安装配置
查看>>
Android控件Editext、TextView属性详解
查看>>
BI项目简单备份策略
查看>>
mac常用快捷键,Mac文件重命名快捷键,Mac OS快速访问系统根目录
查看>>
leetcode先刷_Unique Binary Search Trees II
查看>>
日志分析概述
查看>>
iOS 使用xib后获取view的frame出错的问题
查看>>
C#编程总结(二)多线程基础
查看>>
[ios]cocos2dx获取设备的当前预言
查看>>
iOS8互动的新通知
查看>>
独立开发者复盘:手游研发犯过的8个错误(转)
查看>>