主键约束(PRIMARY KEY, PK)

主键约束(PRIMARY KEY, PK)

主键约束=非空约束+唯一约束。也就是说设置为主键列,不能够为空,不能够重复。

范例:定义主键约束

	--删除数据表
DROP TABLE member PURGE;
--清空回收站
PURGE RECYCLEBIN;
--创建数据表
CREATE TABLE member(
	mid  NUMBER,
	name VARCHAR2(20)  NOT NULL,
	CONSTRAINT pk_mid PRIMARY KEY (mid)
);
--测试数据
INSERT INTO member(mid,name) values (1,'韩信');
INSERT INTO member(mid,name) values (2,'李白');
--提交事务
COMMIT;

范例:增加正确的数据

INSERT INTO  member(mid,name)values (3,'鲁班');

主键约束(PRIMARY KEY, PK)_第1张图片

范例:增加错误的数据------将主键内容设置为null

INSERT INTO member (mid,name) values (null,'狄仁杰');

主键约束(PRIMARY KEY, PK)_第2张图片

范例:增加错误的数据------主键信息重复

INSERT INTO member (mid,name) VALUES (1,'虞姬');

主键约束(PRIMARY KEY, PK)_第3张图片

通过以上信息可以确定,主键就是非空约束和主键约束的集合体。

在99%的情况下一张表中一般只定义一个主键信息,从SQL语法的角度来讲是允许定义多个主键,这样的操作称为复合主键。如果是复合主键,则表示若干个列的内容完全重复的时候才称为违反约束。

范例:复合主键

--删除数据表
DROP TABLE member PURGE;
--清空回收站
PURGE RECYCLEBIN;
--创建数据表
CREATE TABLE member(
	mid  NUMBER,
	name VARCHAR2(20)  NOT NULL,
	CONSTRAINT pk_mid PRIMARY KEY (mid,name)
);
--测试数据
INSERT INTO member(mid,name) values (1,'韩信');
INSERT INTO member(mid,name) values (2,'李白');
--提交事务
COMMIT;

此时将mid与name两个字段同时定义为主键,所以当两个字段完全重复的时候才违反约束。

范例:增加正确的数据

insert into member(mid,name) values (1,'关羽');
insert into member(mid,name) values (2,'妲己');

主键约束(PRIMARY KEY, PK)_第4张图片

范例:增加错误数据

insert into member (mid,name) values(1,'关羽');

主键约束(PRIMARY KEY, PK)_第5张图片

数据库设计的第一原则:不要使用复合主键。即:一张表就一个主键。

你可能感兴趣的:(数据库#Oracle)