学习《MySQL必知必会》笔记三(14章-18章)

(敲黑板重点来了,前面的内容学过的可以不用温习了,但接下来的内容就非学不可啦
一、使用子查询
1.利用子查询进行过滤
例如与IN操作符结合使用,列出订购物品TNT2的所有客户


输出:

2.作为计算字段使用子查询
例如需要显示customers表中每个客户的订单总数,订单与相互的客户ID存储在orders表中。
输入:

输出:

相关子查询(涉及外部查询的子查询)
WHERE orders.cust_id=customers.cust_id,(完全限定列名)告诉SQL比较orders表中的cust_id与当前正从customers表中检索的cust_id。

二、联结表
SQL最强大的功能之一就是能在数据检索查询的执行中联结表。联结是利用SQL的SELECT能执行的最重要的操作。
联结(join)
联结是一种机制,用来在一条select语句中关联表,因此称之为联结。使用特殊的语法,可以联结多个表返回一组输出,联结在运行时关联表中正确的行。
1.关系表里的概念
关系表的设计是要保证把信息分解成多个表,一类数据一个表,各表通过一定的关系互相关联。
外键:外键为某个表中的一列,它包含另一个表的主键值,定义了两个表之间的关系。
可伸缩性:能够适应不断增加的工作量而不失败。
2.创建联结(必须使用WHERE创建等值联结不然会出现笛卡尔积)


与前面select语句不同的是vend_name在一个表,而prod_name和prod_price在另一个表。
3.内部联结
基于两个表之间相等测试的联结称为等值联结,也叫内部联结
使用INNER JOIN创建等值联结

4.连接多个表

三、创建高级联结
1.使用表别名


2.使用不同类型的联结
自联结,自然联结和外部联结
2.1自联结
自联结通常作为外部语句用来替代从相同表中检索数据时使用的子查询语句。虽然最终的结果是相同的,但有时候处理联结远比处理子查询快得多。

2.2自然联结
标准的联结返回所有数据,甚至相同的列多次出现。自然联结排除多次出现,使每个列值返回一次。

2.3外部联结
与内部联结关联两个表中的行不同的是外部联结还包括没有关联的行。在使用OUTER JOIN时,必须使用RIGHT或LEFT关键字指定包括其所有行的表(RIGHT指出OUTER JOIN右边的表,LEFT指出OUTER JOIN左边的表)。

3.使用带聚集函数的联结
为说明这一点,请看下面的例子,如果要检索所有客户及每个客户所下的订单数。
3.1INNER JOIN 内部联结

输出结果:

3.2LEFT OUTER JOIN 外部联结

输出结果:

对比发现:左外部联结的结果显示也包含了客户Mouse House,它有0个订单。
4.使用联结和联结条件

四、组合查询
1.组合查询也通常称为并(union)或复合查询。
有两种基本情况,其中需要使用组合查询:
1)在单个查询中从不同的表返回类似结构的数据
2)对单个表执行多个查询,按单个查询返回数据
2.创建组合查询


将UNION换成UNION ALL可以包含不同SELECT子句选中的重复的列
UNION规则
1)UNION必须由两条或两条以上的SELECT语句组成,语句之间用关键字UNION分隔。
2)UNION中的 每个查询必须包含相同的列、表达式或聚集函数
3)列数据类型可以不完全相同,但必须兼容
3.对组合查询结果排序
ORDER BY必须出现在最后一条SELECT语句之后

五、全文本搜索


1.为了进行全文本搜索,必须索引被搜索的列,而且要随着数据的改变不断地重新索引; 1.1启用全文本搜索支持:一般在创建表时启用全文本搜索;create table 语句接收fulltext 子句,它给出被索引列的一个逗号分隔的列表;

1.2MySQL根据子句fulltext(note_text)的指示对它进行索引。这里的fulltext索引单个列,如果需要也可以索引多个列;在定义之后,MySQL自动维护该索引。在增加、更新或删除行时,索引随之自动更新;
2.进行全文本搜索:使用match()函数和against()函数执行全文本搜索,其中Match()指定被搜索的列,Against()指定要使用的搜索表达式。

3.使用查询扩展
查询扩展(with query expansion)不止返回包含搜索词的行,还返回与该行相关的行。
select note_text from productnotes where match(note_text) against('anvils' with query expansion) ;
4.布尔文本搜索
布尔搜索可以指定以下搜索条件:
1 要匹配的词 2 要排斥的词(包含该词的行不返回,即使包含指定的词)3 排列提示(词的重要等级)4表达式分组
文本布尔操作符:

如匹配包含heavy但不包含任意以rope开始的词的行:

全文本搜索的使用说明
1)在索引全文本数据时,短词被忽略且从索引中排除。短词定义为具有3个或3个以下字符的词(可以更改)
2)mysql带有一个内建的非用词表,这些词在全文本搜索中被忽略,
3)mysql规定了一条50%规则,如果一个词出现在50%以上的行中,则将它忽略,不使用与in boolean mode
4)如果表中的行少于3行,全文本搜索不返回结果(因为每次词或者不出现,或者至少50%出现)
5)忽略词中的个单引号

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 157,298评论 4 360
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 66,701评论 1 290
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 107,078评论 0 237
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,687评论 0 202
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,018评论 3 286
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,410评论 1 211
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,729评论 2 310
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,412评论 0 194
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,124评论 1 239
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,379评论 2 242
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,903评论 1 257
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,268评论 2 251
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,894评论 3 233
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,014评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,770评论 0 192
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,435评论 2 269
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,312评论 2 260

推荐阅读更多精彩内容