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