MySQL中PK和NN的作用及区别mysql中pknn

在MySQL中,PK和NN是两个常用的术语。PK代表主键(Primary Key),而NN代表非空(Not Null)。在本文中,我们将重点讨论这两个术语的作用和区别。1. 主键(PK)主键是指用于标识表中唯一记录的一列或多列。每张表都应该有一个主键,它可以用来查询、修改和删除表中的记录。主键通常是一个自增长的...
MySQL中PK和NN的作用及区别mysql中pknn
MySQL中PK和NN的作用及区别
在MySQL中,PK和NN是两个常用的术语。PK代表主键(Primary Key),而NN代表非空(Not Null)。在本文中,我们将重点讨论这两个术语的作用和区别。
1. 主键(PK)
主键是指用于标识表中唯一记录的一列或多列。每张表都应该有一个主键,它可以用来查询、修改和删除表中的记录。主键通常是一个自增长的数字列,也可以是一个固定的唯一标识符。
在MySQL中,可以通过以下代码来创建一个主键:
CREATE TABLE example (
id INT NOT NULL AUTO_INCREMENT,
name VARCHAR(50) NOT NULL,
PRIMARY KEY (id)
);
在上面的代码中,id列被指定为主键。当我们插入数据时,id列的值将按照1、2、3……的顺序自动增加。如果尝试插入重复的值,MySQL将会抛出错误。
使用主键可以有效地保证数据的唯一性和完整性。此外,主键还会影响MySQL的性能,因为它们可以作为索引来优化查询操作。
2. 非空(NN)
非空是指限制某个列的值不为空。在MySQL中,我们可以使用NOT NULL关键字来创建一个非空列。例如:
CREATE TABLE example (
id INT NOT NULL,
name VARCHAR(50) NOT NULL
);
在上面的代码中,id和name列都被指定为非空。这意味着您无法向这些列插入空值。如果尝试这样做,MySQL将会抛出错误。
使用非空列可以有效地保证数据的完整性。它们还可以优化查询操作,因为它们可以作为索引来使用。
3. PK和NN的区别
主键和非空列有一些共同点,但它们也有一些区别。
主键可以包含空值(NULL)。如果使用自增长列作为主键,当你插入一行数据只给了主键的值,其他列会自动填充默认值。例如:
INSERT INTO example (id) VALUES (NULL);
在上面的代码中,我们只向id列插入了一个空值(NULL),其他列将会自动填充默认值。
然而,非空列不允许包含空值。如果您尝试向非空列中插入空值,MySQL将会抛出错误。
一张表只能有一个主键,而非空列可以有多个。
主键具有唯一性约束,因此不允许重复值。非空列没有这个限制,允许多个行具有相同的非空值。
总结
在MySQL中,主键和非空列都是重要的约束,可以用来保证数据的完整性和唯一性。主键是一列或者多列可以用于唯一标识表中每个记录的列。非空列则用于限制某个列的值不为空。它们都可以用来优化查询操作。这两个约束的区别在于主键必须唯一且可以包含空值,而非空列可以包含多个相同的值但不能包含空值。2024-08-14
mengvlog 阅读 28 次 更新于 2025-09-10 05:16:12 我来答关注问题0
  • 在MySQL中,PK和NN是两个常用的术语。PK代表主键(Primary Key),而NN代表非空(Not Null)。在本文中,我们将重点讨论这两个术语的作用和区别。1. 主键(PK)主键是指用于标识表中唯一记录的一列或多列。每张表都应该有一个主键,它可以用来查询、修改和删除表中的记录。主键通常是一个自增长的...

  •  云易网络科技 MySQL中的NN指的是什么mysql中nn是什么

    在MySQL中,NN指的是Not Null,用于定义一个列是否允许为空。当一个列被定义为NN时,该列的值不能为空,也就是说该列必须要有一个有效值。NN是MySQL中最常用的数据类型之一,特别是在控制数据的完整性方面。使用NN的优点 1.数据完整性 数据库的数据完整性是一项重要的工作。使用NN可以确保数据库...

  •  房庆佑 mysql 的 pk nn uq b un zf ai g 什么意思

    PK: primary key 主键 - NN: not null 非空 - UQ: unique 唯一 - AI: auto increment 自增 - BIN: binary 二进制(比text更大的二进制数据)- UN: unsigned 整数 - ZF: zero fill 值中最有意义的字节总为0,并且不保存。ps: ZF个人理解指的是带有小数占位符的数据相当于金额类型的数据...

  • nnoDB 是 MySQL 上第一个提供外键约束的数据存储引擎,除了提供事务处理外,InnoDB 还支持行锁,提供和 Oracle 一样的一致性的不加锁读取,能增加并发读的用户数量并提高性能,不会增加锁的数量。InnoDB 的设计目标是处理大容量数据时最大化性能,它的 CPU 利用率是其他所有基于磁盘的关系数据库引擎中...

  •  myppeter 在Linux环境下,APACHE和PHP配置文件怎么设置(RPM包)

    1) 建立用户及组,如果在/etc/passwd中已有该用户,则下列操作可以省略 shell> groupadd mysql shell> useradd -g mysql mysql 2) 解压、配置编译安装 shell> gunzip < mysql-VERSION.tar.gz | tar -xvf - shell> cd mysql-VERSION shell> ./configure --prefix=/usr/local/mysql #配置(指...

檬味博客在线解答立即免费咨询

mySQL相关话题

Copyright © 2023 WWW.MENGVLOG.COM - 檬味博客
返回顶部