中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

數據庫中的自連接

發布時間:2020-07-08 23:48:22 來源:網絡 閱讀:644 作者:強哥老師 欄目:數據庫

今天強哥要和大家分享數據庫中自連接的知識。

        在數據庫設計中,員工上下級關系如何表示,員工和員工下屬關系如何表示?下屬和下屬的下屬關系如何表示?樹形菜單結構中,父節點和子節點的關系如何表示?論壇帖子中,主貼與回帖的關系如何表示?

        這三種關系都涉及到表的自連接問題,下面我們以員工上下級關系進行講解分析。

        對于員工上下級關系,很多數據庫初學者,可能會把數據放在兩個表中,一個表放上級員工,另一個表放下屬員工,設置外鍵進行兩表的關聯。如果這樣來處理,大家想象一下,如果一個員工既有上級,又有下屬,那么這個員工應該出現在上級表中,還是下屬表中呢?這是一個很糾結的問題。

       實際工作中,我們把上級和下屬都放在一個表中。在一個表中,將這種上下級關系清晰地表示出來。舉一個例子,唐僧是一個領導,他有兩個手下,一個是孫悟空,另一個是豬八戒。孫悟空手下有個下屬叫做猴小七,豬八戒手下有個下屬叫做豬小二,那么數據表設計出來應該是這樣的。


數據庫中的自連接員工信息表employee


      分析一下這個表,唐僧的父序號為0,而表中沒有序號為0的數據,所以唐僧是沒有上級的。孫悟空和豬八戒的父序號都為1,唐僧的序號為1,所以孫悟空和豬八戒的上級都是唐僧。猴小七的父序號是2,而孫悟空的序號為2,所以猴小七的上級是孫悟空。豬小二的父序號是3,而豬八戒的序號是3,所以豬小二的上級是豬八戒。

       如何在同一個表中組織這種父子關系的數據大家看懂了,下面給大家講講如何通過SQL命令來獲得某個人的直接下級的名字。

       比如說,唐僧的下級有哪些人?如果表中數據很多,這不是一眼能看出來的。而且能看出來沒用,我們在做軟件開發時,是需要通過SQL命令提取出來,并在程序中特定的地方使用的。

       兩個表中的數據進行關聯查詢,大家應該都會。一個表自身數據的關聯查詢要稍微復雜一些,這就是強哥這里要給大家講的自連接查詢。為了講清楚這個例子,我畫了下面這個圖。這個圖中,把前面那張表當成兩張表來處理,分別取別名a和b。


數據庫中的自連接自連接分析圖例


       通過這個表,我們很容易看出來,我們要查找唐僧的所有下級的姓名,就要把b表中的父序號等于a表中序號的數據進行連接,并從連接結果中,找到a表中姓名為唐僧的數據。據此分析,假設數據庫中表的名字為employee,可以寫出如下SQL命令。

 select b.name from employee a, employee b where a.id=b.pid and a.name=’唐僧’

       要查找別的人的下級,只需要把名字替換一下就可以了。表的自連接查詢是數據設計的基本功,大家都必須要掌握。


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

垣曲县| 兰州市| 大方县| 嘉荫县| 赤城县| 宣化县| 马鞍山市| 新野县| 贵南县| 云龙县| 淮北市| 都江堰市| 常熟市| 增城市| 雷州市| 玉田县| 德化县| 宜阳县| 临颍县| 莱西市| 武汉市| 长丰县| 海林市| 广平县| 富川| 宜君县| 平远县| 县级市| 大方县| 景德镇市| 延安市| 屯门区| 临颍县| 简阳市| 长兴县| 呼和浩特市| 乌鲁木齐市| 临邑县| 老河口市| 青河县| 嘉定区|