SQL中DQL语句(查询)

本文详细介绍了SQL数据查询语言的基本概念和操作,包括简单查询、条件查询、排序、分组、连接查询及其分类、子查询、合并查询、LIMIT分页以及DISTINCT和AS关键字的使用。通过实例解析了WHERE、ORDER BY、GROUP BY、HAVING和JOIN的语法和应用场景,帮助读者深入理解SQL查询的各个方面。
摘要由CSDN通过智能技术生成

DQL语句表示数据查询语言(凡是带有select关键字的都是查询语句)

目录

简单查询

条件查询(where)

排序查询(orber by)

分组查询(group by)

连接查询(join)

连接查询的分类

内连接语法格式

外连接语法格式

两种连接区别

注意

子查询

子查询都可以出现在哪里呢?

where子句中的子查询

from子句中的子查询

合并查询(union)

limit分页查询

分页公式

distinct关键字

as关键字

查询顺序


简单查询

  • 查询单个字段
    • selsct 字段名 from 表名;
  • 查询多个字段
    • 字段名中使用逗号’,‘隔开
  • 查询所有字段
    • 第一种方法
      • 把每个字段都写上
    • 第二种方法
      • 字段名使用星号’*‘表示查看所有
      • 但是这种方法效率低,可读性差。不推荐

条件查询(where)

  • 语法格式:
    • select 字段名 from 表名 where 条件;
  • 运算符
    • 等于
      • =
    • 不等于
      • != 或<>
    • 小于
      • <
    • 小于等于
      • <=
    • 大于
      • >
    • 大于等于
      • >=
    • between ... and ...
      • 等于与 >= and <=
      • 使用between and的时候,必须遵循左小右大。between and是闭区间,包括两端的值。
    • is 
      • 表示是
        • 在数据库中,查询为null的时,必须使用is null。因为在数据库中null表示不存在,表示一个值,所有不可以使用=号查询
    • and
    • or
      • 当and和or同时存在时,存在优先级关系,and优先or,如果需要让or先执行,需要加括号
    • in
      • 包含(相对于多个or)
      • in不是一个区间。后面需要跟具体的值
    • not 
      • 表示取非,注意用于is和in中
    • ilke
      • 表示模块查询,支持%或下划线匹配
      • %表示任意多个字符
      • _表示任意一个字符

注意:除去where语句外,SQL中还有一种多条件的查询语句:

case..when..then..when..then..else..end

when可以理解为如果,then可以理解为就

排序查询(orber by)

  • 语法格式
    • select 字段名 from 表名 orber by 需要排序的字段名 排序方法
    • 排序方法
      • desc
        • 降序
      • asc
        • 升序
        • 默认为升序
    • 当需要排序的字段名有多个时,排序方法也可以单独指定,然后使用逗号’,‘隔开,哪个字段名在前,表示这个字段名起主导作用,当这个字段名相同时,则比较下一个字段名内容
    • 也可以根据字段的位置进行排序,orber by后面接列数即可,但是不建议使用,列的数据很容易发生改变

分组查询(group by)

在实际的应用中,可能有这样的需求,需要先进行分组,然后对每一组的数据进行操作。这个时候我们需要使用分组查询,

语法格式

  • select 字段名 from 表名 group by 需要分组的字段名  having 条件

进行分组后,可以使用having对分组之后的数据的进一步进行条件过滤。having不能单独使用,having不能代替where,having必须和group by联合使用。

连接查询(join)

从一张表中单独查询,称为单表查询。a表和b表联合起来查询数据,从a表中取数据c,从b表中取数据d。这种跨表查询,多张表联合起来查询数据,被称为连接查询。

连接查询的分类

根据表连接的方式分为内连接和外连接。

  • 内连接:
    • 等值连接
    • 非等值连接
    • 自连接
  • 外连接:
    • 左外连接(左连接)
    • 右外连接(右连接)

内连接语法格式

select 字段名 from 表名 inner join 另一个表名 on 连接条件

其中inner可以省略

连接条件相等时则叫做等值连接

连接条件不相等时则叫做非等值连接

对同一个表不同数据连接时叫做自连接

外连接语法格式

select 字段名 from 表名 right join 连接表名 on 连接条件

其中right可以换成left。当是right时则表示把join右边的表看成主表,主要是为了将
这张主表的数据全部查询出来,捎带着关联查询左边的表。在外连接当中,两张表连接,产生了主次关系。left表达意思一样,不过是表示左边的是主表。任何一个右连接都有左连接的写法。
任何一个左连接都有右连接的写法。

两种连接区别

外连接的查询结果条数一定是 >= 内连接的查询结果条数

内连接没有主次关系是平等的。而外连接有主次关系。

注意

  • 多表连接在后面加join...on即可
  • 如果不加连接条件的话,最终查询结果条数,是两张表条数的乘积,这种现象被称为:笛卡尔积现象。(笛卡尔发现的,这是一个数学现象。)

子查询

select语句中嵌套select语句,被嵌套的select语句称为子查询。

子查询都可以出现在哪里呢?

select
        ..(select).
    from
        ..(select).
    where
        ..(select).

where子句中的子查询

可以解决where子句中不能使用分组函数的问题

from子句中的子查询

from后面的子查询,可以将子查询的查询结果当做一张临时表。

合并查询(union)

使用union关键字,可以将多个表合并。union的效率要高一些。对于表连接来说,每连接一次新表,则匹配的次数满足笛卡尔积,成倍的翻。。。但是union可以减少匹配的次数。在减少匹配次数的情况下,还可以完成两个结果集的拼接。union在进行结果集合并的时候,要求两个结果集的列数相同。在oracle数据库中结构集合合并时列和列的数据类型也要一致。而MySQL不用

limit分页查询

limit作用是将查询结果集的一部分取出来。通常使用在分页查询当中。

完整用法:limit startIndex, length
        startIndex是起始下标,length是长度。
        起始下标从0开始。

startIndex可以省略,默认从0开始

注意:mysql当中limit在order by之后执行!!!!!!

分页公式

limit (pageNo-1)*pageSize , pageSize

pageNo表示页数。pageSize表示每页记录的条数

distinct关键字

作用是把查询结构去除重复记录。distinct只能出现在所有字段名的最前方

as关键字

作用是给前一个字段名取别名,可以省略,使用空格效果一样

查询顺序

  • 关键字顺序不能变:
    select 
            ...
        from
            ...
        where
            ...
        group by
            ...
        having
            ...
        order by
            ...
        limit
            ...
            ...
  • 以上语句的执行顺序必须掌握:
      1.from
            2.where
            3.group by
            4.having
            5.select
            6.order by
            7.limit..
  • 查询的字段名可以使用数学表达式
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

HHYZBC

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值