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. ...
随机推荐
- Eclipse打JAR包,插件Fat Jar的安装与使用
Eclipse可以安装一个叫Fat Jar的插件,用这个插件打包非常方便,Fat Jar的功能非常强大首先要下载Fat Jar,下载地址:https://sourceforge.net/project ...
- Java开发基础
天数 课程 01 Java基础回顾 集合 泛型 IO流 多线程 Junit Properties HTML JavaScript JavaScript BOM编程 XML基础 ...
- scss/css 中添加ie hack
@media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) { /* IE10+ specific styles ...
- python 中字典实用操作
1.字典转化为列表 a={"username":"12","password":"89"} print a.items( ...
- 一个servlet处理多个功能
servlet中: String servletPath = request.getServletPath(); String methodName = servletPath.substring(1 ...
- <js>实现回车键登陆方法,并处理谷歌与火狐不兼容的问题
1.在body中添加onkeydown事件 <body onkeydown="keyLogin(event);">2.使用js相应登陆添加方法//添加回车登陆事件 fu ...
- linux笔记:shell编程-文本处理命令
cut(字段提取命令,也叫列提取命令): printf(格式化输出命令): awk(awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理): sed(sed是一个很好 ...
- js数组倒叙输出
第一种:是直接利用代码进行输出 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"&g ...
- 本地测试Sql
数据库sqlserver2008 编程vs2008,C# 该测试是数据库和程序在一台计算机上,如果不在一台计算机上就不一样了 我的数据库最大链接是127,好像不固定. 一.测试链接对速度的影响 sta ...
- 懒加载实现的分页&&网站footer自适应
最近在做手机端,发现下拉刷新和上拉加载的jq控件很少而且自我感觉不好用,比如iscroll之类-- 然后自己写了个懒加载的,也很简单,最基础的代码[不喜勿喷,但蛮实用的] wap手机端懒加载分页: 用 ...