1. 程式人生 > >表的複雜查詢----多表查詢、兩表的條件連線、內連線(自連線)、左外連線、右外連線、子查詢、分頁查詢

表的複雜查詢----多表查詢、兩表的條件連線、內連線(自連線)、左外連線、右外連線、子查詢、分頁查詢

基於兩個或兩個以上的表或檢視的查詢。

例如:emp和dept是兩張表。(這兩張表的deptno是共同欄位)

    ①通過什麼條件把兩張表關聯(如果不使用條件關聯將產生行數乘積的合集---笛卡爾集)




例子:emp表字段包含:每行有自己的名字和id以及自己的上級的id,同時自己的上級也在這個表中的某一行

       

②自連線(內連線)--inner join   on顯示按條件左右兩表都滿足的項

左外連線:--left join   on顯示左邊表全部,右邊表匹配左邊

右外連線:--right join    on顯示右邊表全部,左邊表匹配右邊





全外連線


③子查詢:指嵌入到其他sql語句中的select查詢

單行子查詢(子查詢部分如果執行只返回一行)例子


多行子查詢(子查詢部分返回的是多行,所以使用in關鍵字)例子


在from子句中使用子查詢

sqlserver分頁查詢:(top---not in())

例子:顯示按時間第6到第10個入職的員工。思路:


MySQL分頁查詢:(limit 起始行,頁數;)

  1. mysql> SELECT * FROM table LIMIT 5,10; // 檢索記錄行 6-15  
  2. //為了檢索從某一個偏移量到記錄集的結束所有的記錄行,可以指定第二個引數為 -1:   
  3. mysql> SELECT * FROM table LIMIT 95,-1; // 檢索記錄行 96-last.  
  4. //如果只給定一個引數,它表示返回最大的記錄行數目:   
  5. mysql> SELECT * FROM table LIMIT 5; //檢索前 5 個記錄行  
  6. //換句話說,LIMIT n 等價於 LIMIT 0,n。