mysql连接查询和子查询
一、连接查询
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连接查询和子查询的更多相关文章
- mysql的查询、子查询及连接查询
>>>>>>>>>> 一.mysql查询的五种子句 where(条件查询).having(筛选).group by(分组). ...
- MySQL之多表查询一 介绍 二 多表连接查询 三 符合条件连接查询 四 子查询 五 综合练习
MySQL之多表查询 阅读目录 一 介绍 二 多表连接查询 三 符合条件连接查询 四 子查询 五 综合练习 一 介绍 本节主题 多表连接查询 复合条件连接查询 子查询 首先说一下,我们写项目一般都会建 ...
- 从项目上一个子查询扩展学习开来:mysql的查询、子查询及连接查询
上面这样的数据,想要的结果是:如果matchResult为2的话,代表是黑名单.同一个softId,version,pcInfoId的代表是同一个软件,需要去重:同时,如果相同软件里面只要有一个mat ...
- MySQL连接查询、联合查询、子查询
参考地址:http://blog.csdn.net/u011277123/article/details/54863371 1.MySQL连接查询 连接查询:将多张表(>=2)进行记录的连接(按 ...
- Mysql的查询语句(联合查询、连接查询、子查询等)
Mysql的各个查询语句(联合查询.连接查询.子查询等) 一.联合查询 关键字:union 语法形式 select语句1 union[union选项] select 语句2 union[union选项 ...
- [转]mysql的查询、子查询及连接查询
转自:http://www.cnblogs.com/rollenholt/archive/2012/05/15/2502551.html 一.mysql查询的五种子句 where(条件 ...
- mysql查询、子查询、连接查询
mysql查询.子查询.连接查询 一.mysql查询的五种子句 where子句(条件查询):按照“条件表达式”指定的条件进行查询. group by子句(分组):按照“属性名”指定的字段进行分组.gr ...
- mysql之连接查询、联合查询、子查询
本文内容: 连接查询 联合查询 子查询 from子查询 where子查询 exists子查询 首发日期:2018-04-11 连接查询: 连接查询就是将多个表联合起来查询,连接查询方式有内连接.外连接 ...
- MYSQL - 外键、约束、多表查询、子查询、视图、事务
MYSQL - 外键.约束.多表查询.子查询.视图.事务 关系 创建成绩表scores,结构如下 id 学生 科目 成绩 思考:学生列应该存什么信息呢? 答:学生列的数据不是在这里新建的,而应该从学生 ...
- MySQL中的联表查询与子查询
0.准备数据 1.内连接:INNER JOIN 2.左连接:LEFT JOIN 3.右连接:RIGHT JOIN 4.USING子句 扩展知识点: 0.表别名的使用: 1.group by的用法 2. ...
随机推荐
- 用FileInputStream读取数据,计算机如何实现将两个字节拼接成中文的?
package itcast_02; import java.util.Arrays; /* * 在计算机中如何识别将连个字节转换为中文的呢? * 在计算机中中文的存储为两个字节 : * 第一个字节 ...
- iscroll双重滚动,向上滚动隐藏一部分,下拉后显示
最近项目需求:下面是页面,当用户向上滚动时候,[隐藏的]部分也向上滚动直至消失,这时候[标题]和[搜索框]在最顶部,而[内部的]可以继续滚动,而当[内部的]滚动到最顶部时候,也就是[这个是内部1]时候 ...
- 使用spring aspect控制自定义注解
自定义注解:这里是一个处理异常的注解,当调用方法发生异常时,返回异常信息 /** * ErrorCode: * * @author yangzhenlong * @since 2016/7/21 */ ...
- TCP 状态详解 -转载
TCP 是一个面向连接的协议,无论哪一方向另一方发送数据之前,都必须先在双方之间建立一条连接.本节将详细讨论一个TCP 连接是如何建立的以及通信结束后是如何终止的. 建立一个 TCP 连接 TCP使用 ...
- spring+redis
配置 <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www ...
- python test
#!/usr/bin/env python #-*- encoding: utf- -*- ''' def foo(name): print name, '去砍柴' foo('yangshanlei: ...
- MVC使用Membership配置
MVC的权限管理,环境是MVC4.5,SQL Server2008 修改前 Web.config文件: <system.web> <authentication mode=" ...
- Pyinstaller打包Selenium脚本为exe文件执行问题
由于同事辞职,许多运维工具的维护工作就交到我这里处理了,运维居然没人会Python脚本! 用Selenium编写的一个爬虫脚本cctv.py,需要给不懂软件的人运行.为了不让他去搭建,安装各种包,库, ...
- JAVA方法03之动手动脑问题解决
动手动脑1.当JAVA里定义的函数中去掉static后,怎么办?(如下程序,将square()函数的static去掉) public class SquareIntTest { public stat ...
- 基础算法之选择排序Selection Sort
原理 首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾.以此类推,直到所有元素均排序完毕.一种简单直观的排序算 ...