![Access 2013 数据库管理与应用从新手到高手](https://wfqqreader-1252317822.image.myqcloud.com/cover/393/27110393/b_27110393.jpg)
4.1 操作主键
主键是表中的一个字段或字段集,可为每条记录提供一个唯一的标识符。用户可以在【设计】视图中,对主键进行添加、设置和删除等一系列的操作。
4.1.1 主键概述
在操作主键之前,用户还需要先了解一下什么是主键,以及重要主键和好坏主键的区别。
1.了解主键
在数据库中,将信息分成不同的、基于主题的表。然后,使用表关系和主键以指示Access将信息再次组合起来。
Access使用主键字段将多个表中的数据迅速关联起来,并以一种有意义的方式将这些数据组合在一起。
在某一表中,可以包含其他表中的主键字段以向回引用主键的源表。而这些其他表中的字段,则被称为外键。
例如,“客户”表中的【客户ID】字段也可能会显示在“订单”表中。在“客户”表中它是主键,而在“订单”表中它则为外键。简而言之,外键就是另一个表的主键。
![](https://epubservercos.yuewen.com/B1DD10/15477637405566006/epubprivate/OEBPS/Images/00340.jpg?sign=1738939170-V4pqF5hA5hx7aJDav3B8mNlbcAraKSYB-0-787d31232b6ee0c093185122ba84d09a)
如果将现有数据移到数据库中,用户可能已经拥有了可用作主键的字段。
通常情况下,会使用唯一的标识号(如ID号、序列号、编码或代码)充当表中的主键。例如,在“客户”表中,由于每个客户都具有唯一的ID编号,因此可用客户ID字段作为主键。
2.好主键和坏主键的区别
一个好的主键,应具有以下3个特征。
❏唯一标识每一行。
❏从不为空或为Null,即它始终包含一个值。
❏所包含的值几乎不(理想情况下永不)改变。
而缺少一个或多个好的候选主键的特征的任何字段对于主键来讲都是一个坏主键,下面4个实例详细阐述了坏主键的形成原因。
❏个人姓名 因为该类型的字段不仅不是唯一的值,而且还会随时被更改,因此将该类型的字段作为主键,将是一个错误的选择。
❏电话号码 由于该类型的字段具有可变性,因此不适合作为主键。
❏电子邮件地址 该类型的字段虽然没有重复性,但字段内容可能会被改变,因此也不适用于主键。
❏事实和数字的组合 这种组合难以保留,如果事实部分作为单独的字段进行重复,则可能会导致混乱。例如,包含城市和增量号码(如NEWYORK0579)。
3.需要主键的表
在Access中,应该始终为表指定一个主键。当然,Access会自动为主键创建索引,这有助于加快查询和其他操作的速度。
Access还确保每条记录的主键字段中都有一个值,并且该值始终是唯一的。
在【数据表】视图中创建新表时,Access会自动创建主键,并且为它指定字段名“ID”和“自动编号”数据类型。默认情况下,该字段在【数据表】视图中为隐藏状态,但切换到【设计】视图中时,则会显示该字段。
![](https://epubservercos.yuewen.com/B1DD10/15477637405566006/epubprivate/OEBPS/Images/00341.jpg?sign=1738939170-ZV2cT9ZbD89hsqYyKVxBxuZMPlN0hpFW-0-8ca0508305297fb3d92b744bed80ffe8)
在某些情况下,用户可能想使用两个或多个字段一起作为表的主键。例如,在“订单”表中,将【订单ID】和【产品ID】字段同时作为主键。而当一个主键使用多个列时,它又被称为复合键。
4.1.2 添加主键
一般情况下,用户可通过下列2种方法,向表中添加“自动编号”的主键。
1.自动创建法
在【数据表】视图中,当用户创建新表时,Access会自动创建一个ID字段,并将该字段指定为【自动编号】数据类型。
![](https://epubservercos.yuewen.com/B1DD10/15477637405566006/epubprivate/OEBPS/Images/00342.jpg?sign=1738939170-suh8beVUCt0O8eeOM7bYv4gLtHlIDv05-0-d810cc77c06bf1961a875191dd1c4efb)
2.添加或修改法
在【导航】窗格中,右击表名称,执行【设计视图】命令,在【设计】视图中打开该表。
然后,在【字段名称】列中输入字段名称,单击【数据类型】列中的下拉按钮,选择【自动编号】选项。同时,在【常规】选项卡中,将【新值】设置为“递增”或“随机”。
![](https://epubservercos.yuewen.com/B1DD10/15477637405566006/epubprivate/OEBPS/Images/00343.jpg?sign=1738939170-oHxHn2sZa2IJnpxgXavIx6h0d1frKYUK-0-8bab29f78902a4a812d30a8f5dbe0ec3)
此时,代表字段的内容,将对主键使用以递增的方式添加新值,或者随机添加数据。
3.设置法
如果在现有的表中,每条记录都有一个唯一的标识号(如ID号、序列号或编码等),则该字段可以作为该表的主键。要使主键正常工作,该字段必须唯一标识每一行,从不包含空值和Null值,并且很少(理想情况下永不)改变。
在数据表中,右击【导航】窗格中的表名称,执行【设计视图】命令。然后,选择用作主键的一个或多个字段,执行【表格工具】|【设计】|【工具】|【主键】命令,将该字段设置为主键。
![](https://epubservercos.yuewen.com/B1DD10/15477637405566006/epubprivate/OEBPS/Images/00344.jpg?sign=1738939170-nJNExFMZyJ9JicQUj9XVl8jO5Hhl2E9R-0-e1b202b87c295dc4947aea488dd11059)
![](https://epubservercos.yuewen.com/B1DD10/15477637405566006/epubprivate/OEBPS/Images/00345.jpg?sign=1738939170-XtBrG1Nk5x7rgtsuL3WYAcFoR0j57ouz-0-9e2bdbb0ce5adc75b850ecac9e490a84)
当用户将字段设置为主键之后,在该字段对应的行标识处,将会显示一个与【主键】命令相同的图标,即“键指示器”图标。
当然,用户也可以右击行标识,执行【主键】命令,将该字段设置为主键。
![](https://epubservercos.yuewen.com/B1DD10/15477637405566006/epubprivate/OEBPS/Images/00346.jpg?sign=1738939170-0V2678ARTtmvLSUWWjGnWo0RShHMwoke-0-35eecad75ff03524cb14dea90fbcc076)
4.1.3 编辑主键
添加主键之后,为保证表之间的关联性,还需要对主键进行删除或更改等编辑操作。
1.删除主键
删除主键时,以前作为主键的一个或多个字段将不再作为标识记录的主要方式。但是,删除主键不会删除表中的一个或多个字段,所删除的只不过是这些字段的主键指定。
首先,在【设计】视图中打开包含主键的表,选择已添加主键的字段,执行【表格工具】|【设计】|【工具】|【主键】命令,即可删除主键。
![](https://epubservercos.yuewen.com/B1DD10/15477637405566006/epubprivate/OEBPS/Images/00347.jpg?sign=1738939170-jY5jkXRcUO1WElir2BI2JzKfFhyVakVH-0-a52016c585f7f06a2e9911d8afc8b410)
![](https://epubservercos.yuewen.com/B1DD10/15477637405566006/epubprivate/OEBPS/Images/00348.jpg?sign=1738939170-xwmlcDAZMQP54HWb7nGX8WVQgtUkPATj-0-22ec93a41af704d7082b89795e22e28b)
另外,右击包含主键字段的行标识,执行【主键】命令,也可删除该字段中的主键。
![](https://epubservercos.yuewen.com/B1DD10/15477637405566006/epubprivate/OEBPS/Images/00349.jpg?sign=1738939170-PfQhCQICQGpZvmsOXESALDVAO8maH2Qh-0-f752dd457d85aab213c914c873170cef)
2.更改主键
更改主键是更改主键所依附的字段,也就是说先删除当前字段的主键,并为另外一个字段设置主键。
在【设计】视图中,选择包含主键的字段,右击行标识,执行【主键】命令,删除该字段中的主键。
![](https://epubservercos.yuewen.com/B1DD10/15477637405566006/epubprivate/OEBPS/Images/00350.jpg?sign=1738939170-JghlN2Ic3npdBDcexmaZ8biTCaxxX6tn-0-ca863ed2455d59463fda6fa93541ebbe)
然后,选择其他字段,右击行标识执行【主键】命令,为该字段添加主键即可。
![](https://epubservercos.yuewen.com/B1DD10/15477637405566006/epubprivate/OEBPS/Images/00351.jpg?sign=1738939170-61Y6af0o9nUX14bvs3Ayec8E2N80l6DD-0-197f1dec08bc82b1a66c381bf86f5aa7)
![](https://epubservercos.yuewen.com/B1DD10/15477637405566006/epubprivate/OEBPS/Images/00352.jpg?sign=1738939170-7A5LKfZSSEtgDYosn7vcuaf0akDaGDGx-0-f6e326d063ebb01b75aaf378146e7855)