CBDB(China Biographical Database)是一個數據庫,記錄了中國自206年前的漢朝至現代時期的歷史人物。這個數據庫是由哈佛大學、臺灣大學和香港中文大學的歷史學家等人合作建立的。而Oracle是一個流行的關系型數據庫管理系統。本文就來介紹一下CBDB如何進行Oracle查詢。
CBDB有一個在線查詢工具,不過如果我們需要進行更復雜的查詢,Oracle數據庫便是一個好的選擇。下面是一個例子。
SELECT DISTINCT CBDB.NAME_FULL AS name, CBDB.WENYUAN_ID as id
FROM CBDB.PERSON_MAIN CBDB
LEFT JOIN CBDB.WENYUAN_PERSON_HISTORY WENYUAN on CBDB.PERSON_ID = WENYUAN.PERSON_ID
WHERE CBDB.NAME_FULL LIKE '李%'
AND WENYUAN.WENYUAN_ID = 22000;
以上代碼表示的是,我們要查詢姓“李”的人在文淵閣四庫全書中的著作。CBDB.PERSON_MAIN表中記錄了人物的基本信息,CBDB.WENYUAN_PERSON_HISTORY表中則記錄了人物的著作信息。在這里我們使用了LEFT JOIN(左連接)來連接這兩張表,以獲取每個人的姓名和人物id(CBDB.WENYUAN_ID),并限制姓“李”,文淵閣四庫全書的id(WENYUAN.WENYUAN_ID)為22000。
接下來再舉一個例子。這次我們要查詢南唐后主李煜(937-978)的相關信息。
SELECT *
FROM CBDB.PERSON_MAIN CBDB
WHERE CBDB.NAME_FULL = '李煜' AND CBDB.DYNASTY = '南唐';
我們只需要在CBDB.PERSON_MAIN表中匹配姓名和朝代即可。以上代碼中,星號(*)表示將返回所有相關列的結果。
最后再來看一個稍微更復雜一點的例子。假設我們要查詢所有在唐代(TANG)擔任過左散騎常侍職務的人物。
SELECT DISTINCT CBDB.NAME_FULL AS name, CBDB.PSGZ_C AS position
FROM CBDB.PERSON_MAIN CBDB
WHERE CBDB.PSGZ_C LIKE '%左散騎常侍%'
AND CBDB.DYNASTY = 'TANG';
這次我們只需要在CBDB.PERSON_MAIN表中匹配職務和朝代即可。CBDB.PSGZ_C列記錄的是人物的官職,我們使用了LIKE運算符來進行模糊匹配,以防止因職位名稱微小差異而漏掉一些結果。
通過以上例子,我們可以看出CBDB在Oracle查詢上的靈活性和可擴展性。無論是簡單的基本查詢,還是更復雜的多重連接過濾,CBDB都能夠為我們提供高效而準確的結果。