-
MySQL 复合主键(Day02)
2018-10-15 17:21:49主键约束是表中的某一列,也可以是表中多个列所构成的一个组合,其中有多一个列组合而成的主键称为复合主键 在MsSQL中,主键列必须遵循以下规则: 1.每个表只能定义一个主键 2.唯一性原则,主键的值也成只为键值,...主键约束
主键约束是表中的某一列,也可以是表中多个列所构成的一个组合,其中有多一个列组合而成的主键称为复合主键
在MsSQL中,主键列必须遵循以下规则:
1.每个表只能定义一个主键
2.唯一性原则,主键的值也成只为键值,必须能够唯一标识表中的每一条记录,且不能为NULL,也就是说一张表中两个不同的行
在主键上不能有相同的值。
3.最小化规则.复合主键不能包含不必要的多余列,也就是说,当从一个复合主键中删除一列后,如果剩下的列构成的主键仍能够满足唯一性原则,那么这个复合主键是不正确的。
4.一个列明在符合主键中只能出现一次。
有多一个列组合而成的主键称为复合主键
复合主键
什么是主键约束:(在一个数据表中通过多个字段作为主键来确定一条记录,那么,多个字段组成的就是复合主键 )
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------
(下文摘选自-作者:beautifulsarah ,应博主要求,转载请注明出处
来源:CSDN
原文:https://blog.csdn.net/beautifulsarah/article/details/53502109?utm_source=copy )所谓的复合主键 就是指你表的主键含有一个以上的字段组成
比如
create table test
(
name varchar(19),
id number,
value varchar(10),
primary key (name,id)
)上面的name和id字段组合起来就是你test表的复合主键
它的出现是因为你的name字段可能会出现重名,所以要加上ID字段这样就可以保证你记录的唯一性
一般情况下,主键的字段长度和字段数目要越少越好
---------------------为什么要使用主键约束:
(以下内容摘选自-作者:南极娃娃鱼 )应博主要求,转载请注明出处
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------
来源:CSDN
原文:https://blog.csdn.net/wangyuchun_799/article/details/49329649?utm_source=copy
版权声明:本文为博主原创文章,转载请附上博文链接!最近学习一点数据库的基本知识,被一个问题困惑了许久:主键是唯一的索引,那么为何一个表可以创建多个主键呢?
其实“主键是唯一的索引”这话有点歧义的。举个例子,我们在表中创建了一个ID字段,自动增长,并设为主键,这个是没有问题的,因为“主键是唯一的索引”,ID自动增长保证了唯一性,所以可以。
此时,我们再创建一个字段name,类型为varchar,也设置为主键,你会发现,在表的多行中你是可以填写相同的name值的,这岂不是有违“主键是唯一的索引”这句话么?
所以我才说“主键是唯一的索引”是有歧义的。应该是“当表中只有一个主键时,它是唯一的索引;当表中有多个主键时,称为复合主键,复合主键联合保证唯一索引”。
为什么自增长ID已经可以作为唯一标识的主键,为啥还需要复合主键呢。因为,并不是所有的表都要有ID这个字段啊哈哈,比如,我们建一个学生表,没有唯一能标识学生的ID,怎么办呢,学生的名字、年龄、班级都可能重复,无法使用单个字段来唯一标识,这时,我们可以将多个字段设置为主键,形成复合主键,这多个字段联合标识唯一性,其中,某几个主键字段值出现重复是没有问题的,只要不是有多条记录的所有主键值完全一样,就不算重复。
--------------------- ---------------------------------------------------------------------------------------------------------------------------------------------------创建主键约束有两种方法:
1.create table tb_user(
id int auto_increment primary key,
user varchar (30) not null,
createtime daretime);
方法二:
create table tb_student(
id int auto_increment,
name varchar(30) not null,
sex varchar(2),
classid int not null,
birthday date,
PRIMARY KEY(id,classid)
);
如果表中仅由表中的某一列所构成,那么以上两种方法均可定义主键约束,如果主键有表中多个列所构成,那么只能用第二种方法来定义主键约束,另外,定义主键约束后,MySQL会自动为主键创建一个唯一索引,默认名为primary,也可以修改其他的名字。
-
mysql组合主键代码_mysql表的组合主键
2021-02-03 04:58:29mysql表的组合索引是由表的多列字段值的拼接成的主键,来形成唯一性。和以往单个列的普通主键如id(自增长)的区别是一个字段主键和多个字段的区别。组合索引就是复合索引。如果一个表有id,name,sex,nunber三个字段,...mysql表的组合索引是由表的多列字段值的拼接成的主键,来形成唯一性。和以往单个列的普通主键如id(自增长)的区别是一个字段主键和多个字段的区别。
组合索引就是复合索引。
如果一个表有id,name,sex,nunber三个字段,那普通主键表的主键为id值区分唯一性。联合主键为name+number值来区别唯一性,或name+sex+number拼接的值来区分唯一性。
组合索引
1.新建表的设置create table test(
id int(10) not null auto_increment,
name varchar(20) not null,
sex int(1) not null,
primary key (id,name,sex)
);
2.已有表修改为组合索引alter table 表名 add index index_name (name,sex,number);
*如果执行上面操作提示表不能有多个主键错误时,需要先清理主键约束,再执行添加。alter table 表名 DROP PRIMARY KEY add primary key (字段1,字段2,字段3);
3.适用场景举例
文章管理中的章节、小节、页码字段形成组合索引,索引先会找到章节再找到对应的小节,这样就提高了查询的效率。
-
mysql 组合主键怎么添加_mysql表的组合主键
2021-01-18 18:24:01mysql表的组合索引是由表的多列字段值的拼接成的主键,来形成唯一性。和以往单个列的普通主键如id(自增长)的区别是一个字段主键和多个字段的区别。组合索引就是复合索引。如果一个表有id,name,sex,nunber三个字段,...mysql表的组合索引是由表的多列字段值的拼接成的主键,来形成唯一性。和以往单个列的普通主键如id(自增长)的区别是一个字段主键和多个字段的区别。
组合索引就是复合索引。
如果一个表有id,name,sex,nunber三个字段,那普通主键表的主键为id值区分唯一性。联合主键为name+number值来区别唯一性,或name+sex+number拼接的值来区分唯一性。
组合索引
1.新建表的设置create table test(
id int(10) not null auto_increment,
name varchar(20) not null,
sex int(1) not null,
primary key (id,name,sex)
);
2.已有表修改为组合索引alter table 表名 add index index_name (name,sex,number);
*如果执行上面操作提示表不能有多个主键错误时,需要先清理主键约束,再执行添加。alter table 表名 DROP PRIMARY KEY add primary key (字段1,字段2,字段3);
3.适用场景举例
文章管理中的章节、小节、页码字段形成组合索引,索引先会找到章节再找到对应的小节,这样就提高了查询的效率。
-
mysql表名拼接_mysql表的组合主键
2020-12-29 06:56:23mysql表的组合索引是由表的多列字段值的拼接成的主键,来形成唯一性。和以往单个列的普通主键如id(自增长)的区别是一个字段主键和多个字段的区别。组合索引就是复合索引。如果一个表有id,name,sex,nunber三个字段,...mysql表的组合索引是由表的多列字段值的拼接成的主键,来形成唯一性。和以往单个列的普通主键如id(自增长)的区别是一个字段主键和多个字段的区别。
组合索引就是复合索引。
如果一个表有id,name,sex,nunber三个字段,那普通主键表的主键为id值区分唯一性。联合主键为name+number值来区别唯一性,或name+sex+number拼接的值来区分唯一性。
组合索引
1.新建表的设置create table test(
id int(10) not null auto_increment,
name varchar(20) not null,
sex int(1) not null,
primary key (id,name,sex)
);
2.已有表修改为组合索引alter table 表名 add index index_name (name,sex,number);
*如果执行上面操作提示表不能有多个主键错误时,需要先清理主键约束,再执行添加。alter table 表名 DROP PRIMARY KEY add primary key (字段1,字段2,字段3);
3.适用场景举例
文章管理中的章节、小节、页码字段形成组合索引,索引先会找到章节再找到对应的小节,这样就提高了查询的效率。
-
mysql的主键规则_MySQL主键(PRIMARY KEY)
2021-01-19 15:04:44“主键(PRIMARY KEY)”的完整称呼是“主键约束”。MySQL 主键约束是一个列或者列...主键可以是表中的某一列或者多列的组合,其中由多列组合的主键称为复合主键。主键应该遵守下面的规则:每个表只能定义一个主键。主... -
mysql中的主键关键字_MySQL主键(PRIMARY KEY)
2021-01-19 00:04:40“主键(PRIMARY KEY)”的完整称呼是“主键约束”。MySQL主键约束是一个列或者...主键可以是表中的某一列或者多列的组合,其中由多列组合的主键称为复合主键。主键应该遵守下面的规则:每个表只能定义一个主键。主键... -
MySQL主键
2020-03-13 16:44:52“主键(PRIMARY KEY)”的完整称呼是“主键约束”。MySQL 主键约束是一个列或者列的...主键可以是表中的某一列或者多列的组合,其中由多列组合的主键称为复合主键。 主键应该遵守下面的规则: 每个表只能定义一个... -
Mysql 主键
2019-05-20 09:59:00【1】主键 主键(PRIMARY KEY),也称“主键约束”。 MySQL主键约束是一个列或者多个列的组合,其值能唯一地标识表中的...主键可以是表中的某一列或者多列的组合,其中由多列组合的主键称为复合主键。 【3】主... -
mysql设置主键_mysql如何添加主键?
2021-01-18 18:15:25“主键(PRIMARY KEY)”的完整称呼是“主键约束”。MySQL 主键约束是一个列或者列的组合,其值能唯一地标识表中的每一行。...主键可以是表中的某一列或者多列的组合,其中由多列组合的主键称为复合主键。主键应该... -
mysql主键_MySQL之主键(PRIMARY KEY)
2021-01-18 18:05:10定义:主键(PRIMARY KEY)”的完整称呼是“主键约束”。MySQL主键约束是一个列...主键可以是表中的某一列或者多列的组合,其中由多列组合的主键称为复合主键。主键应该遵守下面的规则:每个表只能定义一个主键。主键... -
mysql如何添加主键_mysql如何添加主键?
2021-01-19 03:12:27“主键(PRIMARY KEY)”的完整称呼是“主键约束”。MySQL 主键约束是一个列或者列的组合,其值能唯一地标识表中的每一行。...主键可以是表中的某一列或者多列的组合,其中由多列组合的主键称为复合主键。主键应该... -
mysql 联合主键重复数据库_phpmyadmin主键能重复么
2021-01-27 23:18:42phpmyadmin主键能重复么主键(PRIMARY KEY)的完整称呼是“主键约束”。...主键可以是表中的某一列或者多列的组合,其中由多列组合的主键称为复合主键。主键应该遵守下面的规则:每个表只能定义一个主键... -
mysql主键中文_MySQL之主键(PRIMARY KEY)
2021-01-28 04:08:06定义:主键(PRIMARY KEY)”的完整称呼是“主键约束”。MySQL主键约束是一个列...主键可以是表中的某一列或者多列的组合,其中由多列组合的主键称为复合主键。主键应该遵守下面的规则:每个表只能定义一个主键。主键... -
MySQL||主键(primary key)及主键约束
2019-07-24 22:43:02主键 主键(PRIMARY KEY)”的完整称呼是“主键约束”。MySQL主键约束是一个列或者列的组合,...主键可以是表中的某一列或者多列的组合,其中由多列组合的主键称为复合主键。主键应该遵守下面的规则: 每个表只能... -
在mysql中添加主键_mysql如何添加主键?
2021-02-02 19:11:01“主键(PRIMARY KEY)”的完整称呼是“主键约束”。MySQL 主键约束是一个列或者列的组合,其值能唯一地标识表中的每一行。...主键可以是表中的某一列或者多列的组合,其中由多列组合的主键称为复合主键。主键应该... -
mysql创建表怎么设置主键_mysql如何添加主键?
2021-01-30 07:47:54“主键(PRIMARY KEY)”的完整称呼是“主键约束”。MySQL 主键约束是一个列或者列的组合,其值能唯一地标识表中的每一行。...主键可以是表中的某一列或者多列的组合,其中由多列组合的主键称为复合主键。主键应该... -
Oracle数据库联合主键
2018-09-13 01:25:03主键:在Oracle中,主键指能唯一标识一条记录的单个数据表列或联合的数据表列(联合主键|复合主键)。主键用到的数据 表列数据不能包含空值。而且,一张表只能包含一个主键。 2、作用: 数据表的联合主键组合... -
MySQL主键(PRIMARY KEY)
2020-12-14 18:14:32MySQL主键约束是一个列或者列的组合,其值能唯一地标识表中的每一行。这样的一列或多列称为表的主键,通过它可以强制表的实体完整性。 1、在创建表时设置主键约束 在字段后面直接添加PRIMARY KEY 语法 PRIMARY KEY ... -
mysql 中的pri_关于MySQL中 主键 pri mul
2021-01-19 11:43:05如果Key是空的, 那么该列值的可以重复, 表示该列没有索引, 或者是一个非唯一的复合索引的非前导列2. 如果Key是PRI, 那么该列是主键的组成部分3. 如果Key是UNI, 那么该列是一个唯一值索引的第一列(前导列),并别不能... -
mysql增加primary key_MySQL主键(PRIMARY KEY)
2021-03-04 01:39:22“主键(PRIMARY KEY)”的完整称呼是“主键约束”。MySQL主键约束是一个列...主键可以是表中的某一列或者多列的组合,其中由多列组合的主键称为复合主键。主键应该遵守下面的规则:每个表只能定义一个主键。主键值... -
mysql 列值为空 可以建立索引_MySQL索引有哪些分类,你真的清楚吗?
2021-01-23 10:17:17〇、MySQL索引都有哪些分类?... 按字段个数分类可分为:单列索引、联合索引(复合索引、组合索引)。一、按数据结构分类MySQL索引按数据结构分类可分为:B+tree索引、Hash索引、Full-text索引。-|... -
php mysql primary key_MySQL主键(PRIMARY KEY)
2021-01-20 00:02:30“主键(PRIMARY KEY)”的完整称呼是“主键约束”。MySQL 主键约束是一个列或者...主键可以是表中的某一列或者多列的组合,其中由多列组合的主键称为复合主键。主键应该遵守下面的规则:每个表只能定义一个主键。主键... -
MySQL之主键约束(PRIMARY KEY语句)
2019-08-26 16:32:19主键可以是表中的某一列或者多列的组合,其中由多列组合的主键称为复合主键。主键应该遵守下面的规则: 每个表只能定义一个主键。 主键值必须唯一标识表中的每一行,且不能为 NULL,即表中不可能存在两行数... -
MYSQL-语法3-----主键、外键、约束(5 )
2020-01-02 20:28:14主键 主键(PRIMARY KEY)”的完整称呼是“主键约束”。MySQL 主键约束是一个列或者列的...主键可以是表中的某一列或者多列的组合,其中由多列组合的主键称为复合主键。主键应该遵守下面的规则: 每个表只能定义一... -
mysql_数据库设计 – 有效的mysql表/索引设计为3500万行表,有200个对应列(双),可以查询其中的任意组合...
2021-01-21 17:09:52我正在寻找有关以下情况的表/索引设计的建议:我有一个大表(股票价格历史数据,InnoDB,3500万行和增长)与复合主键(assetid(int),日期(日期)).除了定价信息,我还有200个需要与每条记录对应的双值.CREATE TABLE `... -
MySQL中的代理键_mysql – 应该创建代理键而不是复合键吗?
2021-01-28 07:56:22如果它们有用,则约定很好“SQL Anti...如果它是复合,这意味着列的值的每个组合必须是唯一的>最小.这意味着,它不能被减少(即,如果它是复合,在不失去唯一性的情况下不能省略列)>单身.不能定义其他主键,每个... -
MySQL学习 ----- 表的约束
2019-06-08 13:19:39主键 (primary key) 是一个列或者多个列的组合,其值能唯一的标志表中的一行。主键的关键字primary key。 主键的条件 每个表只能定义一个主键 主键标识表中唯一的一行,该2行的内容不能为NULL。 多个列可以组成...