mysql主键和外键的区别
一、主键与外键存在的意义
主键和外键在关系数据库中扮演着至关重要的角色,它们共同维护着数据的完整性和一致性。
主键:它是每条记录的唯一标识符,犹如人的身份证号码,具有唯一性和非空性。例如,在一个包含身份证号、姓名、年龄等字段的记录中,由于身份证号是唯一的,因此它可以作为主键。主键的存在确保了每条记录的唯一性,防止了重复数据的出现。
外键:它是连接不同数据表之间关系的纽带,通过引用另一张表的主键或其他唯一性索引,来保持数据的一致性和完整性。以A表和B表为例,如果A表中的某个字段是B表的主键,那么这个字段在A表中就充当了外键的角色。外键允许重复值,也可以为空,这取决于具体的应用场景和需求。
索引:它是一种特殊的数据结构,用于加速数据库的查询速度。索引字段的值是唯一的,但允许存在空值。通过创建索引,可以显著提高查询性能,优化数据库的使用体验。
二、主键、外键与索引的差异性
这三者在数据库中的作用和特性各具特色:
主键:主要用于标识表中的唯一记录,确保数据的完整性和准确性。每个表只能有一个主键,它代表了表中每条记录的唯一性。
外键:主要用于建立表与表之间的关联关系,维护数据的一致性和完整性。一个表可以有多个外键,这取决于该表与其他表之间的关联程度。外键的引入使得数据表之间的关系更加紧密,有利于实现数据的跨表查询和操作。
索引:主要用于提高查询速度,优化数据库性能。通过创建索引,可以加速对表中特定字段的查询操作。一个表可以有多个索引,每个索引都针对不同的字段,以满足不同的查询需求。虽然索引字段的值必须是唯一的,但允许存在空值,这在实际应用中具有一定的灵活性。
总结
作用:
主键:用来保证数据完整性
外键:用来和其他表建立联系的
索引:是提高查询排序的速度个数
主键:主键一个表只有一个
外键:一个表可以有多个外键
索引:一个表可以有多个唯一索引
外键必须是另一个表的主键吗 ?
不一定是主键,但必须是唯一性索引。
主键约束和唯一性约束都是唯一性索引。
外键是表间关系的参照,可以不是主键。只是表明两个表之间的关系是通过那个属性连接起来的。
下面是个例子;
外键关联方式:foreign key
进货表命令
create table 进货表(序号 tinyint(4) unsigned not null primary key auto_increment, 销售日期 date,客户名称 varchar(30),货号 char(4),单价 decimal(8,2), 数量 int(4),销售员ID char(6),foreign key(货号) references 商品一览表(货号),foreign key(销售员ID) references 员工表(员工ID) );
员工表命令
create table 员工表(员工ID char(6) primary key not null,姓名 varchar(8) not null,性别 char(1) not null,出生日期 date not null,部门 varchar(20) not null,工作时间 date not null,个人简历 varchar(200) null);