Mysql的联合查询
联合查询
union联合查询
语法:
select 语句 union 【all|distinct】 select 语句;
示例:

特点:
条件:两表的查询出来的字段数目必须相同
字段上会不会进行拼接
只有在记录上对两个表查询出来的结果进行联合。
【all|distinct】
all 显示所有的记录,包含重复
distinct (缺省)不显示结果集中的重复记录
示例:

作用:
1、对一个大的数据表进行分表存储,联合查询。
2、对于同一个表实现不同的需求
需求:对学生表sex=1按年龄降序,sex=0的按年龄升序


连接查询
由于数据库每一个表存储一个实体信息,实体之间还有联系。根据需求,经常会对具有关系的实体表进行,连接查询。
连接查询实现的,结果集中的字段数增加,记录数不增加。
连接查询分
cross join
交差连接
语法:
select * 或字段列表 from 表A cross join表B 【where条件】;
示例:

说明:
结果是一个迪卡尔积,
示例:
使用条件进行连接

演示:
将stu表中的id为12的记录c_id设置为null(也不是与班级表不匹配)

说明:
最终的结果少了一个学生的信息。
内连接
inner join
语法:
select *或字段列表 from 表A 【inner】 join 表B【where子句】;
说明:
如果内连接没有指定条件,那么结果也是一个迪卡尔积
示例1:

外连接
外连接分为左外连接与右外连接,如果以左边的表为主表那么就叫左外连接;如果以右边的表为主表,那么就叫右外连接。
左外连接
left join
语法:
select *或字段列表 from 表A left join 表B on 条件;
示例:

原理:
1、在内存中产生两个结果集
2、进行连接
2.1、使用主表中的第1条记录,去匹配从表中的第1条记录,判断条件是否匹配,如果匹配,将两个表的记录连接在一起保留。如果不成功,保留主表的字段,从表的字段置null
2.2、使用主表中的第1条记录,去匹配从表中的第2条记录,判断条件是否匹配,如果匹配,将两个表的记录连接在一起保留。如果不成功,保留主表的字段,从表的字段置null
2.3、使用主表中的第1条记录,去匹配从表中的第3条记录,判断条件是否匹配,如果匹配,将两个表的记录连接在一起保留。如果不成功,保留主表的字段,从表的字段置null
3、主表中的第1条记录匹配完成后,再使用主表的第2条记录,依次进行匹配。
。。。。。。
右外连接
right join
内连与外连的区别:
1、内连可以省略条件。
2、外连必须使用条件。
3、内连时,如果条件不匹配,丢弃。
4、外连时,如果条件不匹配,也会保留主表中的字段。从表中的置null
自然连接
自动根据表中的同名字段作为匹配条件。
nature join
语法:
select *或字段列表 from 表A natural join 表B;
自然左外连接
select *或字段列表 from 表A natural left join 表B where
自然右外连接
select *或字段列表 from 表A natural rightjoin 表B where
示例:

Mysql的联合查询的更多相关文章
- mysql中联合查询
联合查询union 一个翻译问题的解释: 在mysql的手册中,将连接查询(Join)翻译为联合查询: 而联合查询(union),没有明确翻译. 但: 在通常的书籍或文章中,join被翻译为“连接”查 ...
- php+mysql数据库联合查询 left join 右侧数据重复问题
情况:多表联合查询(三表及以上联合查询) 分析: A left join B left join C left join D 假如: 表B.C.D都与表A关联查询 A left join B 4条数据 ...
- MySQL 中联合查询效率分析
目前我有两个表,一个keywords和一个news表.keyword存放关键词是从news中提取,通newsid进行关联,两表关系如图: keywords中存有20万条数据,news中有2万条数据,现 ...
- mysql三表联合查询,结果集合并
参考: mysql 结果集去重复值并合并成一行 SQL 三表联查 数据库三表连接查询怎么做 合并: MySQL中group_concat函数 完整的语法如下: group_concat([DISTIN ...
- mysql及联合查询
SQL语句分类 DDL 数据库定义语言 定义数据库对象 create alter truncate drop TPL 事务处理语言 rollback commit DCL 数据控制语言 由 GRANT ...
- mysql:联合查询
SELECT t1.name, t2.salary FROM employee AS t1 INNER JOIN info AS t2 ON t1.name = t2.name; 可以对数据表使用别 ...
- MYSQL的联合查询最好是少用,效能差异巨大
同样的功能,不同的写法,时间和内存占用差了几千倍,不废话,直接上代码 第一种写法: 代码如下: $Rs=DB::get($_ENV['DB'],3,"SELECT * FROM _xiazh ...
- thinkphp 使用原生mysql语句 联合查询
<?php class DelAction extends Action { public function ml(){ // 实例化一个空模型,没有对应任何数据表 $Dao = M(); // ...
- mysql三表联合查询
-- SELECT d.userId, d.userPhoNum, a.orderId, a.productType, b.courseId, b.courseName, c.payJe -- FRO ...
随机推荐
- 基于jquery扩展漂亮的分页控件(ajax)
分页控件式大家在熟悉不过的控件,很多情况下都需要使用到分页控件来完成列表数据加载操作,在很多分页控件中有的编写麻烦,有的应用扩展比较复杂,有的分页控件样式比较丑陋,有的分页控件用户体验操作比较简单等等 ...
- SQL 触发器(学生,课程表,选修表)
SQL 触发器(学生,课程表,选修表) 触发器是一种特殊类型的存储过程,它不由用户通过命令来执行,而是在用户对表执行了插入,删除或修改表中数据等操作时激活执行.可以这样形容:存储过程像一个遥控炸弹,我 ...
- 用hdfs存储海量的视频数据的设计思路
用hdfs存储海量的视频数据 存储海量的视频数据,主要考虑两个因素:如何接收视频数据和如何存储视频数据. 我们要根据数据block在集群上的位置分配计算量,要充分利用带宽的优势. 1.接收视频数据 将 ...
- 别名的应用(New-Alias)
New-Alias -name appcmd -value $env:windir\system32\inetsrv\appcmd.exe 这样就可以在当前PS环境下直接使用appcmd了
- Codeforces Round #324 (Div. 2) C. Marina and Vasya 贪心
C. Marina and Vasya Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/584/pr ...
- curl常用的5个例子(转)
我用php ,curl主要是抓取数据,当然我们可以用其他的方法来抓取,比如fsockopen,file_get_contents等.但是只能抓那些能直接访问的页面,如果要抓取有页面访问控制的页面,或者 ...
- 设计模式 - 命令模式(command pattern) 多命令 具体解释
命令模式(command pattern) 多命令 具体解释 本文地址: http://blog.csdn.net/caroline_wendy 參考命令模式: http://blog.csdn.ne ...
- epoll讲解
首先我们来定义流的概念,一个流可以是文件,socket,pipe等等可以进行I/O操作的内核对象. 不管是文件,还是套接字,还是管道,我们都可以把他们看作流. 之后我们来讨论I ...
- iOS 如何进行逆向工程
原文:http://www.zhihu.com/question/20317296 季逸超,Peak-Labs创始人/CEO,猛犸浏览器.Rasgue- 有幸被邀请回答,不过不知道您要了解的'系统机制 ...
- C语言内存管理
作用域: 1.代码块儿作用域: 注意的是:这里面{}就代表一个代码块儿,里面的东西是独立的,不可被其他地方访问的. 2.函数作用域 3.文件作用域 先提一下 在当前有一个文件,main.c 还有一个文 ...