数据库操作——多表查询
一 关键字
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
数据库操作——多表查询相关推荐
- mysql数据库操作多表查询_MySQL数据库查询操作进阶——多表查询
多表查询 在大部分情况下,我们用到的表都是彼此相关联的,所以我们会有相当大的需求用到跨表的查询,这个时候我们就需要将相关联的表连起来做多表查询. 多表查询分为连表查询和子查询,连表查询即将相关联的表连 ...
- 数据库之多表查询与视图操作
步骤: 在上一次的基础上对已经创建的jwg数据库中的数据表进行各种查询操作 多表查询 1.进行多表查询 从student.course.student_course三个表中检索出学生的学号.姓名.学习 ...
- mysql数据库实验3查询_MySQL数据库实验:任务三 数据库的单表查询设计
任务三 数据库的单表查询设计 文章目录任务三 数据库的单表查询设计[实训目的与要求][实训原理][实训步骤]一.简单查询二.按条件查询1.比较大小查询2.带in关键字的查询(确定集合)3.带BETWE ...
- 数据库实验3 数据库的单表查询
数据库的单表查询 3.1实验目的及要求 掌握简单表的数据查询.数据排序和表链接查询的操作方法 3.2实验内容 简单查询操作和连接查询方式. 3.3实验步骤 3.3.1单表查询: 1.查询全体学生的学号 ...
- MySQL数据库应用 多表查询_mysql数据库-多表查询
今日任务 完成对MYSQL数据库的多表查询及建表的操作 教学目标 掌握MYSQL中多表的创建及多表的查询 掌握MYSQL中的表关系分析并能正确建表 昨天内容回顾: 数据库的创建 : create ...
- SQL sever数据库的单表查询和连接查询
数据库的单表查询和连接查询 一.目的: 掌握无条件查询的使用方法. 掌握条件查询的使用方法. 掌握库函数及汇总查询的使用方法. 掌握分组查询的使用方法. 掌握查询的排序方法. 掌握连接查询的使用方法. ...
- MySQL数据库实验:任务三 数据库的单表查询设计
任务三 数据库的单表查询设计 文章目录 任务三 数据库的单表查询设计 [实训目的与要求] [实训原理] [实训步骤] 一.简单查询 二.按条件查询 1.比较大小查询 2.带in关键字的查询(确定集合) ...
- ABAP数据库操作02-数据查询
ABAP数据库操作02-数据查询 在SE11创建一个表zlion_test,字段:学号.姓名.性别.年龄,并在SE16N中添加4条记录 1.单条查询 单条记录查询要用:single 1.1.查询单条单 ...
- mysql 性别以女生升序_MySQL数据库实验:任务三 数据库的单表查询设计
任务三 数据库的单表查询设计 文章目录 任务三 数据库的单表查询设计 [实训目的与要求] [实训原理] [实训步骤] 一.简单查询 二.按条件查询 1.比较大小查询 2.带in关键字的查询(确定集合) ...
最新文章
- POJ 2411 Mondriaan‘s Dream(最清楚好懂的状压DP讲解)(连通性状态压缩DP)
- GC分析工具使用-gceacy分析堆栈
- 021_html文本格式化标签
- php 函数中静态变量的问题
- [PAT乙级]1030 完美数列
- Collections.shuffle()方法的使用
- Fast-SCNN 多分支结构共享低级特征的语义分割网络 (一)
- python路径设置方法,R不转义,以及r转义出错SyntaxError
- 计算机英语口试,英语口试面对“电脑考官”有哪些临场应试技巧
- Activiti进阶(七)——排他网关(ExclusiveGateWay)
- [HDFS Manual] CH1 HDFS体系结构
- php获取类的实例变量
- [转]Windows Shell 编程 第五章 【来源:http://blog.csdn.net/wangqiulin123456/article/details/7987939】...
- Oracle 安装教程
- 打开u盘显示参数错误
- java 请假系统_JAVA 师生请假系统 课程设计
- MySQL高可用架构-MMM环境部署记录
- SQL基础操作(3):对表中元进行简单删,改,查的操作【增在2中】
- Unity3d 防止相机“穿墙”功能
- Java选择题(八)
热门文章
- php的filter input,记一个php://filter和php://input的CTF题
- ajax传formdata类型的数据_JQuery.Ajax()的data参数类型
- 成功入职字节跳动!2021年冲刺年薪40w
- 【迁移学习(Transfer L)全面指南】Deep CORAL几何特征变换
- 【408预推免复习】操作系统之处理机调度与死锁
- pycharm中import呈现灰色原因
- java集群调度_Cuckoo-Schedule
- python functools.reduce_Python-functools模块(reduce、partial、lru_cache)
- vue 循环 递归组件_Vue一个案例引发的递归组件的使用
- 网络推广是什么告诉大家如何高效提高网站权重?