最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501
当前位置: 首页 - 科技 - 知识百科 - 正文

MySQL零散笔记--主键_MySQL

来源:懂视网 责编:小采 时间:2020-11-09 17:53:46
文档

MySQL零散笔记--主键_MySQL

MySQL零散笔记--主键_MySQL:Reference: 《浅谈MySQL主键》 作者:simaopig 主键没有着明确的概念定义,其是索引的一种,并且是唯一性索引的一种,且必须定义为“PRIMARY KEY”。声明方法: CREATE TABLE tbl_name ([字段描述省略...], PRIMARY KEY
推荐度:
导读MySQL零散笔记--主键_MySQL:Reference: 《浅谈MySQL主键》 作者:simaopig 主键没有着明确的概念定义,其是索引的一种,并且是唯一性索引的一种,且必须定义为“PRIMARY KEY”。声明方法: CREATE TABLE tbl_name ([字段描述省略...], PRIMARY KEY

Reference: 《浅谈MySQL主键》 作者:simaopig


主键没有着明确的概念定义,其是索引的一种,并且是唯一性索引的一种,且必须定义为“PRIMARY KEY”。

声明方法:

CREATE TABLE tbl_name ([字段描述省略...], PRIMARY KEY(index_col_name));

或者

CREATE TABLE tbl_name( id INT(10) PRIMARY KEY |…);

或者更新表结构:

ALTER TABLE tbl_name ADD PRIMARY KEY (index_col_name,…);

主键被认为是NOT NULL和UNIQUE约束最好的结合。如果这些列没有被明确地定义为NOT NULL,MySQL会隐含地定义这些列。

同时,主键也是索引。索引可以用于多字段,主键也一样,既可以作用于单独的字段,又可以作用于多个字段。组合的主键,每个列都会隐含定义NOT NULL约束,且其二者加在一起被定义了UNIQUE 惟一约束。

例子代码:一个防火墙,由host和port组合确定一个防火墙

/*
创建防火墙表,将host 和port组合设为主键,注意我没有将port设NOT NULL约束
*/
create table firewall(
host varchar(11) not null,
port smallint(4),
access enum('deny', 'allow') not null,
primary key (host,port)
)
/* 
插入一条新的记录,没有啥问题 
1 row(s) inserted. 
*/ 
INSERT INTO firewall ( 
host , 
port , 
access 
) 
VALUES ( 
'202.65.3.87', '21', 'deny' 
);
/* 
插入失败,因为host 加port的主键值202.65.3.87-21已经存在了 
#1062 - Duplicate entry '202.65.3.87-21' for key 'PRIMARY' 
*/ 
INSERT INTO firewall ( 
host , 
port , 
access 
) 
VALUES ( 
'202.65.3.87', '21', 'allow' 
);
/* 
没声明NOT NULl port也不能为NULL 
#1048 - Column 'port' cannot be null 
*/ 
INSERT INTO firewall( host, port, access ) 
VALUES ( 
'192.168.0.1', NULL , 'deny' 
)

host和port都可以重复,但是不能同时重复,因为其是组合主键。且二者都不能被插入NULL,因为其是主键。

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文档

MySQL零散笔记--主键_MySQL

MySQL零散笔记--主键_MySQL:Reference: 《浅谈MySQL主键》 作者:simaopig 主键没有着明确的概念定义,其是索引的一种,并且是唯一性索引的一种,且必须定义为“PRIMARY KEY”。声明方法: CREATE TABLE tbl_name ([字段描述省略...], PRIMARY KEY
推荐度:
标签: 主键 mysql
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top