数据库的主键和外键有什么区别

数据库的主键和外键有什么区别,第1张

主键是定义一个表中起主要作用的数据项,这些数据项的数据在表中是唯一的,同时系统按主键为表建立索引。\x0d\\x0d\外键是定义一个表中的某数据项的数据,要参照另一个表的主键数据。既没有在另一个表的主键数据中出现的数据,不允许在这个表的外键数据项中出现。\x0d\\x0d\主键:表中记录的唯一标识\x0d\\x0d\外键:依赖于别的表的数据\x0d\\x0d\唯一键:在表中唯一\x0d\\x0d\键是一个或多个字段的组合\x0d\\x0d\唯一键:可以确定一条记录的字段(或字段组合),一张表可以有多个唯一键,正如可以识别你的身份的可以是身份z,学生证,军人证\x0d\\x0d\主键:你把唯一键的一个选做主键,一张表只能有一个主键\x0d\\x0d\外键:所定义的外键是另一张表的主键,\x0d\\x0d\主键:表中记录的唯一标识,外键:依赖于别的表的数据,唯一键:在表中唯一。\x0d\\x0d\主键和唯一键的一个区别:主键是不允许为NULL的,唯一键则可以,当然你可以加上NOT NULL来限制它\x0d\\x0d\主键:能够唯一表示数据表中的每个记录的字段或者字段的组合就称为主键。一个主键是唯一识别一个表的每一行记录,但这只是其作用的一疗分,主键的主要作用是将记录和存放在其他表中的数据进行关联,在这一点上,主键是不同表中各记录间的简单指针,主键约整就是确定表中的每一条记录,主键不能是空值,唯一约束是用于指定一个或多个列的组合值具有唯一性,以防止在列中输入重复的值,所以,主键的值对用户而言是没有什么意义,并且和它赋予的值也没有什么特别联系。\x0d\\x0d\外键:\x0d\\x0d\若有两个表A,B,C是A的主键,而B中也有C字段,则C就是表B的外键,外键约束主要用来维护两个表之间数据的一致性。\x0d\\x0d\A为基本表,B为信息表。\x0d\\x0d\在数据库中,常常不只是一个表,这些表之间也不是相互独立的,不同的表之间需要建立一种关系,才能将它们的数据相互沟通,而在这个沟通过程中,就需要表中有一个字段作为标志,不同的记录对应的字段取值不能相同,也不能是空白的,通过这个字段中不同的值可以区别各条记录,就像我们区别不同的人,每个人都有名字,但它却不能作为主键,因为人名很容易出现重复,而身份z号是每个人都不同的,所以可以根据它来区别不同的人,数据库的表中作为主键的段段就要像人的身份z号一样,必须是每个记录的值都不同,这才能根据主键的值来确定不同的记录。\x0d\\x0d\什么是外键?\x0d\\x0d\说明你的表A中的某项a,是引用表B的某列b\x0d\\x0d\为什么要使用外键?\x0d\RDBMS的基本概念,可以维护数据库的完整。\x0d\\x0d\如何来用,涉及到数据库的定义。\x0d\\x0d\唯一约束和主键的区别是什么?\x0d\\x0d\唯一性约束\x0d\\x0d\唯一性约束所在的列允许空值,但是主键约束的列不允空值。\x0d\\x0d\可以把唯一约束放在一个或者多个列上,但是,唯一性约束所在的列并不是表的主键列。\x0d\\x0d\唯一性约束强制在指定的列上创建一个唯一性索引,在默认情况下,创建唯一性的非聚簇索引,但是,也可以指定所创建的索引是聚簇索引。\x0d\\x0d\主键:\x0d\\x0d\用于标识某行而且与之相关\x0d\\x0d\是不可能更新\x0d\\x0d\不应该允许空\x0d\\x0d\唯一域/字段\x0d\\x0d\用于作为访问某行的可选手段。\x0d\\x0d\只要唯一就可以更新\x0d\\x0d\可以为空\x0d\\x0d\注意唯一和主键的区别,它们都是创建一个唯一的索引,一个表格仅含有一个主键约束列,但是,它有可能在其他列中含有许多的唯一约束。

问题一:数据库中为何要设置主键呢有什么作用? 主键:

概念

主关键字(主键,primary key)是被挑选出来,作表的行的惟一标识的候选关键字。一个表只有一个主关键字。主关键字又可以称为主键。 主键可以由一个字段,也可以由多个字段组成,分别成为单字段主键或多字段主键。

作用

1)保证实体的完整性;

2)加快数据库的 *** 作速度

3) 在表中添加新记录时,ACCESS会自动检查新记录的主键值,不允许该值与其他记录的主键值重复。

4) ACCESS自动按主键值的顺序显示表中的记录。如果没有定义主键,则按输入记录的顺序显示表中的记录。

特点

1) 一个表中只能有一个主键。如果在其他字段上建立主键,则原来的主键就会取消。在ACCESS中,虽然主键不是必需的,但最好为每个表都设置一个主键。

2)主键的值不可重复,也不可为空(NULL)。

问题二:数据库中为何要设置主键呢有什么作用? 主键: 概念 主关键字(主键,primary key)是被挑选出来,作表的行的惟一标识的候选关键字。一个表只有一个主关键字。主关键字又可以称为主键。 主键可以由一个字段,也可以由多个字段组成,分别成为单字段主键或多字段主键。 作用 1)保证实体的完整性; 2)加快数据库的 *** 作速度 3) 在表中添加新记录时,ACCESS会自动检查新记录的主键值,不允许该值与其他记录的主键值重复。 4) ACCESS自动按主键值的顺序显示表中的记录。如果没有定义主键,则按输入记录的顺序显示表中的记录。 特点 1) 一个表中只能有一个主键。如果在其他字段上建立主键,则原来的主键就会取消。在ACCESS中,虽然主键不是必需的,但最好为每个表都设置一个主键。 2)主键的值不可重复,也不可为空(NULL)。

问题三:sql server为什么要设置主键? 10分 一、主键定义

数据库主键是指表中一个列或者列的组合,其值能够唯一的标识表中的每一个行。这样的一列或者多列成为表的主键,通过它可以强制表的实体完整性。当创建或者更改表时可以通过定义PRIMARY KEY约束来创建主键,一个表只能有一个主键约束,而且主键约束中的列不能是空值,由于主键约束确保唯一数据,所一经常来定义标识列。

二、主键的作用

1、 主键是用于唯一标识数据库表中一行数据的。

2、 作为一个可以被外键有效引用的对象。

三、主键的设计原则

1、 主键应当是对用户没有意义的,比如说用户登陆一个系统的时候的登录id;而这种情况就不可能了:“学生表”需要支持这样的需求“学生注销后,可以重新激活自己的信息,而且还要保持自己的号码跟原来的一直”,这样的话主键就不能满足要求了。

2、 唯一性。

3、 非空性:主键的值是不可重复的,也不可以为空。

4、尽量不要更新主键。实际上,因为主键除了惟一地标识一行之外,再没有其他的用途了,所以也就没有理由去对它更新。如果主键需要更新,则说明主键应对用户无意义的原则被违反了。注意:这项原则对于那些经常需要在数据转换或多数据库合并时进行数据整理的数据并不适用。

5、主键不应包含动态变化的数据,如时间戳、创建时间列、修改时间列等。

6、主键应当有计算机自动生成。如果由人来对主键的创建进行干预,就会使它带有除了惟一标识一行以外的意义。一旦越过这个界限,就可能产生认为修改主键的动机,这样,这种系统用来链接记录行、管理记录行的关键手段就会落入不了解数据库设计的人的手中。

四、创建主键

--在创建表时就可以对字段加上约束:create table Student(StudentNo int PRIMARY KEY IDENTITY(1,1), --加主键约束,还有标识列属性(两者构成实体完整性)StudentName nvarchar(15) not null, --加非空约束,不加not null 默认为:可以为空StudentSchool text(20) FOREIGN KEY REFERENCES SchoolTable(SchoolName), --加外键约束,格式:FOREIGN KEY REFERENCES 关联的表名(字段名)StudentAge int DEFAULT ((0)), --加默认值约束StudentSex nvarchar(2) CHECK(StudentSex=N'男' or StudentSex=N'女') --加检查约束,格式:check (条件表达式))

五、测试添加删除主键

--删除主键alter table Stu_PkFk_S drop constraint PK_Sgo--增加主键alter table Stu_PkFk_S add constraint PK_S primary key (sno)go

问题四:数据库表中的主键有什么作用?设和不设有什么区别? 楼上的几位都解释了主键的作用,我主要说下设和不设有啥区别:

比如:

张三的身份z号为123456

李四的身份z号为012345

设置身份z号为主键后,那么数据库就约穿你身份z号不能重复,不能为空,那么:

你向数据库表插入王五的身份z号为123456,则提示你主键不能重复之类的错误;

也许你要问,那就是保证不重复吗?主键可以保证不重复,并且不能为空,如果仅仅保证不重复的效果,可以只设置为索引就行了;

最后,主键可以是单字段主键,也可以2个或多个字段合并在一起形成联合主键。

问题五:SQL中的每一张表都必须设有主键吗 当然不一定咯。。

设置不设置主键嘛。。。要看你的业务或者需求来说。。。

如果你就是简单的对单表 *** 作的话,实在没有必要。

对多张没有关联的表 *** 作的话,不设置也没有什么影响

主键只是说对一种表和表关系的关联而已,还有就是在建主键的时候会自动添加个索引,某些情况下可以增加查询速度

问题六:设置什么为主键 以为一个学生可以选择多门课,一门课有多个学顶选择。

就你上边的这个表,主键应该是:学号+课程号。

问题七:数据库题目:为什么要设置主键不设置会有什么后果 主键用于表示数据(记录)的唯一性, 不设置主键会导致数据表中可能存在完全相同的数据, 因此在对数据进行 *** 作时, 数据库无法区分这些相同的数据, 因而会产生不想要的 *** 作结果

另外, 主键还有助于提高数据的检索速度

问题八:sql 2008中建表为什么要设置主键 表通常具有包含唯一标识表中每一行的值的一列或一组列。 这样的一列或多列称为表的主键 (PK),用于强制表的实体完整性。 由于主键约束可保证数据的唯一性,因此经常对标识列定义这种约束。

如果为表指定了主键约束,数据库引擎将通过为主键列自动创建唯一索引来强制数据的唯一性。 当在查询中使用主键时,此索引还允许对数据进行快速访问。 如果对多列定义了主键约束,则一列中的值可能会重复,但来自主键约束定义中所有列的值的任何组合必须唯一。

参考文档:msdnmicrosoft/zh-/library/ms179610aspx

问题九:在access中怎么设置主键 如果您有一个表,其中每条记录都有一个唯一的标识号(如 ID 号、序列号或编码),则该字段可以作为一个不错的主键。要使主键正常工作,该字段必须唯一标识每一行,决不包含空值或 Null 值,并且很少(理想情况下永不)改变。

要显式设置主键,必须使用设计视图。

单击“Office 按钮” ,然后单击“打开”。 在“打开”对话框中,选择并打开数据库。 在导航窗格中,右键单击要设置主键的表,然后在快捷菜单上,单击“设计视图”。 选择要用作主键的一个或多个字段。 要选择一个字段,请单击所需字段的行选择器。

要选择多个字段,请按住 Ctrl,然后单击每个字段的行选择器。

在“设计”选项卡上的“工具”组中,单击“主键”。

键指示器添加到您指定为主键的一个或多个字段的左

问题十:mysql建表时为什么要设置主键 确定数据的唯一性,有时候数据重复插入就会出错,设置主键就能避免一下。同时根据主键查询也会提高查询效率。

先说答案:是的。

原因:

数据库中从表通常可以使用主表的主键作为外键。这是一种常见的关系型数据库设计模式,称为“外键约束”(Foreign Key Constraint)。

外键约束是一种用于保持数据一致性的重要技术。它可以确保从表中的每个外键值都与主表中的一个主键值匹配,从而保证数据的完整性和一致性。

当从表中需要引用主表中的某一行时,通常会在从表中创建一个列作为外键,并将其设置为主表的主键。在这种情况下,从表中的外键列可以使用主表中的主键值作为引用。

例如,假设我们有两个表,一个是“订单”表,另一个是“订单详情”表。订单详情表中的每一行都需要引用订单表中的一行。在这种情况下,我们可以在订单详情表中创建一个外键列,将其设置为订单表中的主键,并确保每个外键值都与主表中的一个主键值匹配。

在使用外键约束时,需要注意确保数据的一致性。例如,如果删除主表中的一行,则需要相应地更新从表中的所有引用该行的外键值,或者在某些情况下,禁止删除主表中的行。这些约束可以在数据库设计和编程过程中进行处理。

1、外键的概念:外键是关系数据库三个完整性的五个约束条件之一,是表与表之间建立的一种关系。在Oracle数据库的scott/tiger用户中,表Dept和Emp通过外键进行了关联。在这里Dept表叫主表,Emp表叫从表,外键是字段Deptno。

2、加入外键的条件:a、两个表有相同属性字段,取值范围相同;

b、外键在主表中是主键或者是唯一字段;

c、外键可以是多个字段的组合。

记住一句话:从表的外键是主表的主键或唯一字段。

就是区别这一行数据和其他行数据的标识,简单点说,这一行数据和其他行数据可能会有很多重复的数据,如果不用一个唯一标识符来标识的话,就没办法区分你要用的要查询的是哪一行数据。就像人一样,很多同名同姓的人,甚至在同一个学校同一个班同一个小组,这怎么区分呢,就用学号来区分,学号就是学生的唯一标识符,就是学生信息的主键啦。

保证程序的正确性,主键ID首先具有唯一性,设置自动增长在前台Insert的时候不需要传入ID的值,数据库自动根据最后一个ID值增加1保证数据库主键不重复而且调用更为高效。

假如说没有设置自动增长在insert一条记录的时候需要人为传递ID值。要保证唯一性必须要先获得上条记录的ID用select然后再加一然后在执行insert从效率方面降低程序的灵活性。

个人见解。

关系型数据库中的一条记录中有若干个属性,若其中某一个属性组(注意是组)能唯一标识一条记录,该属性组就可以成为一个主键比如 :

学生表(学号,姓名,性别,班级)

其中每个学生的学号是唯一的,学号就是一个主键

用户表(用户名、密码、登录级别)

其中用户名是唯一的, 用户名就是一个主键

上机记录表(卡号,学号,姓名、序列号)

上机记录表中单一一个属性无法唯一标识一条记录,学号和姓名的组合才可以唯一标识一条记录,所以 学号和姓名的属性组是一个主键

上机记录表中的序列号不是成绩表的主键,但它和学生表中的学号相对应,并且学生表中的学号是学生表的主键,则称成绩表中的学号是学生表的外键

定义主键和外键主要是为了维护关系数据库的完整性,总结一下:

主键是能确定一条记录的唯一标识,比如,一条记录包括身份z号,姓名,年龄。身份z号是唯一能确定这个人的,其它都可能有重复,所以,身份z号是主键。

外键用于与另一张表的关联。是能确定另一张表记录的字段,用于保持数据的一致性。比如,A表中的一个字段,是B表的主键,就可以是A表的外键。

以上就是关于数据库的主键和外键有什么区别全部的内容,包括:数据库的主键和外键有什么区别、为什么要设置主键、数据库从表能用主表的主键吗等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9414957.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-28
下一篇 2023-04-28

发表评论

登录后才能评论

评论列表(0条)

保存