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

MySQLで複合的な一意性を強制できますか?


はい、できます。理解するために、最初にテーブルを作成しましょう-

mysql> create table enforceCompoundUniqueness
   -> (
   -> StudentId int NOT NULL AUTO_INCREMENT PRIMARY KEY,
   -> StudentName varchar(40) NOT NULL,
   -> StudentMobileNumber varchar(12) NOT NULL,
   -> UNIQUE StudentName_StudentMobileNumber(StudentName,StudentMobileNumber)
   -> );
Query OK, 0 rows affected (0.60 sec)

以下は、挿入コマンド-

を使用してテーブルにレコードを挿入するためのクエリです。
mysql> insert into enforceCompoundUniqueness(StudentName,StudentMobileNumber)
values('Larry','2322245676');
Query OK, 1 row affected (0.18 sec)

mysql> insert into enforceCompoundUniqueness(StudentName,StudentMobileNumber)
values('Larry','2322245676');
ERROR 1062 (23000): Duplicate entry 'Larry-2322245676' for key
'StudentName_StudentMobileNumber'

mysql> insert into enforceCompoundUniqueness(StudentName,StudentMobileNumber)
values('Sam','6475746455');
Query OK, 1 row affected (0.13 sec)

上記のクエリでは、重複するレコードを挿入しようとすると、一意性が適用されているため、エラーが表示される可能性があります。

以下は、selectステートメント-

を使用してテーブルのすべてのレコードを表示するためのクエリです。
mysql> select * from enforceCompoundUniqueness;

これにより、次の出力が生成されます-

+-----------+-------------+---------------------+
| StudentId | StudentName | StudentMobileNumber |
+-----------+-------------+---------------------+
| 1         | Larry       | 2322245676          |
| 3         | Sam         | 6475746455          |
+-----------+-------------+---------------------+
2 rows in set (0.00 sec)

  1. MySQLでORDERBYNULLを使用できますか?

    はい、できます 注 −MySQL5.7以前はORDERBYNULLが便利でしたが、MySQL 8.0では、たとえば、暗黙の並べ替えを抑制するために最後にORDERBYNULLを指定する必要がなくなりました。 まずテーブルを作成しましょう- mysql> create table DemoTable -> ( -> Name varchar(10) -> ); Query OK, 0 rows affected (1.01 sec) 挿入コマンド-を使用して、テーブルにいくつかのレコードを挿入します mysql> insert into DemoTable v

  2. MySQLの列の順序を変更できますか?

    はい、列の順序を変更できます。これは、ALTERコマンドとAFTERを使用して実行し、個々の列の新しい順序を設定できます。まずテーブルを作成しましょう- mysql> create table DemoTable    -> (    -> `Student_Key_Age` int,    -> `Student_Key_Name` varchar(20),    -> `Student_Key_CountryName` varchar(20)    ->