MYSQL的DQL语言(连接查询、子查询)


前言

DQL是我们在学习mysql的时候必须学习的内容,DQL也可以称为mysql中的查询语言,是一个内容众多的查询语言!主要说一下连接查询和子查询者两种查询方式。


一、连接查询

1.连接查询的概念和作用

概念
  连接查询,公认的说法其实就是多表查询,通过关键字将多个表连接起来一起查询我们需要查询的内容。
作用
  当单个表的内容无法满足我们的查询需求的时候,就可以将我们需要查询的内容的表连接起来一起查询。

2.连接查询(sql99)

  MySQL中连接查询有很多分类,其中有sql92语法,最新的是sql99语法,后者比前者功能更完整,所有我这就说一下sql99语法。
语法
select 查询列表 from 表1 别名【连接类型】 join 表2 别名 on 连接条件【where 筛选条件】【group by 分组字段】【having 筛选条件】【order by 排序列表】【limit(page-1)*size,size 】
语法注解
1.连接类型:

  1. 内连接(【inner】 join)
  2. 外连接(左外(left【outer】)、右外(right【outer】)、全外(full【outer】))
  3. 交叉连接(cross)

连接类型的解释
内连接可以分为
  等值连接:(特点:1.一般会为表起别名,2.表之间的顺序可以随意交换,3.n表连接就需要n-1个连接条件,4.等值连接的结果是表的交集部分)。
  非等值连接:(在出现单个字段和多个字段进行比较的时候就可以称为非等值连接)。
  自连接:(其实可以说是与自己进行连接操作,相同的表起不同的别名,和自己内部的字段进行比较)。
外连接可以分为
  左外连接:(是指在from表的过程中,在左边的表是主表,右边的表是从表,连接产生的结果是=内连接结果+主表中从表没有的结果)。
  右外连接:(是指在from表的过程中,在右边的表是主表,左边的表是从表,连接产生的结果是=内连接结果+主表中从表没有的结果)。
  全外连接:(不区分左右,都可以是主表,也可以是从表,连接结构=内连接+表1中有表2中没有的值+表1中没有表2中有的值)
交叉连接:(是一种类似于笛卡尔乘积的连接)

二、子查询

1.子查询的含义

  子查询:就是指select查询语句出现在其它语句的内部的时候,我们就可以将该select查询语句叫作子查询语句,外面的selec查询语句则叫主查询语句或外部查询语句。
  子查询语句:可以有效的让我们在面临一些需要比较的内容是处于一个表中,或者是说比较的内容繁多的时候。

2.子查询的分类

子查询可以分为
按位置分类

  1. select查询语句后面
  2. from后面
  3. where或having后面
  4. exists后面

按结果接的行列数分类
5. 标量子查询(结果集只有一行一列)
6. 列子查询(结果集为一列多行)
7. 行子查询(结果集为一行多列)
8. 表子查询(结果集一般多行多列)

子查询的具体解释

  1. select后面:仅仅支持标量子查询
  2. from后面:只支持表子查询
  3. where和having后面:
      标量子查询(重点)
      列子查询(重点)
      行子查询
    特点:
    1.子查询放在小括号内
    2.子查询一般放在条件的右侧
    3.标量子查询,一般搭配这单行操作符使用(>,<,<=,>=,=,<>)
    4.列子查询,一般搭配着多行操作符使用(in/not in ,any/some, all)
    5.子查询的执行优先于主查询执行,主查询的执行需要用到子查询的结果

4.exists后面(相关子查询):支持表子查询,exists(完整的查询语句),最终结果只有1和0两种情况.


总结

在学习Mysql的过程中尤其是在查询方面是内容最多,这时我们在学习的过程中需要不断总结。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值