文档章节

外连接 内链接 子查询

芥末小弟
 芥末小弟
发布于 2017/03/01 09:54
字数 588
阅读 1
收藏 0
点赞 0
评论 0

图五 内连接和外连接的区别

 

笛卡尔积查询:(没有意义)

语法:

* select * from A,B;

* 笛卡尔积的查询的结果不是想要的结果!!!

内连接查询

语法:

* select * from A inner join B on 条件; --- inner 可以省略!!!

* select * from A join B on 条件;

案例:

* select * from dept join emp on dept.did = emp.dno;

等价于

* select * from dept,emp where dept.did = emp.dno;---隐式内连接

外连接查询
左外连接查询

语法:

* select * from A left outer join B on 条件; ---outer 可以省略

* select * from A left join B on 条件;

案例:

* select * from dept left outer join emp on dept.did = emp.dno;

右外连接查询

语法:

* select * from A right outer join B on 条件;---outer可以省略

* select * from A right join B on 条件;

案例:

* select * from dept right outer join emp on dept.did = emp.dno;

子查询:

子查询:一个sql的查询的结果需要依赖另一个sql的查询结果!

创建表:

create table exam(

id int primary key auto_increment,

name varchar(20),

math int,

english int

);

insert into exam values (null,'aaa',59,61);

insert into exam values (null,'bbb',62,81);

insert into exam values (null,'ccc',73,73);

insert into exam values (null,'ddd',84,64);

insert into exam values (null,'eee',91,58);

insert into exam values (null,'fff',69,92);

insert into exam values (null,'ggg',75,83);

* 查询数学成绩在数学平均分之上的同学信息:

* 求数学的平均分:select avg(math) from exam;

* 求数学分数大于平均分:select * from exam where math > 平均分;

* 平均分是一条sql的查询结果.

* select * from exam where math > (select avg(math) from exam);

在子查询中可以使用关键字any、all.

* any:任意的

* > any :select * from exam where english > any (select math from exam);

* any:任意一个值.最小的那个可以了.

* < any :select * from exam where english < any (select math from exam);

* any:任意一个值.最大的那个值比较就可以了.

* all:所有的

* > all :select * from exam where english > all (select math from exam);

* < all :select * from exam where english < all (select math from exam);

* 多表的查询:

* 按照部门名称统计人员的个数!

* select d.dname,count(*) from dept d,emp e where d.did = e.dno group by d.dname;

* 统计每个部门平均工资!

* select d.dname,avg(eprice) from dept d,emp e where d.did = e.dno group by d.dname;

* 查询哪些员工的工资大于任意部门平均工资:

* select * from emp where eprice > any (select avg(eprice) from dept d,emp e where d.did = e.dno group by d.dname);

* 查询哪些员工的工资大于所有部门平均工资:

* select * from emp where eprice > all (select avg(eprice) from dept d,emp e where d.did = e.dno group by d.dname);

© 著作权归作者所有

共有 人打赏支持
芥末小弟
粉丝 0
博文 202
码字总数 120715
作品 0
昌平
MYSQL子查询与连接

37:子查询与连接 SET 列名 gbk;//改变客户端数据表的编码类型。 子查询 子查询(Subquery)是指出现在其他SQL语句内的SELECT子句 例如 SELECT FROM t1 WHERE col1=(SELECT col2 FROM t2); 其...

别叫小伙 ⋅ 2016/09/30 ⋅ 0

MySQL学习笔记-子查询和连接

MySQL学习笔记-子查询和连接 使客户端进入gbk编码方式显示: mysql> SET NAMES gbk; 1.子查询 子查询的定义: 子查询(Subquery)是指出现在其他SQL语句内的SELECT子句。 例如: SELECT * FRO...

谢育政 ⋅ 2017/05/24 ⋅ 0

学习hibernate(八) -- HQL查询语句

HQL语句 HQL(Hibernate Query Language)提供更加丰富灵活、更为强大的查询能力。 可设定WHERE 可进行投影查询 可分页 可分组 可做连接查询 有聚合函数 支持子查询 可动态绑定参数 先看一个H...

杰克鹏仔 ⋅ 2016/04/11 ⋅ 0

mysql 内链接/外链接/交叉链接

1.内链接(典型的链接运算,使用=或<>之类的比较运算)内链接使用比较运算符根据每个表共有的列的值匹配两个表中的行。例如,检索students和coursesb表中的学生标识号相同的所有行。 2.外链接...

hyhlinux ⋅ 2016/07/06 ⋅ 0

补12.关于mysql的多表查询

首先先准备两张表。 首先是员工信息表,表名为employee。 create table employee( empid int primary key autoincrement not null, empname varchar(50), age int, deptid int ); 然后在员工......

苏浩智 ⋅ 2017/06/06 ⋅ 0

聊聊SQLite - 基础篇

SQLite SQLite是一个关系型数据库,是一个嵌入式的数据库,它的核心代码由C编写,直接在宿主应用中运行。 本来想一篇长文章涵盖想写的内容,最后发现想写的东西太多了,就拆分成:基础篇,原...

黄文臣 ⋅ 2017/09/24 ⋅ 0

MySQL学习笔记(三)

五、多表查询 主、从表: 如果表A的主关键字(primary key)是表B的字段,则该字段称为表B的外键。 外键:用来实现参照完整性的,不的外键约束方式将可以使两张表紧密的结合起来,特别 修改或...

ws199358 ⋅ 2016/09/08 ⋅ 0

mysql复杂操作

1.联合查询—union: 把多条select语句的结果合并到一起的操作。 (select * from table1 order by days limit 3,2) union [all] (select * from table2 order by days limit 5) 使用场合:获取......

笨小熊 ⋅ 2015/06/29 ⋅ 0

MySQL阶段二——sql语句基础(2)

数据查询操作 01.创建数据表 (02-05练习) (连接查询练习使用) 02.单表查询 03.分组统计 04.嵌套查询 05.集合查询 06.连接查询 07.连接查询与集合查询的不同 数据查询操作 01.创建数据表 ...

花开半夏qb ⋅ 2017/08/03 ⋅ 0

【SQL】—多表查询的几种连接方式

前言 最近在项目中用到连接查询,连接查询是关系数据中最主要的查询,包括内连接、外连接等。通过连接运算符可以实现多个表查询。下面来复习一下。 正文 连接查询主要分为三种:内连接、外连...

zt15732625878 ⋅ 01/16 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

磁盘管理—逻辑卷lvm

4.10-4.12 lvm 操作流程: 磁盘分区-->创建物理卷-->划分为卷组-->划分成逻辑卷-->格式化、挂载-->扩容。 磁盘分区 注: 创建分区时需要更改其文件类型为lvm(代码8e) 分区 3 已设置为 Linu...

弓正 ⋅ 31分钟前 ⋅ 0

Spring源码解析(六)——实例创建(上)

前言 经过前期所有的准备工作,Spring已经获取到需要创建实例的 beanName 和对应创建所需要信息 BeanDefinition,接下来就是实例创建的过程,由于该过程涉及到大量源码,所以将分为多个章节进...

MarvelCode ⋅ 51分钟前 ⋅ 0

a href="#"

<a href="#">是链接到本页,因为你有的时候需要有个链接的样式,但是又不希望他跳转,这样写,你可以把这个页面去试试

颖伙虫 ⋅ 58分钟前 ⋅ 0

js模拟栈和队列

栈和队列 栈:LIFO(先进后出)一种数据结构 队列:LILO(先进先出)一种数据结构 使用的js方法 1.push();可以接收任意数量的参数,把它们逐个推进队尾(数组末尾),并返回修改后的数组长度。 2....

LIAOJIN1 ⋅ 58分钟前 ⋅ 0

180619-Yaml文件语法及读写小结

Yaml文件小结 Yaml文件有自己独立的语法,常用作配置文件使用,相比较于xml和json而言,减少很多不必要的标签或者括号,阅读也更加清晰简单;本篇主要介绍下YAML文件的基本语法,以及如何在J...

小灰灰Blog ⋅ 今天 ⋅ 0

IEC60870-5-104规约传送原因

1:周期循环2:背景扫描3:自发4:初始化5:请求6:激活7:激活确认8:停止激活9:停止激活确认10:激活结束11:远程命令引起的返送信息12:当地命令引起的返送信息13:文件传送20:响应总召...

始终初心 ⋅ 今天 ⋅ 0

【图文经典版】冒泡排序

1、可视化排序过程 对{ 6, 5, 3, 1, 8, 7, 2, 4 }进行冒泡排序的可视化动态过程如下 2、代码实现    public void contextLoads() {// 冒泡排序int[] a = { 6, 5, 3, 1, 8, 7, 2, ...

pocher ⋅ 今天 ⋅ 0

ORA-12537 TNS-12560 TNS-00530 ora-609解决

oracle 11g不能连接,卡住,ORA-12537 TNS-12560 TNS-00530 TNS-12502 tns-12505 ora-609 Windows Error: 54: Unknown error 解决方案。 今天折腾了一下午,为了查这个问题。。找了N多方案,...

lanybass ⋅ 今天 ⋅ 0

IDEA反向映射Mybatis

1.首先在pom文件的plugins中添加maven对mybatis-generator插件的支持 ` <!-- mybatis逆向工程 --><plugin><groupId>org.mybatis.generator</groupId><artifactId>mybatis-generator-ma......

lichengyou20 ⋅ 今天 ⋅ 0

4.10/4.11/4.12 lvm讲解 4.13 磁盘故障小案例

准备磁盘分区 fdisk /dev/sdb n 创建三个新分区,分别1G t 改变分区类型为8e 准备物理卷 pvcreate /dev/sdb1 pvcreate /dev/sdb2 pvcreate /dev/sdb3 pvdisplay/pvs 列出当前的物理卷 pvremo...

Linux_老吴 ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部