數據庫基礎學習----SQL語句的連接方式

    在敲機房收費系統的過程中,遇到了這樣一個問題那就是我需要的數據在兩個表中,我就想實現如何同時查詢兩個表呢  對此問題經過查找和問同學得到了解決


   解決一    也是我自己想的簡單的解決方法,那就是把表a中那些需要被令一個表調用的數據,取出來,賦給我自己定義的變量,然後再打開另外一個表我定義的變量賦值給相應的字段 就可以了,這樣做雖然簡單 ,但是我感覺這不是從根本上解決問題。 於是找到了下面的方法。

 

   解決2   這就涉及到了SQL 語句的連接問題   sql語句的連接分爲以下幾類 

 

   外連接

 

    A、left outer join:

 

       左外連接(左連接):結果集幾包括連接表的匹配行,也包括左連接表的所有行。

 

       SQL: select a.a,a.b, a.c, b.c, b.d, b.f from a LEFT OUT JOIN b ON a.a = b.c

 

    B:right outer join:

 

       右外連接(右連接):結果集既包括連接表的匹配連接行,也包括右連接表的所有行。

 

    C:full outer join:

 

      全外連接:不僅包括符號連接表的匹配行,還包括兩個連接表中的所有記錄。

   內連接

 

     內連接內連接查詢操作列出與連接條件匹配的數據行,它使用比較運算符比較被連接列的列值。

 

     內連接分三種:


     1、等值連接:在連接條件中使用等於號(=)運算符比較被連接列的列值,其查詢結果中列出被連接表中的所有列,包括其中的重複列。

使用等值連接,,在選擇列表中列出LandTbl和TownTbl表中重複列(TownCode):


     例:Select * fromLandTbl as A inner join TownTbl as B on A.TownCode=B.TownCode


     2、不等連接:在連接條件使用除等於運算符以外的其它比較運算符比較被連接的列的列值。

這些運算符包括>、>=、<=、<、!>、!<和<>。


    例:Select * fromLandTbl as A inner join TownTbl as B on A.TownCode<>B.TownCode


    3、自然連接:在連接條件中使用等於(=)運算符比較被連接列的列值,但它使用選擇列表指出查詢結果集合中所包括的列,並刪除連接表中的重複列。

使用自然連接,在選擇列表中刪除LandTbl和TownTbl表中重複列(TownCode):


    Select A.*,B.CityCode, B.TownName from LandTbl as A inner join TownTbl as B onA.TownCode=B.TownCode

 

    內連接也稱爲等同連接,返回的結果集是兩個表中所有相匹配的數據,而捨棄不匹配的數據。也就是說,在這種查詢中,DBMS只返回來自源表中的相關的行,即查詢的結果表包含的兩源錶行,必須滿足ON子句中的搜索條件。作爲對照,如果在源表中的行在另一表中沒有對應(相關)的行,則該行就被過濾掉,不會包括在結果表中。內連接使用比較運算符來完成

 

   我在查詢的過程中使用了內連接  ,這樣就可以同時查詢兩個表中的內容了。


select* from line_Info inner join student_Info on line_info.cardno=student_Info.cardno where line_Info.cardno='" & txtCardNo.Text& "'"  

 

 

另外在學習這個的時候,我還學到了這樣一個知識那就是在數據庫裏面的語句  如何將一個表中的內容插入到另外一個表中   這就涉及到了 插入INSERT  的使用了

 

插入之前,首先要保證兩個表中的字段要一致,然後按照

 insert into [目的表](字段1,字段2,字段3……)select字段1,字段2,字段3……) from [源表] where 你濾出數據的條件。   即可

 

 看來SQL 語句  以及數據庫 需要學習的東西太多了!  而我僅僅接觸了一點點。  

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章