【数据库初阶】MySQL中表的约束(上)


🎉博主首页: 有趣的中国人

🎉专栏首页: 数据库初阶

🎉其它专栏: C++初阶 | C++进阶 | 初阶数据结构

亲爱的小伙伴们,大家好!在这篇文章中,我们将深入浅出地为大家讲解 MySQL中表的约束 帮助您轻松入门,快速掌握核心概念。

如果文章对您有所启发或帮助,请别忘了 点赞 👍、收藏 🌟、留言 📝 支持!您的每一份鼓励,都是我持续创作的源动力。让我们携手前行,共同进步!

### 文章目录

  • [@[toc]](#文章目录 @[toc] 0. 什么是表的约束 1. NULL & NOT NULL 🎧1.1 关键词解释🎧 🎧1.2 用法示例🎧 2.DEFAULT 🎧2.1 关键词解释🎧 🎧2.2 用法示例🎧 🎧2.3 NOT NULL 和 DEFAULT 区别🎧 3.COMMENT 🎧3.1 关键词解释🎧 🎧3.2 用法示例🎧 4.ZEROFILL 🎧4.1 关键词解释🎧 🎧4.2 用法示例🎧 5. PRIMARY KEY 🎧5.1 关键词解释🎧 🎧5.2 用法示例🎧 5.2.1 单列主键 5.2.2 复合主键)
  • [`0. 什么是表的约束`](#文章目录 @[toc] 0. 什么是表的约束 1. NULL & NOT NULL 🎧1.1 关键词解释🎧 🎧1.2 用法示例🎧 2.DEFAULT 🎧2.1 关键词解释🎧 🎧2.2 用法示例🎧 🎧2.3 NOT NULL 和 DEFAULT 区别🎧 3.COMMENT 🎧3.1 关键词解释🎧 🎧3.2 用法示例🎧 4.ZEROFILL 🎧4.1 关键词解释🎧 🎧4.2 用法示例🎧 5. PRIMARY KEY 🎧5.1 关键词解释🎧 🎧5.2 用法示例🎧 5.2.1 单列主键 5.2.2 复合主键)
  • [`1. NULL & NOT NULL`](#文章目录 @[toc] 0. 什么是表的约束 1. NULL & NOT NULL 🎧1.1 关键词解释🎧 🎧1.2 用法示例🎧 2.DEFAULT 🎧2.1 关键词解释🎧 🎧2.2 用法示例🎧 🎧2.3 NOT NULL 和 DEFAULT 区别🎧 3.COMMENT 🎧3.1 关键词解释🎧 🎧3.2 用法示例🎧 4.ZEROFILL 🎧4.1 关键词解释🎧 🎧4.2 用法示例🎧 5. PRIMARY KEY 🎧5.1 关键词解释🎧 🎧5.2 用法示例🎧 5.2.1 单列主键 5.2.2 复合主键)
  • [🎧1.1 关键词解释🎧](#文章目录 @[toc] 0. 什么是表的约束 1. NULL & NOT NULL 🎧1.1 关键词解释🎧 🎧1.2 用法示例🎧 2.DEFAULT 🎧2.1 关键词解释🎧 🎧2.2 用法示例🎧 🎧2.3 NOT NULL 和 DEFAULT 区别🎧 3.COMMENT 🎧3.1 关键词解释🎧 🎧3.2 用法示例🎧 4.ZEROFILL 🎧4.1 关键词解释🎧 🎧4.2 用法示例🎧 5. PRIMARY KEY 🎧5.1 关键词解释🎧 🎧5.2 用法示例🎧 5.2.1 单列主键 5.2.2 复合主键)
  • [🎧1.2 用法示例🎧](#文章目录 @[toc] 0. 什么是表的约束 1. NULL & NOT NULL 🎧1.1 关键词解释🎧 🎧1.2 用法示例🎧 2.DEFAULT 🎧2.1 关键词解释🎧 🎧2.2 用法示例🎧 🎧2.3 NOT NULL 和 DEFAULT 区别🎧 3.COMMENT 🎧3.1 关键词解释🎧 🎧3.2 用法示例🎧 4.ZEROFILL 🎧4.1 关键词解释🎧 🎧4.2 用法示例🎧 5. PRIMARY KEY 🎧5.1 关键词解释🎧 🎧5.2 用法示例🎧 5.2.1 单列主键 5.2.2 复合主键)
  • [`2.DEFAULT`](#文章目录 @[toc] 0. 什么是表的约束 1. NULL & NOT NULL 🎧1.1 关键词解释🎧 🎧1.2 用法示例🎧 2.DEFAULT 🎧2.1 关键词解释🎧 🎧2.2 用法示例🎧 🎧2.3 NOT NULL 和 DEFAULT 区别🎧 3.COMMENT 🎧3.1 关键词解释🎧 🎧3.2 用法示例🎧 4.ZEROFILL 🎧4.1 关键词解释🎧 🎧4.2 用法示例🎧 5. PRIMARY KEY 🎧5.1 关键词解释🎧 🎧5.2 用法示例🎧 5.2.1 单列主键 5.2.2 复合主键)
  • [🎧2.1 关键词解释🎧](#文章目录 @[toc] 0. 什么是表的约束 1. NULL & NOT NULL 🎧1.1 关键词解释🎧 🎧1.2 用法示例🎧 2.DEFAULT 🎧2.1 关键词解释🎧 🎧2.2 用法示例🎧 🎧2.3 NOT NULL 和 DEFAULT 区别🎧 3.COMMENT 🎧3.1 关键词解释🎧 🎧3.2 用法示例🎧 4.ZEROFILL 🎧4.1 关键词解释🎧 🎧4.2 用法示例🎧 5. PRIMARY KEY 🎧5.1 关键词解释🎧 🎧5.2 用法示例🎧 5.2.1 单列主键 5.2.2 复合主键)
  • [🎧2.2 用法示例🎧](#文章目录 @[toc] 0. 什么是表的约束 1. NULL & NOT NULL 🎧1.1 关键词解释🎧 🎧1.2 用法示例🎧 2.DEFAULT 🎧2.1 关键词解释🎧 🎧2.2 用法示例🎧 🎧2.3 NOT NULL 和 DEFAULT 区别🎧 3.COMMENT 🎧3.1 关键词解释🎧 🎧3.2 用法示例🎧 4.ZEROFILL 🎧4.1 关键词解释🎧 🎧4.2 用法示例🎧 5. PRIMARY KEY 🎧5.1 关键词解释🎧 🎧5.2 用法示例🎧 5.2.1 单列主键 5.2.2 复合主键)
  • [🎧2.3 NOT NULL 和 DEFAULT 区别🎧](#文章目录 @[toc] 0. 什么是表的约束 1. NULL & NOT NULL 🎧1.1 关键词解释🎧 🎧1.2 用法示例🎧 2.DEFAULT 🎧2.1 关键词解释🎧 🎧2.2 用法示例🎧 🎧2.3 NOT NULL 和 DEFAULT 区别🎧 3.COMMENT 🎧3.1 关键词解释🎧 🎧3.2 用法示例🎧 4.ZEROFILL 🎧4.1 关键词解释🎧 🎧4.2 用法示例🎧 5. PRIMARY KEY 🎧5.1 关键词解释🎧 🎧5.2 用法示例🎧 5.2.1 单列主键 5.2.2 复合主键)
  • [`3.COMMENT`](#文章目录 @[toc] 0. 什么是表的约束 1. NULL & NOT NULL 🎧1.1 关键词解释🎧 🎧1.2 用法示例🎧 2.DEFAULT 🎧2.1 关键词解释🎧 🎧2.2 用法示例🎧 🎧2.3 NOT NULL 和 DEFAULT 区别🎧 3.COMMENT 🎧3.1 关键词解释🎧 🎧3.2 用法示例🎧 4.ZEROFILL 🎧4.1 关键词解释🎧 🎧4.2 用法示例🎧 5. PRIMARY KEY 🎧5.1 关键词解释🎧 🎧5.2 用法示例🎧 5.2.1 单列主键 5.2.2 复合主键)
  • [🎧3.1 关键词解释🎧](#文章目录 @[toc] 0. 什么是表的约束 1. NULL & NOT NULL 🎧1.1 关键词解释🎧 🎧1.2 用法示例🎧 2.DEFAULT 🎧2.1 关键词解释🎧 🎧2.2 用法示例🎧 🎧2.3 NOT NULL 和 DEFAULT 区别🎧 3.COMMENT 🎧3.1 关键词解释🎧 🎧3.2 用法示例🎧 4.ZEROFILL 🎧4.1 关键词解释🎧 🎧4.2 用法示例🎧 5. PRIMARY KEY 🎧5.1 关键词解释🎧 🎧5.2 用法示例🎧 5.2.1 单列主键 5.2.2 复合主键)
  • [🎧3.2 用法示例🎧](#文章目录 @[toc] 0. 什么是表的约束 1. NULL & NOT NULL 🎧1.1 关键词解释🎧 🎧1.2 用法示例🎧 2.DEFAULT 🎧2.1 关键词解释🎧 🎧2.2 用法示例🎧 🎧2.3 NOT NULL 和 DEFAULT 区别🎧 3.COMMENT 🎧3.1 关键词解释🎧 🎧3.2 用法示例🎧 4.ZEROFILL 🎧4.1 关键词解释🎧 🎧4.2 用法示例🎧 5. PRIMARY KEY 🎧5.1 关键词解释🎧 🎧5.2 用法示例🎧 5.2.1 单列主键 5.2.2 复合主键)
  • [`4.ZEROFILL`](#文章目录 @[toc] 0. 什么是表的约束 1. NULL & NOT NULL 🎧1.1 关键词解释🎧 🎧1.2 用法示例🎧 2.DEFAULT 🎧2.1 关键词解释🎧 🎧2.2 用法示例🎧 🎧2.3 NOT NULL 和 DEFAULT 区别🎧 3.COMMENT 🎧3.1 关键词解释🎧 🎧3.2 用法示例🎧 4.ZEROFILL 🎧4.1 关键词解释🎧 🎧4.2 用法示例🎧 5. PRIMARY KEY 🎧5.1 关键词解释🎧 🎧5.2 用法示例🎧 5.2.1 单列主键 5.2.2 复合主键)
  • [🎧4.1 关键词解释🎧](#文章目录 @[toc] 0. 什么是表的约束 1. NULL & NOT NULL 🎧1.1 关键词解释🎧 🎧1.2 用法示例🎧 2.DEFAULT 🎧2.1 关键词解释🎧 🎧2.2 用法示例🎧 🎧2.3 NOT NULL 和 DEFAULT 区别🎧 3.COMMENT 🎧3.1 关键词解释🎧 🎧3.2 用法示例🎧 4.ZEROFILL 🎧4.1 关键词解释🎧 🎧4.2 用法示例🎧 5. PRIMARY KEY 🎧5.1 关键词解释🎧 🎧5.2 用法示例🎧 5.2.1 单列主键 5.2.2 复合主键)
  • [🎧4.2 用法示例🎧](#文章目录 @[toc] 0. 什么是表的约束 1. NULL & NOT NULL 🎧1.1 关键词解释🎧 🎧1.2 用法示例🎧 2.DEFAULT 🎧2.1 关键词解释🎧 🎧2.2 用法示例🎧 🎧2.3 NOT NULL 和 DEFAULT 区别🎧 3.COMMENT 🎧3.1 关键词解释🎧 🎧3.2 用法示例🎧 4.ZEROFILL 🎧4.1 关键词解释🎧 🎧4.2 用法示例🎧 5. PRIMARY KEY 🎧5.1 关键词解释🎧 🎧5.2 用法示例🎧 5.2.1 单列主键 5.2.2 复合主键)
  • [`5. PRIMARY KEY`](#文章目录 @[toc] 0. 什么是表的约束 1. NULL & NOT NULL 🎧1.1 关键词解释🎧 🎧1.2 用法示例🎧 2.DEFAULT 🎧2.1 关键词解释🎧 🎧2.2 用法示例🎧 🎧2.3 NOT NULL 和 DEFAULT 区别🎧 3.COMMENT 🎧3.1 关键词解释🎧 🎧3.2 用法示例🎧 4.ZEROFILL 🎧4.1 关键词解释🎧 🎧4.2 用法示例🎧 5. PRIMARY KEY 🎧5.1 关键词解释🎧 🎧5.2 用法示例🎧 5.2.1 单列主键 5.2.2 复合主键)
  • [🎧5.1 关键词解释🎧](#文章目录 @[toc] 0. 什么是表的约束 1. NULL & NOT NULL 🎧1.1 关键词解释🎧 🎧1.2 用法示例🎧 2.DEFAULT 🎧2.1 关键词解释🎧 🎧2.2 用法示例🎧 🎧2.3 NOT NULL 和 DEFAULT 区别🎧 3.COMMENT 🎧3.1 关键词解释🎧 🎧3.2 用法示例🎧 4.ZEROFILL 🎧4.1 关键词解释🎧 🎧4.2 用法示例🎧 5. PRIMARY KEY 🎧5.1 关键词解释🎧 🎧5.2 用法示例🎧 5.2.1 单列主键 5.2.2 复合主键)
  • [🎧5.2 用法示例🎧](#文章目录 @[toc] 0. 什么是表的约束 1. NULL & NOT NULL 🎧1.1 关键词解释🎧 🎧1.2 用法示例🎧 2.DEFAULT 🎧2.1 关键词解释🎧 🎧2.2 用法示例🎧 🎧2.3 NOT NULL 和 DEFAULT 区别🎧 3.COMMENT 🎧3.1 关键词解释🎧 🎧3.2 用法示例🎧 4.ZEROFILL 🎧4.1 关键词解释🎧 🎧4.2 用法示例🎧 5. PRIMARY KEY 🎧5.1 关键词解释🎧 🎧5.2 用法示例🎧 5.2.1 单列主键 5.2.2 复合主键)
  • [5.2.1 单列主键](#文章目录 @[toc] 0. 什么是表的约束 1. NULL & NOT NULL 🎧1.1 关键词解释🎧 🎧1.2 用法示例🎧 2.DEFAULT 🎧2.1 关键词解释🎧 🎧2.2 用法示例🎧 🎧2.3 NOT NULL 和 DEFAULT 区别🎧 3.COMMENT 🎧3.1 关键词解释🎧 🎧3.2 用法示例🎧 4.ZEROFILL 🎧4.1 关键词解释🎧 🎧4.2 用法示例🎧 5. PRIMARY KEY 🎧5.1 关键词解释🎧 🎧5.2 用法示例🎧 5.2.1 单列主键 5.2.2 复合主键)
  • [5.2.2 复合主键](#文章目录 @[toc] 0. 什么是表的约束 1. NULL & NOT NULL 🎧1.1 关键词解释🎧 🎧1.2 用法示例🎧 2.DEFAULT 🎧2.1 关键词解释🎧 🎧2.2 用法示例🎧 🎧2.3 NOT NULL 和 DEFAULT 区别🎧 3.COMMENT 🎧3.1 关键词解释🎧 🎧3.2 用法示例🎧 4.ZEROFILL 🎧4.1 关键词解释🎧 🎧4.2 用法示例🎧 5. PRIMARY KEY 🎧5.1 关键词解释🎧 🎧5.2 用法示例🎧 5.2.1 单列主键 5.2.2 复合主键)

上一篇文章中,博主介绍了 :

  • MySQL中不同的数据类型

建议将上一篇文章看完之后再来看这篇文章,链接如下:

【数据库初阶】MySQL数据类型

那么接下来正文开始:

0. 什么是表的约束

  • 上一篇文章中讲过,真正表的约束其实是 数据类型
  • 但是数据类型约束很单一,需要有一些 额外的约束 ,更好的保证 数据的合法性 ,从业务逻辑角度 保证数据的正确性
  • 表的约束有很多,本篇文章主要介绍以下几个:
    • null / not null,
    • default,
    • comment,
    • zerofill,
    • primary key,
    • auto_increment,
    • unique key

1. NULL & NOT NULL

🎧1.1 关键词解释🎧

  • NULL 就是空,什么都没有的意思,和语言上的NULL是有点区别的;
  • 在数据库创建中,如果从逻辑角度不想让某一个字段(某一列)为空,就要添加约束条件,NOT NULL

🎧1.2 用法示例🎧

  • 例如,在学校中,从逻辑上讲,每个学生的学号都不可能是空值;
  • 因此可以将这个字段添加约束 NOT NULL
  • SQL 代码如下:
sql 复制代码
mysql> create table if not exists null_test(
    -> 		stu_id varchar(10) not null,
    -> 		stu_name varchar(10),
    -> 		stu_class int
    -> );
  • 查看一下表结构,输入:desc null_test;
  • 此时,必须在这个表中的每一行添加这个字段的值,不然就会报错:

2.DEFAULT

🎧2.1 关键词解释🎧

  • 在一张表中,某一个字段的值可能 出现的频率比较高
  • 为了避免重复的输入,可以将这个字段添加约束 DEFAULT 默认值;
  • 下次就不需要手动进行插入,会自动添加到表中;
  • 如果某一行中此字段的值不是默认值,再手动修改,大大提高了效率。

🎧2.2 用法示例🎧

  • 例如,在理工类学校中,男生的人数可能比女生的人数要多很多;
  • 那么就可以将性别这个字段添加默认值;
  • 代码如下:
sql 复制代码
mysql> create table if not exists default_test(
    -> 		stu_id int not null,
    -> 		gender char(1) default '男',
    -> 		age int unsigned 
    -> );
Query OK, 0 rows affected (0.05 sec)
  • 查看表结构:
  • 省略gender字段向表中插入数据,那就是默认值,不省略就可以修改:

🎧2.3 NOT NULL 和 DEFAULT 区别🎧

问题1:

  • 先来看下面的一个插入方式,为什么在创建的时候 age 字段没有设置默认值,插入的时候也可以被省略?
  • 实际上,对于不是 NOT NULL 的字段,MySQL会自动帮我们添加 默认值 NULL,我们可以查看一下MySQL为我们修改的创建表的语法:

问题2:

  • 我们可以看到:非空约束的默认值也是NULL,为什么呢?
  • 其实这个NULL的本质是不一样的,如果我们不指定stu_id列插入数据看一下:
    • 可以看到,这里的报错是 没有默认值报的错。
  • 如果我们指定了这个列,但是插入的是空值看一下:
    • 注意到,这里的报错是 此列不能是空报的错
  • 因此,在定义非空约束的表中,MySQL不会帮我们自动生成一个默认值;
  • 对于带有 NOT NULL 约束的字段,DESC 中显示的 DefaultNULL,这并不表示这个字段的默认值是 NULL。实际上,NOT NULL 约束要求这个字段在插入时不能是 NULL,如果插入时没有提供这个字段的值,MySQL 会报错,报的是没有默认值的错误。

总结:

  • 对于是非空约束的字段:

    • MySQL不会帮我们自动生成一个默认值,如果我们在插入数据的时候不显示指定此列,那么编译器就会报没有默认值的错误;
    • 如果插入数据的时候显示插入值,但是插入的值是NULL,才会报自此段不能为空的错误。
  • 对于不是非空约束的字段:

    • MySQL会自动帮我们生成一个默认值NULL,所以不会报没有默认值的错误。
    • 因为只有设置了default的列,才可以在插入值的时候,对列进行省略。
  • 一般情况下,default 约束和 not null 约束不会一起使用。


3.COMMENT

🎧3.1 关键词解释🎧

  • comment 表示列描述,没有实际含义,专门用来描述字段,会根据表创建语句保存,用来给程序员或DBA来进行了解;

🎧3.2 用法示例🎧

  • 创建一个表,描述各个列的含义;
  • 代码如下:
sql 复制代码
mysql> create table if not exists comment_test(
    -> 		name varchar(20) not null comment '姓名',
    -> 		age tinyint unsigned default 18 comment '年龄',
    -> 		gender char(1) default '男' comment '性别'
    -> );
Query OK, 0 rows affected (0.08 sec)
  • desc是查不到注释信息的:
  • 通过 show create table 可以看到:

4.ZEROFILL

🎧4.1 关键词解释🎧

  • 还记得在上一篇文章中讲的数据类型 int 吗,在查表的时候后面的数字代表着什么呢?
  • 其实没有这个zerofill属性,这个数字是没有意义的;
  • 其实这个表示最后用统一的字数显示,如果是 10 10 10,那么最后就是显示 10 10 10位数字,如果实际数字少于 10 10 10 位,就用 0 0 0 补齐,如果多出就不管。

🎧4.2 用法示例🎧

  • 创建一个表,里面只有 int,一个int(5),另一个int(10) 这个用zerofill约束;
  • 代码如下:
sql 复制代码
mysql> create table if not exists zerofill_test(
    -> a int(5),
    -> b int(10) unsigned zerofill
    -> );
  • 插入数据,代码如下:
sql 复制代码
mysql> insert into zerofill_test values(1,2);
Query OK, 1 row affected (0.01 sec)

mysql> insert into zerofill_test values(325, 510);
Query OK, 1 row affected (0.01 sec)
  • 查表:
sql 复制代码
mysql> select * from zerofill_test;
+------+------------+
| a    | b          |
+------+------------+
|  325 | 0000000510 |
|    1 | 0000000002 |
+------+------------+
2 rows in set (0.00 sec)
  • 其实int默认是 10 10 10 位也是有原因的,因为它的最大值就是二十一亿多( 10 10 10 位数字),unsigned也就是四十二亿多( 10 10 10 位数字)。

5. PRIMARY KEY

🎧5.1 关键词解释🎧

  • primary key用来 唯一的 约束该字段里面的数据,不能重复,不能为空
    • 主键要求表中每一行记录的值都是唯一的,也就是说,主键字段的值不能重复。每行数据的主键值都是唯一的,确保数据的唯一性。
    • 主键字段不能为 NULL。也就是说,在定义主键时,MySQL 会自动给该字段添加 NOT NULL 约束。每一行数据在插入时,主键字段必须提供一个有效的、非空的值。
  • 一张表中最多只能有 一个主键 ,但可以由一个列或多个列组成(复合主键)。
    • 主键可以由一列或多列字段组成。一个单列主键称为"单列主键",而由多个列组成的主键称为"复合主键"。
      • 单列主键:表中只有一个字段作为主键。
      • 复合主键多个字段组合成一个主键,保证唯一性。
  • 主键所在的列通常是 整数类型

🎧5.2 用法示例🎧

5.2.1 单列主键

  • 可以用以下两种方式定义主键:
sql 复制代码
#方法1:
mysql> create table if not exists primarykey_test(
    -> 		stu_id int,
    -> 		name varchar(20),
    -> 		gender char(2) default '男',
    -> 		primary key(stu_id)
    -> );
Query OK, 0 rows affected (0.04 sec)

# 方法2:
mysql> create table if not exists primarykey_test(
    -> 		stu_id int primary key,
    -> 		name varchar(20),
    -> 		gender char(2) default '男',
    -> );
Query OK, 0 rows affected (0.04 sec)
  • 查看创建信息:
    • 发现自动添加了 NOT NULL 约束。
  • 插入信息,发现如果有了主键约束,此列信息不能重复:
  • 可以删除主键,代码如下:
sql 复制代码
mysql> alter table primarykey_test drop primary key;
Query OK, 1 row affected (0.16 sec)
Records: 1  Duplicates: 0  Warnings: 0

mysql> desc primarykey_test;
+--------+-------------+------+-----+---------+-------+
| Field  | Type        | Null | Key | Default | Extra |
+--------+-------------+------+-----+---------+-------+
| stu_id | int         | NO   |     | NULL    |       |
| name   | varchar(20) | YES  |     | NULL    |       |
| gender | char(2)     | YES  |     | 男      |       |
+--------+-------------+------+-----+---------+-------+
3 rows in set (0.00 sec)
  • 删除后可以重新添加,但要 保证添加这一列中没有重复的值!!
sql 复制代码
mysql> alter table primarykey_test add primary key(stu_id);
Query OK, 0 rows affected (0.11 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> desc primarykey_test;
+--------+-------------+------+-----+---------+-------+
| Field  | Type        | Null | Key | Default | Extra |
+--------+-------------+------+-----+---------+-------+
| stu_id | int         | NO   | PRI | NULL    |       |
| name   | varchar(20) | YES  |     | NULL    |       |
| gender | char(2)     | YES  |     | 男      |       |
+--------+-------------+------+-----+---------+-------+
3 rows in set (0.00 sec)


5.2.2 复合主键

  • 定义方法,代码如下:
    • 这个表中定义主键的意思是一个学生可以选择多门课,一门课可以被多名学生选择,但是 不存在一名学生重复选择同样的课的情况
sql 复制代码
mysql> create table if not exists primarykey_test2( 
    ->		stu_id int, 
	->		course_id int, 
	->		grade int, 
	->		primary key(stu_id, course_id) 
);
Query OK, 0 rows affected (0.04 sec)
  • 查看创建信息和表结构:

主键的特点与约束:

  • 每个表只能有一个主键,但是主键可以包含多个字段(即复合主键)。
  • 如果表中已经有一个字段被定义为主键,其他字段就不能重复该主键的值。

相关推荐
利刃大大1 分钟前
【MySQL】九、表的内外连接
数据库·mysql
java龙王*3 分钟前
最新MySQL面试题(2025超详细版)
数据库·mysql·面试·面试题
lichong9519 分钟前
【Flutter&Dart】页面切换 PageView &PageController(9 /100)
android·flutter·ios·api·postman·postapi·foxapi
一 乐14 分钟前
校园台球|基于SprinBoot+vue的校园台球厅人员与设备管理系统(源码+数据库+文档)
前端·javascript·数据库·vue.js·spring boot·校园台球
冰 河1 小时前
《Mycat核心技术》第08章:Mycat的限制
数据库·分布式·微服务·数据存储·mycat
等一场春雨3 小时前
Spring Boot 3 实现 MySQL 主从数据库之间的数据同步
数据库·spring boot·mysql
小龙在山东7 小时前
memcached的基本使用
数据库·缓存·memcached
亦世凡华、7 小时前
MySQL--》快速提高查询效率:SQL语句优化技巧与实践
数据库·经验分享·sql·mysql·sql优化
不是二师兄的八戒8 小时前
深入 Redis:高级特性与最佳实践
数据库·redis·缓存
鲤籽鲲8 小时前
C# 内置值类型
android·java·c#