1、使用union和union all合并两个查询结果:select 字段名 from tablename1 union select 字段名 from tablename2;


注意这个操作必须保证两张表字段相同,字段数据类型也相同。另外,使用union的时候会去除重复(相同)的记录,而union all则不会。

注:下边的几个连接查询涉及到笛卡尔积的概念,即如果存在两张表,第一张记录数为n条,另一张表的记录数为m条,那么笛卡尔积得出的记录数就是n*m条;如果第一张表的字段数为a个,另一张的字段数为b个,则笛卡尔积得出的字段数就是a+b个。

2、使用natural join自然连接:前提是两张表有相同的字段:(这个操作会去掉重复的字段)


对于这个查询,我的理解是:保留这两张表中关联字段(例如这里的depart_id)都存在的数据,去掉只有一个表中有的:


如上述内容中,company中有四条数据,而emp中有7条,结果不论哪个放前边都只出来六条,因为company中depart_id为4的,emp中没有,而emp中depart_id为5的,company中又没有。

3、inner join on等值连接查询:


这个操作在我理解,和上边的自然连接区别就在于没有去掉重复的字段,还有更加的灵活,不需要有相同字段名的字段:


4、inner join on不等值连接查询:


对于这个查询,我的理解就是,他是“=”查询的补集,即这个查询的结果集 = 笛卡尔积结果集  减去“=”查询的结果集;本例中,company有4条记录,emp有7条记录,笛卡尔积是4*7=28条记录;“=”查询的结果是6条记录,一次"!="查询就应该是其余的22条记录。

5、从上边的操作中可以拓展出另一种查询:字连接查询,即实际只有一张表,用重命名的方式当成两张来用:


可以看到,根据笛卡尔积,这里应该有4*4=16条结果,但是因为有了条件,就筛选出了四条。

mysql常用基础操作语法(八)~~多表查询合并结果和内连接查询【命令行模式】的更多相关文章

  1. mysql常用基础操作语法(四)--对数据的简单无条件查询及库和表查询【命令行模式】

    1.mysql简单的查询:select 字段1,字段2...  from tablename; 如果字段那里写一个*,代表查询所有的字段,等同于指定出所有的字段名,因此如果要查询所有字段的数据,一般都 ...

  2. mysql常用基础操作语法(十一)~~字符串函数【命令行模式】

    注:sql的移植性比较强,函数的移植性不强,一般为数据库软件特有,例如mysql有mysql的函数,oracle有oracle的函数. 1.concat连接字符串: 从上图中可以看出,直接使用sele ...

  3. mysql常用基础操作语法(十)~~子查询【命令行模式】

    mysql中虽然有连接查询实现多表连接查询,但是连接查询的性能很差,因此便出现了子查询. 1.理论上,子查询可以出现在查询语句的任何位置,但实际应用中多出现在from后和where后.出现在from后 ...

  4. Mysql学习总结(24)——MySQL多表查询合并结果和内连接查询

    1.使用union和union all合并两个查询结果:select 字段名 from tablename1 union select 字段名 from tablename2: 注意这个操作必须保证两 ...

  5. mysql常用基础操作语法(九)~~外连接查询【命令行模式】

    1.左外连接left outer join或者left jion,outer可以省略不写,下边的右连接和全连接也一样: 左外连接的意思是,以left join左边的表中的数据为基准,即左边的表中有的必 ...

  6. mysql常用基础操作语法(十二)~~常用数值函数【命令行模式】

    数值函数是常用函数之一,也是学习mysql必会的,常用的有如下一些: 1.ceil:返回大于某个数的最小整数值: 2.floor:和上一个相反,返回小于某个数的最大整数值: 3.round:返回某个数 ...

  7. mysql常用基础操作语法(六)--对数据排序和限制结果数量的条件查询【命令行模式】

    1.使用order by对查询的结果进行排序,asc升序,desc降序: 也可以在order by后指定多个字段名和排序方式进行多级排序: 2.使用limit限制查询结果的数量: 上图中的0,代表查询 ...

  8. mysql常用基础操作语法(三)~~对数据的增删改操作【命令行模式】

    1.插入单条数据:insert into tablename(字段名1,字段名2,...) values(值1,值2,...); 从图中可以看出,插入时不需要每个字段都有值(在没有相关的约束前提下), ...

  9. mysql常用基础操作语法(二)~~对表的增删改操作【命令行模式】

    1.修改表名:alert table oldtablename rename newtablename; 或者alert table oldtablename rename to newtablena ...

随机推荐

  1. Centos7.0关闭防火墙

    CentOS 7.0默认使用的是firewall作为防火墙,使用iptables必须重新设置一下 1.直接关闭防火墙 systemctl stop firewalld.service #关闭firew ...

  2. Spring源码情操陶冶-AnnotationConfigBeanDefinitionParser注解配置解析器

    本文承接前文Spring源码情操陶冶-自定义节点的解析,分析spring中的context:annotation-config节点如何被解析 源码概览 对BeanDefinitionParser接口的 ...

  3. BZOJ 2743: [HEOI2012]采花 [树状数组 | 主席树]

    题意: 查询区间中出现次数$>2$的颜色个数 一眼主席树,区间中$l \le last[i] \le r$的个数减去$l \le last[last[i]] \le r$的个数,搞两颗主席树来做 ...

  4. QT开发应用程序的欢迎界面

    主界面启动太慢,通常要10秒以上,所以想加个欢迎界面,等程序加载好再显示主界面. 主界面(类名为MainWindow)启动慢的原因是构造函数需要执行大量初始化的工作. 创建了Welcome类作为欢迎界 ...

  5. crontab定时任务一定要记得做好备份

    今天咋服务器上敲了一个 crontab 命令(没加-e ,也没加-l, 更没加 -r) 但是竟然神奇的crontab全部被清除了. 心中一万只CN

  6. cygwin + git + nat123 30元搭建公网可访问的git服务器

    首先参考上一篇安装服务器上的CYGWIN: http://jingyan.baidu.com/article/7e440953eabd742fc0e2efae.html 上一篇中已经加入了GIT相关的 ...

  7. map,vector 等容器内容的循环删除问题(C++)

    map,vector 等容器内容的循环删除问题(C++) map,vector等容器的循环删除不能用普通的方法删除: for(auto p=list.begin();p!=list.end();p++ ...

  8. mssql学习

    1.创建表和数据插入SQL 我们在开始创建数据表和向表中插入演示数据之前,我想给大家解释一下实时数据表的设计理念,这样也许能帮助大家能更好的理解SQL查询. 在数据库设计中,有一条非常重要的规则就是要 ...

  9. Redis常见七种使用场景(PHP实战)

    edis 是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value数据库,并提供多种语言的API. 本篇文章,主要介绍利用Redis常见应用场景下PHP实战. ...

  10. css实现多行多列的布局

    1.两列多行: HTML: <div class="box1"> box1:实现两列多行布局 <ul> <li>111</li> & ...