一 关键字

  join 多表建立交叉连接 cross join。

  on  关键字 后面跟筛选条件。

二 分类

  内连接 inner jion

  外连接 left / right join

  全连接  union

  

三 子查询

  子查询就是select语句嵌套select语句,可以理解为子查询是一张表

  子查询是将一个查询语句嵌套在另一个查询语句中。
  内层查询语句的查询结果,可以为外层查询语句提供查询条件。

 格式:  =select()  in select()  exist select()  

作用:某些情况下,当进行查询的时候,需要的条件是另外一个select 语句的结果,这个时候,就要用到子查询。

定义:为了给主查询(外部查询)提供数据而首先执行的查询(内部查询)被叫做子查询。也就是说,先执行子查询,根据子查询的结果,再执行主查询。

关键字:用于子查询的关键字主要包括 IN、NOT IN、EXIST、NOT EXIST、=、<>等(符号“<>”的意思是:不等于)。

备注:MySQL从4.1开始才支持SQL的子查询。一般说子查询的效率低于连接查询(因为子查询至少需要查询两次,即至少两个select语句。子查询嵌套也多,性能越低)。表连接都可以用子查询替换,但反过来说却不一定。

  PS  表连接都可以用子查询,但不是所有子查询都能用表连接替换,子查询比较灵活,方便,形式多样,适合用于作为查询的筛选条件,而表连接更适合与查看多表的数据

四 left join与inner join与right join的区别  原文博客地址:http://www.cnblogs.com/pcjim/articles/799302.html

left join(左联接) 返回包括左表中的所有记录和右表中联结字段相等的记录 
right join(右联接) 返回包括右表中的所有记录和左表中联结字段相等的记录
inner join(等值连接) 只返回两个表中联结字段相等的行

举例如下: 
--------------------------------------------
表A记录如下:
aID     aNum
1     a20050111
2     a20050112
3     a20050113
4     a20050114
5     a20050115

表B记录如下:
bID     bName
1     2006032401
2     2006032402
3     2006032403
4     2006032404
8     2006032408

--------------------------------------------
1.left join
sql语句如下: 
select * from A
left join B 
on A.aID = B.bID

结果如下:
aID     aNum     bID     bName
1     a20050111    1     2006032401
2     a20050112    2     2006032402
3     a20050113    3     2006032403
4     a20050114    4     2006032404
5     a20050115    NULL     NULL

(所影响的行数为 5 行)
结果说明:
left join是以A表的记录为基础的,A可以看成左表,B可以看成右表,left join是以左表为准的.
换句话说,左表(A)的记录将会全部表示出来,而右表(B)只会显示符合搜索条件的记录(例子中为: A.aID = B.bID).
B表记录不足的地方均为NULL.
--------------------------------------------
2.right join
sql语句如下: 
select * from A
right join B 
on A.aID = B.bID

结果如下:
aID     aNum     bID     bName
1     a20050111    1     2006032401
2     a20050112    2     2006032402
3     a20050113    3     2006032403
4     a20050114    4     2006032404
NULL     NULL     8     2006032408

(所影响的行数为 5 行)
结果说明:
仔细观察一下,就会发现,和left join的结果刚好相反,这次是以右表(B)为基础的,A表不足的地方用NULL填充.
--------------------------------------------
3.inner join
sql语句如下: 
select * from A
innerjoin B 
on A.aID = B.bID

结果如下:
aID     aNum     bID     bName
1     a20050111    1     2006032401
2     a20050112    2     2006032402
3     a20050113    3     2006032403
4     a20050114    4     2006032404

结果说明:
很明显,这里只显示出了 A.aID = B.bID的记录.这说明inner join并不以谁为基础,它只显示符合条件的记录.
--------------------------------------------
注: 
LEFT JOIN操作用于在任何的 FROM 子句中,组合来源表的记录。使用 LEFT JOIN 运算来创建一个左边外部联接。左边外部联接将包含了从第一个(左边)开始的两个表中的全部记录,即使在第二个(右边)表中并没有相符值的记录。

语法:FROM table1 LEFT JOIN table2 ON table1.field1 compopr table2.field2

说明:table1, table2参数用于指定要将记录组合的表的名称。
field1, field2参数指定被联接的字段的名称。且这些字段必须有相同的数据类型及包含相同类型的数据,但它们不需要有相同的名称。
compopr参数指定关系比较运算符:"=", "<", ">", "<=", ">=" 或 "<>"。
如果在INNER JOIN操作中要联接包含Memo 数据类型或 OLE Object 数据类型数据的字段,将会发生错误.

 

转载于:https://www.cnblogs.com/654321cc/p/7738371.html

数据库操作——多表查询相关推荐

  1. mysql数据库操作多表查询_MySQL数据库查询操作进阶——多表查询

    多表查询 在大部分情况下,我们用到的表都是彼此相关联的,所以我们会有相当大的需求用到跨表的查询,这个时候我们就需要将相关联的表连起来做多表查询. 多表查询分为连表查询和子查询,连表查询即将相关联的表连 ...

  2. 数据库之多表查询与视图操作

    步骤: 在上一次的基础上对已经创建的jwg数据库中的数据表进行各种查询操作 多表查询 1.进行多表查询 从student.course.student_course三个表中检索出学生的学号.姓名.学习 ...

  3. mysql数据库实验3查询_MySQL数据库实验:任务三 数据库的单表查询设计

    任务三 数据库的单表查询设计 文章目录任务三 数据库的单表查询设计[实训目的与要求][实训原理][实训步骤]一.简单查询二.按条件查询1.比较大小查询2.带in关键字的查询(确定集合)3.带BETWE ...

  4. 数据库实验3 数据库的单表查询

    数据库的单表查询 3.1实验目的及要求 掌握简单表的数据查询.数据排序和表链接查询的操作方法 3.2实验内容 简单查询操作和连接查询方式. 3.3实验步骤 3.3.1单表查询: 1.查询全体学生的学号 ...

  5. MySQL数据库应用 多表查询_mysql数据库-多表查询

    今日任务 完成对MYSQL数据库的多表查询及建表的操作 教学目标 掌握MYSQL中多表的创建及多表的查询 掌握MYSQL中的表关系分析并能正确建表 昨天内容回顾: ​ 数据库的创建 : create ...

  6. SQL sever数据库的单表查询和连接查询

    数据库的单表查询和连接查询 一.目的: 掌握无条件查询的使用方法. 掌握条件查询的使用方法. 掌握库函数及汇总查询的使用方法. 掌握分组查询的使用方法. 掌握查询的排序方法. 掌握连接查询的使用方法. ...

  7. MySQL数据库实验:任务三 数据库的单表查询设计

    任务三 数据库的单表查询设计 文章目录 任务三 数据库的单表查询设计 [实训目的与要求] [实训原理] [实训步骤] 一.简单查询 二.按条件查询 1.比较大小查询 2.带in关键字的查询(确定集合) ...

  8. ABAP数据库操作02-数据查询

    ABAP数据库操作02-数据查询 在SE11创建一个表zlion_test,字段:学号.姓名.性别.年龄,并在SE16N中添加4条记录 1.单条查询 单条记录查询要用:single 1.1.查询单条单 ...

  9. mysql 性别以女生升序_MySQL数据库实验:任务三 数据库的单表查询设计

    任务三 数据库的单表查询设计 文章目录 任务三 数据库的单表查询设计 [实训目的与要求] [实训原理] [实训步骤] 一.简单查询 二.按条件查询 1.比较大小查询 2.带in关键字的查询(确定集合) ...

最新文章

  1. POJ 2411 Mondriaan‘s Dream(最清楚好懂的状压DP讲解)(连通性状态压缩DP)
  2. GC分析工具使用-gceacy分析堆栈
  3. 021_html文本格式化标签
  4. php 函数中静态变量的问题
  5. [PAT乙级]1030 完美数列
  6. Collections.shuffle()方法的使用
  7. Fast-SCNN 多分支结构共享低级特征的语义分割网络 (一)
  8. python路径设置方法,R不转义,以及r转义出错SyntaxError
  9. 计算机英语口试,英语口试面对“电脑考官”有哪些临场应试技巧
  10. Activiti进阶(七)——排他网关(ExclusiveGateWay)
  11. [HDFS Manual] CH1 HDFS体系结构
  12. php获取类的实例变量
  13. [转]Windows Shell 编程 第五章 【来源:http://blog.csdn.net/wangqiulin123456/article/details/7987939】...
  14. Oracle 安装教程
  15. 打开u盘显示参数错误
  16. java 请假系统_JAVA 师生请假系统 课程设计
  17. MySQL高可用架构-MMM环境部署记录
  18. SQL基础操作(3):对表中元进行简单删,改,查的操作【增在2中】
  19. Unity3d 防止相机“穿墙”功能
  20. Java选择题(八)

热门文章

  1. php的filter input,记一个php://filter和php://input的CTF题
  2. ajax传formdata类型的数据_JQuery.Ajax()的data参数类型
  3. 成功入职字节跳动!2021年冲刺年薪40w
  4. 【迁移学习(Transfer L)全面指南】Deep CORAL几何特征变换
  5. 【408预推免复习】操作系统之处理机调度与死锁
  6. pycharm中import呈现灰色原因
  7. java集群调度_Cuckoo-Schedule
  8. python functools.reduce_Python-functools模块(reduce、partial、lru_cache)
  9. vue 循环 递归组件_Vue一个案例引发的递归组件的使用
  10. 网络推广是什么告诉大家如何高效提高网站权重?