概述
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]。