MySQL——查

子句总结

这里写图片描述

组合查询

组合查询是指利用UNION,将多条SELECT查询语句组合在一起,并将结果作为单个结果集返回。

它可以简化复杂的WHERE子句、多表查询工作,有以下要求或特性:

  1. 每个查询必须包含相同的列、表达式或聚集函数(各个列的列出次序可以不同)
  2. 返回结果为每个查询的WHERE子句过滤后的或集,并且和单条SELECT语句一样,去除了重复的行
  3. ORDER BY排序子句只能放在最后一条查询语句之后,它将对整个结果集排序
select vend_id, prod_id, prod_price
from products
where prod_price <= 10
union [all] //all表示包含重复的行
select vend_id, prod_id, prod_price
from products
where vend_id in (100, 200)
order by vend_id, prod_price;

全文本搜索

全文本搜索具有性能上更快、查询结果能明确控制、查询结果智能化等优点,它返回以文本匹配的良好程度排序的数据。

MyISAM引擎支持全文本搜索。

在建表时使用FULLTEXT(列名)索引单个列或多个列,之后MySQL将自动维护该索引。在增删改时,索引随之自动更新。

也可以在建表后指定索引,这种情况下所有已有数据必须立即索引。

select column1
from table_name
where match(column2) against('test');

传递给MATCH()的值必须与FULLTEXT定义中的相同。

如果指定了多个列,必须以相同的次序传递它们。

查询扩展

查询扩展对数据和索引进行两遍扫描来完成搜索。

返回结果不仅包含指定的词,还包含可能 “有用” 的词。

select column1
from table_name
where match(column2) against('test' with query expansion);

布尔文本搜索

即使没有FULLTEXT索引也可以使用布尔方式,但这样非常缓慢。

布尔方式允许查询语句中提供如下细节:

  1. 要匹配的词
  2. 要排斥的词
  3. 排列提示(词的等级值)
  4. 表达式分组
  5. 其他

布尔操作符

操作符 说明
+ 包含,词必须存在
- 排除,词必须不出现
> 包含,而且增加等级值
< 包含,而且减少等级值
() 把词组成子表达式
~ 取消一个词的排序值
* 词尾的通配符
"" 定义一个短语
//匹配test和down,增加前者的等级,降低后者的等级
select column1
from table_name
where match(column2) against('>test <down' in boolean mode);

猜你喜欢

转载自blog.csdn.net/recordGrowth/article/details/79433811