查看原文
其他

软件应用丨千里之行,始于足下——经济学本科生的SQL之旅(下)

启研学社 数据Seminar 2023-01-01

数据seminar每天18:00与您准时见面



启研学社由知名学者担任学术顾问,高校师生与企研数据科学团队联合组建,以大数据资源及相关技术助力中国学术与智库研究为宗旨的研究组织。团队当前的主要目标是挖掘经济社会大数据资源在学术和智库领域的应用价值,开展学术大数据治理研究,以及探索大数据分析技术融入中国经济社会研究的可行进路。



一、前言
这份SQL笔记共分上下两篇,上篇主要介绍了SQL中常用的语句,包含基本命令、运算符和函数等内容,基本都是从一张表中选取所需的数据(点此回顾)。然而,在实际操作中,我们常常会遇到期望得到的数据分散在不同表的情况,此时我们又该如何?本文将着重介绍联结(以列为单位对表进行联结),主要是将其他表中的列添加过来,将各类分开储存的数据“汇总”于一张表内,成为一张利于我们进行一系列操作的新表,以便我们查询相关数据。联结主要有以下几种:内联结、外联结、左(右) 联结和交叉联结,接下来我们一一介绍它们的功能和语法。同上篇一样,我将在附录中提供演示代码及其运行结果,方便读者参考与学习。演示的数据来自于浙大卡特-企研中国涉农企业数据库(以下简称CCAD)1。(编者按:由于版权所限,读者可通过扫描文末企业微信,申请免费获得基于CCAD的操作示例材料。)
二、表的内联结INNER JOIN
内联结按照ON所指定的联结条件合并两个表,并返回满足条件的记录。

1.基本语法


SELECT <表1>.<字段1>, <表2>.<字段2>, <表3>.<字段3>FROM <表1>INNER JOIN <表2> ON <表1>.<共有字段1> = <表2>.<共有字段1> AND <表1>.<共有字段2> = <表3>.<共有字段2>;


注:需要合并的表格,需含共有字段。


2.图示

图 1 内联结



三、表的外联结FULL JOIN
连接结果不仅包含符合连接条件的行,而且还包含左表、右表或两个连接表(全连接)中所有的数据行。

1.基本语法


SELECT
<表1>.<字段1>, <表2>.<字段2>, <表3>.<字段3>FROM <表1>FULL JOIN <表2> ON <表1>.<共有字段1> = <表2>.<共有字段1> AND <表1>.<共有字段2> = <表3>.<共有字段2>;


注:需要合并的表格,需含共有字段。


2.图示

图 2 外联结



四、表的左(右)联结LEFT(RIGHT)JOIN


1.基本语法


SELECT
<表1>.<字段1>, <表2>.<字段2>, <表3>.<字段3>FROM <表1>LEFT(RIGHT)JOIN <表2> ON <表1>.<共有字段1> = <表2>.<共有字段1> AND <表1>.<共有字段2> = <表3>.<共有字段2>;


注:需要合并的表格,需含共有字段。


2.图示

图 3 左(右)联结


左联结和右联结的区别在于,将哪张表作为主表,最终的结果会包含主表内的所有数据。具体可扫码见实际操作示意图:注:通过使用LEFT、RIGHT来指定主表,可以使两者得到的结果完全相同。

五、表的交叉联结      笛卡尔积


1.交叉联结


交叉联结也称作笛卡尔积。返回左表中的所有行,左表中的每一行与右表中的所有行组合。在SQL中,我们通常会借助CROSS JOIN将两张或多张表中的记录全部“汇集”于一张表中,得出所有可能的组合结果,从而实现笛卡尔积。 


2.笛卡尔积


笛卡尔积一般指笛卡尔乘积。笛卡尔乘积是指在数学中,两个集合X和Y的笛卡尓积(Cartesian product),又称直积,表示为X×Y,第一个对象是X的成员而第二个对象是Y的所有成员之一。


3.基本语法


SELECT <表1>.<字段1>,    <表2>.<字段2>FROM <表1>CROSS JOIN <表2> ;


注:在FULL JOIN下,借助ON 1=1也可实现笛卡尔积。(具体可见附录的实操案例)


4.举例


如果我们有两个集合A和B,A = {0,1}、B = {2,3,4}。集合 A×B 结果集就可以分别表示为以下这种形式:A×B = {(0,2),(1,2),(0,3),(1,3),(0,4),(1,4)};以上A×B的结果就可以叫做两个集合相乘的“笛卡尔积”。

六、总结
SQL笔记的上和下篇分别介绍了单表数据查询和多表联结查询。具体而言,上篇对SQL中最常用的函数、运算符等内容进行了梳理,语句相对简单,也容易上手;而下篇的联结操作相对来说较为复杂,需要我们先理解再运用。


附录:基于CCAD的SQL操作示例

同上篇,此篇将基于上篇中CCAD中的家庭农场(企业)基本信息表(CCAD_JTNC_JBXX2020)、家庭农场(企业)股东信息表(CCAD_JTNC_GDXX2020)和家庭农场(企业)利信息表(CCAD_JTNC_ZLXX2020)作为原始表格,并在这三张表格的基础上进行一系列实践操作,有助于大家进一步理解SQL语句。
由于版权所限,读者可通过长按扫描如下企业微信,申请免费获得基于CCAD的操作示例材料。


¹ 详见https://ccad.qiyandata.com/(点击阅读原文可直接跳转)

点击查看CCAD丨浙大卡特-企研中国涉农企业数据库(CCAD)变量详解之基本信息表







点击阅读原文进入CCAD数据库

长按识别,添加小客服企业微信~



·END·


星标⭐我们不迷路!

想要文章及时到,文末“在看”少不了!


点击搜索你感兴趣的内容吧


往期推荐


统计计量丨学好计量经济学的关键问题

软件应用丨多快好省地使用pandas分析大型数据集

启研报告丨我国国家高新技术企业的发展情况分析、趋势预测及发展建议

数据呈现丨可视化版的《数据可视化指南——理论与实践》

机器学习丨刘忠宝,王宇飞,赵文娟 | 基于章节段落的学术文献结构功能识别方法研究

招聘丨冬天到来之前,加入企研数据

发布丨经管大类科研课程项目——经管科研能力提升计划第一季全新上线!







数据Seminar




这里是大数据、分析技术与学术研究的三叉路口



文丨肖肖子(陈杭肖)

指导丨杨奇明、施丹燕

校对丨陈煌杰

排版编辑丨肖肖子(陈杭肖)



    欢迎扫描👇二维码添加关注    


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存