<返回

MySQL查询

提醒:本文发布于 天前,内容可能因【技术时效性】过期 或【被重新修改】,请谨慎参考。

概述

MySQL查询是数据库操作中最常用的操作之一,通过查询可以从数据库中按照一些条件来检索数据,本文介绍了MySQL查询的基本语法和常用操作。

基本查询

SELECT * FROM user; -- 查询所有数据
SELECT name, age FROM user; -- 查询name和age列
SELECT name AS userName, age FROM user; -- 查询name和age列,并将name列别名为userName
SELECT user.name, user.age FROM test.user; -- 查询user表的name和age列,限定表名和库名,等同于SELECT name, age FROM user;

去重

SELECT DISTINCT name FROM user; -- 查询user表中name列并根据name列去重
SELECT DISTINCT name,age FROM user; -- 查询user表中name和age列并根据name和age列去重

行数

SELECT * FROM user LIMIT 1; -- 查询user表的第1行数据
SELECT * FROM user LIMIT 5; -- 查询user表的前5行数据
SELECT * FROM user LIMIT 5,5; -- 查询user表的第6行到第10行数据
SELECT * FROM user LIMIT 5 OFFSET 5; -- 查询user表的第6行到第10行数据 等同于SELECT * FROM user LIMIT 5,5

排序

SELECT * FROM user ORDER BY age DESC; -- 查询user表的所有数据并根据age列降序排序,从大到小
SELECT * FROM user ORDER BY age ASC; -- 查询user表的所有数据并根据age列升序排序,从小到大
SELECT * FROM user ORDER BY age DESC, name ASC; -- 查询user表的所有数据并根据age列降序排序,age列相同时根据name列升序排序

过滤

过滤

SELECT * FROM user WHERE age = 20; -- 查询age等于20的所有数据
SELECT * FROM user WHERE age > 20; -- 查询age大于20的所有数据
SELECT * FROM user WHERE age >= 20; -- 查询age大于等于20的所有数据
SELECT * FROM user WHERE age < 20; -- 查询age小于20的所有数据
SELECT * FROM user WHERE age <= 20; -- 查询age小于等于20的所有数据
SELECT * FROM user WHERE age <> 20; -- 查询age不等于20的所有数据
SELECT * FROM user WHERE age != 20; -- 查询age不等于20的所有数据
SELECT * FROM user WHERE age BETWEEN 20 AND 30; -- 查询age在20到30之间的所有数据
SELECT * FROM user WHERE age IS NULL; -- 查询age为空的所有数据
SELECT * FROM user WHERE age IS NOT NULL; -- 查询age不为空的所有数据
SELECT * FROM user WHERE name IN ('张三', '李四'); -- 查询name为张三或李四的所有数据
SELECT * FROM user WHERE name NOT IN ('张三', '李四'); -- 查询name不为张三或李四的所有数据 NOT是取反

条件组合

SELECT * FROM user WHERE age = 20 AND name = '张三'; -- 查询age等于20且name为张三的所有数据
SELECT * FROM user WHERE age = 20 OR name = '张三'; -- 查询age等于20或name为张三的所有数据
SELECT * FROM user WHERE age = 20 AND name = '张三' OR name = '李四'; -- 查询age等于20且name为张三或name为李四的所有数据
SELECT * FROM user WHERE (age = 20 AND name = '张三') OR name = '李四'; -- 查询age等于20且name为张三或name为李四的所有数据
SELECT * FROM user WHERE age = 20 AND (name = '张三' OR name = '李四'); -- 查询age等于20且name为张三或name为李四的所有数据
SELECT * FROM user WHERE age = 20 AND name IN ('张三', '李四'); -- 查询age等于20且name为张三或李四的所有数据
SELECT * FROM user WHERE name IN ('张三', '李四') AND age IS NOT NULL ; -- 查询name为张三或李四且age不为空的所有数据

通配符

%表示任意字符,_表示一个字符,[]表示其中一个,[^]表示不包含所有

SELECT * FROM user WHERE name LIKE '张%'; -- 查询name以张开头的所有数据
SELECT * FROM user WHERE name LIKE '%三'; -- 查询name以三结尾的所有数据
SELECT * FROM user WHERE name LIKE '%张%'; -- 查询name中包含张的所有数据
SELECT * FROM user WHERE name LIKE '_张%'; -- 查询name第二个字符为张的所有数据
SELECT * FROM user WHERE name LIKE '张__'; -- 查询name以张开头且长度为3的所有数据
SELECT * FROM user WHERE name LIKE '张[三四]'; -- 查询name第一个字符为张且第二个字符为三或四的所有数据
SELECT * FROM user WHERE name LIKE '张[^三四]'; -- 查询name第一个字符为张且第二个字符不为三或四的所有数据

正则表达式

^表示开头,$表示结尾,|表示或,.*表示任意字符,.{n}表示任意字符n次,[]表示其中一个,[^]表示不包含所有

SELECT * FROM user WHERE name REGEXP '张'; -- 查询name中包含张的所有数据
SELECT * FROM user WHERE name REGEXP '^张'; -- 查询name以张开头的所有数据
SELECT * FROM user WHERE name REGEXP '三$'; -- 查询name以三结尾的所有数据
SELECT * FROM user WHERE name REGEXP '张|李'; -- 查询name中包含张或李的所有数据
SELECT * FROM user WHERE name REGEXP '张$|李$'; -- 查询name以张或李结尾的所有数据
SELECT * FROM user WHERE name REGEXP '张.*三'; -- 查询name中张开头且三结尾的所有数据
SELECT * FROM user WHERE name REGEXP '张.{2}三'; -- 查询name中张开头且三结尾且长度为4的所有数据
SELECT * FROM user WHERE name REGEXP '张[三四]'; -- 查询name中张开头且第二个字符为三或四的所有数据
SELECT * FROM user WHERE name REGEXP '张[^三四]'; -- 查询name中张开头且第二个字符不为三或四的所有数据
TOC
  1. 1. 概述
  2. 2. 基本查询
  3. 3. 去重
  4. 4. 行数
  5. 5. 排序
  6. 6. 过滤
    1. 6.1. 过滤
    2. 6.2. 条件组合
    3. 6.3. 通配符
    4. 6.4. 正则表达式
本文章受版权法保护,如需转载或引用,请注明出处。