MySQL查询语句

SELECT:

  重要组件:Query Cache

  查询执行路径中的组件: 查询缓存、解析器、预处理器、优化器、查询执行引擎、存储引擎

  SELECT语句的执行流程:

    FROM Clause --> WHERE Clause -->  GROUP BY --> HAVING Clause --> ORDER BY --> SELECT -->LIMIT

  单表查询:

    SELECT

    [ALL | DISTINCT | DISTINCTROW ]
    [HIGH_PRIORITY]
    [STRAIGHT_JOIN]
    [SQL_SMALL_RESULT] [SQL_BIG_RESULT] [SQL_BUFFER_RESULT]
    [SQL_CACHE | SQL_NO_CACHE] [SQL_CALC_FOUND_ROWS]
    select_expr [, select_expr ...]
    [FROM table_references
    [PARTITION partition_list]
    [WHERE where_condition]
    [GROUP BY {col_name | expr | position}
    [ASC | DESC], ... [WITH ROLLUP]]
    [HAVING where_condition]
    [ORDER BY {col_name | expr | position}
    [ASC | DESC], ...]
    [LIMIT {[offset,] row_count | row_count OFFSET offset}]

    

    mysql>SHOW GLOBAL VARIABLE LIKE 'query%';

    其中DISTINCT:数据去重

    SQL_CACHE:显示指定存储查询结果于缓存之中

    SQL_NO_CACHE:显示查询结果不予缓存

    query_cache_type的值为ON时,查询缓存功能打开

      SELECT的结果符合缓存条件即会缓存,否则,不予缓存

      显示指定SQL_NO_CACHE,不予缓存

    query_cache_type的值为‘’DEMAND'时,查询缓存功能按需进行;

      显示指定SQL_CACHE的SELECT语句才会缓存;其他均不予缓存

怎么查询缓存命中率:查询命中次数/总查询数

  

  mysql>SHOW GLOBAL STATUS LOKE 'Qcache%';

  mysql> SHOW GLOBAL STATUS LIKE 'Com_se%'

  字段显示可以使用别名:

    SELECT name AS stuname FROM students;

  WHERE查询时指明过滤条件,实现选择的功能

    过滤条件:布尔型表达式;

    算术操作符:+ - * /  %

    比较操作符:=  !=  <>  <   >  >=  <=

    BETWEEN min_num AND max_num

    IN (element1,element2...)

    IS NULL

    IS NOT NULL

    LIKE:

      %: 任意长度的任意字符

      _:任意单个字符

    RLIKE:

    REGEXP:匹配字符串可用正则书写模式

  逻辑操作符:

    NOT   AND   OR   XOR

  GROUP:根据指定的条件把查询结果进行分组以用于做聚合运算

    avg(), max(), min(), count(), sum()

    HAVING:对分组聚合运算后的结果指定过滤条件

  ORDER BY: 根据指定的字段对查询结果进行排序

    升序:ASC

    降序:DESC

  LIMIT [[offset,]row_count]:对查询的结果进行数量限制

  对查询结果中的数据请求施加“锁

    FOR UPDATE: 写锁,排他锁

    LOCK IN SHARE MODE: 读锁,共享锁

多表查询

  

原文地址:https://www.cnblogs.com/new-journey/p/10457590.html