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

MySQL NOT NULLを主キーフィールドに追加すべきではないのはなぜですか?


NOT NULLは自動的に取得されるため、主キーフィールドにNOTNULLを追加する必要はありません。主キーは、NOTNULLと一意キーの両方の組み合わせです。

これが主キーフィールドのデモです。まず、テーブルを作成しましょう。テーブルを作成するためのクエリは次のとおりです。

mysql> create table NotNullAddDemo
   -> (
   -> Id int AUTO_INCREMENT,
   -> PRIMARY KEY(Id)
   -> );
Query OK, 0 rows affected (0.81 sec)

上記の表では、MySQLが内部でNOT NULLに変換するため、主キーフィールドにNOTNULLを追加する必要はありません。正しいかどうかを確認するには、次の構文を使用します。

DESC yourTableName;

上記の構文を確認して、テーブルの説明を取得しましょう。

mysql> desc NotNullAddDemo;

出力は次のとおりです。

+-------+---------+------+-----+---------+----------------+
| Field | Type    | Null | Key | Default | Extra          |
+-------+---------+------+-----+---------+----------------+
| Id    | int(11) | NO   | PRI | NULL    | auto_increment |
+-------+---------+------+-----+---------+----------------+
1 row in set (0.07 sec)

Null列を見てください。NULL値がないことを意味する値NOがあります。

NOT NULLをチェックするために、テーブルにいくつかのNULLレコードを挿入しましょう。これによりNULL値が許可されますが、1からの値をカウントするたびにテーブルにレコードを挿入するためのクエリ。

mysql> insert into NotNullAddDemo values(NULL);
Query OK, 1 row affected (0.12 sec)
mysql> insert into NotNullAddDemo values(NULL);
Query OK, 1 row affected (0.45 sec)

主キーに2つのNULL値を挿入した後、値1を挿入しようとすると、エラーが生成されます。これは、MySQLが最初のNULL値を1としてカウントし、2番目のNULL値を2としてカウントするためです。

1を挿入しようとすると、エラーは次のようになります。

mysql> insert into NotNullAddDemo values(1);
ERROR 1062 (23000): Duplicate entry '1' for key 'PRIMARY'

値3を挿入すると、次のものが受け入れられます:

mysql> insert into NotNullAddDemo values(3);
Query OK, 1 row affected (0.21 sec)
mysql> insert into NotNullAddDemo values(NULL);
Query OK, 1 row affected (0.18 sec)

selectステートメントを使用して、テーブルのすべてのレコードを表示します。クエリは次のとおりです。

mysql> select *from NotNullAddDemo;

出力は次のとおりです。

+----+
| Id |
+----+
|  1 |
|  2 |
|  3 |
|  4 |
+----+
4 rows in set (0.00 sec)

  1. MySQLのNOTNULL値に1を設定します

    NOT NULLを設定するには、ISNOTNULLを使用して値を見つけます。構文は次のとおりです- select if('' is not NULL,1,0) as anyAliasName; これが実際のクエリです- mysql> select if('' is not NULL,1,0); これにより、次の出力が生成されます- +------------------------+ | if('' is not NULL,1,0) | +------------------------+ |      

  2. MySQLで主キーをリセットする

    主キーをリセットするには、最初にTRUNCATEテーブルを使用し、次にALTERTABLEを使用します。まずテーブルを作成しましょう- mysql> create table DemoTable1929    (    UserId int NOT NULL AUTO_INCREMENT,    PRIMARY KEY(UserId)    ); Query OK, 0 rows affected (0.00 sec) 挿入コマンド-を使用して、テーブルにいくつかのレコードを挿入します mysql>