mysql主键和外键有什么区别?
主键:表中经常有一个列或多个列的组合,其值能唯一的标识表中的每一行。这样的一列或多列称为表的主键。
外键:用来表示表与表之间联系,是表中的一个列。
主键和外键都是用于维护数据库完整性的一种机制。
区别:1、主键是唯一标识一条记录,不能重复,不允许为空;而外键可以重复,可以是空值;
2、主键是用来保持数据完整性,外键是用来建立与其他表联系用的;
3、主键只有一个,外键可以有多个。外键
数据库中主键和外键是干嘛用的?
为了保证两个表某些数据的一致性。
作为外键,它里面的数据必须是在主建中所存在的。举个例子: 有两个关系: student(s#,sname,d#),即学生这个关系有三个属性:学号,姓名,所在系别 dep(d#,dname),即院系有两个属性:系号、系名 则s#、d#是主键,也是各自所在关系的唯一候选键,d#是student的外键。在MySQL中如何设置主键和外键?
在MySQL中,您可以使用以下步骤设置主键和外键:
- 设置主键:在创建表时,可以使用PRIMARY KEY约束来定义主键。主键是一个或多个字段,它的值用于唯一地标识表中的某一条记录 。
- 设置外键:在创建表时,可以使用FOREIGN KEY约束来定义外键。外键是用于建立或加强两个表数据之间的链接的一列或多列。如果公共关键字在一个表中存在,而在另一个表中不存在,则必须使用FOREIGN KEY约束来定义外键 。
mysql中外键的作用?
mysql外键的作用,主要有两个:
一个是让数据库自己通过外键来保证数据的完整性和一致性
一个就是能够增加ER图的可读性
有些人认为外键的建立会给开发时操作数据库带来很大的麻烦.因为数据库有时候会由于没有通过外键的检测而使得开发人员删除,插入操作失败.他们觉得这样很麻烦
其实这正式外键在强制你保证数据的完整性和一致性.这是好事儿.
SQL数据库中的主键与外键介绍?
一、什么是主键、外键:
关系型数据库中的一条记录中有若干个属性,若其中某一个属性组(注意是组)能唯一标识一条记录,该属性组就可以成为一个主键。
主键是能确定一条记录的唯一标识,比如,一条记录包括身份证号,姓名,年龄。身份证号是唯一能确定你这个人的,其他都可能有重复,所以,身份证号是主键。
外键用于与另一张表的关联。是能确定另一张表记录的字段,用于保持数据的一致性。比如,A表中的一个字段,是B表的主键,那他就可以是A表的外键。
二、 主键、外键 和索引的区别
定义: 唯一标识一条记录,不能有重复的,不允许为空 表的外键是另一表的主键, 外键可以有重复的, 可以是空值
该字段没有重复值,但可以有一个空值作用: 用来保证数据完整性 用来和其他表建立联系用的 是提高查询排序的速度个数: 主键只能有一个
一个表可以有多个外键 一个表可以有多个惟一索引
聚集索引和非聚集索引的区别?聚集索引一定是唯一索引。但唯一索引不一定是聚集索引。
聚集索引,在索引页里直接存放数据,而非聚集索引在索引页里存放的是索引,这些索引指向专门的数据页的数据。
三、数据库中主键和外键的设计原则
关系数据库依赖于主键---它是数据库物理模式的基石。主键在物理层面上只有两个用途:
1、惟一地标识一行。
2、作为一个可以被外键有效引用的对象。
3、主键应当是对用户没有意义的。如果用户看到了一个表示多对多关系的连接表中的数据,并抱怨它没有什么用处,那就证明它的主键设计地很好。
4、主键应该是单列的,以便提高连接和筛选操作的效率。
5、永远也不要更新主键。实际上,因为主键除了惟一地标识一行之外,再没有其他的用途了,所以也就没有理由去对它更新。如果主键需要更新,则说明主键应对用户无意义的原则被违反了。
6、主键不应包含动态变化的数据,如时间戳、创建时间列、修改时间列等。
7、主键应当有计算机自动生成。如果由人来对主键的创建进行干预,就会使它带有除了惟一标识一行以外的意义。一旦越过这个界限,就可能产生认为修改主键的动机,这样,这种系统用来链接记录行、管理记录行的关键手段就会落入不了解数据库设计的人的手中。