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

学习笔记~

    • 1.子查询
    • 2.联结表
    • 3.高级联结
    • 4.组合查询(union)
    • 5.全文本搜索

1.子查询

mysql 14-18章 子联结-全文本搜索_第1张图片
注意:主句where行对应的列名要在子句的select里面;使用的是in命令。

多层套娃(用于对不同列的过滤,即and命令做不到的情况):
mysql 14-18章 子联结-全文本搜索_第2张图片
mysql 14-18章 子联结-全文本搜索_第3张图片

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

2.联结表

(1).关系表
在这里插入图片描述
(2).外键
在这里插入图片描述
(3).建立联结
mysql 14-18章 子联结-全文本搜索_第4张图片
和平常语句不同的是,where过滤是两个表中的数据,只有两个表的数据满足了where的条件,才会建立联结,也才会被显示。

(4).笛卡尔积:

mysql 14-18章 子联结-全文本搜索_第5张图片
(5).内部联结
mysql 14-18章 子联结-全文本搜索_第6张图片
(6).多人运动(多表联结)
mysql 14-18章 子联结-全文本搜索_第7张图片
(7).联结的优势
mysql 14-18章 子联结-全文本搜索_第8张图片

3.高级联结

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

(2).自联结
mysql 14-18章 子联结-全文本搜索_第9张图片
给表换个名字,就是两个不同的表了,可以联结

可以替代二重子查询:
mysql 14-18章 子联结-全文本搜索_第10张图片
(3).自然联结
mysql 14-18章 子联结-全文本搜索_第11张图片
联结的一种方式,把所有需要的列都select朱来,排除重复

(4).外部联结
mysql 14-18章 子联结-全文本搜索_第12张图片
outer join前的参数left指,左边的表中的不含联结条件的行也会被联结并显示,其值为null;right则为右边。

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

(5).带聚集函数的联结
mysql 14-18章 子联结-全文本搜索_第13张图片
此处的group by 将每个id都作为一次操作交给了count(…num…),所以会返回对每个id联结的order数据的order_num的行数

4.组合查询(union)

mysql 14-18章 子联结-全文本搜索_第14张图片
和下图是一个意思:
在这里插入图片描述
但是优势在于可以对多个表进行组合查询

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

5.全文本搜索

(1).启用全文本搜索支持(fulltext)
mysql 14-18章 子联结-全文本搜索_第15张图片
如图,在建表时用fulltext创造索引才能全文搜索

(2).进行全文搜索

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

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

mysql 14-18章 子联结-全文本搜索_第16张图片
观察可知,词未出现的行等级为0,而词出现的行,目标词越靠前等级越高,也越在前显示。

(3).查询扩展(with query expansion)
mysql 14-18章 子联结-全文本搜索_第17张图片
神奇的查询,先返回有所查询的词的行,再根据这行的内容查询和其有相同词汇的行

(4).布尔文本搜索(没有fulltext也能用)
in boolean mode
mysql 14-18章 子联结-全文本搜索_第18张图片
可以选择排除的词,其中的"-“合”*"为布尔操作符:
mysql 14-18章 子联结-全文本搜索_第19张图片
例子:
mysql 14-18章 子联结-全文本搜索_第20张图片
注意:布尔查询中不按等级值来返回行,即无普通的全文本搜索的排序效果。

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

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

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

你可能感兴趣的:(mysql)