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中不支持
MySQL学习(八)的更多相关文章
- 我的MYSQL学习心得(八) 插入 更新 删除
我的MYSQL学习心得(八) 插入 更新 删除 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得( ...
- 我的MYSQL学习心得(八)
原文:我的MYSQL学习心得(八) 我的MYSQL学习心得(八) 我的MYSQL学习心得(一) 我的MYSQL学习心得(二) 我的MYSQL学习心得(三) 我的MYSQL学习心得(四) 我的MYSQL ...
- 我的MYSQL学习心得(一) 简单语法
我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据类型 我的MYSQL学习心得(五) 运 ...
- 我的MYSQL学习心得(二) 数据类型宽度
我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据类型 我的MYSQL学习心得(五) 运 ...
- 我的MYSQL学习心得(三) 查看字段长度
我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(四) 数据类型 我的MYSQL学习心得(五) 运 ...
- 我的MYSQL学习心得(四) 数据类型
我的MYSQL学习心得(四) 数据类型 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(五) 运 ...
- 我的MYSQL学习心得(五) 运算符
我的MYSQL学习心得(五) 运算符 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据 ...
- 我的MYSQL学习心得(六) 函数
我的MYSQL学习心得(六) 函数 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据类 ...
- 我的MYSQL学习心得(七) 查询
我的MYSQL学习心得(七) 查询 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据类 ...
随机推荐
- script 跳出小窗口
sss
- 用Java实现MVPtree——MVPtree点集内去重以及衍生出来的多维向量Hash问题
上次完成了MVPtree之后,客户又提出了MVPtree点集元素重复的问题,希望我将元素去重. 集合去重哪家强?java.util找HashSet!如果不计较元素顺序,放进去基本就没有重复元素了. 只 ...
- VMware环境安装MacOS
环境: win10专业版 VMware 14 Pro 开始吧 1. 停止服务 2. 解压并管理员权限运行unlocker,目的是使得 win10 环境下的 VMWare14Pro 支持 mac 系统的 ...
- Spring Boot(十二):spring boot如何测试打包部署
Spring Boot(十二):spring boot如何测试打包部署 一.开发阶段 1,单元测试 在开发阶段的时候最重要的是单元测试了,springboot对单元测试的支持已经很完善了. (1)在p ...
- ORA-12052: cannot fast refresh materialized view
SQL> execute dbms_mview.refresh ('TX_FAIL_LOG_DAY_MV', 'f'); BEGIN DBMS_MVIEW.REFRESH ('TX_FAIL_L ...
- FileZilla连接腾讯云Centos7
现在需要使用ftp快速上传资料去云机备份, 于是想到FileZilla. 生成密匙文件 登录腾讯云--ssh密匙 FileZilla Client 导入密匙文件 填写登录信息 连接 另外记得开放22端 ...
- ldap集成grafana
grafana版本: 5.0.3 grafana通过k8s方式安装,所以需将配置文件挂载过去. cat grafana-configmap.yaml apiVersion: v1 kind: Conf ...
- 20145325张梓靖 《网络对抗技术》 Web安全基础实践
20145325张梓靖 <网络对抗技术> Web安全基础实践 实验内容 使用webgoat进行XSS攻击.CSRF攻击.SQL注入 XSS攻击:Stored XSS Attacks.Ref ...
- 浅谈Windows用户帐户控制(User Account Control,UAC)
Microsoft一个事实:大多数用户都用一个Administrator(管理员)帐户来登录Windows.利用这个帐户,用户几乎没有任何限制地访问重要的系统资源,因为该帐户被授予很高的权限.一旦用户 ...
- Vue学习【第二篇】:ES6简单介绍
ECMAScript 6简介 ECMAScript 6.0(以下简称 ES6)是 JavaScript 语言的下一代标准,已经在 2015 年 6 月正式发布了.它的目标,是使得 JavaScript ...