primarykey(mysql primary key有什么作用)

本文目录
- mysql primary key有什么作用
- Oracle primary key和unique key的区别与联系
- unique和primary key的区别
- 数据库里的primary key(sid,cid)是什么意思
- MYSQL的primary key和unique key的区别
- primary key与UNIQUE有什么区别
- 数据库中,primary key与unique的区别
mysql primary key有什么作用
primary key主键,是一个标志,标志着这一行的内容不能重复(唯一),而且必须是非空的(也就是不能出现null或空白的状态)。
一般来说主键是这一行数据的最基础数据(并不是说最基础数据都是主键),根据主键你可以找到其他的相关信息,但是一般来说反过来可能就会出现问题。
举例:几个人姓名可能一样,长相可能一样,住址可能一样(这个真的出现过,假设一个人买房后重新入户换了身份证,住址变了,但是前一个房主虽然卖了房子,但是并没有去变更,也就出现了,住址一样),出生日期一样,但是有一个东西一定不一样,就是身份证号码,这个身份证号码就是唯一标识他们中每一个人的标志,这个标志是唯一的,而且是非空的(应该没有人没有身份证号的,不然他什么都干不了)。
那么不加会怎么样,不加不会怎么样,该用还是用,很多表都没有主键,也是能用的,要不要加主键要看实际情况,并不能一概而论。
举例来说,还是上面身份证的例子,如果同一个医院一天生了10个小孩,这10个小孩都要马上户口,也就是需要身份证号,如果没有主键的限制,那么可能就会出现两个小孩身份证号一样的情况,若干年后,一个小孩出了事故没了,户口注销,那么因为是根据身份证号查询的,那么跟他同样身份证号的小孩的户口也会被注销,这样的话,这个还活着的小孩,以后不管干什么都干不了,因为查无此人。(如果加了主键,那么这种情况就不会发生)
但是如果是一张交易表,那么就不需要主键,一个人因为某种原因分三次买了同样的商品,那么交易表就会记录三次,这时除了交易时间不同以外,其他的内容全部相同,这个就可以没有什么主键,仅仅是一个记录的作用,在后面的汇总、统计、分析表中可能存在主键,但是交易表中是可以没有主键的。(当然其实也是有主键的,比如订单号一类的,不然万一客户要取消交易,那么这三个中要取消的到底是哪一个就说不清楚了)
如果上面的理解不了,我们换一个思路,现实中你去商店买本,15分钟内买了3个,每5分钟买一个,那么你的交易信息中除了时间以外,其他的信息是完全一样的,然后你去退其中的一个本(我们假设商店给退),你认为商店会去确认你退的到底是哪一次买的本子吗?肯定不会,只要他确定你退的是在这里买的本子就可以了。(这个交易的过程其实也是一张表,一张存在于人脑中的表,对于双方而言唯一不同点就是时间,但是有必要去纠结时间吗,没必要,所以就这个交易(这里是重点,就这个交易来说,不要提人没换这是这个交易以外的事情)也就没有主键的概念)
最后还是那句话,表中有没有主键,需不需要有主键,看需求和设计的需要,如果需要有,那么就应该有,如果不需要有那么没有也可以,我们经常会设计一些没有主键的表,很多都是流程表交易表一类的,这类表经常没有主键一说(有标识,但是标识并不是主键)。
Oracle primary key和unique key的区别与联系
primary key与unique key都是唯一性约束。但二者有很大的区别:
1.作为primary key的1个或多个列必须为NOT NULL,
如果建表时此列设为NULL,在增加PRIMARY KEY时,列自动更改为NOT NULL。
而unique key约束的列可以为null,这是primary key与unique key最大的区别。
2.一个表只能有一个primary key(单列或多列,多列主键叫联合主键),但可以有多个unique key。
实例1:
create table t(c1 number(2),c2 date,c3 varchar2(5),c4 int);
desc t;
Name Type Nullable Default Comments
---- ----------- -------- ------- --------
C1 NUMBER(2) Y
C2 DATE Y
C3 VARCHAR2(5) Y
C4 INTEGER Y
//
实例2:添加primary key
alter table t add constraint t_pk primary key(c1,c2);
desc t;
Name Type Nullable Default Comments
---- ----------- -------- ------- --------
C1 NUMBER(2)
C2 DATE
C3 VARCHAR2(5) Y
C4 INTEGER Y
我们看到,将c1,c2列设为联合主键后,他们变为not null;
如果在建表时就指定了主键的话,主键列将会默认为not null。
//
如果我们在添加一个primary key,那么我们将会得到一个错误:
alter table t add constraint t_pk_2 primary key(c3,c4)
ORA-02260: table can have only one primary key
//
实例3:添加unique key
alter table t add constraint unique_key_t unique(c3,c4);
实例4:添加数据
insert into t(c1,c2,c3,c4)
values(10,sysdate,’abc’,3);
1 row inserted
//
insert into t(c1,c2,c3,c4)
values(11,sysdate,’abc’,3);
ORA-00001: unique constraint (SCOTT.UNIQUE_KEY_T) violated
我们看到,添加的第二条数据违反了刚刚创建的唯一键约束;
将unique_key_t删除,添加就能成功了。
实例5:删除unique key
alter table t drop constraint unique_key_t;
insert into t(c1,c2,c3,c4)
values(11,sysdate,’abc’,3);
1 row inserted
//
实例6:删除primary key
alter table t drop constraint t_pk;
Table altered
//
desc t;
Name Type Nullable Default Comments
---- ----------- -------- ------- --------
C1 NUMBER(2) Y
C2 DATE Y
C3 VARCHAR2(5) Y
C4 INTEGER Y
删除主键约束后,c1,c2列由恢复了原来的默认值null。
//
3.其实primary key也是unique key,被primary key约束的列not null,并且不允许重复
实例7:
truncate table t;
Table truncated
//
alter table t add constraint t_pk primary key(c1,c2);
Table altered
//
insert into t(c1,c2,c3,c4)
values(1,to_date(’2011-01-01’,’yyyy-mm-dd’),’csdn’,10);
1 row inserted
//
insert into t(c3,c4)
values(’china’,1);
ORA-01400: cannot insert NULL into (“SCOTT“.“T“.“C1“)
//
insert into t(c1,c2,c3,c4)
values(1,to_date(’2011-01-01’,’yyyy-mm-dd’),’csdn’,10);
ORA-00001: unique constraint (SCOTT.T_PK) violated
这里,我们看到primary key t_pk变成了unique约束,证明了主键约束也是唯一约束。
unique和primary key的区别
unique Key是唯一键,而Primary key是主键
Primary key 与Unique Key都是唯一性约束。但二者有很大的区别:
1、Primary key的1个或多个列 必须为NOT NULL,如果列为NULL,在增加PRIMARY KEY时,列自动更改为NOT NULL。而UNIQUE KEY 对列没有此要求。
2、一个表只能有一个PRIMARY KEY,但可以有多个UNIQUE KEY。
数据库里的primary key(sid,cid)是什么意思
primary key(sid,cid)是联合主键,也就是说通过字段sid和cid来确认一条记录的唯一性。
解释:”primary key“在数据库中的意思是主键,用来确保记录的唯一性,这样的例子很多,如身份证号、学生证号等都是这样。联合主键的话,意思就是一个字段无法确认唯一性,要通过两个或者多个字段来确认,如某人的数学成绩,那么就是学号和数学学科的编号来确认某人的数学成绩。
MYSQL的primary key和unique key的区别
Primary key 与Unique Key都是唯一性约束。但二者有很大的区别:
1、Primary key的1个或多个列必须为NOT NULL,如果列为NULL,在增加PRIMARY KEY时,列自动更改为NOT NULL。而UNIQUE KEY 对列没有此要求。
2、一个表只能有一个PRIMARY KEY,但可以有多个UNIQUE KEY。
primary key与UNIQUE有什么区别
primary key 与 unique 的区别 定义了 UNIQUE 约束的字段中不能包含重复值, 可以为一个或多个字段定义 UNIQUE 约 束。因此,UNIQUE 即可以在字段级也可以在表级定义, 在 UNIQUED 约束的字段上可 以包含空值。 ORACLE 自动会为具有 PRIMARY KEY 约束的字段(主码字段)建立一个唯一 索引和一个 NOT NULL 约束,定义 PRIMARY KEY 约束时可以为它的索引; UNIQUED 可空,可以在一个表里的一个或多个字段定义;PRIMARY KEY 不可空不可重 复,在一个表里可以定义联合主键; 简单的说,primary key = unique + not null unique 就是唯一, 当你需要限定你的某个表字段每个值都唯一,没有重复值时使用。 比如说, 如果你有一个 person 表,并且表中有个身份证的 column,那么你就可以指定该字段为 unique。 从技术的角度来看,Primary Key 和 Unique Key 有很多相似之处。但还是有以下 区别: 一、作为 Primary Key 的域/域组不能为 null,而 Unique Key 可以。 二、在一个表中只能有一个 Primary Key,而多个 Unique Key 可以同时存在。 更大的区别在逻辑设计上。Primary Key 一般在逻辑设计中用作记录标识,这也是设置 Primary Key 的本来用意,而 Unique Key 只是为了保证域/域组的唯一性。 oracle 的 constraint 中有两种约束,都是对列的唯一性限制――unique 与 primary key,但 其中是有区别的: 1、unique key 要求列唯一,但不包括 null 字段,也就是约束的列可以为空且仅要求列中的 值除 null 之外不重复即可; 2、 primary key 也要求列唯一, 同时又限制字段的值不能为 null, 相当于 Primary Key=unique + not null。 创建一个 primary key 和 unique key 都会相应的创建一个 unique index。 0primary key 的语法:alter table table name add constraint key name primary key( columns); unique key 的语法:alter table table name add constraint key name unique( columns); 一个表只能有一个主键,但是可以有好多个 UNIQUE,而且 UNIQUE 可以为 NULL 值,如 员工的电话号码一般就用 UNIQUE,因为电话号码肯定是唯一的,但是有的员工可能没有 电话。 主键肯定是唯一的,但唯一的不一定是主键; 不要总把 UNIQUE 索引和 UNIQUE 约束混为一谈 1、primary key = unique + not null 2、唯一约束和主键一样都是约束的范畴,而且都可以作为外键的参考,不同的是,一张表 只能有一个主键 3、主键和唯一约束的创建需要依靠索引,如果在创建主键或唯一约束的时候没有已经建好 的索引可以使用的话,Oracle 会自动建立一个唯一的索引。
数据库中,primary key与unique的区别
primary key与unique key都是唯一性约束。但二者有很大的区别:
1.作为primary key的1个或多个列必须为NOT NULL(有的数据库需要明确指明,有的会自动设置为NOT NULL)
而unique key约束的列可以为null,这是primary key与unique key最大的区别。
2.一个表只能有一个primary key(单列或多列,多列主键叫联合主键),但可以有多个unique key。

更多文章:
majority of(the majority of 和 a majority of的区别以及用法例句)
2026年10月11日 07:40
another time(another time和other time的区别)
2026年10月11日 05:00








