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)
-
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
-
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