一、连接查询

1、交叉连接

就是从一张表的一条记录去连接另一张表中的所有记录,并且保存所有的记录,其中包括两个表的所有的字段!

从结果上看,就是对两张表做笛卡尔积!

笛卡尔积也就是两个表中所有可能的连接结果!如果第一张表有n1条记录,第二张表有n2条记录,那么笛卡尔积的结果有n1*n2条记录!

交叉连接语法:

  select  * | 字段列表 from 1  cross join 2

2、内连接

数据在左表中存在,同时在右表中又有对应的匹配的结果才会被保存。匹配得到才显示。如果没有匹配上,我们就认为数据没有意义,也就不会保存。

所谓的配合,就是存在某种条件使得两个或多个表之间能够识别彼此。通常就是两张表中存在相同的某个字段。表名一般很长,可以取一个别名

  select *|字段列表 from 左表 [inner] join 右表 on 左表.字段 = 右表.字段;


3、外连接

外连接又可以分成左外连接(left [outer] join)和右外连接(right [outer] join)。前者的左表为主表,后者的右表为主表。语法同内连接。

如果匹配成功,那么就保留两张表的所有的记录,如果匹配失败(也就是左表的一条记录无法匹配右表的所有的记录),此时,只保留左表的记录,右表的记录全部用null代替。

4、自然连接

只要两张表中具有相同的字段名,系统就认为是一个连接条件,就会主动的去匹配这两个相同的字段名的值是否相同,如果两个表的相同的字段名的值相同,就认为匹配成功;如果两张表中有多个字段名相同,则所有相同的字段名的值都要相同才算是匹配成功!

1)自然内连接

左表 natural inner join右表

自然内连接会主动的删除重复的一列而且将重复的那一列放在最前面

2)自然外连接

左表 natural  left|right  join 右表  

二、子查询

所谓的子查询,从形式上看,就是一条select语句中又出现了一条或多条select语句。最基本的要求:所有的子查询都需要用括号括起来!

1、根据子查询返回值的形式

  1)单 一 值 :也就是返回单行单列的子查询,也叫作标量子查询  //往往就是把标量子查询的结果当成一个值来使用,比如用来判断,参与运算等

  2) 一   列  :也就是返回单列的子查询,也叫作列子查询      //列子查询的结果往往就是一系列相同属性的数据的集合,通常配合in和not in集合运算符来使用

  3) 一   行  :返回一行的子查询就叫作行子查询  

    //在查询的过程中构造一个行元素才能与子查询的结果进行比较,select *|字段列表 from 表名 where(字段1,字段2……)=(行子查询结果)

  4)多行多列:表子查询                   

    //表子查询一般都是from型,也就是出现在from之后,一般当成一个数据源来使用,select *|字段列表 from 子查询结果 as 别名 where子句……

2、根据子查询出现的位置

  from型:也就是子查询出现在from之后

  where型:也就是子查询出现在where之后

  exist型:判断是否查询到了结果

    exists主要是用来做判断的,返回的结果是一个布尔值!  select  exists (子句);

    判断依据:

      如果子查询可以返回数据,那么exists的结果就是true,否则就是false

      exists的主要作用就是判断后面的select语句有没有查询到数据

    应用场景:

      注册用户的时候,必须要保证用户名没有被注册过,此时可以先查询一下用户的用户名是否存在!

mysql连接查询和子查询的更多相关文章

  1. mysql的查询、子查询及连接查询

    >>>>>>>>>> 一.mysql查询的五种子句         where(条件查询).having(筛选).group by(分组). ...

  2. MySQL之多表查询一 介绍 二 多表连接查询 三 符合条件连接查询 四 子查询 五 综合练习

    MySQL之多表查询 阅读目录 一 介绍 二 多表连接查询 三 符合条件连接查询 四 子查询 五 综合练习 一 介绍 本节主题 多表连接查询 复合条件连接查询 子查询 首先说一下,我们写项目一般都会建 ...

  3. 从项目上一个子查询扩展学习开来:mysql的查询、子查询及连接查询

    上面这样的数据,想要的结果是:如果matchResult为2的话,代表是黑名单.同一个softId,version,pcInfoId的代表是同一个软件,需要去重:同时,如果相同软件里面只要有一个mat ...

  4. MySQL连接查询、联合查询、子查询

    参考地址:http://blog.csdn.net/u011277123/article/details/54863371 1.MySQL连接查询 连接查询:将多张表(>=2)进行记录的连接(按 ...

  5. Mysql的查询语句(联合查询、连接查询、子查询等)

    Mysql的各个查询语句(联合查询.连接查询.子查询等) 一.联合查询 关键字:union 语法形式 select语句1 union[union选项] select 语句2 union[union选项 ...

  6. [转]mysql的查询、子查询及连接查询

    转自:http://www.cnblogs.com/rollenholt/archive/2012/05/15/2502551.html 一.mysql查询的五种子句         where(条件 ...

  7. mysql查询、子查询、连接查询

    mysql查询.子查询.连接查询 一.mysql查询的五种子句 where子句(条件查询):按照“条件表达式”指定的条件进行查询. group by子句(分组):按照“属性名”指定的字段进行分组.gr ...

  8. mysql之连接查询、联合查询、子查询

    本文内容: 连接查询 联合查询 子查询 from子查询 where子查询 exists子查询 首发日期:2018-04-11 连接查询: 连接查询就是将多个表联合起来查询,连接查询方式有内连接.外连接 ...

  9. MYSQL - 外键、约束、多表查询、子查询、视图、事务

    MYSQL - 外键.约束.多表查询.子查询.视图.事务 关系 创建成绩表scores,结构如下 id 学生 科目 成绩 思考:学生列应该存什么信息呢? 答:学生列的数据不是在这里新建的,而应该从学生 ...

  10. MySQL中的联表查询与子查询

    0.准备数据 1.内连接:INNER JOIN 2.左连接:LEFT JOIN 3.右连接:RIGHT JOIN 4.USING子句 扩展知识点: 0.表别名的使用: 1.group by的用法 2. ...

随机推荐

  1. web项目总结——通过jsp+servlet实现对oracle的增删改查功能

    1.DAO模式 分包:依次建立 entity:实体包,放的是跟oracle数据库中表结构相对应的对象的属性,也就是这个对象有什么 dao:增删改查接口,实现增删改查的具体方法 service:同dao ...

  2. 未解决的问题,登录163邮箱http://mail.163.com/,用xpath的方式定位密码输入框的时候,总是报找不到该元素

    退出的时候出现: xpath定位方法: 注意xpath路径写的太长,如果层级全部写完定位不到,就尝试去掉一些层级

  3. Java 集合 - HashSet

    一.源码解析 public class HashSet<E> extends AbstractSet<E> implements Set<E>, Cloneable ...

  4. HTML中使背景图片自适应浏览器大小

    由于<body>标签的图片不能够拉伸, 解决办法: 1.图片不够大,又background属性不能拉伸图片: 2.只能用个div,把其z-index值设为负,并使这个div大小为整个bod ...

  5. Selenium IDE 基础教程

    Selenium IDE 基础教程 1.下载安装     a 在火狐浏览其中搜索附件组件,查找 Selenium IDE     b 下载安装,然后重启firefox 2.界面讲解      在菜单- ...

  6. BIOS MCSDK 2.0 学习笔记(二)————使用Platform Library创建工程

    [TOC] Platform Library提供了一组适用于开发板的API函数.我们可以使用它来快速入手开发板. 1.启动CCS,建立一个空的工程 2.添加include路径 "C:\Pro ...

  7. iOS —— 字典遍历排序

    字典NSDictionary一般的遍历方法都是: NSArray* arr = [yourdictonary allKeys]; for(NSString* str in arr) { NSLog(& ...

  8. mysql5.7下的timestampn Error : Invalid default value for 'timestamp'

    表格创建是爆了个错 Error : Invalid default value for 'timestamp' 参考:http://www.jb51.net/article/71107.htm 这版本 ...

  9. javascript中this指针

    看完此片文章豁然开朗,非常感谢.javascript技术难点(三)之this.new.apply和call详解 下面说一说自己的理解: this指针总是指向调用他的对象,其实我更愿意理解为:this指 ...

  10. 对HTML5校验 自定义验证信息

    在HTML5中,表单可以定义一个属性required来触发默认的校验机制,比如: <input type="text" required /> 弹出的错误提示默认为英文 ...