如何建立sqlserver数据库两表之间的关系

在SQL Server中,理解表之间的关系主要涉及两个步骤:使用主键和外键建立关联,以及使用各种JOIN来玩转数据。

我们先来说说主键和外键。
假设您有一个名为 Admin_FCOutDt 的表;假设它有一个唯一的 ID 字段作为主键。
还有一个表叫crm_contract;它包含一个合约 ID 字段,该字段是唯一的,也是主键。
如果要关联这两个表,请将 Contract ID_FK 字段添加到 Admin_FCOutDt 表中。
该字段指定 crm_contract 表的合同 ID。
这样,对于Admin_FCOutDt表中的每条记录;通过contractID_FK可以找到crm_contract表中对应的记录。
只需在 SQL Server Management Studio 中单击几下或在 T-SQL 中编写语句即可;您可以创建外键约束来确保数据不被篡改。

然后是加入。
如果要查看这两个表相关的数据,可以使用JOIN。
例如,如果您想要查看 Admin_FCOutDt 表中的每个合同 ID 与 crm_contract 表中的合同标题的关系,请使用 INNER JOIN。
编写一条 SELECT 语句;正确写入表名和ON状态;你可以得到结果。
如果您希望在 crm_contract 表中没有匹配项的情况下查看 Admin_FCOutDt 表中的所有数据,请使用 LEFT JOIN。
右连接与左连接相反。
包括那些无法连接的它将使您充分参与。
通过使用这些 JOIN,您可以轻松连接两个表中的数据。

子查询和 CTE 也非常有用。
子查询是查询中的子查询。
例如,如果您想在 Admin_FCOutDt 表中查看 crm_contract 表中合同 ID 的记录。
您可以使用子查询。
CTE 是临时表;编写复杂问题时更易于使用且不那么复杂。

使用 UNION 或 UNION ALL 进行组合查询。
如果要聚合 Admin_FCOutDt 和 crm_contract 表中的数据,请使用 UNION 删除重复记录。
UNION ALL 不关心任何事情;我们甚至会给您副本。
通过使用这些函数,可以灵活地处理来自多个表的数据。

老实说,创建​​这些关系时必须小心,不要弄乱数据。
特别是对于大桌子。
如果查询没有优化。
电脑会死机。
因此,必须仔细考虑指数化和其他因素。

数据库表与表之间怎么建立联系

上周有客户问我如何使用数据库表关联。
我说你问了一个好问题,直接进入实用信息。

主键和外键是表之间关系的基石。
这个机制其实很有趣。
我们先来说说主键。
如果你仔细想想,关键是给每张光盘一个独特的标签。
例如,在超市产品系统中,每种产品都有唯一的产品代码。
这是主键。
其核心功能是保证每个盘都是独立的,不混合。
这是设备完整性。
数据库会自动为主键创建唯一索引。
为什么?因为当你查数据的时候,索引可以帮助你快速找到目标,效率就高很多。
记得2 02 3 年在上海调试一个商城项目时,使用Purchasing.ProductVendor表中的ProductID和VendorID组合作为主键,以保证产品和供应商的组合唯一。
如果没有这个主键约束,数据就会混乱。
关于主键有很多规则。
一张表只能有一个主键,不超过1 6 列,总长度不能超过9 00字节,所有列不能为空且必须为空。
还有一个细节。
如果不指定索引类型且表没有聚集索引,则默认使用聚集索引。
这点必须注意。

我们来谈谈外键。
外键是桌子之间的手绳。
例如,Sales.SalesOrderHeader 表中的 SalesPersonID 是外键。
它检索 Sales.SalesPerson 表的主键以指示下订单的人。
外键最关键的功能是维护引用完整性。
简而言之,您不能只将卖家 ID 添加到订单表中。
如果卖家表中不存在该 ID,则插入将失败。
记得去年在杭州调试一个ERP系统时,一位销售人员因外键限制而辞职,但他以前的ID仍然保留在订单表中。
结果系统直接报错,不肯改,让我们不高兴了。
外键有很多规则。
一个表最多可以引用2 5 3 个表。
但SQL Server 2 01 6 之后,传入引用(即其他表引用的外键)数量可以达到1 0000个,但只能使用DELETE操作,而不能使用UPDATE和MERGE。
自引用表也受到 2 5 3 个限制。
这是另一个陷阱。
列存储索引、内存优化表等特殊表的外键数量超出限制。

最后说一下索引优化。
主键会自动建立索引,这固然很方便,但外键不会自动建立索引,这一点要注意。
然而,外键列的手动索引特别有效,特别是在执行多表相关查询时。
例如,在检查订单和卖家信息时,如果SalesOrderHeader.SalesPersonID有索引,并且SalesPerson表的主键也有索引,那么数据库可以直接通过索引找到匹配的数据,查询速度会快很多。
之前在北京做过一个项目,涉及到给相关表添加外键索引,查询时间直接从几分钟缩短到几秒。
虽然没有主外键约束,当然你可以通过写JOIN语句来连接数据,但是有了外键约束,数据库可以帮你优化查询计划,隐式保证数据一致,这比手动要好得多维护。

无论如何你都可以找到答案。
主外键用得好,数据关系清晰,查询快速稳定。