primarykey(mysql primary key有什么作用)

:暂无数据 2026-09-13 21:10:02 :0

primarykey(mysql primary key有什么作用)

本篇文章给大家谈谈primarykey,以及mysql primary key有什么作用对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录

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。

OK,关于primarykey和mysql primary key有什么作用的内容到此结束了,希望对大家有所帮助。

primarykey(mysql primary key有什么作用)

本文编辑:admin

更多文章:


majority of(the majority of 和 a majority of的区别以及用法例句)

majority of(the majority of 和 a majority of的区别以及用法例句)

这篇文章给大家聊聊关于majority of,以及the majority of 和 a majority of的区别以及用法例句对应的知识点,希望对各位有所帮助,不要忘了收藏本站哦。

2026年10月11日 07:40

汉字机内码查询表(1个汉字的机内码是几位谢谢)

汉字机内码查询表(1个汉字的机内码是几位谢谢)

大家好,关于汉字机内码查询表很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于1个汉字的机内码是几位谢谢的知识点,相信应该可以解决大家的一些困惑和问题,如果碰巧可以解决您的问题,还望关注下本站哦,希望对各位有所帮助!

2026年10月11日 07:20

promote翻译(英语翻译倡导怎么说)

promote翻译(英语翻译倡导怎么说)

其实promote翻译的问题并不复杂,但是又很多的朋友都不太了解英语翻译倡导怎么说,因此呢,今天小编就来为大家分享promote翻译的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!

2026年10月11日 06:30

用手机如何导航?开车用手机导航哪个软件最好

用手机如何导航?开车用手机导航哪个软件最好

今天给各位分享用手机如何导航的知识,其中也会对用手机如何导航进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

2026年10月11日 06:20

多线程技术有什么用(多线程有什么作用)

多线程技术有什么用(多线程有什么作用)

其实多线程技术有什么用的问题并不复杂,但是又很多的朋友都不太了解多线程有什么作用,因此呢,今天小编就来为大家分享多线程技术有什么用的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!

2026年10月11日 05:40

another time(another time和other time的区别)

another time(another time和other time的区别)

大家好,another time相信很多的网友都不是很明白,包括another time和other time的区别也是一样,不过没有关系,接下来就来为大家分享关于another time和another time和other time的区

2026年10月11日 05:00

java开发工具包jdk(JDK是什么意思)

java开发工具包jdk(JDK是什么意思)

其实java开发工具包jdk的问题并不复杂,但是又很多的朋友都不太了解JDK是什么意思,因此呢,今天小编就来为大家分享java开发工具包jdk的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!

2026年10月11日 04:50

mysql 命令(MySQL的基本命令)

mysql 命令(MySQL的基本命令)

大家好,如果您还对mysql 命令不太了解,没有关系,今天就由本站为大家分享mysql 命令的知识,包括MySQL的基本命令的问题都会给大家分析到,还望可以解决大家的问题,下面我们就开始吧!

2026年10月11日 03:00

手机云备份是什么意思?手机上的云备份有什么用 怎么用呢

手机云备份是什么意思?手机上的云备份有什么用 怎么用呢

各位老铁们,大家好,今天由我来为大家分享云备份,以及手机云备份是什么意思的相关问题知识,希望对大家有所帮助。如果可以帮助到大家,还望关注收藏下本站,您的支持是我们最大的动力,谢谢大家了哈,下面我们开始吧!

2026年10月11日 02:40

java遍历map的key(java Map 怎么遍历)

java遍历map的key(java Map 怎么遍历)

大家好,java遍历map的key相信很多的网友都不是很明白,包括java Map 怎么遍历也是一样,不过没有关系,接下来就来为大家分享关于java遍历map的key和java Map 怎么遍历的一些知识点,大家可以关注收藏,免得下次来找不

2026年10月11日 02:20

最近更新

majority of(the majority of 和 a majority of的区别以及用法例句)
2026-10-11 07:40:02 浏览:0
promote翻译(英语翻译倡导怎么说)
2026-10-11 06:30:03 浏览:0
热门文章

标签列表