博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
12、浅谈MySQL主键
阅读量:6980 次
发布时间:2019-06-27

本文共 1233 字,大约阅读时间需要 4 分钟。

以下内容摘引转自[1]

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

1、声明主键的方法:

您可以在创建表的时候就为表加上主键,如:

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

也可以更新表结构时为表加上主键,如:

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

/*

创建一个qq表,将qq_id设为主键,且没有对其进行NOT NULl约束

*/

create table qq(

qq_id int(10),

nick_name varchar(255) not null,

primary key (qq_id))

/*

插入一条数据,将qq号设为10000(咱也幻想一下),昵称设为"simaopig"

*/

INSERT INTO qq( qq_id, nick_name )

VALUES (

'10000', 'simaopig');

2、示例

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

3、主键也是索引:

刚才已经说了,主键其实也是索引,甚至在MySQL的术语里面“键”就等于“索引”,所以“外键”一定要先设为“索引”。所以主键也应该和索引一样,既可以作用于单独的字段,又可以作用于多个字段。

举个简的例子吧,我住3单元,501室,我叫小小子,那么只有3单元501室才能在本小区表里面唯一确定我家。因为2单元,501室住着的可能也是个小小子,所以只有两个字段才能唯一确定我,也就是说可以二者组合作为主键。组合的主键,每个列都会隐含定义NOT NULL约束,且其二者加在一起被定义了UNIQUE 惟一约束。

/*

创建防火墙表,将host port组合设为主键,注意我没有将portNOT 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');

原文:

[1] 浅谈MySQL主键 http://zhumeng8337797.blog.163.com/blog/static/100768914201110245101552/

转载地址:http://ioupl.baihongyu.com/

你可能感兴趣的文章
MySQL5.6.16二进制源码安装详解及一键安装实现
查看>>
ARP(Accounting Resource Planning)项目感想
查看>>
Linux系统基础-管理之用户、权限管理
查看>>
20170507Linux七周二次课 io监控free ps 网络状态 抓包
查看>>
CentOS6.3编译安装Nginx1.4.7 + MySQL5.5.25a + PHP5.3.28
查看>>
PHP下载/采集远程图片到本地
查看>>
关于PHP程序员技术职业生涯规划
查看>>
python requests返回的json对象用json.loads()时转为字典时编码变为了unicode
查看>>
各大浏览器 CSS3 和 HTML5 兼容速查表
查看>>
使用可信证书为windows RDP服务提供加密
查看>>
报错 org.springframework.beans.factory.BeanCreationException
查看>>
IOS分享扩展使用JS脚本
查看>>
Hibernate 的 session.load()使用方法
查看>>
$httpprovider指令中拦截器interceptors的使用介绍
查看>>
gulp插件之browser-sync安装报错
查看>>
mongodb 连接和备份
查看>>
Velocity文档(3)
查看>>
SQL中的case when then else end用法
查看>>
通过data:image/png;base64把图片直接写在src里
查看>>
Android TextView的一些小知识
查看>>