精华内容
下载资源
问答
  • 复合主键

    2020-11-16 18:33:12
    复合主键的是使用情景: 当只有一个字段作为主键时,不能作为唯一标识,仍会有重复的情况。这时需要有2个(以上)的字段共同作为主键,也就是作为记录的唯一标识。 create table mykey ( name varchar(20), ...
    复合主键的是使用情景:
    • 当只有一个字段作为主键时,不能作为唯一标识,仍会有重复的情况。这时需要有2个(以上)的字段共同作为主键,也就是作为记录的唯一标识。
    create table mykey 
    ( 
       name varchar(20), 
       id number , 
       primary key (name,id) 
    ) 
    

    这个时候,就是name属性和id属性共同作为复合主键,作为唯一标识。

    展开全文
  • 在mysql中可以在创建表时添加复合主键,其语法规则是“PRIMARY KEY [字段1,字段2,…,字段n]”,表示主键由多个字段联合组成。主键约束即在表中定义一个主键来唯一确定表中每一行数据的标识符。主键可以是表中的某...

    在mysql中可以在创建表时添加复合主键,其语法规则是“PRIMARY KEY [字段1,字段2,…,字段n]”,表示主键由多个字段联合组成。

    fdc53b6ea2b96d52684393e9976d3cd9.png

    主键约束即在表中定义一个主键来唯一确定表中每一行数据的标识符。主键可以是表中的某一列或者多列的组合,其中由多列组合的主键称为复合主键。

    复合主键不能包含不必要的多余列。当把复合主键的某一列删除后,如果剩下的列构成的主键仍然满足唯一性原则,那么这个复合主键是不正确的。这是最小化原则。

    如何添加复合主键?

    可以在创建表时添加复合主键,此时主键由多个字段联合组成,语法规则如下:PRIMARY KEY [字段1,字段2,…,字段n]

    示例:创建数据表 tb_emp,假设表中没有主键 id,为了唯一确定一个员工,可以把 name、deptId 联合起来作为主键mysql> CREATE TABLE tb_emp

    -> (

    -> name VARCHAR(25),

    -> deptId INT(11),

    -> salary FLOAT,

    -> PRIMARY KEY(id,deptId)

    -> );

    Query OK, 0 rows affected (0.37 sec)

    mysql> DESC tb_emp;

    +--------+-------------+------+-----+---------+-------+

    | Field | Type | Null | Key | Default | Extra |

    +--------+-------------+------+-----+---------+-------+

    | name | varchar(25) | NO | PRI | NULL | |

    | deptId | int(11) | NO | PRI | NULL | |

    | salary | float | YES | | NULL | |

    +--------+-------------+------+-----+---------+-------+

    3 rows in set (0.14 sec)

    展开全文
  • 什么是数据表的复合主键所谓的复合主键 就是指你表的主键含有一个以上的字段组成比如create table test(name varchar(19),id number,value varchar(10),primary key (name,id))上面的name和id字段组合起来就是你test...

    什么是数据表的复合主键

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

    比如

    create table test

    (

    name varchar(19),

    id number,

    value varchar(10),

    primary key (name,id)

    )

    上面的name和id字段组合起来就是你test表的复合主键

    它的出现是因为你的name字段可能会出现重名,所以要加上ID字段这样就可以保证你记录的唯一性

    一般情况下,主键的字段长度和字段数目要越少越好

    联合主键

    什么是联合主键?

    (主键原则上是唯一的,别被唯一值所困扰。)

    顾名思义就是多个主键联合形成一个主键组合

    一个简单的例子

    主键A跟主键B组成联合主键

    主键A跟主键B的数据可以完全相同(困扰吧,没关系),联合就在于主键A跟主键B形成的联合主键是唯一的。

    下例主键A数据是1,主键B数据也是1,联合主键其实是11,这个11是唯一值,绝对不充许再出现11这个唯一值。(这就是多对多关系)

    主键A数据 主键B数据

    1      1

    2      2

    3      3

    主键A与主键B的联合主键值最多也就是

    11

    12

    13

    21

    22

    23

    31

    32

    33

    CREATE TABLE `products_description` (

    `products_id` int(11) NOT NULL,

    `language_id` int(11) NOT NULL default

    '1',

    `products_name` varchar(64) NOT NULL default

    '',

    `products_description` text,

    `products_short_description` text,

    `products_url` varchar(255) default NULL,

    `products_viewed` int(5) default '0',

    PRIMARY KEY

    (`products_id`,`language_id`),

    KEY `products_name` (`products_name`)

    ) ENGINE=InnoDB DEFAULT CHARSET=latin1;

    展开全文
  • 一、复合主键所谓的复合主键 就是指你表的主键含有一个以上的字段组成,不使用无业务含义的自增id作为主键。例如:create table test(name varchar(19),id number,value varchar(10),primary key (name,id))上面的...

    一、复合主键

    所谓的复合主键 就是指你表的主键含有一个以上的字段组成,不使用无业务含义的自增id作为主键。

    例如:create table test

    (

    name varchar(19),

    id number,

    value varchar(10),

    primary key (name,id)

    )

    上面的name和id字段组合起来就是你test表的复合主键 ,它的出现是因为你的name字段可能会出现重名,所以要加上ID字段这样就可以保证你记录的唯一性 ,一般情况下,主键的字段长度和字段数目要越少越好 。

    这里就会有一个疑惑? 主键是唯一的索引,那么为何一个表可以创建多个主键呢?

    其实“主键是唯一的索引”这话有点歧义的。举个例子,我们在表中创建了一个ID字段,自动增长,并设为主键,这个是没有问题的,因为“主键是唯一的索引”,ID自动增长保证了唯一性,所以可以。

    此时,我们再创建一个字段name,类型为varchar,也设置为主键,你会发现,在表的多行中你是可以填写相同的name值的,这岂不是有违“主键是唯一的索引”这句话么?

    所以我才说“主键是唯一的索引”是有歧义的。应该是“当表中只有一个主键时,它是唯一的索引;当表中有多个主键时,称为复合主键,复合主键联合保证唯一索引”。

    为什么自增长ID已经可以作为唯一标识的主键,为啥还需要复合主键呢。因为,并不是所有的表都要有ID这个字段,比如,我们建一个学生表,没有唯一能标识学生的ID,怎么办呢,学生的名字、年龄、班级都可能重复,无法使用单个字段来唯一标识,这时,我们可以将多个字段设置为主键,形成复合主键,这多个字段联合标识唯一性,其中,某几个主键字段值出现重复是没有问题的,只要不是有多条记录的所有主键值完全一样,就不算重复。

    二、联合主键

    联合主键顾名思义就是多个主键联合形成一个主键组合(主键原则上是唯一的,别被唯一值所困扰。)

    联合主键的意义:用2个字段(或者多个字段,后面具体都是用2个字段组合)来确定一条记录,说明,这2个字段都不是唯一的,2个字段可以分别重复,这么设置的好处,可以很直观的看到某个重复字段的记录条数。

    一个简单的例子 :

    主键A跟主键B组成联合主键

    主键A跟主键B的数据可以完全相同,联合就在于主键A跟主键B形成的联合主键是唯一的。

    下例主键A数据是1,主键B数据也是1,联合主键其实是11,这个11是唯一值,绝对不充许再出现11这个唯一值。(这就是多对多关系)

    主键A数据 主键B数据

    1      1

    2      2

    3      3

    主键A与主键B的联合主键值最多也就是

    11

    12

    13

    21

    22

    23

    31

    32

    33

    总结: 以我来看复合主键就是含有一个以上的字段组成,如ID+name,ID+phone等,而联合主键要同时是两个表的主题组合起来的。这是和复合主键最大的区别!

    相了解更多相关问题请访问PHP中文网:mysql视频教程

    展开全文
  • MySQL 的联合主键与复合主键区别复合主键就是指你表的主键含有一个以上的字段组成 . 例如; create table test ( name varchar(19), id number, value varchar(10), primary key (id,name) ) 上面的 id 和 name 字段...
  • 什么是数据表的复合主键所谓的复合主键 就是指你表的主键含有一个以上的字段组成比如create table test(name varchar(19),id number,value varchar(10),primary key (name,id))上面的name和id字段组合起来就是你test...
  • 所谓的复合主键 就是指你表的主键含有一个以上的字段组成,不使用无业务含义的自增id作为主键。比如create table test(name varchar(19),id number,value varchar(10),primary key (name,id))上面的name和id字段组合...
  • 复合主键与联合主键

    万次阅读 多人点赞 2017-05-02 17:05:57
    一、复合主键  所谓的复合主键 就是指你表的主键含有一个以上的字段组成,不使用无业务含义的自增id作为主键。 比如  create table test ( name varchar(19), id number, value varchar(10), primary ...
  • 一、复合主键  所谓的复合主键 就是指你表的主键含有一个以上的字段组成,不使用无业务含义的自增id作为主键。 比如 create table test ( name varchar(19), id number, value varchar(10), primary key ...
  • 有时一个实体的主键可能同时为多个,例如同样是之前使用的...要配置这样的复合主键,步骤如以下所示。(1)编写一个复合主键的类CustomerPK,代码如下。CustomerPK.javaimport java.io.Serializable;public clas...
  • Hibernate复合主键

    2018-06-03 21:05:34
    一个简单的复合主键的做关联类的例子
  • mysql添加复合主键的方法发布时间:2020-09-25 10:12:21来源:亿速云阅读:90作者:小新mysql添加复合主键的方法?这个问题可能是我们日常学习或工作经常见到的。希望通过这个问题能让你收获颇深。下面是小编给大家...
  • MySQL中什么是数据表的复合主键发布时间:2020-11-23 14:03:11来源:亿速云阅读:108作者:小新这篇文章主要介绍MySQL中什么是数据表的复合主键,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,871
精华内容 1,148
关键字:

复合主键