SQL入门第三篇——连接查询

简介: 什么是连接查询• 从一张表跨越到另一张表进行查询,叫做跨表查询,多张表联合起来查询数据,称为连接查询• 连接查询的分类:SQL92:1992年出现的语法SQL99:1999年出现的语法;我们学习这个• 那么表之间的连接方式又有哪些呢?• 内链接:等值连接,非等值连接,自连接• 外连接:左外连接(左连接)右外连接(右连接)

SQL入门第三篇——连接查询

什么是连接查询

  • 从一张表跨越到另一张表进行查询,叫做跨表查询,多张表联合起来查询数据,称为连接查询
  • 连接查询的分类:SQL92:1992年出现的语法SQL99:1999年出现的语法;我们学习这个
  • 那么表之间的连接方式又有哪些呢?
  • 内链接:等值连接,非等值连接,自连接
  • 外连接:左外连接(左连接)右外连接(右连接)

内连接之等值连接

  • 案例:查询每个员工所以在部门名称,显示员工工名和部门名
    SQL92语法:
    seleet
    e.ename,d.dname
    from
    emp e,dept d
    where
    e.deptno =d.deptno;
    缺点:结构不清晰,表的连接条件和后期进一步筛选的条件,都放到了where后面
    SQL99语法:
    select
    e.ename,d.dname
    from
    emp e
    inner(inner可以省略) join
    dept d
    on
    e.deptno=d.deptno;
    优点:表连接的条件是独立的,连接之后,如果还需要进一步筛选,再往后面添加where

内连接之非等值连接

  • 案例:找出每个员工的薪资等级,要求显示员工名,薪资,薪资等级
    select e.ename,e.sal,s.grade from emp e join salary s on e.sal between s.losal and s.hisal;-- 条件不是一个等量关系为非等值连接

内连接之自连接

  • 案例:查询员工的上级领导,要求显示员工名和对应的领导名
    select e.name as '员工名',b.ename as ‘领导名’ from emp a join emp b on a.mgr=b.empno;需要将一张表看成是两张表连在一起

外连接(右外连接)

  • select e.ename,d.dname from emp e right join dept d on e.deptno = d.deptno;
    right代表将join关键字右边的这张表看成是主表,主要是为了将外连接当中,两张表连接,产生了主次关系
  • 左外连接与右外连接差不多,交换一下顺序就行,两者可以互换
  • 如果三张表,四张表怎么连接
  • 语法:
  • select
    ...
    from
    a
    join
    b
    on
    a和b的连接条件
    right join
    c
    on
    a和c的连接条件
  • 一条SQL中内连接和外连接可以混合

子查询

  • 也叫select嵌套查询
  • 案例:找出比最低工资高的员工姓名和工资
    第一步:先找出最低工资
    select min(sal) from emp;
    第二部:找出>800的
    select ename,sal from emp where sal > 800;
    合并:select ename,sal from emp where sal > (select min(sal) from emp);
  • from子句中的子查询
  • 案例:找出每个岗位的平均工资的薪资等级
  • 第一步:找出每个岗位的平均工资
    select job,avg(sal) form emp gruop by job;
  • 第二步:将以上表看成真实存在的表做成t表
    select
    t.*,s.grade
    from
    (select job,avg(sal) as avgsal form emp gruop by job) t
    join
    salgrade s
    on
    t.avgsal between s.losal and s.hisal;
  • 这里from后面子查询可以看成一张临时表(技巧)

union合并查询结果集

  • 案例:查询工作岗位是MANAGER和SALESMAN的员工
  1. select ename,job from emp where job = 'MANAGER' or job = 'SALESMAN';
  2. select ename,job from emp where job in('MANAGER','SALESMAN');
  3. select ename,job from emp where job='MANAGER' union select ename,job from emp where job='SALESMAN';
  4. 实际的情况是union的效率要高一些。对于表连接来说,每连接一次新表,则匹配的次数满足笛卡尔积,成倍的翻。但是union可以减少匹配的次数。在减少匹配次数的情况下,还可以完成两个结果集的拼接(就像把*变成了+)

limit(起始下标,取多长)

  • 是将查询结果集的一部分取出来,通常使用在分页查询当中
  • 案例:取出工资排名在[3-5]名的员工
    select ename,sal from emp order by sal desc limit 2,3;从下标2也就是第三条开始取,取三条记录
  • 公式就是limit (页码-1)*页码长度,页码长度
相关文章
|
3天前
|
SQL 存储 关系型数据库
数据库SQL入门指南
数据库SQL入门指南
|
1天前
|
SQL 数据库
实时数仓 Hologres产品使用合集之如何找回之前的SQL查询代码
实时数仓Hologres是阿里云推出的一款高性能、实时分析的数据库服务,专为大数据分析和复杂查询场景设计。使用Hologres,企业能够打破传统数据仓库的延迟瓶颈,实现数据到决策的无缝衔接,加速业务创新和响应速度。以下是Hologres产品的一些典型使用场景合集。
|
2天前
|
SQL 数据库 UED
SQL查询功能的全面解析与实用技巧
SQL(Structured Query Language)作为数据库管理的核心语言,其查询功能是实现数据检索、分析和报告的关键
|
2天前
|
SQL 数据库 数据库管理
SQL查询是否都需要解析:深入解析SQL执行流程与优化技巧
在数据库管理系统中,SQL(Structured Query Language)查询是用户与数据库交互的主要方式
|
2天前
|
SQL 移动开发 Oracle
SQL查询连续六天数据记录的技巧与方法
在数据库查询中,实现针对连续几天(如连续六天)的数据筛选是一个常见且稍具挑战性的任务
|
2天前
|
SQL 存储 安全
SQL视图实验:创建、查询与管理技巧
在数据库管理系统中,视图(View)是一个虚拟表,其内容由查询定义
|
2天前
|
SQL 数据库 索引
SQL语言入门:如何表达你的数据需求
在数据库的世界里,SQL(Structured Query Language)是一种至关重要的语言,它允许用户与数据库进行交互,执行数据的查询、更新、插入和删除等操作
|
5天前
|
SQL 存储 测试技术
SQL Server 查询超时问题排查
【8月更文挑战第14天】遇到SQL Server查询超时,先检查查询复杂度与索引使用;审视服务器CPU、内存及磁盘I/O负载;审查SQL Server配置与超时设置;检测锁和阻塞状况;最后审查应用代码与网络环境。每步定位问题根源,针对性优化以提升查询效率。务必先行备份并在测试环境验证改动。
|
SQL 存储 索引