where 查询指定记录
select 字段1,字段2...字段n
from 表名
whree 查询条件
where 条件判断符
操作符 | 说明 |
---|---|
<>,!= | 不等于 |
< | 小于 |
<= | 小于等于 |
= | 大于 |
>= | 大于等于 |
between | 位于两值之间 |
in 关键字的查询
in 操作符号用来查询满足指定范围内的条件的记录。
使用 in 操作符号,将所有查询条件用括号括起来,查询条件之间使用逗号分隔开,只要满足条件访问内的一个值即为匹配项。
使用关键字NOT in 来检索不在条件范围内的记录。
between and 的范围查询
between and 用来查询某个范围内的值,该操作符需要两个参数,即范围的开始值和结束值,如果字段值满足指定的范围查询条件,则这些记录被返回。
BETWEEN AND操作符前可以加关键字NOT,表示指定范围之外的值,如果字段值不满足指定的范围内的值,则这些记录被返回。
like 的字符匹配查询
用来查询所有包含字符的值,和LIKE一起使用的通配符有‘%’和‘_’。
- 百分号通配符‘%’,匹配任意长度的字符,甚至包括零字符。
- 下划线通配符‘_’,一次只能匹配任意一个字符。
is null 查询空值
查询某字段内容为空记录。
与IS NULL相反的是NOT NULL,该关键字查找字段不为空的记录。
and 的多条件查询
使用 and 操作符限定只有满足所有查询条件的记录才会被返回。可以使用AND连接两个甚至多个查询条件,多个条件表达式之间用 and 分开。
or 的多条件查询
与AND相反,在WHERE声明中使用OR操作符,表示只需要满足其中一个条件的记录即可返回。OR也可以连接两个甚至多个查询条件,多个条件表达式之间用OR分开。
distinct 查询结果不重复
distinct 关键字指示MySQL消除重复的记录值。
order by 查询结果排序
order by 子句对查询的结果进行排序。
desc 指定排序方向
默认情况下,查询数据按字母升序进行排序(A~Z),但数据的排序并不仅限于此,还可以使用ORDER BY对查询结果进行降序排序(Z~A)。这可以通过关键字DESC实现。
group by 分组查询
group by 关键字对数据进行分组。
- group by 字段 having <条件表达式>” 指定满足表达式限定条件的结果将被显示。
- group by 关键字通常和集合函数一起使用,比如MAX()、MIN()、COUNT()、SUM()、AVG()。
- with rollup 在所有查询出的分组记录之后增加一条记录,该记录计算查询出的所有记录的总和,即统计记录数量。
- group by 可以对多个字段进行分组,GROUP BY关键字后面跟需要分组的字段,MySQL根据多字段的值来进行层次分组,分组层次从左到右,即先按第1个字段分组,然后在第1个字段值相同的记录中再根据第2个字段的值进行分组,以此类推。
- 和 order by 一起使用可以完成对分组的排序。
limit 限制查询结果的数量
SELECT返回所有匹配的行,有可能是表中所有的行,若仅仅需要返回第一行或者前几行,可使用LIMIT关键字。
集合函数查询
有时候并不需要返回实际表中的数据,而只是对数据进行总结。MySQL提供一些查询功能,可以对获取的数据进行分析和报告。这些函数的功能有:计算数据表中记录行数的总数、计算某个字段列下数据的总和,以及计算表中某个字段下的最大值、最小值或者平均值。
函数 | 说明 |
---|---|
avg() | 返回某列的平均值 |
count() | 返回某列的行数 |
max() | 返回某列的最大值 |
min() | 返回某列的最小值 |
sum() | 返回某列值的合 |
连接查询
inner join 内连接查询
使用比较运算符进行表间某(些)列数据的比较操作,并列出这些表中与连接条件相匹配的数据行,组合成新的记录,也就是说,在内连接查询中,只有满足条件的记录才能出现在结果关系中。
left join(左连接)和right join(右连接)外连接查询
外连接查询将查询多个表中相关联的行,内连接时,返回查询结果集合中仅是符合查询条件和连接条件的行。有时候需要包含没有关联的行中数据,即返回查询结果集合中不仅包含符合连接条件的行,还包括左表(左外连接或左连接)、右表(右外连接或右连接)或两个边接表(全外连接)中的所有数据行。
复合条件连接查询
复合条件连接查询是在连接查询的过程中,通过添加过滤条件限制查询的结果,使查询的结果更加准确。
any(some)、all、in、exist 子查询
子查询指一个查询语句嵌套在另一个查询语句内部的查询。在SELECT子句中先计算子查询,子查询结果作为外层另一个查询的过滤条件,查询可以基于一个表或者多个表。子查询中常用的操作符有ANY(SOME)、ALL、IN、EXISTS。子查询可以添加到SELECT、UPDATE和DELETE语句中,而且可以进行多层嵌套。子查询中也可以使用比较运算符,如“<”“<=”“>”“>=”和“!=”等。
any、some 关键字的子查询
表示满足其中任一条件,它们允许创建一个表达式对子查询的返回值列表进行比较,只要满足内层子查询中的任何一个比较条件,就返回一个结果作为外层查询的条件。
all 关键字的子查询
ALL关键字与ANY和SOME不同,使用ALL时需要同时满足所有内层查询的条件。
exist 关键字的子查询
EXISTS关键字后面的参数是一个任意的子查询,系统对子查询进行运算以判断它是否返回行,如果至少返回一行,那么EXISTS的结果为true,此时外层查询语句将进行查询;如果子查询没有返回任何行,那么EXISTS返回的结果是false,此时外层语句将不进行查询。
in 关键字的子查询
IN 关键字进行子查询时,内层查询语句仅仅返回一个数据列,这个数据列里的值将提供给外层查询语句进行比较操作。
比较运算符的子查询
子查询时还可以使用其他的比较运算符,如“<”“<=”“=”“>=”和“!=”等。
union 合并查询结果
利用UNION关键字,可以给出多条SELECT语句,并将它们的结果组合成单个结果集。合并时,两个表对应的列数和数据类型必须相同。各个SELECT语句之间使用UNION或UNION ALL关键字分隔。UNION不使用关键字ALL,执行的时候删除重复的记录,所有返回的行都是唯一的;使用关键字ALL的作用是不删除重复行也不对结果进行自动排序。
regexp 正则表达式查询
则表达式通常被用来检索或替换那些符合某个模式的文本内容,根据指定的匹配模式匹配文本中符合要求的特殊字符串。regexp 关键字指定正则表达式的字符匹配模式
文章评论