MySql连接查询方式详解
目录
- 1. 什么是连接查询
- 2. 连接查询的方式
- 3. 内连接
- 1. 等值连接
- 2. 非等值连接
- 3. 自连接
- 4. 外连接
- 1. 右外连接
- 2. 左外连接
- 5. 多张表(两张以上)连接
1. 什么是连接查询
从一张表中单独查询,称为单表查询。
跨表查询,多张表联合其来查询,称为连接查询。
2. 连接查询的方式
内连接:
- 等值连接
- 非等值连接
- 自连接
外连接:
- 左外连接(左连接)
- 右外连接(右连接)
当对多张表进行查询,没有任何限制的时候,返回的值是笛卡尔积
3. 内连接
1. 等值连接
查询每个员工所在部门名称,显示员工名和部门名?
emp e 和 dept d 表进行连接,条件是:e. deptno = d.deptno
SQL92语法
mysql> select e.ename, d.dname from emp e, dept d where e.deptno = d.deptno;
SQL99语法
mysql> select e.ename, d.dname from emp e join dept d on e.deptno = d.deptno;
SQL92的缺点:结构不清晰,表的连接条件,和后期进一步筛选的条件,都放到了where后面。
SQL99的优点:表连接的条件是独立的,连接之后,如果还需要进一步筛选,再往后继续添加where语句。
2. 非等值连接
找出每个员工的薪资等级,要求显示员工名、薪资、薪资等级?
mysql> select e.ename, e.sal, s.grade from emp e join salgrade s on e.sal between s.losal and s.hisal;
3. 自连接
查询员工的上级领导,要求显示员工名对应的领导名?
一张表看成两张表
emp a 员工表
emp b 领导表
mysql> select a.ename as '员工名', b.ename as '领导名' from emp a join emp b on a.mgr = b. empno;
4. 外连接
与内连接不同的地方在于,内连接对于没有匹配的值,就不在查询结果中;而外连接对于没有匹配的值,依旧存在与查询结果中。
right:将 join 关键字右边的表看为主表
left:将 join 关键字左边的表看为主表
1. 右外连接
mysql> select e.ename, d.dname from emp e right join dept d on e.deptno = d.deptno;
2. 左外连接
mysql> select e.ename, d.dname from dept d left join emp e on e.deptno = d.deptno;
查询每个员工的上级领导,要求显示所有员工的姓名和领导姓名?
mysql> select a.ename as '员工名', b.ename as '领导名' from emp a left join emp b on a.mgr = b.empno;
5. 多张表(两张以上)连接
找出每个员工的部门名称以及工资等级,要求显示员工名、薪资、薪资等级?
select e.ename, e.sal, d.dname, s.grade from emp e join dept d on e.deptno = d.deptno join salgrade s on e.sal between s.losal and s.hisal;
到此这篇关于MySql连接查询方式详解的文章就介绍到这了,更多相关MySql连接查询内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!
相关推荐
-
MySQL数据库学习之去重与连接查询详解
目录 1.去重 2.连接查询 使用where进行多表连接查询 内连接 - 等值连接 内连接 - 非等值连接 内连接 - 自连接 外连接 - 左右外连接 三表连接 1.去重 示例表内容参考此文章 有些 MySQL 数据表中可能存在重复的记录,有些情况我们允许重复数据的存在,但有时候我们也需要删除这些重复的数据. 例如:去重显示岗位信息: mysql> select distinct job from emp; +-----------+ | job | +-----------+ | CLERK
-
MySQL由浅入深掌握连接查询
目录 内连接 自然连接和等值连接的区别 内连接的实现方式 外连接 左连接 右连接 全连接 数据库版本:mysql8.0.27 内连接 内连接INNERJOIN是最常用的连接操作.从数学的角度讲就是求两个表的交集,从笛卡尔积的角度讲就是从笛卡尔积中挑出ON子句条件成立的记录. 在我看来内连接和等值连接差不多,自然连接是内连接中的一个特殊连接 自然连接和等值连接的区别 什么是自然连接? 自然连接(Naturaljoin)是一种特殊的等值连接,它要求两个关系中进行比较的分量必须是相同的属性组,并且在结
-
MySQL中的连接查询(等值连接)
目录 1. 笛卡尔乘积 2. 分类 (1)按年代分类 (2)按功能分类 3. 等值连接 4. 总结 1. 笛卡尔乘积 表1有m行数据,表2有n行数据,查询结果有m*n行数据. 2. 分类 (1)按年代分类 sql92标准:仅支持内连接 sql99标准(推荐):支持内连接.外连接(左外连接和右外连接).交叉连接 (2)按功能分类 内连接:等值连接.非等值连接.自连接 外连接:左外连接.右外连接.全外连接 交叉连接 3. 等值连接 (1)查询女生名及其对应的男朋友名 SELECT girl
-
MySQL中连接查询和子查询的问题
目录 多表连接的基本语法 交叉连接和笛卡尔积现象 交叉连接 笛卡尔积现象 内连接 外连接 左外连接 右外连接 全外连接 子查询 多表连接的基本语法 多表连接,就是将几张表拼接为一张表,然后进行查询 select 字段1, 字段2, ... from 表1 {inner|lift|right} join 表2 on 连接条件; 有如下两张表:部门表和员工表 交叉连接和笛卡尔积现象 交叉连接 交叉连接,又名无条件内连接/笛卡尔连接 第一张表种的每一项会和另一张表的每一项依次组合 select * f
-
MySQL数据库连接查询 join原理
目录 1.连接查询的分类 2.交叉连接 2.1.原理 2.2.基本语法 2.3.应用 3.内连接 3.1.原理 3.2.基本语法 3.3.应用 4.外连接 4.1.原理 4.2.基本语法 4.3.特点 4.4.应用 5.using关键字 5.1.原理 5.2.基本语法 1.连接查询的分类 交叉连接 内连接 外连接 左外链接(左连接) 右外连接(右连接) 自然连接 2.交叉连接 将两张表的数据与另外一张表彼此交叉 2.1.原理 笛卡尔积: 从第一张表一次取出每一条数据 取出每一条记录之后,与另外一
-
mysql连接查询详解
目录 1.连接查询 2.连接类型 内连接 定义: 语法1: 语法2: 3个表连接 显示指定列 左连接 定义: 语法: 右连接 定义: 语法: 自关联 定义 子查询 定义 主查询 主查询和子查询的关系 子查询充当条件 子查询充当数据源 子查询中特定关键字使用 1.连接查询 作用:当查询结果的列来源于多张表时,需要将多张表连接成一个大的数据集,再选择合适的列返回 2.连接类型 内连接 定义: 内连接查询:查询结果为两个表匹配到的数据 语法1: select * from 表1 inner join
-
MySQL连接查询你真的学会了吗?
1.内连接查询概要 内连接是应用程序中非常常见的连接操作,它一般都是默认的连接类型.内连接基于连接谓词,它将两张表(如A和B)的列组合在一起,产生新的结果表.内连接查询会将A表的每一行和B表的每一行进行比较,并找出满足连接谓词的组合.当连接谓词被满足,A和B中匹配的行会按列组合(并排组合)成结果集中的一行. 内连接查询操作列出与连接条件匹配的数据行,它使用比较运算符比较被连接列的列值.内连接分3种:交叉连接相等连接和自然连接. 2.交叉连接(笛卡尔积) 交叉连接(Cross Join) ,又称"
-
MySql连接查询方式详解
目录 1. 什么是连接查询 2. 连接查询的方式 3. 内连接 1. 等值连接 2. 非等值连接 3. 自连接 4. 外连接 1. 右外连接 2. 左外连接 5. 多张表(两张以上)连接 1. 什么是连接查询 从一张表中单独查询,称为单表查询. 跨表查询,多张表联合其来查询,称为连接查询. 2. 连接查询的方式 内连接: 等值连接 非等值连接 自连接 外连接: 左外连接(左连接) 右外连接(右连接) 当对多张表进行查询,没有任何限制的时候,返回的值是笛卡尔积 3. 内连接 1. 等值连接 查询每
-
MySql各种查询方式详解
目录 新增 聚合查询 分组查询 条件查询 联合查询 自连接 合并查询 新增 insert into B select * from A://将A表的信息通过查询新增到B表中去 聚合查询 count://返回到查询的数据总和 sum://返回到查询的数据总和(只对数字有意义) 只对数字有意义 avg/max/min;//返回查询数据的平均值/最大值/最小值(只对数字有意义) 分组查询 select * from 表名 group by 分组条件: 这里是先执行分组,再根据分组执行每个组的聚合函数.
-
MySQL连接查询实例详解
本文实例讲述了MySQL连接查询.分享给大家供大家参考,具体如下: 创建表suppliers: CREATE TABLE suppliers ( s_id int NOT NULL AUTO_INCREMENT, s_name char(50) NOT NULL, s_city char(50) NULL, s_zip char(10) NULL, s_call CHAR(50) NOT NULL, PRIMARY KEY (s_id) ) ; INSERT INTO suppliers(s_i
-
Spring Data Jpa的四种查询方式详解
这篇文章主要介绍了Spring Data Jpa的四种查询方式详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 一.调用接口的方式 1.基本介绍 通过调用接口里的方法查询,需要我们自定义的接口继承Spring Data Jpa规定的接口 public interface UserDao extends JpaRepository<User, Integer>, JpaSpecificationExecutor<User> 使用这
-
Mybatis-Plus时间范围查询方式详解
目录 方式一 方式二 请求方式 传参类型 方式一 通过apply方法,来实现时间范围查询,该方法可用于数据库函数,动态入参的params对应前面applySql内部的{index}部分,这样是不会有sql注入风险的,反之会有! apply(boolean condition, String applySql, Object... params) 反例: queryWrapper.apply(StrUtil.isNotBlank(serviceItemListDto.getStartTime())
-
mysql慢查询使用详解
1 慢查询定义 指mysql记录所有执行超过long_query_time参数设定的时间阈值的SQL语句.慢查询日志就是记录这些sql的日志. 2 开启慢查询日志 找到mysql配置文件my.cnf.在mysqld的下面添加 复制代码 代码如下: log-slow-queries = D:/MySQL/log/mysqld-slow-query.log #日志存在的位置.(注意权限的问题,可以不用设置,系统会给一个缺省的文件host_name-slow.log) long-query-time
-
Mysql自连接查询实例详解
本文实例讲述了Mysql自连接查询.分享给大家供大家参考,具体如下: 自连接查询 假想以下场景:某一电商网站想要对站内产品做层级分类,一个类别下面有若干子类,子类下面也会有别的子类.例如数码产品这个类别下面有笔记本,台式机,智能手机等:笔记本,台式机,智能手机又可以按照品牌分类:品牌又可以按照价格分类,等等.也许这些分类会达到一个很深的层次,呈现一种树状的结构.那么这些数据要怎么在数据库中表示呢?我们可以在数据库中创建两个字段来存储id和类别名称,使用第三个字段存储类别的子类或者父类的id,最后
-
MySQL嵌套查询实例详解
本文实例分析了MySQL嵌套查询.分享给大家供大家参考,具体如下: MySQl从4.11版后已经完全支持嵌套查询了,那么下面举些简单的嵌套查询的例子吧(源程序来自MySQL User Manual): 1. SELECT语句的子查询 语法: 复制代码 代码如下: SELECT ... FROM (subquery) AS name ... 先创建一个表: CREATE TABLE t1 (s1 INT, s2 CHAR(5), s3 FLOAT); INSERT INTO t1 VALUES (
-
MySql日期查询语句详解
使用DATE_FORMAT方法SELECT * FROM `ler_items` WHERE DATE_FORMAT(postTime,'%Y-%m')='2013-03'注意:日期一定要用'',否则没有效果其它的一些关于mysql日期查找语句mysql> select date_format(DATE_SUB(CURDATE(), INTERVAL 7 DAY),'%y%m%d');+-------------------–+| date_format(DATE_SUB(CURDATE(),
-
JAVA mongodb 聚合几种查询方式详解
一.BasicDBObject 整个聚合查询是统计用户的各种状态下的用户数量为场景: 1.筛选条件: date为查询日期: BasicDBObject Query = new BasicDBObject(); Query.put("time",new BasicDBObject("$gte", date + " 00:00:00") .append("$lte", date + " 23:59:59"));
随机推荐
- Go语言interface 与 nil 的比较
- java获取网络类型的方法
- ORACLE出现错误1033和错误ORA-00600的解决方法
- C# 调用API函数弹出映射网络驱动器对话框问题
- 浅析Python中的多条件排序实现
- 使用Memcache缓存mysql数据库操作的原理和缓存过程浅析
- Linux中更改转移mysql数据库目录的步骤
- mysql压缩包版安装配置方法图文教程
- shell脚本中case条件控制语句的一个bug分析
- 解决vim语法高亮不起作用的方法
- 在Java的Spring框架的程序中使用JDBC API操作数据库
- jquery 插件之仿“卓越亚马逊”首页弹出菜单效果
- 用表格输出1-1000之间的数字实现代码(附特效)
- python BeautifulSoup使用方法详解
- Android实现上传文件功能的方法
- 详解shell中source、sh、bash、./执行脚本的区别
- Java+opencv3.2.0之直方图均衡详解
- Vue CLI 3.x 自动部署项目至服务器的方法
- SpringBoot启动报错Failed to determine a suitable driver class
- python 杀死自身进程的实现方法