SQL语句进阶学习三(组合查询和全文本搜索)

本文深入探讨SQL组合查询的运用,包括union关键字的使用与去重功能,以及如何对组合查询结果进行排序。同时,文章详细讲解了MySQL全文本搜索的功能,涵盖了全文本搜索的启动、使用方法、查询扩展、布尔文本搜索及其注意事项。

组合查询

1)组合查询:执行多个查询并将结果作为单个查询结果集返回。
2)union的使用

要求:查询出价格小于等于5的商品而且还想要包括供应商1001和1002生产的商品(不考虑价格)

3)使用两次单个查询

先查询出价格小于等于5的商品信息
在这里插入图片描述
再查询出供应商1001和1002生产的商品信息
在这里插入图片描述

4)使用组合查询

在这里插入图片描述

5)union关键字的去重功能

使用union关键字后,查询结果会将重复出现的结果去掉,这是union的默认行为。若要改变,则需要使用union all连接两个select语句。

6)对组合查询结果排序

在这里插入图片描述
分析:union语句中,只能使用一次order by语句。本条语句中,order by似乎是第二条select语句的组成部分,但是它却对整个组合查询的结果都进行排序操作。

全文本搜索

1.MySQL的两个引擎:InnoDB和MyISAM。其中仅MyISAM支持全文本搜索。
2.启动全文本搜素:一般在创建一个表时启用全文本搜索。

在这里插入图片描述
FULLTEXT对指定列进行索引,这里只对单列进行索引,也可以指定多个列进行索引。

3.使用全文本搜索

在这里插入图片描述
1.使用match()函数对数据表中的列进行搜索,然后使用Against()函数指定索引文本。如:指定rabbit作为索引文本。
2.match()函数中的列必须与创建表中fulltext()中的列保持一致。若指定多个列时,必须列出他们且顺序保持一致。
3.全文本搜索不区分大小写,使用binary()函数可以区分大小写。
在这里插入图片描述

4.使用查询扩展

在这里插入图片描述
在这里插入图片描述
结果返回了七行。第一行包含词anvils。但第二行由于包含第一行中的词(customer和recommend)因此也被返回。
查询扩展就是增加了返回的行数。找出来与你输入的关键词有关的行数。

5.使用布尔文本搜索

在这里插入图片描述
1.可以匹配到单词heavy的行,但不匹配以rope开头的行(包含ropes)。
2.布尔查询的性能很低,所花费的时间很长。
在这里插入图片描述

6.注意事项

1.索引全文本时,3个及3个以下的短词会被忽略。
2.MySQL自带一个非用词列表,这些词在索引全文本时,会被忽略。如果有需要可以覆盖这个列表。
3.许多词出现的频率很高,搜索它们没有用处(返回太多的结果)。
因此,MySQL规定了一条50%规则,如果一个词出现在50%以上
的行中,则将它作为一个非用词忽略。50%规则不用于IN BOOLEAN
MODE。
4.忽略词中的单引号。例如,don’t索引为dont。
5.不具有词分隔符(包括日语和汉语)的语言不能恰当地返回全文
本搜索结果。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值