zl程序教程

您现在的位置是:首页 >  数据库

当前栏目

《SQL初学者指南(第2版)》——1.4 主键和外键

SQL 指南 主键 1.4 初学者 外键
2023-09-11 14:17:42 时间

本节书摘来自异步社区出版社《SQL初学者指南(第2版)》一书中的第1章,第1.4节,作者:【美】Larry Rockoff,更多章节内容可以访问云栖社区“异步社区”公众号查看。

1.4 主键和外键

请留意每个表的第1列:即Customers表中的CustomerID和Orders表中的OrderID。这些列通常称为主键(primary key)。主键之所以有用和有必要,有两个原因。首先,它们使你能够唯一地标识表中一个单独的行。例如,如果想要查找Bob Davis这一行,我们可以只使用CustomerID列来获取数据。主键还确保了唯一性。当指定CustomerID列作为主键时,就保证了表中的该列针对每一行都拥有一个唯一的值。即使在数据库中有两个不同的人都叫做Bob Davis,这两行的CustomersID列的值也会不同。

在这个示例中,主键列的值没有任何特殊含义。在Customers表中,CustomerID列在表的3行中的值分别为1、2和3。我们会经常以这样的一种方式来设计数据库的表:当表中增加新的行时,主键列会自动生成顺序的编号。通常,我们把这种设计特性叫做自增型(auto-increment)。

使用主键的第2个原因是,可以很容易地把一个表和另一个表进行关联。在这个例子中,Orders表中的CustomerID列,指向了Customers表中对应的一行。查看一下Orders表的第4行,会发现其CustomerID列的值是3。这就意味着,CustomerID为3的客户下了这个订单,这位客户名为Connie King。在表之间使用共同的列,这是关系型数据库中的一项基本的设计要素。

除了可以指向Customers表,还可以把Orders表中的CustomerID列指定为外键(foreign key)。我会在第18章中详细介绍外键,在这里只需要知道:定义外键是为了要确保这一列有一个有效的值。例如,我们希望Orders表中的CustomerID列的值,必须是Customer表中真正存在的一个CustomerID值。指定一列作为外键,就可以实现这种限制。


SQL关系模型之主键 上期我们介绍了关系模型和关系数据库,那么这个“关系”到底是由谁来决定的呢?难道我处理数据的时候还要看某个值原本的意义吗? 笔者认为一般来说,数据库的使用者应当对数据有一定的认知,但是如果所谓的数据关系是靠使用者的理解来自行定义,恐怕有失严谨。 毕竟换个人操作,理解就有可能不一样嘛,那关系数据库各个表的关系就随之变化了?显然不现实。 事实上,我们的关系数据库中,关系是由“主键”和“外键”来维护的。今天我们就主要来看看主键——
(解释文)My SQL中主键为0和主键自排约束的关系 上一篇我们说了关于自排如果主键是0的问题,在这里我搞清楚了原因,导致这种情况是因为在SQL中对自排设置了初始值: 从这里可以看到这两个变量一个是自增的初始值,一个是增量,这里都是1,所以在设置自增的时候会把那个字段原来存在的所有0变成从1开始的步长为1的等差数列。
SQL 修改主键约束 原文:SQL 修改主键约束 今天在学习数据库的时候遇到一个关于如何修改主键约束的问题,抄录下来以供备用。 --修改主键约束用SQL --获取主键约束名字 declare @csname varchar(100) set @csna...
MS SQL SERVER搜索某个表的主键所在的列名 原文:MS SQL SERVER搜索某个表的主键所在的列名   SELECT SYSCOLUMNS.name  FROM SYSCOLUMNS,SYSOBJECTS,SYSINDEXES,SYSINDEXKEYS   WHERE SYSCOLUMNS.
异步社区 异步社区(www.epubit.com)是人民邮电出版社旗下IT专业图书旗舰社区,也是国内领先的IT专业图书社区,致力于优质学习内容的出版和分享,实现了纸书电子书的同步上架,于2015年8月上线运营。公众号【异步图书】,每日赠送异步新书。