• MySQL进阶查询普及


    前言

    在对MySQL数据库的增、删、改、查操作有一定了解之后,就可以学习一些 SQL 语句的高级使用方法。
    SQL语句的熟练使用,在平时的运维工作中可以提供不小的帮助,尤其是在一些规模较小的公司,运维身兼数职,
    可能会有不少数据库的相关工作。这边就普及下SQL 语句的高级运用方法。

    一、常用查询介绍

    1.1 按关键字排序

    • 使用ORDER BY语句来实现排序
    • 排序可针对一个或多个字段
    • ASC:升序,默认排序方式
    • DESC:降序

    ORDER BY的语法结构

    1 SELECT column1, column2, ... FROM table_name ORDER BY column1, column2, ... ASC|DESC;

     ORDER BY 后面跟多个字段时,字段之间使用英文逗号隔开,优先级是按先后顺序而定。下面以A和B分别表示两个字段:

    • ORDER BY A,B desc          指A用升序,B用降序;
    • ORDER BY A asc,B desc    指A用升序,B用降序;
    • ORDER BY A desc,B desc  指A用降序,B用降序;

    1.2 对结果进行分组

    • 使用 GROUP BY 语句来实现分组
    • GROUP BY通常都是结合聚合函数一起使用的
    • 常用的聚合函数包括:计数(COUNT)、求和(SUM)、求平均数(AVG)、最大值(MAX)、最小值(MIN)

    GROUP BY的语法结构

    1 SELECT column_name, aggregate_function(column_name)FROM table_name WHERE column_name operator valueGROUP BY column_name;

    1.3 限制结果条目

    • 在使用 MySQL SELECT 语句进行查询时,结果集返回的是所有匹配的记录。有时候仅需要返回第
      一行或者前几行,这时候就需要用到 LIMIT 子句。

    1 语法
    2 SELECT column1, column2, ... FROM table_name LIMIT [offset,] number

    (注意)

    • LIMIT 的第一个参数是位置偏移量(可选参数),是设置 MySQL 从哪一行开始显示。
    • 如果不设定第一个参数,将会从表中的第一条记录开始显示。
    • 第一条记录的位置偏移量是 0,第二条是 1,以此类推。第二个参数是设置返回记录行的最大数目。

    1.4 设置别名

    • 当表的名字比较长或者表内某些字段比较长时,为了书写方便可以给字段列或表设置别名
    • 使用的时候直接使用别名,简洁明了,增强可读性

    列的别名语法结构:

    1 SELECT column_name AS alias_name FROM table_name;

    表的别名语法结构:

    1 SELECT column_name(s) FROM table_name AS alias_name;

    (注意)

    • 在为表设置别名时,要保证别名不能与数据库中的其他表的名称冲突。
    • 列的别名是在结果中有显示的,而表的别名在结果中没有显示,只在执行查询时使用。

    1.5 通配符

    • 通配符主要用于替换字符串中的部分字符,通过部分字符的匹配将相关结果查询出来。
    • 通常通配符都是跟 LIKE 一起使用的,并协同 WHERE 子句共同来完成查询任务。

    • 常用的通配符有两个
      • %:百分号表示零个、一个或多个字符
      • _:下划线表示单个字符

    1 举例
    2 mysql> select id,name,level from player where name like 's%';        ##name 字段以 s 开头的记录
    3 mysql> select id,name,level from player where name like '%s';        ##name 字段以 s 结尾的记录
    4 mysql> select id,name,level from player where name like '%es%';    ###name 字段中间含 es 的记录
    5 mysql> select id,name,level from player where name like '_uess';    ###替换开头的一个字符

    1.6 子查询

    • 子查询也被称作内查询或者嵌套查询
    • 子查询语句是先于主查询语句被执行的
    • 子查询结果作为外层的条件返回给主查询进行下一步的查询过滤
    • 在嵌套的时候,子查询内部还可以再次嵌套新的子查询,也就是说可以多层嵌套
    1 语法
    2 select 字段名列表 from 表名 where 字段名 运算符
    3 (select 字段名 from 表名 where 条件)

    注意:外层的where的条件必须和内层的select查询的字段名一样,个数类型也一样

    道阻且长,行则将至!加油! --不是冷漠
  • 相关阅读:
    [BZOJ2431] [HAOI2009]逆序对数列
    [Luogu2323] [HNOI2006]公路修建问题
    [Luogu2455] [SDOI2006]线性方程组
    [BZOJ3550] [Sdoi2014]数数
    [Noip2017] 列队
    [Luogu2824] [HEOI2016/TJOI2016]排序
    [BZOJ1060] [ZJOI2007]时态同步
    P1036 选数 题解
    快速幂取模算法详解
    同余定理及其应用
  • 原文地址:https://www.cnblogs.com/bushilengmo/p/13815035.html
Copyright © 2020-2023  润新知