表的聯合包含:執行外部聯合、執行內部聯合、執行左聯合、執行右聯合、進行等值聯合、進行不等值聯合
1. 兩表聯合。比如 select * from table1,table2;如果table1有14行記錄,table2有6行,那麼兩表聯合記錄有14*6=84
2. 等值聯合。比如 select * from table1,table2 where table1.name = table2.name;
3. 可以使用where子句對其結果進行限制。比如:select * from table1,table2 where table1.name = table2.name and table1.partnum = 76;
4. 聯合表沒有使用where子句,執行的其實是笛卡爾聯合(笛卡爾叉積)這種聯合會對from中指出的表進行完全的組合,如果每個表有200個記錄的話,那麼所得到的結果有200*200=40000行,非常大,所以除非確實是想對錶中的所有記錄進行聯合,否則一定要記住使用where子句。
5. 聯合中使用表以及列的別名,使sql語句更具有可讀性。
6. 當三個表或以上表進行聯合的時候,通常,根據給定的條件返回行最少的表會作為驅動表(也就是基表)。在查詢中除基表以為的其他表通常是向基表聯合以便更有效地獲得資料。 比如:select a.name,b.caddress,c.price from table1 a,table2 b,table3 c where a.partnum = b.partnum and a.name = c.name; table1表被使用了兩次,其它的表只使用了一次。所以table1作為基表,放在前邊。
7. 聯合雖然使用where會過濾掉一些記錄,但selecet仍然會把所有的記錄全部返回,比如20*20=400,where在這400條記錄中過濾掉不滿足where條件的記錄。所以聯合效能不高。
8. 不等值聯合。在where子句中使用除了等號以外的其它比較運算子。
9. 外部聯合和內部聯合。內部聯合是指與個表內的行與本表內的資料相互進行聯合,產生的結果行數取決於參加聯合的行數,也就是說內部聯合的行數取決於where子句的結果。外部聯合則是表間的聯合,如上邊table1,table2的聯合。內部聯合例子:select a.name,b.pprice from table1 a join table2 b on b.partnum =54; 表示table1表中的所有行都與table2表中partnum=54的行進行組合,也就是說組合以前,table2已經有了一次過濾。
10. 內部聯合使用join on。
11. 外部右聯合right outer join。不滿足條件時,右邊表集合的記錄補以null。
12. 左聯合left outer join。與內部聯合的結果一樣。
13. 在一些解析器中使用+號來代替外部聯合,+號的意思就是顯示我的全部內容包含不匹配的內容。
14. 表的自我聯合。
SQL 自學筆記
sql 自學 筆記 利用 知乎一篇文章推薦的 自學,有r語言,python 語言經驗。sql 單錶查詢 命令 主體 select feature name,feature name from table name where conditions and or conditions order by...
21天學通C 閱讀筆記3
陣列 陣列是資料存放位址的集合,每個位址儲存相同型別的資料。int intarray 10 int 型別為4 個位元組,編譯器會分配 4 10 個位元組的連續記憶體給該陣列 陣列初始化 int intarray 2 一維陣列宣告 int intarray 2 對兩個元素都賦值 int intarra...
SpringBoot自學筆記5 日誌管理2
一 loger的使用 logger name com.qianfeng.controller 將控制controller包下的所有類的日誌的列印,但是並沒用設定列印級別,所以繼承他的上級的日誌級別 info 沒有設定addtivity,預設為true,將此loger的列印資訊向上級傳遞 當執行該包下...