MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

MySQLのカーディナリティとは何ですか?


MySQLでは、カーディナリティという用語は、列に配置できるデータ値の一意性を指します。これは、データの検索、クラスター化、および並べ替えの機能に影響を与える一種のプロパティです。

カーディナリティには、次の2つのタイプがあります-

  • 低いカーディナリティ −列のすべての値は同じである必要があります。

  • 高いカーディナリティ −列のすべての値は一意である必要があります。

重複する値を制限するために列に制約を設定する場合は、高カーディナリティの概念が使用されます。

高いカーディナリティ

以下は、列のすべての値が一意である必要がある高カーディナリティの例です。

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)

  1. MySQLの範囲間の値をフェッチするためのBETWEEN句の代替手段は何ですか?

    BETWEEN句の使用を回避するために、ANDを使用して範囲間の値をフェッチできます。まずテーブルを作成しましょう- mysql> create table DemoTable (    Number int ); Query OK, 0 rows affected (0.62 sec) 挿入コマンド-を使用して、テーブルにいくつかのレコードを挿入します mysql> insert into DemoTable values(10); Query OK, 1 row affected (0.14 sec) mysql> insert into DemoT

  2. MySQLは列の値からランダムに2つの値を選択しますか?

    ランダムに選択するには、ORDER BY RAND()を使用します。 2つの値のみを選択するには、MySQLでLIMIT2を使用します。まずテーブルを作成しましょう- mysql> create table DemoTable1815      (      Question text      ); Query OK, 0 rows affected (0.00 sec) 挿入コマンド-を使用して、テーブルにいくつかのレコードを挿入します mysql> insert into DemoTa