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. ...
随机推荐
- Kanzi Q&A
Q:为什么我的kanzi studio安装完后无法编译apk? A:请安装jdk,并设置环境变量,并更新thirdpartsdk. Q:为什么使用路径无法读取到列表listbox内的列表项? A:列表 ...
- static 作用
静态,定义静态变量或者静态函数的时候使用该关键字. 被定义为static的函数,可以不需要new一个新类别而直接调用 比如Math类里有一个,public static sub()方法,那么你可以直接 ...
- ES6 对象增强和结构赋值
The enhanced Object literals: ES6 has added some new syntax-based extensions to {} object literal fo ...
- javascript高级编程3第二章:在html中使用javascript
2.1 <script>元素 向html页面中插入javascript的主要方法,就是使用<script>元素.这个元素被加入到正式的html规范中.html4.01为< ...
- 启动受管服务器出现:unable to get file lock, will retry...
启动受管服务器出现:unable to get file lock, will retry... 解决方法:一.删掉Domain下的*.lok文件1. 删除edit.lok进入到domain_home ...
- .net mvc利用NPOI导入导出excel
1.导出Excel :首先引用NPOI包(Action一定要用FileResult) /// <summary> /// 批量导出需要导出的列表 /// </summary> ...
- 一个View的子类实例化
View子类的实例化.如果是在activity中通过findViewById的形式实例化,那么它的具体的构造函数是什么呢,看看父类View的源码就容易发现是 通过这个构造函数实例化的 public V ...
- matlab 视频转换到图像并保存
图像处理中像Adas.车辆检测等都需要采用视频文件比较好处理一点,利用帧差法.背景减法.光流法等,那么将视频文件转换到图像文件怎么做呢?话不多说,见代码一目了然: %================= ...
- SSIS学习笔记
SSIS全称(Sql Server Integration Services),是 Microsoft BI 解决方案的一大利器.除了作为ETL的一种工具,在以下方面还有着突出的表现: (1) 系统维 ...
- 【WebGoat习题解析】AJAX Security->Insecure Client Storage
绕过前端验证可以通过两种办法:一是利用开发者工具进行debug:二是利用burpsuite直接抓取.本题解决思路如下: STAGE 1: For this exercise, your mission ...