mysql值域_MySQL学习笔记(三)
1、笛卡爾積:由沒有聯(lián)結(jié)條件的表關(guān)系返回去的結(jié)果。檢索的行的數(shù)目將是第一個表中的行數(shù)乘以第二個表中的行數(shù)。
2、內(nèi)部聯(lián)結(jié)也稱等值聯(lián)結(jié),它是基于兩個表之間相等測試。
3、內(nèi)聯(lián)結(jié)類似A∩B,A表和B表的主鍵都互相匹配,如from a inner join b on a.num_id=b.num_id 。
4、為了性能考慮,不要聯(lián)結(jié)不必要的表。聯(lián)結(jié)越多,性能下降越厲害。
5、自聯(lián)結(jié)使用場景如下,如當我需要找到生產(chǎn)某物品名為TAT的廠商的所有產(chǎn)品信息(
此處不知道TAT為哪個廠商生產(chǎn)的,否則直接使用where篩選即可),因此需要兩步操作,首先找出TAT的廠商,接著找出該廠商的所有產(chǎn)品信息。
使用自聯(lián)結(jié)如下,select p1.prod_id,p1.prod_name
from products as p1,products as p2
where p1.ven_id=p2.ven_id
and p2.prod_id='TAT';
也可以使用子查詢?nèi)缦?#xff0c;select prod_id,prod_name
from products
where ven_id=(select ven_id
from products
where prod_id='TAT');
6、自聯(lián)結(jié)和子查詢都可以完成上面所說的那種情況,但是有兩個注意點
(1)自聯(lián)結(jié)需要使用表別名 (as關(guān)鍵字);? ? (2)推薦使用自聯(lián)結(jié),不使用子查詢,查詢效率相對較高
7、自然聯(lián)結(jié)(natrual join)是一種特殊的等值聯(lián)結(jié)。
1)等值連接中不要求屬性值完全相同,而自然連接要求兩個關(guān)系中進行比較的必須是相同的屬性組(屬性名可以不同),即要求必須有相同的值域。
2) 等值連接不將重復屬性去掉,而自然連接去掉重復屬性,也可以說,自然連接是去掉重復列的等值連接。
8、外連接(outer join),使用outer join語法時,必須使用right或left關(guān)鍵字指定包括其所有行的表。以左外聯(lián)結(jié)為例子,左表的行一定會列出,如果右表沒有匹配的行,那么列值為null。
9、全外聯(lián)結(jié)(full outer join),返回左右表的所有行,不管有沒有匹配,同時具備左聯(lián)結(jié)和右聯(lián)結(jié)的特性。
10、可以使用union來組合數(shù)條sql查詢(組合查詢)。使用union極為簡單,只需給出每條select語句,在各條語句之間放上關(guān)鍵詞union。(如果需要組合4條select語句,將要使用3個union關(guān)鍵字)
11、使用union的查詢可以用多條where子句來代替,但是對于更復雜的過濾條件,或者從多個表中檢索數(shù)據(jù)的情形,使用union可能會使處理更簡單。
12、union會自動去除重復的行。如果想要返回所有匹配的行,可以使用union all。
13、如果對組合查詢結(jié)果進行排序,只能使用一條order by子句,它必須出現(xiàn)在最后一條select語句之后。對于結(jié)果集,不存在用一種方式排序一部分,再用另一種排序另一部分。因此不允許使用多條order by子句。
14、兩個最常使用的引擎為MyISAM和InnoDB,前者只支持全文本搜索,而后者不支持
15、一般在創(chuàng)建表時啟用全文本搜索,傳遞給match()的值必須與fulltext()定義中的相同。全文本搜索的一個重要部分就是對結(jié)果排序,具有較高等級的行先返回。
16、布爾文本搜索,以布爾方式,可以提供關(guān)于如下內(nèi)容的細節(jié):1)要匹配的詞 2)要排斥的詞(如果某行包含這個詞,則不返回該行,即使某行包含要匹配的詞,也是如此) 3)排列提示(指定某些詞比其他詞更重要) 4)表達式分組? 5)另外一些內(nèi)容。
總結(jié)
以上是生活随笔為你收集整理的mysql值域_MySQL学习笔记(三)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 股票收市是几点
- 下一篇: mysql怎么刷题_面试刷题mysql1