目录

MySQL查询

  1. 概述
  2. 基本查询
  3. 去重
  4. 行数
  5. 排序
  6. 过滤
    1. 过滤
    2. 条件组合
    3. 通配符
    4. 正则表达式

概述

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中张开头且第二个字符不为三或四的所有数据

转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至[email protected]

文章标题:MySQL查询

字数:1.3k

本文作者:LCX

发布时间:2024-09-14, 11:51:00

最后更新:2024-09-24, 08:51:51

原始链接:https://987654321.org/posts/mysql_query/

版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。