Primary key 与Unique Key都是唯一性约束。但二者有很大的区别:
1、Primary key的1个或多个列必须为NOT NULL,如果列为NULL,在增加PRIMARY KEY时,列自动更改为NOT NULL。而UNIQUE KEY 对列没有此要求。
2、一个表只能有一个PRIMARY KEY,但可以有多个UNIQUE KEY。
下面以
测试
说明:
SQL> create
table
t (a int,b int,c int,d int);
Table created.
SQL> desc t
Name Null? Type
----------------------------------------- -------- -----------
A NUMBER(38)
B NUMBER(38)
C NUMBER(38)
D NUMBER(38)
SQL> alter table t add constraint pk_t primary key (a,b);
Table altered.
SQL> desc t
Name Null? Type
----------------------------------------- -------- ----------------
A NOT NULL NUMBER(38)
B NOT NULL NUMBER(38)
C NUMBER(38)
D NUMBER(38)
可以看到A、B两个列都自动改为了NOT NULL
SQL> alter table t modify (a int null);
alter table t modify (a int null)
*
ERROR at line 1:
ORA-01451: column to be modified to NULL cannot be modified to NULL
可以看到,列A不允许改为NULL
SQL> alter table t drop constraint pk_t;
Table altered.
SQL> alter table t add constraint uk_t_1 unique (a,b);
Table altered.
SQL> desc t
Name Null? Type
----------------------------------------- -------- -----------
A NUMBER(38)
B NUMBER(38)
C NUMBER(38)
D NUMBER(38)
我们看到列A又变回了NULL。
注意到,在删除主键时,列的NULLABLE会回到原来的状态。如果在创建主键后,对原来为NULL的主键列,显式设为NOT NULL,在删除主键后仍然是NOT NULL。比如在创建主键后,执行下面的操作,可以看到:
SQL> alter table t modify (b int not null);
Table altered.
SQL> alter table t drop constraint pk_t;
Table altered.
SQL> desc t
Name Null? Type
----------------------------------------- -------- ----------
A NUMBER(38)
B NOT NULL NUMBER(38)
C NUMBER(38)
D NUMBER(38)
再做如下的实验:
SQL> drop table t;
Table dropped.
SQL> create table t (a int,b int,c int,d int);
Table created.
SQL> alter table t add constraint uk_t_1 unique (a,b);
Table altered.
SQL> alter table t add constraint uk_t_2 unique (c,d);
Table altered.
可以看到可以增加两个UNIQUE KEY。看看能不能增加两个主键:
SQL> alter table t add constraint pk_t primary key (c);
Table altered.
SQL> alter table t add constraint pk1_t primary key (d);
alter table t add constraint pk1_t primary key (d)
*
ERROR at line 1:
ORA-02260: table can have only one primary key
由此可以看到一个表只能有一个主键。
SQL> alter table t drop constraint pk_t;
Table altered.
SQL> insert into t (a ,b ) values (null,null);
1 row created.
SQL> /
1 row created.
SQL> insert into t (a ,b ) values (null,1);
1 row created.
SQL> /
insert into t (a ,b ) values (null,1)
*
ERROR at line 1:
ORA-00001: unique constraint (SYS.UK_T_1) violated
SQL> insert into t (a ,b ) values (1,null);
1 row created.
SQL> /
insert into t (a ,b ) values (1,null)
*
ERROR at line 1:
ORA-00001: unique constraint (SYS.UK_T_1) violated
主键和唯一键约束是通过参考索引实施的,如果插入的值均为NULL,则根据索引的原理,全NULL值不被记录在索引上,所以插入全NULL值时,可以有重复的,而其他的则不能插入重复值。
Primary key 与Unique Key都是唯一性约束。但二者有很大的区别:1、Primary key的1个或多个列必须为NOT NULL,如果列为NULL,在增加PRIMARY KEY时,列自动更改为NOT NULL。而UNIQUE KEY 对列没有此要求。2、一个表只能有一个PRIMARY KEY,但可以有多个UNIQUE KEY。下面以测试说明:SQL> create
1. 一个表只能有一个
PRIMARY
KEY
,但是可以有多个UNIQQUE
KEY
。
唯一约束设置唯一约束的列允许有空值,但是只能有一个空值。
主键约束在一个表中只能有一个,且不允许有空值。
2.
key
: 主要是用来加快查询速度的,
key
是数据库的物理结构:约束和索引。
3.
primary
key
:主键约束,并建立一个主键索引。主键必须唯一,非
NULL
,
4.
unique
key
: 唯一约束并在这个
key
上建立一个唯一索引。主要是用来防止数据插入的时候重复的。
5. foreign.
数据库创建过程中,建立了若干个column之后,就需要选择其中的一个column为
primary
key
本文简单地说明:1.什么是
primary
key
2.如何选择一个好的
primary
key
2.什么是
primary
key
3.选择一个好的
primary
key
现在我们正在数据库中创建一张最常见用户表user
table
用来存储用户的账号和密码...
primary
key
是唯一标识一条记录,就像人的身份证号码,每个人只有一个也是唯一的一个,不能为空。
unique
key
也是唯一的,不允许重复,但是可以为空,可以为一个表中的多个字段定义
unique
。
MySQL
的CRUD操作数据库约束表约束非空约束 NOT
NULL
唯一约束
UNIQUE
主键约束
PRIMARY
KEFOREIGN
KEY
CHECK三级约束类型
数据库约束
表约束是在创建表的时候,设计一些表的约束条件,用来保证数据的合法性和数据的正确性。
常见表约束:
可以创建多个索引的。
需要开发人员根据实际的用途以及数据库中记录的情况,来进行判断。
通常来说,表的索引越多,其查询的速度也就越快。但是,表的
insert
/update速度则会降低。这主要是因为,在更新记录的同时需要更新相关的索引信息。为此,到底在表中创建多少索引合适,就需要在这个更新速度与查询速度之间取得一个均衡点。
如对于一些数据仓库数据库系统,其主要用来进行查询。相...
https://juejin.cn/post/6844903856388718606#heading-4
https://my.oschina.net/xiaoyoung/blog/3046779
仅做个人备份,浏览请看原文
查找:假设要查找数据项6
怎样选择聚集索引
非聚集索引
查找:获取NAME=Jake的数据
假设我们有一张这样的表,表中有如图2-0的数据
CREATE
TABLE
`user` (
`ID` bigi..
MySQL
中的
primary
key
和
unique
key
都是用来保证数据表中数据的唯一性的。
primary
key
是一种特殊的
unique
key
,它是用来标识每一行数据的唯一性的。一个数据表只能有一个
primary
key
,它可以由一个或多个列组成。
primary
key
可以自动为每一行数据生成一个唯一的标识符,这个标识符可以用来快速查找和修改数据。
unique
key
也是用来保证数据表中数据的唯一性的,但它不同于
primary
key
的是,它可以有多个。
unique
key
可以由一个或多个列组成,它可以用来保证某些列的值在数据表中是唯一的。
unique
key
可以用来加速数据的查找和修改,但它不能自动为每一行数据生成一个唯一的标识符。