MySQL 什么是MySQL中的基数?
在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)