Worum geht es in diesem kurzen Artikel?
Ich habe gesehen, wie jemand nach dem Problem von Nullable und Index in der PHPHub-Migrationsdatenbankdatei gefragt hat. Ich glaube, dass viele Leute zuvor MySQL verwendet haben (insbesondere Menschen, die der Geschäftsentwicklung normalerweise zu viel Aufmerksamkeit schenken) sind sich der Konzepte dieser beiden Feldattribute nicht ganz im Klaren. Sie haben normalerweise die folgenden Fragen:
Mein Feldtyp ist nicht null. Warum kann ich Nullwerte einfügen?
Nicht null ist effizienter als null;
Bei der Beurteilung, dass ein Feld nicht leer ist, sollte die Spalte sein gebraucht?
Anhand der obigen Fragen werfen wir einen genaueren Blick auf den Unterschied zwischen null und nicht null.
Ist Null dasselbe wie Nullwert?
Zuerst müssen wir die Konzepte von Nullwert und Null verstehen:
Nullwert nimmt keinen Platz ein ;
Null in MySQL nimmt tatsächlich Platz ein. Das Folgende ist die offizielle Erklärung von MYSQL:
NULL-Spalten benötigen zusätzlichen Platz in der Zeile, um aufzuzeichnen, ob sie vorhanden sind Bei MyISAM-Tabellen benötigt jede NULL-Spalte ein Bit zusätzlich, aufgerundet auf das nächste Byte. Obwohl der Becher leer aussieht, ist der Unterschied groß.
Eine kleine Kastanie
Nachdem wir die Konzepte „Nullwert“ und „NULL“ verstanden haben, ist das Problem im Grunde klar anhand eines Beispiels:
CREATE TABLE `test` ( `col1` VARCHAR( 10 ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL , `col2` VARCHAR( 10 ) CHARACTER SET utf8 COLLATE utf8_general_ci NULL ) ENGINE = MYISAM ;
INSERT INTO `test` VALUES ( null, 1);
INSERT INTO `test` VALUES ('',1);
Vergleichen Sie jeweils die Ausführungsergebnisse der folgenden beiden SQL-Sätze
INSERT INTO `test` VALUES ('', NULL); INSERT INTO `test` VALUES ('1', '2');
SELECT * FROM `test` WHERE col1 IS NOT NULL
Da viele Dienste über Einfügeaktionen zum Betreiben dieser Tabelle verfügen, kann man sich vorstellen, dass unmittelbar nach der Online-Schaltung die Fehlerspalte „col1“ nicht mit Null gefüllt werden konnte.
Wenn das Geschäftsvolumen also nicht sehr groß ist, muss der Einsatz vieler Technologien tatsächlich umfassend und auf der Grundlage der tatsächlichen Situation berücksichtigt werden.Das obige ist der detaillierte Inhalt vonDetaillierte Erklärung von NULL und NOT NULL in MySQL. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!