MySQL表的查询加强、多表查询、自连接、子查询

上一篇博客主要讲的是select的单表查询,这边文章主要是讲select的多表查询,

在讲述多表查询之前,我将先展示MySQL表查询的加强。

一、MySQL表查询--加强

(1)、where子句,order by的使用

(2)、分页查询

基本语法:select.....(正常书写)limit start rows,表示从start+1行开始取,取出rows行,start从0开始计算。

推导公式:select*from emp

                                order by empno

                                limit 每页显示的记录数*(第几页-1),每页显示记录数

例题:按雇员的empno升序取出,,每页显示3条记录,分别显示 

(3)、分组加强

 (4)、应用案例

如果select语句同时包含有group by,having、limit,order by,那么他们的顺序是group by,having,order by,limit

 统计各个部门 group by的平均工资avg。并且是大于1000的having,按照平均工资从高到低排序,order by,取出前两行记录limit

二、多表查询的引入

定义:多表查询是指基于两个和两个以上的表查询。在实际应用中,查询单个表可能无法满足我们的需求,需要使用多个表格。

默认的查找方式:select * from emp,dept;

在默认的情况下,当两个表查询时,规则

1.从第一张表中,取出一行和第二张表的每一行进行组合,返回结果。[含有两张表的所有列]

2.一共返回的记录数 第一张表行数*第二张表的行数

3.这样多表查询默认处理返回的结果,称为笛卡尔集

4.解决这个多表的关键是要写出正确的过滤条件where,需要程序员自己分析。

5.多表查询的条件不能少于表的个数-1,否则就会出现笛卡尔集

三、自连接

概念:自连接是指在同一张表的连接查询

四、mysql表的子查询 

子查询是指嵌入在其他sql语句中的select语句,也叫嵌套查询。

子查询分为:单行子查询和多行子查询

(1)、单行子查询

单行子查询是指只返回一行数据的子查询语句

 

(2)、多行子查询

多行子查询是指返回多行数据的子查询,使用关键字in

下列 代码中:MySQL语句中等于用一个=表示,不等于用!=或者<>表示

 

(3)all和any的使用

例题:显示工资比部门30的所有员工的工资高的员工的姓名、工资和部门号

例题:显示工资比部门30的其中一个员工的工资高的员工的姓名、工资和部门

(4)多列子查询

多列子查询是指返回多个列数据的子查询语句

 

 

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值