cbdb oracle查询

2023年 8月 4日 30.1k 0

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

相关文章

Oracle如何使用授予和撤销权限的语法和示例
Awesome Project: 探索 MatrixOrigin 云原生分布式数据库
下载丨66页PDF,云和恩墨技术通讯(2024年7月刊)
社区版oceanbase安装
Oracle 导出CSV工具-sqluldr2
ETL数据集成丨快速将MySQL数据迁移至Doris数据库

发布评论