我是 SQL 新手,需要处理大量数据集。我使用 Excel 分析了一小部分数据,但现在我需要查看整个数据。我已将其导入 SQL Server Management Studio 2016,可以使用“前 1000 行”功能查看所有表,但这确实是我所知道的全部操作。
我关心的只有两个表。每个表都有 1 亿行。它们共享一个重叠列 - 我们称之为 EventID。每个表都描述了“事件”期间发生的事情。因此,表 1 有 EventID #100001、#100002 等条目,表 2 有 EventID #100001、#100002 等条目。
因此,拥有一张大桌子会简单得多,但这就是生活......
我想弄清楚两件事:
1) 在 SQL Server Management Studio 2016 中我应该在哪里输入查询来询问数据库?(最终,我希望执行连续值分析,但在执行此操作之前我可能需要重新利用这些信息)
2)如何处理有两个不同表的问题?(我应该/可以创建另一个表来合并我当前拥有的两个表吗?或者我应该在我编写的查询中处理这个问题吗?)
预先感谢您的任何帮助。
答案1
我将概述一些入门指南,并向您推荐其他在线教程。然后,当您遇到问题时,您应该提出更具体的问题。
1. 导入数据并设置主键
您已经导入了数据,但这里更具体的步骤。如果每个表中的每一行都有一个唯一的 EventID,那么它就是您的主键(稍后很重要),在这种情况下,您不需要“启用身份插入”来生成新的主键。
确保您的表已配置好,以便在每个表中将 EventID 设置为主键。此处有说明如果有许多行具有相同的 EventID,事情就会变得更加复杂,因此我假设它们是唯一的。
2. 定义关系
通过在主键(EventID)上链接两个表来定义它们之间的关系。选择一个表作为主表,第二个表的主键将成为第一个表的外键。如果 EventID 之间有 1:1 匹配,那么这是最简单的情况。
看教程在这里它显示了 GUI 和 SQL 方法。
3. 使用查询设计器
这是一个可以帮助您创建 SQL 查询的工具,它将加入(连接或链接)两个表格并显示结果。后续教程在这里。由于您已经定义了关系,查询设计器将知道如何连接它们。
在查询中,您可以从每个连接表中选取要查看的列,查询会将它们合并显示为一个。您也可以在此处添加过滤器(“where”条件)和排序(“order by”)。
4. 根据您所做的查询创建一个视图。
A看法是一个数据库术语,表示保存的查询,可以像读取真实表一样读取,尽管在后台它仍然只是您创建的 SQL 查询,将两个表合并为一个。这应该可以回答您的第二个问题。
跟进教程在这里。
5.实验
熟悉了这些之后,您可能想要更深入地学习 SQL。网上有大量的资源。事实上,SQL 中的步骤 2-4 可以替换为以下内容:
create view MyBigTableView as
select * from table1
inner join table2
on table1.EventID = table2.EventID
附录
如果有多个列作为主键(唯一标识每一行的列),则称为复合键。在表设计器中定义这种类型的主键很容易(请参阅stackoverflow 的答案在这里),并将用于定义关系,并最终用于创建索引,以获得更好的查询性能(这里不涉及)。
在 SQL 中(无论您是否定义了主键),同时具有 EventID 和 SubEventID 的两个表上的内连接将如下所示:
select * from table1
inner join table2
on table1.EventID = table2.EventID
and table1.SubEventID = table2.SubEventID
答案2
在这种情况下,相交运算符会更容易使用。
select * from table1
intersect
select * from table2
这将仅产生两个表所共有的记录。 这里是对相交、并集和除运算符的简便解释。