MySQL SQL

概述

参考:

SQL 语言被细分为几个语言元素,包括:

  • 子句,它们是语句和查询的组成部分。(在某些情况下,这些是可选的。)
  • 表达式,可以生成量值或由数据的组成的
  • Predicates,指定可以评估为 SQL三值逻辑 (3VL)(真/假/未知)或布尔 真值的条件,用于限制语句和查询的效果,或更改程序流程。
  • 查询,根据特定条件检索数据。这是 SQL 的一个重要元素。
  • 语句,可能对模式和数据产生持久影响,或者可能控制事务、程序流、连接、会话或诊断。
    • SQL 语句还包括分号(";") 语句终止符。虽然不是每个平台都需要它,但它被定义为 SQL 语法的标准部分。
  • SQL 语句和查询中通常会忽略无关紧要的空格,从而更容易格式化 SQL 代码以提高可读性。

在 MySQL 中按照功能将各种语句进行了分类:

关键字

参考:

函数与运算符

参考:

内置函数

参考:

函数名功能启用版本弃用版本
REPLACE()替换掉指定字符串
REGEXP_REPLACE()替换掉使用正则表达式匹配到的字符串8.0.4
SUBSTRING_INDEX()从指定出现次数的分隔符之前的字符串中返回子字符串

聚合函数

参考:

Aggregate Function(聚合函数) 通常与 group by 关键字一起使用,用于将值进行分组。

NameDescriptionIntroduced
AVG()Return the average value of the argument
BIT_AND()Return bitwise AND
BIT_OR()Return bitwise OR
BIT_XOR()Return bitwise XOR
COUNT()Return a count of the number of rows returned
COUNT(DISTINCT)Return the count of a number of different values
GROUP_CONCAT()Return a concatenated string
JSON_ARRAYAGG()Return result set as a single JSON array5.7.22
JSON_OBJECTAGG()Return result set as a single JSON object5.7.22
MAX()Return the maximum value
MIN()Return the minimum value
STD()Return the population standard deviation
STDDEV()Return the population standard deviation
STDDEV_POP()Return the population standard deviation
STDDEV_SAMP()Return the sample standard deviation
SUM()Return the sum
VAR_POP()Return the population standard variance
VAR_SAMP()Return the sample variance
VARIANCE()Return the population standard variance

GROUP BY

参考:

group by 可以脱离聚合函数单独使用,此时不在 group by 分组的列将会取其中第一行的值。 如果想要对数据进行分组后取到最新的值,还需要使用 row_number() 函数(8.0+版本),或者某些分组编号功能(此时编号为 1 的就是每组最新的值)。

HAVING

having 与 group by 之间的用法,暂时找不到一个可以描述清楚的文章,但是事实是,having 可以单独使用,并在外层再套一个 select 后执行 group by 以实现分组后取最新值的效果。

select
    *
from
    (
        SELECT

        FROM
            t_diversion diversion
        WHERE
            diversion.is_deleted = 0
        HAVING
            1
        ORDER BY
            diversion.updated_at desc
    ) t
GROUP BY
    t.datalakeName,
    t.privateNetName

此时可以取到 diversion 表中,按照 datalakeName 和 privateNetName 分组后,每组中最新的一条数据。

运算符

参考:

运算符描述Introduced弃用版本
&Bitwise AND
>Greater than operator
»Right shift
>=Greater than or equal operator
<Less than operator
<>,!=Not equal operator
«Left shift
<=Less than or equal operator
<=>NULL-safe equal to operator
%,MODModulo operator
*Multiplication operator
+Addition operator
-Minus operator
-Change the sign of the argument
->Return value from JSON column after evaluating path; equivalent to JSON_EXTRACT().
Return value from JSON column after evaluating path and unquoting the result; equivalent to JSON_UNQUOTE(JSON_EXTRACT()).
/Division operator
:=变量赋值
=变量赋值(作为 SET 语句的一部分,或作为 UPDATE 语句中 SET 子句的一部分)
=Equal operator
^Bitwise XOR
AND,&&Logical AND
BETWEEN … AND …Whether a value is within a range of values
BINARYCast a string to a binary string8.0.27
CASECase operator
DIVInteger division
IN()Whether a value is within a set of values
ISTest a value against a boolean
IS NOTTest a value against a boolean
IS NOT NULLNOT NULL value test
IS NULLNULL value test
LIKESimple pattern matching
MEMBER OF()Returns true (1) if first operand matches any element of JSON array passed as second operand, otherwise returns false (0)8.0.17
NOT,!Negates value
NOT BETWEEN … AND …Whether a value is not within a range of values
NOT IN()Whether a value is not within a set of values
NOT LIKENegation of simple pattern matching
NOT REGEXPNegation of REGEXP
[OR,](https://dev.mysql.com/doc/refman/8.0/en/logical-operators.html#operator_or)Logical OR
REGEXPWhether string matches regular expression
RLIKEWhether string matches regular expression
SOUNDS LIKECompare sounds
XORLogical XOR
[](https://dev.mysql.com/doc/refman/8.0/en/bit-functions.html#operator_bitwise-or)Bitwise OR
~Bitwise inversion

数据库管理语句

show - 显示信息

显示有关数据库、表、列的信息,或有关服务器状态的信息。

EXAMPLE

  • 查看创建 test 数据库的 sql 语句
    • show create database test;
  • 查看创建 test 表的 sql 语句
    • show create table test;
  • 显示数据库的状态信息
    • show status;

实用程序语句

use - 使用指定数据库作为后续 SQL 执行的目标库

特殊符号

@

声明变量、调用变量


最后修改 December 29, 2024: SQL (4afdc4ea)