SQL语法

union, union all

UNION 操作符用于合并两个或多个 SELECT 语句的结果集。

注意,UNION 内部的每个SELECT语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每个SELECT语句中的列的顺序必须相同。

UNION语法

SELECT column_name(s) FROM table1

UNION

SELECT column_name(s) FROM table2;

注释:默认地,UNION 操作符选取不同的值。如果允许重复的值,请使用 UNION ALL。

UNION ALL语法

SELECT column_name(s) FROM table1

UNION ALL

SELECT column_name(s) FROM table2;

注释:UNION 结果集中的列名总是等于 UNION 中第一个 SELECT 语句中的列名。

JOIN

举例我们有两张表,t1和t2。

  1. drop database if exists db1;
  2. create database if not exists db1 character set utf8mb4;
  3. use db1;
  4. drop table if exists t1;
  5. create table if not exists t1(
  6. `id` int not null primary key,
  7. `name` varchar(10) not null);
  8. insert into t1(`id`,`name`)
  9. values(1,"Google"),(2,"Alibaba"),(3,"Oracle"),(4,"PingCAP");
  10. drop table if exists t2;
  11. create table if not exists t2(
  12. `id` int not null primary key,
  13. `address` varchar(10) not null);
  14. insert into t2(`id`,`address`)
  15. values(1,"USA"),(2,"CN"),(5,"UK"),(4,"CN");
  16. select * from t1 order by `id`;
  17. select * from t2 order by `id`;
  1. +----+---------+
  2. | id | name |
  3. +----+---------+
  4. | 1 | Google |
  5. | 2 | Alibaba |
  6. | 3 | Oracle |
  7. | 4 | PingCAP |
  8. +----+---------+
  9. +----+---------+
  10. | id | address |
  11. +----+---------+
  12. | 1 | USA |
  13. | 2 | CN |
  14. | 4 | CN |
  15. | 5 | UK |
  16. +----+---------+

JOIN(INNER JOIN)

内连接是最常见的一种连接,只连接匹配的行。

JOIN语法

  1. SELECT column_name(s) FROM table1
  2. INNER JOIN table2
  3. ON table1.column_name=table2.column_name

执行SQL语句

  1. select * from t1 join t2 on t1.id = t2.id order by t1.id;

输出结果如下

  1. +----+---------+----+---------+
  2. | id | name | id | address |
  3. +----+---------+----+---------+
  4. | 1 | Google | 1 | USA |
  5. | 2 | Alibaba | 2 | CN |
  6. | 4 | PingCAP | 4 | CN |
  7. +----+---------+----+---------+

LEFT JOIN(LEFT OUTER JOIN)

LEFT JOIN返回左表的全部行和右表满足ON条件的行,如果左表的行在右表中没有匹配,那么这一行右表中对应数据用NULL代替。

LEFT JOIN 语法

  1. SELECT column_name(s) FROM table1
  2. LEFT JOIN table2
  3. ON table1.column_name=table2.column_name

LEFT JOIN产生表1的完全集,而2表中匹配的则有值,没有匹配的则以null值取代。

执行SQL语句

  1. select * from t1 left join t2 on t1.id = t2.id order by t1.id;

输出结果如下

  1. +----+---------+------+---------+
  2. | id | name | id | address |
  3. +----+---------+------+---------+
  4. | 1 | Google | 1 | USA |
  5. | 2 | Alibaba | 2 | CN |
  6. | 3 | Oracle | NULL | NULL |
  7. | 4 | PingCAP | 4 | CN |
  8. +----+---------+------+---------+

RIGHT JOIN(RIGHT OUTER JOIN)

RIGHT JOIN返回右表的全部行和左表满足ON条件的行,如果右表的行在左表中没有匹配,那么这一行左表中对应数据用NULL代替。

RIGHT JOIN语法

  1. SELECT column_name(s) FROM table1
  2. RIGHT JOIN table2
  3. ON table1.column_name=table2.column_name

RIGHT JOIN产生表2的完全集,而1表中匹配的则有值,没有匹配的则以null值取代。

执行SQL语句

  1. select * from t1 right join t2 on t1.id = t2.id order by t2.id;

输出结果如下

  1. +------+---------+----+---------+
  2. | id | name | id | address |
  3. +------+---------+----+---------+
  4. | 1 | Google | 1 | USA |
  5. | 2 | Alibaba | 2 | CN |
  6. | 4 | PingCAP | 4 | CN |
  7. | NULL | NULL | 5 | UK |
  8. +------+---------+----+---------+

FULL OUTER JOIN

FULL JOIN 会从左表和右表那里返回所有的行。如果其中一个表的数据行在另一个表中没有匹配的行,那么对面的数据用NULL代替。

FULL OUTER JOIN语法

  1. SELECT column_name(s) FROM table1
  2. FULL OUTER JOIN table2
  3. ON table1.column_name=table2.column_name

FULL OUTER JOIN产生1和2的并集。但是需要注意的是,对于没有匹配的记录,则会以null做为值。

执行SQL语句

  1. select * from t1 full outer join t2 on t1.id = t2.id order by t1.id;

SQL语法(UNION,JOIN)的更多相关文章

  1. 使用or展开进行sql优化(即sql语法union all代替or可以提高效率)

    问题: 这样一条sql应该怎么优化? select * from sys_user where user_code = 'zhangyong' or user_code in (select grp_ ...

  2. Linq to SQL 语法查询(链接查询,子查询 & in操作 & join,分组统计等)

    Linq to SQL 语法查询(链接查询,子查询 & in操作 & join,分组统计等) 子查询 描述:查询订单数超过5的顾客信息 查询句法: var 子查询 = from c i ...

  3. sql语法:inner join on, left join on, right join on详细使用方法

    inner join(等值连接) 只返回两个表中联结字段相等的行 left join(左联接) 返回包括左表中的所有记录和右表中联结字段相等的记录 right join(右联接) 返回包括右表中的所有 ...

  4. 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 ...

  5. sql语法:inner join on, left join on, right join on具体用法

    inner join(等值连接) 仅仅返回两个表中联结字段相等的行 left join(左联接) 返回包含左表中的全部记录和右表中联结字段相等的记录 right join(右联接) 返回包含右表中的全 ...

  6. SQL中的JOIN语法详解

    参考以下两篇博客: 第一个是 sql语法:inner join on, left join on, right join on详细使用方法 讲了 inner join, left join, righ ...

  7. [转]MySQL 最基本的SQL语法/语句

    MySQL 最基本的SQL语法/语句,使用mysql的朋友可以参考下.   DDL-数据定义语言(Create,Alter,Drop,DECLARE) DML-数据操纵语言(Select,Delete ...

  8. SQL语法整理

    SQL是Structured Query Language的缩写,中文全名为结构化查询语言,是一种用于数据存储,查询,更新和管理的关系数据库系统. SQL语法 创建表 create table tab ...

  9. [Android新手区] SQLite 操作详解--SQL语法

    该文章完全摘自转自:北大青鸟[Android新手区] SQLite 操作详解--SQL语法  :http://home.bdqn.cn/thread-49363-1-1.html SQLite库可以解 ...

随机推荐

  1. 0.5 Linux的联通性命令汇总

    linux下网络端口连通性测试命令汇总 一.telnet ip port 1.1 安装: 安装telnet服务 [centos.ubuntu]安装telnet命令的方法.] yum list teln ...

  2. 【Java】基于RXTX的Java串口通信

    本篇内容参考转载自https://blog.csdn.net/kong_gu_you_lan/article/details/80589859 环境搭建 下载地址:http://fizzed.com/ ...

  3. c#winform自定义窗体,重绘标题栏,自定义控件学习

    c#winform自定义窗体,重绘标题栏 虽然现在都在说winform窗体太丑了,但是我也能尽量让桌面应用程序漂亮那么一点点话不多说,先上图 重绘标题栏先将原生窗体设置成无边框,FormBoderSt ...

  4. 通过phpstorm管理svn的gui界面报错问题

    mac通过phpstorm来gui管理svn时,提示Invalid VCS root mappings 原因是因为mac中的svn版本过高,phpstorm可以兼容的版本是svn 1.6 \ 1.7 ...

  5. JVM第二篇 类加载子系统

    1.内存结构概述 简图 ​ 详细 ​ ​ ​ 2.类加载器与类加载的过程 ​ 类加载器子系统负责从文件系统或者网络中加载Class文件,class文件在文件开头有特定的文件标识[CA FE BA BY ...

  6. windows使用proxifier全局代理 - 配置可用; windows10 配置全局代理 走 socks5

    最近windows上需要配置全局代理 走 socks5,发现同类型的有 cow pcap 等解决方案,通过尝试发现还是proxifier 比较好用! 下载:https://www.proxifier. ...

  7. Pikachu-Unsafe Filedownload(不安全的文件下载)

    不安全的文件下载概述 文件下载功能在很多web系统上都会出现,一般我们当点击下载链接,便会向后台发送一个下载请求,一般这个请求会包含一个需要下载的文件名称,后台在收到请求后 会开始执行下载代码,将该文 ...

  8. RS323串口连接仪器,接收仪器信息

    SerialPort sp1 = new SerialPort(); getBloodPressur(); public void getBloodPressur() { try { string[] ...

  9. 【jQuery实例】Ajax登录页面

    登录界面是信息系统提供的必备的功能,是提供给用户提供维护信息的接口.接下来,我来带领大家打造一个漂亮.安全的登录界面,使用的技术是ASP.NET+jQuery 先来看看预览效果   Ajax登录重点在 ...

  10. gulp常用插件之gulp-load-plugins使用

    更多gulp常用插件使用请访问:gulp常用插件汇总 gulp-load-plugins这是一款批量引入package.json文件中的依赖项工具. 更多使用文档请点击访问gulp-load-plug ...