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开始的词