1.联合 union 进行多个查询语句时,要求多次查询的结果列数必须一样。此时,查询的结果以第一个sql语句的列名为准且union会自动去重复我们应该使用union all。 例......



1.联合 union 进行多个查询语句时,要求多次查询的结果列数必须一样。此时,查询的结果以第一个sql语句的列名为准且union会自动去重复我们应该使用union all。

例如:

select id,sum(num) from (select * from ta union all select * from tb) as tmp group by id;

select id,sum(num) from (select * from ta union select * from tb);

select id,sum(num) from (select * from ta union select * from tb) as tmp;

请自己测试以上三个语句的结果;

注意:ta和tb的列数必须一样,否则不能写成 select * from ta union select * from tb;*应该替换成具体的字段名;

当子语句的中含有where、order by或limit时,子语句应该用括号括起来。

如:

select id,sum(num) from (select * from taorder by id desc union all select * from tb order by id desc) as tmp group by id; 错误的写法

select id,sum(num) from ((select * from ta order by id desc) union all
(select * from tb order by id desc)) as tmp group by id;
正确的写法,重复了而且得不到想要的结果

select id,sum(num) from ((select * from ta ) union all (select * from tb) order by id desc) as tmp group by id; 一般都是写在合并后

在字句中,只有order by 配合 limit 使用才会有意义,否则会被语法分析器去除。

2.连接 join、left join、right join、inner join左连接、右连接、内连接、外连接(目前MySQL并不支持,但是可以用 左连接+union+连接 实现)

连接的意义是:为了得到更完整的信息(如:学生信息),此时,我需要从更多的表(可能是学生信息表、学生成绩、学生家庭表等)进行查找。

JOIN: 如果表中有至少一个匹配,则返回行。

LEFT JOIN(以左表为基准): 即使右表中没有匹配,也从左表返回所有的行。

RIGHT JOIN(以右表为基准): 即使左表中没有匹配,也从右表返回所有的行。

左连接和有连接是可以互换的。如 ta left join tb =========== tb right join ta 都是表示以ta表为基准进行查询。

可以多次使用连接,但是当重复连接某一张表的时候,我们应该使用 as 给表取别名。

如:selectt1.name,`match_result`,t2.name,`match_time` from ta left jointb
as t1 on ta.host_id=t1.id left join tb as t2 on ta.guest_id =t2.id;

3.视图的学习(可以对一些开发人员访问数据库的权限进行设置,看到该看到的,不该看到的就无法看到,如:sina.qq开发的接口,第三方用户只能使用一些数据)

定义:视图是虚表,是从一个或几个基本表(或视图)中导出的表,在系统的数据字典中仅存放了视图的定义,不存放视图对应的数据。

作用:
简单性(看到的就是需要的)、安全性(通过视图用户只能查询和修改他们所能见到的数据)、大数据分表的时候用到(当一张表的数据量比较大的时候)。使用权限可被限制在基表的行的子集上。使用权限可被限制在基表的列的子集上。使用权限可被限制在基表的行和列的子集上。使用权限可被限制在多个基表的连接所限定的行上。使用权限可被限制在基表中的数据的统计汇总上。使用权限可被限制在另一视图的一个子集上,或是一些视图和基表合并后的子集上。

视图与表的关系(他们是一一对应的,类似函数与反函数的关系):

1.修改某张表时,则与该表有关视图的数据也会发生变化。

2.修改视图时,若视图的列和表的列一一对应(也就是说没有聚合函数sum() avg() count() max() min()等、group by),则修改成功,否则失败(像整体的修改无法确切决定局部的修改);

文档来源:mysql的union、left join、 right join、 inner join和视图学习

【转】mysql的union、left join、 right join、 inner join和视图学习的更多相关文章

  1. SQL的inner join、left join、right join、full outer join、union、union all

    主题: SQL的inner join.left join.right join.full outer join.union.union all的学习. Table A和Table B表如下所示: 表A ...

  2. 图解SQL的inner join(join)、left join、right join、full outer join、union、union all的区别

    对于SQL的Join,在学习起来可能是比较乱的.我们知道,SQL的Join语法有很多inner的,有outer的,有left的,有时候,对于Select出来的结果集是什么样子有点不是很清楚.Codin ...

  3. MySQL(12)---纪录一次left join一对多关系而引起的BUG

    MySQL(11)---纪录一次left join一对多关系而引起的bug BUG背景 我们有一个订单表 和 一个 物流表 它们通过 订单ID 进行一对一的关系绑定.但是由于物流表在保存订单信息的时候 ...

  4. mysql驱动表与被驱动表及join优化

    驱动表与被驱动表 先了解在join连接时哪个表是驱动表,哪个表是被驱动表:1.当使用left join时,左表是驱动表,右表是被驱动表2.当使用right join时,右表时驱动表,左表是驱动表3.当 ...

  5. MySQL之表、列别名及各种JOIN连接详解

    MySQL在SQL中,合理的别名可以让SQL更容易以及可读性更高.别名使用as来表示,可以分为表别名和列别名,别名应该是先定义后使用才对,所以首先要了解sql的执行顺序(1) from(2) on(3 ...

  6. Mysql常用sql语句(16)- inner join 内连接

    测试必备的Mysql常用sql语句系列 https://www.cnblogs.com/poloyy/category/1683347.html 前言 利用条件表达式来消除交叉连接(cross joi ...

  7. MYSQL之union和order by分析([Err] 1221 - Incorrect usage of UNION and ORDER BY)

    我在一个业务中采用了按月的分表策略,当查询的条件跨月的时候,使用了union all汇总2个表的数据,并按插入时间倒序排列.查询并不复杂,但是当执行的时候却报错了. SELECT * FROM `ta ...

  8. 1122MySQL性能优化之 Nested Loop Join和Block Nested-Loop Join(BNL)

    转自http://blog.itpub.net/22664653/viewspace-1692317/ 一 介绍  相信许多开发/DBA在使用MySQL的过程中,对于MySQL处理多表关联的方式或者说 ...

  9. hadoop 多表join:Map side join及Reduce side join范例

    最近在准备抽取数据的工作.有一个id集合200多M,要从另一个500GB的数据集合中抽取出所有id集合中包含的数据集.id数据集合中每一个行就是一个id的字符串(Reduce side join要在每 ...

随机推荐

  1. Three.js + HTML5 Audio API 打造3D音乐频谱,Let’s ROCK!

    继续玩味之前写的音乐频谱作品,将原来在Canvas标签上的 作图利用Three.js让它通过WebGL呈现,这样就打造出了一个全立体感的频谱效果了. 项目详情及源码 项目GitHub地址:https: ...

  2. WCF:传输EntityFramework 实体类的POCO 代理

    WCF传输EntityFramework 实体类的POCO 代理 Windows Communication Foundation (WCF) 不能对代理进行直接序列化或反序列化,因为 DataCon ...

  3. Web Modify The Html Elements According Url Parameters With Jquery

    需求说明 根据URL的参数, 来批量的对某些HTML元素做统一的修改. 解决思路 首先, 想办法获得这个URL的参数, 然后遍历对应的HTML元素, 做出对应的修改. 即可. 代码实现 <!DO ...

  4. Android笔记——提升ListView的运行效率

    之所以说 ListView 这个控件很难用,就是因为它有很多的细节可以优化,其中运行效率就是很重要的一点.目前我们ListView 的运行效率是很低的,因为在 FruitAdapter 的getVie ...

  5. react-native环境搭建

    目标平台 Android 开发平台 windows 开发环境安装建议:由于开发环境存在差异,建议参照react官网 或者react中文网 安装, react-native -- 在Windows下搭建 ...

  6. 如何在多线程leader-follower模式下正确的使用boost::asio。

    #include <assert.h> #include <signal.h> #include <unistd.h> #include <iostream& ...

  7. Entity Framework Code First关系映射约定

    本篇随笔目录: 1.外键列名默认约定 2.一对多关系 3.一对一关系 4.多对多关系 5.一对多自反关系 6.多对多自反关系 在关系数据库中,不同表之间往往不是全部都单独存在,而是相互存在关联的.两个 ...

  8. OpenCASCADE Conic to BSpline Curves-Parabola

    OpenCASCADE Conic to BSpline Curves-Parabola eryar@163.com Abstract. Rational Bezier Curve can repre ...

  9. 学用MVC4做网站六后台管理:6.1管理员(续)

    接6.1 首先在~/Areas/Admin/Models文件夹添加管理员模型Administrator.cs using System.ComponentModel.DataAnnotations; ...

  10. n个结点,不同形态的二叉树(数目+生成)

    题目链接: 不同的二叉查找树:http://www.lintcode.com/zh-cn/problem/unique-binary-search-trees/ 不同的二叉查找树 II:http:// ...