小小千想和您聊一聊

当前位置: 首页> 技术分享> 数据库中的复合主键和联合主键

数据库中的复合主键和联合主键

  一、复合主键就是指你表的主键含有一个以上的字段组成 。

  例如

  create table test( name varchar(19), id number, value

  varchar(10),primary key (id,name) ) 上面的id和name字段组合起来

  就是你test表的复合主键 (若其一为单索引字段时,左边的id才会有索引)

  它的出现是因为你的name字段可能会出现重名,所以要加上ID字段这样就

  可以保证你记录的唯一性 一般情况下,主键的字段长度和字段数目要越少越好.

  二、联合主键,顾名思义就是多个主键联合形成一个主键组合,体现在联合。

  (主键原则上是唯一的,别被唯一值所困扰。) 索引可以极大的提高数据

  的查询速度,但是会降低插入、删除、更新表的速度,因为在执行这些

  写操作时,还要操作索引文件。 简单的例子 主键A跟主键B组成联合主键

  主键A跟主键B的数据可以完全相同,联合就在于主键A跟

  主键B形成的联合主键是唯一的。联合主键体现在多个表上,复合主键体现

  在一个表中的多个字段

学生表:student

create table student(
id mediumint  auto_increment comment '主键id',
name varchar(30) comment '姓名',
age smallint comment '年龄',
primary key(id)
)
engine = myisam,
charset = utf8,
comment = '学生'

课程表:course

create table course(
id mediumint  auto_increment comment '主键id',
name varchar(30) comment '课程名称',
primary key(id)
)
engine = myisam,
charset = utf8,
comment = '课程'

学生课程表:stu_cour

create table IF NOT EXISTS stu_cour(
id mediumint  auto_increment comment '主键id',
stu_id mediumint comment '学生表id',
cour_id mediumint comment '课程表id',
primary key(id)
)
engine = myisam,
charset = utf8,
comment = '学生课程表'

  此时stu_cour中id就表示联合主键,通过id可以获取学生和课程的一条记录

  复合主键:

create table student(
name varchar(30) comment '姓名',
age smallint comment '年龄',
sex enum('男','女') comment '性别',
primary key(name,age)
)
engine = myisam,
charset = utf8,
comment = '学生'


上一篇:HTML5工具初识之网页编辑器

下一篇:性能测试工具Jmeter之参数化---用户定义变量

QQ技术交流群

千锋软件测试官方①群
858327674

加入群聊