连接查询和子查询

连接查询(多表查询)
2.1基本含义
连接就是指两个或2个以上的表(数据源)“连接起来成为一个数据源”。
实际上,两个表的完全的连接是这样的一个过程:
左边的表的每一行,跟右边的表的每一行,两两互相“横向对接”后所得到的所有数据行的结果。
注意:连接之后,并非形成了一个新的数据表,而只是一种“内存形态”。

2.2连接语法的基本形式
from 表1  [连接方式]  join 表2  [on 连接条件];
连接的结果可以当作一个“表”来使用。常用有以下几种连接方式:

2.3交叉连接:
实际上,交叉连接是将两个表不设定任何条件的连接结果。
交叉连接通常也被叫做“笛卡尔积”——数学上可能比较多。
语法:
from  表1  [cross]  join  表2  ; //可见交叉连接只是没有on条件而已。
cross这个词也可以省略,还可以使用inner这个词代替

2.4内连接:
语法:
from  表1  [inner]  join  表2  on  表1.字段1=表2.字段2;
含义:找出(过滤)在交叉连接的结果表中的表1的字段1的值等于表2的字段2的值的那些行。
 
2.5左[外]连接:
形式: 
from  表1  left  [outer]  join   表2   on  连接条件。
说明:
1,这里,left是关键字。
2,连接条件跟内连接一样。
3,含义是:内连接的结果基础上,加上左边表中所有不符合连接条件的数据,相应放右边表的字段的位置就自动补为“null”值。
 
2.6右[外]连接:
右连接跟左连接恰恰相反:
形式: 
from  表1  right  [outer]  join   表2   on  连接条件。
说明:
1,这里,right是关键字。
2,连接条件跟内连接一样。
3,含义是:在内连接的结果基础上,加上右边表中所有不符合连接条件的数据,相应本应放左边表的字段的位置就自动补为“null”值。

2.7全[外]连接:
形式:
from  表1  full  [outer]  join  表2  on  连接条件;
说明:
1,含义:其实是左右连接的“并集”(消除重复项),即内连接的结果,加上左表中不满足条件的所有行(右边对应补null),再加上,右表中不满足条件的所有行(左边对应补null)。
2,mysql中其实不认识全[外]连接语法,即mysql这个软件本身不支持全连接的语法。
3,此概念在其他数据库有的存在,了解就可以。

3.什么叫子查询
子查询就是把一个查询的结果当作另一个查询的条件。
使用in子查询
in的基本语法形式为:
where  操作数  in (值1,值2, ....)
则in子查询就是:
where  操作数  in ( 列子查询 );
含义:
表示该操作数(字段值) 等于 该子查询的其中任意一个只,就算满足条件。

4.联合查询
联合查询的关键字是: union
基本含义
联合查询就是将两个select语句的查询结果“层叠”到一起成为一个“大结果”。
两个查询结果的能够进行“联合”的先觉条件是:结果字段数相等。

语法形式:
select 语句1
union  [ALL | DISTINCT]
select 语句2;
说明:
1,两个select语句的输出段(结果字段)数目一样,应用中通常类型一样才有意义。
2,结果集中的字段以第一个select语句的字段为准。
3,第一个select语句的字段可以做别名,但如果做别名,则后续的where,group,order等子句应该用该别名。
4,如果要对整个联合结果进行排序或limit,则应该对各自的select语句加括号:
(select 语句1)
union
(select 语句2)
order  by .....  limit ....;

原文地址:https://www.cnblogs.com/nbkls/p/12425113.html

时间: 2024-10-17 03:39:29

连接查询和子查询的相关文章

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

一.mysql查询的五种子句 where(条件查询).having(筛选).group by(分组).order by(排序).limit(限制结果数)  1.where常用运算符: 比较运算符 > ,  < ,=  , != (< >),>=   ,   <= in(v1,v2..vn) between v1 and v2    在v1至v2之间(包含v1,v2) 逻辑运算符 not ( ! )  逻辑非 or ( || )    逻辑或 and ( &&am

MySQL 外连接、内连接,连接查询、多表查询、子查询、视图

MySQL连接查询.多表查询.子查询: 连接查询:事先将两张或多张表join,根据join的结果进行查询: [导入hellodb.sql数据库],输入密码即可 [[email protected] home]# mysql -uroot -p  mydb < /home/hellodb.sql     hellodb.sql数据库下载链接:http://pan.baidu.com/s/1pJKK4w7 密码:a0re [查看students表] mysql> select * from stu

mysql学习笔记之连接查询与子查询

mysql连接查询与子查询 1.子查询是指在另一个查询语句中的SELECT子句. 例句: SELECT * FROM t1 WHERE column1 = (SELECT column1 FROM t2); 其中,SELECT * FROM t1 ...称为Outer Query[外查询](或者Outer Statement), SELECT column1 FROM t2 称为Sub Query[子查询]. 所以,我们说子查询是嵌套在外查询内部.而事实上它有可能在子查询内部再嵌套子查询. 子查

MSSQL之五 连接查询与子查询

在一个高级的数据库中,被浏览的数据可以被存储在多个表中.当你需要从相关的表中浏览数据的时候,你可以通过将公用的属性连接表查询数据.你可以使用子查询,这里一个查询的结果被用作另一个查询的条件的输入. 本章讨论如何通过应用各种类型的连接,例如内连接,外连接,交叉连接,等值连接或自连接,来从夺标中查询数据.进一步,它解释如何使用子查询 重点 ?        使用连接查询数据 ?        使用子查询查询数据 预习功课 ?           连接查询的几种方式 ?           子查询的使

mysql查询、子查询、连接查询

mysql查询.子查询.连接查询 一.mysql查询的五种子句 where子句(条件查询):按照“条件表达式”指定的条件进行查询. group by子句(分组):按照“属性名”指定的字段进行分组.group by子句通常和count().sum()等聚合函数一起使用. having子句(筛选):有group by才能having子句,只有满足“条件表达式”中指定的条件的才能够输出. order by子句(排序):按照“属性名”指定的字段进行排序.排序方式由“asc”和“desc”两个参数指出,默

Mysql数据库理论基础之五--SELECT单多表查询、子查询、别名

一.简介 由MySQL AB公司开发,是最流行的开放源码SQL数据库管理系统,主要特点: 1.是一种数据库管理系统 2.是一种关联数据库管理系统 3.是一种开放源码软件,且有大量可用的共享MySQL软件 4.MySQL数据库服务器具有快速.可靠和易于使用的特点 5.MySQL服务器工作在客户端/服务器模式下,或嵌入式系统中 InnoDB存储引擎将InnoDB表保存在一个表空间内,该表空间可由数个文件创建.这样,表的大小就能超过单独文件的最大容量.表空间可包括原始磁盘分区,从而使得很大的表成为可能

SQL编程之高级查询(子查询)以及注意事项

1.什么是子查询? 当一个查询是另一个查询的条件时,称之为子查询.子查询可以使用几个简单命令构造功能强大的复合命令.子查询最常用于SELECT-SQL命令的WHERE子句中.子查询是一个 SELECT 语句,它嵌套在一个 SELECT.SELECT...INTO 语句.INSERT...INTO 语句.DELETE 语句.或 UPDATE 语句或嵌套在另一子查询中. 语法:select ....from  表1  where  列1  > (子查询) 外面的查询成为父查询,圆括号嵌入的查询成为称

#4 SQL 多表查询、子查询

今天讲了一个SQL的多表查询和子查询 笔记里面有挺多有用的图片,重要是为了方便了解外连接和内连接,还有自连接等... 这里显示不出来,所以放一个链接, 到有道云笔记去看:http://note.youdao.com/share/?id=90f107b6a6aac379a795373f7f98c6ff&type=note 多表查询和子查询的关系? 多表查询可以做到的,子查询都可以做到,子查询思路比较符合正常人的思路,但是代码稍微长一点 多表查询 |--内部链接查询 : select * from

单表查询、多表查询和子查询

查询语句: select SELECT-LIST from  TB where QYAKUDUCATION; 简单查询: select * from TB_NAME; select FIED1,FIED2 from TB_NAME; 投影 select [distinct] * from TB_NAME where QYAKUDUCATION;选择  #distinct重复的值只显示一次 from子句:要查询的关系   表,多个表,其他的select语句 where子句:指定布尔关系表达式, =

MySQL多表查询和子查询

多表查询:    交叉链接:笛卡尔乘积    自然连接:两个表建立等值关系    外连接:两个表没有等值关系        左外连接:以左边的表为准,不管右边的表有没有值            ...IEFT JOIN... ON ...        右外链接:以右边的表为准,不管左边的表有没有值            ...RIGHT JOIN... ON ...    自连接:自己连接自己    子查询:所有的数据都来自于一张表    比较操作中使用子查询:子查询只能返回单个值:    I