Heim > Datenbank > MySQL-Tutorial > Hauptteil

Wie ermittelt MySQL, ob ein Feld null ist?

(*-*)浩
Freigeben: 2020-09-10 16:11:36
Original
8293 Leute haben es durchsucht

Ich glaube, dass viele Leute, die MySQL schon lange verwenden, sich über die Konzepte dieser beiden Feldattribute nicht ganz im Klaren sind. Sie haben normalerweise die folgenden Fragen:

Mein Feldtyp ist nicht null, warum Kann ich Nullwerte einfügen?

Warum ist Null nicht effizienter als Null?

Wenn wir beurteilen, dass ein Feld nicht leer ist, sollten wir * aus der Tabelle auswählen, in der die Spalte <> '' oder sollten wir „select * from table wherecolumn“ verwenden, das noch nicht null ist.

Wie ermittelt MySQL, ob ein Feld null ist?

Lassen Sie uns anhand der obigen Fragen einen detaillierten Blick auf den Unterschied zwischen null und nicht null werfen.

Zuerst müssen wir die Konzepte von „Nullwert“ und „NULL“ verstehen:

Nullwert belegt keinen Platz

NULL in MySQL belegt tatsächlich Platz Ja, das Folgende ist die offizielle Erklärung von MYSQL: „NULL-Spalten benötigen zusätzlichen Platz in der Zeile, um aufzuzeichnen, ob ihre Werte NULL sind. Bei MyISAM-Tabellen benötigt jede NULL-Spalte ein Bit zusätzlich, aufgerundet.“ auf das nächste Byte."

Zum Beispiel haben Sie eine Tasse. Ein Nullwert bedeutet, dass die Tasse Vakuum ist, und NULL bedeutet, dass die Tasse mit Luft gefüllt ist. Obwohl die Tasse leer aussieht, Aber der Unterschied ist riesig.

Nachdem wir die Konzepte „Nullwert“ und „NULL“ verstanden haben, ist das Problem im Grunde klar. Testen wir es 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 ;
Nach dem Login kopieren

Daten einfügen:

INSERT INTO `test` VALUES (null,1);
Nach dem Login kopieren

MySQL-Fehler aufgetreten:

#1048 - Column 'col1' cannot be null
Nach dem Login kopieren

Ein weiteres

INSERT INTO `test` VALUES ('',1);
Nach dem Login kopieren

wurde erfolgreich eingefügt.

Es ist ersichtlich, dass „NULL“ nicht in NOT NULL-Felder eingefügt werden kann, sondern nur „Nullwerte“, und die obige Frage hat die Antwort.

Was das Problem betrifft, ist NULL, wie oben erwähnt, eigentlich kein Nullwert, sondern nimmt Platz ein. Daher nimmt NULL am Feldvergleich teil, was sich teilweise auf die Effizienz auswirkt .

Und

B-Tree-Indizes speichern keine NULL-Werte. Wenn also die indizierten Felder NULL sein können, sinkt die Indizierungseffizienz erheblich

.

MYSQL empfiehlt, dass Spaltenattribute so weit wie möglich NICHT NULL sind

Längenüberprüfung: Beachten Sie, dass zwischen „“ von Nullwerten keine Leerzeichen stehen.

mysql> select length(''),length(null),length(' ');

+------------+--------------+--------------+

| length('') | length(null) | length(' ') |

+------------+--------------+--------------+

| 0 | NULL | 2 |

+------------+--------------+--------------+
Nach dem Login kopieren

Hinweis:

Wenn count() zum Zählen der Anzahl der Datensätze in einer Spalte verwendet wird und der NULL-Wert verwendet wird, ignoriert das System diesen automatisch , aber wenn es leer ist, wird der Wert hineingezählt.

Um NULL zu beurteilen, verwenden Sie IS NULL oder IS NOT NULL. Sie können die Funktion ifnull() in SQL-Anweisungsfunktionen verwenden, um Nullzeichen zu verarbeiten Prozess

Besondere Überlegungen für MySQL, für den Zeitstempel-Datentyp: Wenn Sie einen NULL-Wert in eine in diesen Datentyp eingefügte Spalte einfügen, ist der angezeigte Wert die aktuelle Systemzeit. Wenn Sie einen Nullwert eingeben, wird 0000-00-00 00:00:00

angezeigt. Ob zur Beurteilung des Nullwerts „is null“ oder „="“ verwendet werden soll, hängt vom tatsächlichen Unternehmen ab.

Das obige ist der detaillierte Inhalt vonWie ermittelt MySQL, ob ein Feld null ist?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!