sql server的連線可以大致分為三種:內連線、外連線和交叉連線。
一、內連線(inner join)
使用比較運算子進行表間某(些)列資料的比較操作,並列出這些表中與連線條件相匹配的資料行。根據所使用的比較方式不同。
內連線又分為三種:
等值連線
自然連線
不等連線三種。
二、外連線分(external join)
與內連線不同的是,外連線不只列出與連線條件相匹配的行,而是列出左表(左外連線時)、右表(右外連線時)或兩個表(全外連線時)中所有符合搜尋條件的資料行。外連線
分為三種:
左外連線(left outer join或left join)
右外連線(right outer join或right join)
全外連線(full outer join或full join)
三、交叉連線(cross join)
沒有where 子句,它返回連線表中所有資料行的笛卡爾積,其結果集合中的資料行數等於第乙個表中符合查詢條件的資料行數乘以第二個表中符合查詢條件的資料行數。
下面選擇部分連線例項如下:
假設資料庫有如下關係表:
第乙個關係表為投票主表votemaster;第二個為投票者資訊表voter,用於記錄投票人ip、投票時間等資訊。
左右連線,即聯合查詢的結果以哪個表為準,若以左邊的關係表為準則稱之為左連線,若以右邊的關係表為準則稱之為右連線。
1:如:右接連 right join 或 right outer join:
我們以右邊voter表為準,則左表(votemaster)中的記錄只有當其id在右邊(voter)中存在時才會顯示出來,如上圖,左邊中id為3、4、5、6的記錄在右表中沒有相應記錄,所以沒有顯示!
2:如:左連線 left join 或者 left outer join
可見,現在右邊中id在左邊中存在時才會顯示,當右邊中沒有相應資料時則用null代替!
3:全連線 full join 或者 full outer join,為二個表中的資料都出來,這裡演示效果與上一樣!
4:內連線 inner join 或者 join;它為返回欄位id同時存在於表votemaster 和 voter中的記錄
5:交叉連線(完全連線)cross join 不帶 where 條件的
沒有 where 子句的交叉聯接將產生聯接所涉及的表的笛卡爾積。第乙個表的行數乘以第二個表的行數等於笛卡爾積結果集的大小。(table1和table2交叉連線產生6*3=18條記錄)
等價select vm.id,vm.votetitle,vt.ip from votemaster as vm,voter as vt
注意:完全連線顯示的結果一般沒有實際意義,在實際中一般不會出現,也很少使用。
6:自連線。其實,就是關係表連線自己。
如下表:
這是乙個部門表,裡面存放了部門及其上級部門,但都放在同一張表中,我們假設現在需要用sql查詢出各部門及其上級部門!該如何做?
當然,不用自連線也一樣,也可以實現如下:
我們達到預期目的!在這個查詢中使用了乙個子查詢完成對上級部門名的查詢。
如果使用自連線,那麼結構上感覺會清晰很多。
是不是也同樣完成了功能呢,這裡除了使用自連線外,還使用了左連線,因為省電力沒有上級部門,他是老大,如果使用內連線,就會把這條記錄過濾掉,因為沒有和他匹配的上級部門。
自連線用的比較多的就是對權形結構的查詢!類似上表!
恢復SQLServer例項連線
原文 恢復sqlserver例項連線 譯自 開啟sqlserver2008之後,本地管理員組不再需要手動新增,因為在安裝的時候已經預設新增。你甚至只需要把當前使用者手動新增到本地管理員使用者即可。這意味著,特別是如果你不使用混合認證模式 或者忘記了sa密碼 你可能會被拒絕登入自己的sqlserver...
恢復SQLServer例項連線
譯自 開啟sqlserver2008之後,本地管理員組不再需要手動新增,因為在安裝的時候已經預設新增。你甚至只需要把當前使用者手動新增到本地管理員使用者即可。這意味著,特別是如果你不使用混合認證模式 或者忘記了sa密碼 你可能會被拒絕登入自己的sqlserver例項。我遇到過乙個情景,乙個職員離開,...
ASP連線sql server例項解析
1 首先確定自己的iis沒有問題 2 其次確定自己sqlserver沒有問題 然後在iis的目錄wwwroot裡,建立乙個檔案 名為testsqlserver.asp,編寫 如下即可 在ie位址輸入http localhost testsqlserver.asp,即可看到如下結果 很容易吧,你也去試...