mysql 14-18章 子联结-全文本搜索

1.子查询

在这里插入图片描述
注意:主句where行对应的列名要在子句的select里面;使用的是in命令。

多层套娃(用于对不同列的过滤,即and命令做不到的情况):
在这里插入图片描述
在这里插入图片描述

这里面的count(*)可以视为count(cust_id),返回行数不包括本身行。
在这里插入图片描述
这个为完全限定列名,类似于类与方法。

2.联结表

(1).关系表
在这里插入图片描述
(2).外键
在这里插入图片描述
(3).建立联结
在这里插入图片描述
和平常语句不同的是,where过滤是两个表中的数据,只有两个表的数据满足了where的条件,才会建立联结,也才会被显示。

(4).笛卡尔积:

在这里插入图片描述
(5).内部联结
在这里插入图片描述
(6).多人运动(多表联结)
在这里插入图片描述
(7).联结的优势
在这里插入图片描述

3.高级联结

(1).表别名
在这里插入图片描述
注意:表别名不返回客户机,列别名返回

(2).自联结
在这里插入图片描述
给表换个名字,就是两个不同的表了,可以联结

可以替代二重子查询:
在这里插入图片描述
(3).自然联结
在这里插入图片描述
联结的一种方式,把所有需要的列都select朱来,排除重复

(4).外部联结
在这里插入图片描述
outer join前的参数left指,左边的表中的不含联结条件的行也会被联结并显示,其值为null;right则为右边。

注意:默认的联结方式为内部联结,所以外部联结是高级的联结。

(5).带聚集函数的联结
在这里插入图片描述
此处的group by 将每个id都作为一次操作交给了count(…num…),所以会返回对每个id联结的order数据的order_num的行数

4.组合查询(union)

在这里插入图片描述
和下图是一个意思:
在这里插入图片描述
但是优势在于可以对多个表进行组合查询

注意:
1.在这里插入图片描述
2.union会自动去除重复行,可用union all来显示全部行
3.order by 有且只能有一个在最后一个select后面,可以理解成union相当于是多次的where or

5.全文本搜索

(1).启用全文本搜索支持(fulltext)
在这里插入图片描述
如图,在建表时用fulltext创造索引才能全文搜索

(2).进行全文搜索

在这里插入图片描述
其中match对应列一定要是fulltext过的,且要按顺序。

该方法和like关键词最大的不同在于会自动进行排序:

在这里插入图片描述
观察可知,词未出现的行等级为0,而词出现的行,目标词越靠前等级越高,也越在前显示。

(3).查询扩展(with query expansion)
在这里插入图片描述
神奇的查询,先返回有所查询的词的行,再根据这行的内容查询和其有相同词汇的行

(4).布尔文本搜索(没有fulltext也能用)
in boolean mode
在这里插入图片描述
可以选择排除的词,其中的"-“合”*"为布尔操作符:
在这里插入图片描述
例子:
在这里插入图片描述
注意:布尔查询中不按等级值来返回行,即无普通的全文本搜索的排序效果。

(5).需要注意的几个地方

1.单引号被忽略
在这里插入图片描述

2.一个词如果出现50%以上,即返回太多结果,则会被忽略。(不用于in Boolean mode)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值