Skip to content
On this page

关键词

SELECT 检索

检索单列

SELECT column FROM table

  • 返回数据顺序不确定:可能还是插入的数据,也可能不是

SQL语句书写规范

  1. 多条语句用;分隔
  2. SQL不区分大小写,习惯关键词用大写,便于区分。
  3. SQL空格会被忽略,可以将语句分成多行书写,便于阅读和调试。

检索多列

SELECT column1, column2 FROM table,用,分隔。

检索所有列

SELECT * FROM table

除非需要所有列的数据,检索不需要的列会降低检索和应用程序的性能。

完全限定的表名/列名

SELECT table.column FROM database.table

DISTINCT 区分/去重

检索不同的行

SELECT DISTINCT column FROM table,只返回不同数值的行。

DISTINCT 应用于所有列而不仅前置它的列,除非多列的值都相同,否则所有行都会被检索。

LIMIT 限制

限制结果

SELECT column FROM table LIMIT 5,只返回最多前5行数据。 SELECT column FROM table LIMIT 5,5,只返回从行5开始的最多5行数据。

LIMIT 从 行0开始,而不是行1。

MySQL 5的写法:LIMIT 4 OFFSET 3,从行3开始的4行数据。

ORDER BY 排序

SELECT column FROM table ORDER BY column,以字母顺序排序,可以是任何列。

SQL语句由子句构成,一个子句通常包括关键字和提供的数据组成。有些子句是必需的,有些是可选的。

按多个列排序

SELECT column FROM table ORDER BY column1, column2,多列用,分隔,当列column1值都相等时,按照列column2排序。

指定排序方向

默认升序排序ASC,指明DESC,指定降序排序。

SELECT column FROM table ORDER column DESC

DESC只应用于其前面的列,按多列排序时,实现降序排序需要每一列都指明。

对于A和a,在MySQL中默认是相同的。数据库管理员可以对这种行为进行更改。

找到最大/最小值

SELECT column FROM table ORDER BY column LIMIT 1

子句的顺序:应该保证ORDER BYFROM之后,LIMITORDER BY之后。

WHERE 过滤数据

SELECT column FROM table WHERE column = value

当value为(字符)串类型的时候,需要用''单引号包裹。

操作符

  • =:等于
  • <>!=:不等于
  • <:小于
  • <=:小于等于
  • >:大于
  • >=:大于等于
  • BETWEEN:在指定两个值的范围之间
  • IS NULL:值为空
  • IN (value1, value2):满足括号中的任何一个值
  • LIKE:通配符匹配搜索

匹配的时候也不区分大小写。

SELECT column FROM table WHERE column BETWEEN num1 AND num2

SELECT column FROM table WHERE column IS NULL

AND 且

SELECT column FROM table WHERE column1 = value1 AND column2 < value2,可用于同时匹配多个条件。

OR 或

SELECT column FROM table WHERE column1 = value1 AND column2 < value2,可用于匹配任何一个满足的条件。

计算次序:可以使用()来规定规则计算的次序。

IN (value1, value2, ...)

满足括号中的任何一个值。

IN的好处:

  1. 语法更清晰
  2. 计算次序更好管理
  3. OR执行更快
  4. 可以包含其他SELECT语句

NOT

取反,否定其后跟着的任何条件。

MySQL 中的NOT,支持对INBETWEENEXISTS子句取反。

LIKE

通配符:用来匹配值的一部分的特殊字符。

搜索模式:由字面量、通配符或两者构成的搜索条件。

  • %:任何字符出现任意次数

MySQL中搜索是区分大小写的

对于尾空格的处理方式:

  1. 搜索模式最后加上%
  2. 更好的方式是,使用函数将尾部空格去掉
  • _:单个任意字符

如何使用通配符

  • 不要过度使用,当其他操作符能达到目的,不使用通配符
  • 不要把通配符放在搜索模式的最开始处,这样子执行起来是最慢的
  • 注意通配符放置的位置,放置不对可能不会返回想要的数据。

REGEXP 正则

SELECT column FROM table REGEXP '1000'

  • ^:开头或者反义,^123:以123开头的内容,[^123]不是1|2|3的内容

  • $:结尾

  • [[:<:]]:词的开始

  • [[:>:]]:词的结尾

  • |:表示或,通常与[]配合使用

  • .:任意字符

  • \\:用于转义,在MySQL中需要两个\,自己解释一个,正则库解释一个

  • []:表示集合,匹配范围,[a-zA-Z0-9]

  • 重复元字符

    • {n}:指定数目的匹配
    • {n,m}:匹配数目的范围
    • {n,}:不少于指定数目的匹配
    • *
    • +
    • ?
  • 空白元字符

    • \\f:换页
    • \\n:换行
    • \\r:回车
    • \\t:制表
    • \\v:纵向制表
  • 字符类

REGEXPLIKE的区别

LIKE匹配整个列,REGEXP在列值内进行匹配

MySQL中的正则表达式匹配(自版本 3.23.4后)不区分大小写(即,大写和小写都匹配)。为区分大小写,可使用BINARY关键字,如WHERE prod_name REGEXP BINARY 'JetPack .000'

MIT Licensed | Copyright © 2021 - 2022