Mysql 组合查询、全文本搜索

组合查询

1.使用情况
	1.单个表中的多条查询
	2.单个查询从不同的表返回类似的结构数据
2.语法
	select id,price form products where price <= '5'
	union
	select id,price form products where id in (1,2);

3.union的使用可以和where语句进行转换,如果每个匹配行必须都列出来的话就不用
where语句 用union all
	select id,price form products where price <= '5' or id in(1,2);

4.使用规则
	1.组合至少两个select语句
	2.select语句中的列、表达式、聚集函数必须相同
	3.数据类型必须兼容
	5.默认union会消除重复的行,使用union all 不会消除重复行
	6.order by 只能出现的在最后

全文本搜索

InnoDB引擎不支持全文本搜索,MyISAM支持
全文本搜索类似于通配符操作和正则表达式匹配,但是全文本搜索的性能要高于前两者
1.使用全文本搜索
	表的创建
	create table books 
	(
		id int 
		notes test
		fulltext(notes)
	)engine = myisam;使用fulltext指明对哪一列进行全文本搜索
	注意:不要在数据导入的时候使用fulltext 而是导入完成后进行表的修改
2.语句查询
	select text from books where Match(notes) Againsr('aaaa');
	返回的结果是含有aaaa这个文本的的所有行
	Match()中的参数必须是在fulltest()中定义过的,且次序必须正确
	Against()不区分大写 除非使用binary方式 
	返回结果是按照特定计算的等级值降序输出
3.使用查询扩展
	sellect notes from books where Match(notes) Againsr('aaaa' with query expansion);
	返回的则是包含词aaaa和与其相关的语句
4.布尔文本搜索
	1.匹配内容:要匹配的 要排斥的 排列提示 表达式分组等等
	sellect notes from books where Match(notes) Againsr('aaaa -b*' in boolean mode );
	返回含有aaaa 不包含b开始的词

Mysql 组合查询、全文本搜索
Mysql 组合查询、全文本搜索

上一篇:MySQL 8.0.23中复制架构从节点自动故障转移


下一篇:VBS中使用ADO.Connection连接oracle