MySQL查询命令及使用(DQL)

运算符

算术运算符
运算符作用
+加法运算
-减法运算
*乘法运算
/除法运算,返回商
%求余运算,返回余数
比较运算符
运算符作用
=等于
<=>安全的等于
<>(!=)不等于
<=小于等于
>=大于等于
>大于
<小于
IS NULL判断一个值是否为NULL
IS NOT NULL判断一个值是否不为NULL
LEAST当有两个或多个参数时,返回最小值
GREATEST当有两个或多个参数时,返回最大值
BETWEEN AND判断一个值是否落在两个值之间
ISNULL与IS NULL作用相同
IN判断一个值是IN列表中的任意一个值
NOT IN判断一个值不是IN列表中的任意一个值
LIKE通配符匹配
REGEXP正则表达式匹配
逻辑运算符
运算符作用
NOT 或者 !逻辑非
AND 或者 &&逻辑与
OR 或者 ||逻辑或
XOR逻辑异或
位运算符
运算符作用
|位或
&位与
^位异或
<<位左移
>>位右移
~位取反,反转所有比特
运算符的优先级
优先级运算符
最低=(赋值运算)、:=
||、OR
XOR
&&、AND
NOT
BETWEEN、CASE、WHEN、THEN、ELSE
=(比较运算)、<=>、>=、>、<=、<>、!=、IS、LIKE、REGEXP、IN
|
&
<<、>>
-、+
*、/(DIV)、%(MOD)
^
-(负号)、~(位反转)
最高!

数据查询

MySQL从数据表中查询数据的基本语句位SELECT语句。基本格式为:

SELECT
    字段名1,字段名2,...,字段名n
FROM 表名...
WHERE 查询条件
GROUP BY 分组条件
HAVING 组条件
ORDER BY 字段名
LIMIT 数据条数
单表查询
查询所有字段
SELECT * FROM 表名;
查询指定字段
SELECT 字段名1,字段名2,...,字段名n FROM 表名;
条件查询
SELECT 字段名1,字段名2,...,字段名n 
FROM 表名
WHERE 查询条件;
WHERE条件判断符
操作符说明
=相等
<>、!=不相等
<小于
<=小于等于
>大于
>=大于等于
BETWEEN位于两值之间
带IN关键字的查询

字段i的值在{值1,值2,…,值n}范围内

SELECT 字段名1,字段名2,...,字段名n
FROM 表名
WHERE 字段名i IN (值1,值2,...,值n)

同样,字段不在该范围内

SELECT 字段名1,字段名2,...,字段名n
FROM 表名
WHERE 字段名i NOT IN (值1,值2,...,值n)
带BETWEEN AND的范围查询

在某个范围内

SELECT 字段名1,字段名2,...,字段名n
FROM 表名
WHERE 字段名i BETWEEN 值1 AND 值2;

不在某个范围内

SELECT 字段名1,字段名2,...,字段名n
FROM 表名
WHERE 字段名i NOT BETWEEN 值1 AND 值2;
带LIKE的字符匹配查询

百分号通配符"%"用来匹配任意长度的字符

SELECT 字段名1,字段名2,...,字段名n
FROM 表名
WHERE 字段名i LIKE '%匹配值%';

%放在匹配值前后皆可,分别表示前面模糊匹配及后面模糊匹配

下划线通配符"_"一次只能匹配任意一个字符

SELECT 字段名1,字段名2,...,字段名n
FROM 表名
WHERE 字段名i LIKE '_匹配值_';

_放在需要匹配单个字符的位置

查询空值

查询为空记录

SELECT 字段名1,字段名2,...,字段名n
FROM 表名
WHERE 字段名i IS NULL;

查询不为空记录

SELECT 字段名1,字段名2,...,字段名n
FROM 表名
WHERE 字段名i IS NOT NULL;
带AND的多条件查询

在WHERE子句中使用AND操作限定符,各条件在同时成立时返回记录

SELECT 字段名1,字段名2,...,字段名n
FROM 表名
WHERE 字段名i 条件1 AND 条件2 ... AND 条件n;
带OR的多条件查询

在WHERE子句中使用OR操作限定符,各条件有一条满足时返回记录

SELECT 字段名1,字段名2,...,字段名n
FROM 表名
WHERE 字段名i 条件1 OR 条件2 ... OR 条件n;
查询结果去重
SELECT DISTINCT 字段名 FROM 表名;
对查询结果排序

默认为升序

SELECT 字段名1,字段名2,...,字段名n
FROM 表名
ORDER BY 字段名i,字段名j,...,字段名z;

降序在需排序字段后加DESC

SELECT 字段名1,字段名2,...,字段名n
FROM 表名
ORDER BY 字段名i,字段名j,...,字段名z DESC;
分组查询
SELECT 字段名1,字段名2,...,字段名n
FROM 表名
GROUP BY 字段名i,字段名j,...
HAVING 组查询条件
使用LIMIT限制查询结果的数量
SELECT 字段名1,字段名2,...,字段名n
FROM 表名
LIMIT 位置偏移量,行数
聚合函数

聚合函数一般搭配分组查询进行,其输出结果往往类似于数据透视表

函数作用
AVG()返回某列的平均值
COUNT()返回某列行数
MAX()返回某列的最大值
MIN()返回某列的最小值
SUM()返回某列值的和
连接查询
INNER JOIN

使用比较运算符进行表间某些列的比较操作,并列出这些表中与连接条件相匹配的数据行,组合成新的记录

SELECT 表1.字段名i,...,表1.字段名j,表2.字段名k,...表2.字段名s,...
FROM 表1 INNER JOIN 表2
ON 表1.m=表2.n
LEFT JOIN

返回包括左表中的所有记录和右表中连接字段相等的记录

SELECT 表1.字段名i,...,表1.字段名j,表2.字段名k,...表2.字段名s,...
FROM 表1 LEFT JOIN 表2
ON 表1.m=表2.n
RIGHT JOIN

返回包括右表中的所有记录和左表中连接字段相等的记录

SELECT 表1.字段名i,...,表1.字段名j,表2.字段名k,...表2.字段名s,...
FROM 表1 RIGHT JOIN 表2
ON 表1.m=表2.n
子查询
带ANY、SOME关键字的子查询

ANY关键字接在一个比较操作符的后面,表示若与子查询返回的任何值比较为TRUE,则返回TRUE

SELECT 字段名i,...,字段名j
FROM 表1
WHERE 列名k > ANY(SELECT 字段名m FROM 表2)

返回表1中比表2中任何一个值大的值

带ALL关键字的子查询

ALL关键字接在一个比较操作符的后面,表示与子查询返回的所有值比较为TRUE,则返回TRUE

SELECT 字段名i,...,字段名j
FROM 表1
WHERE 列名k > ALL(SELECT 字段名m FROM 表2)

返回表1中比表2中所有值都大的值

带EXISTS关键字的子查询

EXISTS关键字后面的参数是一个任意子查询,系统对子查询进行运算以判断它是否返回行,如果至少返回一行,那么EXISTS的结果为TRUE,此时外层查询语句进行查询;如果查询没有返回任何行,那么EXISTS返回结果是FALSE,此时外层语句将不进行查询。

SELECT 字段名i,...,字段名j
FROM 表名x
WHERE EXISTS (SELECT 字段名m FROM 表名y WHERE 查询条件)
带IN关键字的子查询

IN关键字进行子查询时,内层查询语句仅返回一个数据列,这个数据列里的值将提供给外层查询语句进行比较操作

SELECT 字段名i,...,字段名j
FROM 表名x
WHERE IN (SELECT 字段名m FROM 表名y WHERE 查询条件)

相当于

SELECT 字段名i,...,字段名j
FROM 表名x
WHERE IN (符合查询条件的查询结果)
合并查询结果

利用UNION关键字可以给出多条SELECT语句的结果组合成单个结果集。UNION和UNION ALL最大的区别在于组合后UNION会删除重复数据

SELECT 字段名i,... FROM 表1
UNION ALL
SELECT 字段名j,... FROM 表2

或者

SELECT 字段名i,... FROM 表1
UNION
SELECT 字段名j,... FROM 表2
正则表达式查询

正则表达式通常被用来检索或替换那些符合某种模式的文本内容,根据指定的匹配模式匹配符合要求的字符串。

SELECT 字段名i,...
FROM 表名
WHERE 字段名k REGEXP '正则表达式';

正则表达式常用字符串匹配列表

选项说明例子匹配值示例
^匹配文本的开始字符'^b'匹配以字母b开头的字符串book、big、banana、bike
$匹配文本的结束字符'st$'匹配以st结尾的字符串test、resist、persist
.匹配任何单个字符'b.t'匹配b和t之间有一个字符bit、bat、but、bite
*匹配零个或多个在它前面的字符'f*n'匹配字符n前面有任意个字符ffn、fan、faan、fabcn
+匹配前面的字符1次或多次'ba+'匹配以b开头后面紧跟至少一个aba、bay、bare、battle
字符串匹配包含指定的字符串的文本'fa'fan、afa、faad
字符集合匹配字符集合中的任何一个字符'[xz]'匹配x或者zdizzy、zebra、x-ray、extra
[^]匹配不在括号中的任何字符'[^abc]'匹配任何不包含a、b或c的字符串desk、fox、f8ke
字符串{n,}匹配前面的字符串至少n次b{2}匹配2个或更多的bbbb、bbbb、bbbbbbb
字符串{n,m}匹配前面的字符串至少n次,至多m次。如果n为0,此参数为可选参数b{2,4}匹配最少2个,最多4个bbb、bbb、bbbb
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

盛者无名

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值