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都能够为我们提供高效而准确的结果。