什么是 MySQL 中的基数?


在 MySQL 中,“基数”一词是指可放入列中的数据值的唯一性。这是一种影响搜索、聚类和排序数据的属性。

基数可以是以下两种类型:

  • 低基数 - 一列的所有值都必须相同。

  • 高基数 - 一列的所有值都必须唯一。

如果我们对列施加约束以限制重复值,则使用高基数的概念。

高基数

以下是一个高基数的示例,其中一列的所有值都必须唯一。

mysql> create table UniqueDemo1
   -> (
   -> id int,
   -> name varchar(100),
   ->UNIQUE(id,name)
   -> );
Query OK, 0 rows affected (0.81 sec

向表中插入记录。

mysql> insert into UniqueDemo1 values(1,'John');
Query OK, 1 row affected (0.18 sec)

mysql> insert into UniqueDemo1 values(1,'John');
ERROR 1062 (23000): Duplicate entry '1-John' for key 'id'

在上述示例中,当我们向表中插入相同记录时遇到了错误。

显示所有记录。

mysql> select *from UniqueDemo1;

以下是输出结果。由于对于重复值,它会显示错误;因此,目前表中只有 1 条记录,这是我们之前添加的。

+------+------+
| id   | name |
+------+------+
|    1 | John |
+------+------+
1 row in set (0.00 sec)

低基数

低基数的示例。

创建表。

mysql> create table LowCardinality
   -> (
   -> id int,
   -> name varchar(100)
   -> );
Query OK, 0 rows affected (0.71 sec)

插入具有重复值的记录。

mysql> insert into LowCardinality values(1,'John');
Query OK, 1 row affected (0.19 sec)

mysql> insert into LowCardinality values(1,'John');
Query OK, 1 row affected (0.14 sec)

显示所有记录。

mysql> select *from LowCardinality;

由于我们在创建表格的时候没有包含 UNIQUE,所以输出显示了重复值。

+------+------+
| id   | name |
+------+------+
|    1 | John |
|    1 | John |
+------+------+
2 rows in set (0.00 sec)

更新于: 2019 年 7 月 30 日

4K+ 观点

开启你的职业生涯

完成课程获取认证

开始吧
广告