Mysql
 sql >> Datenbank >  >> RDS >> Mysql

So fügen Sie NOT NULL Constraint in MySQL hinzu

Wenn Sie eine MySQL-Spalte so einstellen müssen, dass sie keine Nullwerte akzeptiert, können Sie in MySQL die Einschränkung NOT NULL hinzufügen. Sie können eine NOT NULL-Einschränkung hinzufügen, wenn Sie eine Tabelle mit der CREATE TABLE-Anweisung erstellen, oder eine NOT NULL-Einschränkung in einer vorhandenen Tabelle mit der ALTER TABLE-Anweisung hinzufügen. So fügen Sie eine NOT NULL-Einschränkung in MySQL hinzu.

So fügen Sie eine NOT NULL-Einschränkung in MySQL hinzu

Hier sind die Schritte zum Hinzufügen einer NOT NULL-Einschränkung für eine Spalte in MySQL, zum Hinzufügen einer NOT NULL-Einschränkung zu einer vorhandenen Spalte und zum Entfernen einer NOT NULL-Einschränkung aus einer Spalte.

Hier ist die Syntax zum Definieren der NOT NULL-Einschränkung in MySQL, wenn Sie eine neue Tabelle erstellen.

column_name data_type NOT NULL;

In der obigen Anweisung müssen Sie NOT NULL angeben, nachdem Sie den column_name erwähnt haben und sein Datentyp

Hier ist ein Beispiel zum Hinzufügen einer NOT NULL-Einschränkung in MySQL.

mysql> create table product_sales(
     id int,
     amount int NOT NULL,
     order_date date
     );

mysql> describe product_sales;
+------------+---------+------+-----+---------+-------+
| Field      | Type    | Null | Key | Default | Extra |
+------------+---------+------+-----+---------+-------+
| id         | int(11) | YES  |     | NULL    |       |
| amount     | int(11) | NO   |     | NULL    |       |
| order_date | date    | YES  |     | NULL    |       |
+------------+---------+------+-----+---------+-------+

mysql> insert into product_sales(id, order_date)
     values(1,'2020-08-01');
ERROR 1364 (HY000): Field 'amount' doesn't have a default value

In der obigen CREATE TABLE-Abfrage haben wir eine NOT NULL-Einschränkung für amount hinzugefügt Säule. Wenn Sie einen NULL-Wert in diese Spalte einfügen, gibt MySQL einen Fehler aus.

Bonuslektüre:So fügen Sie eine Standardeinschränkung in MySQL hinzu

ALTER TABLE NOT NULL-Einschränkung in MySQL hinzufügen

Sie können auch eine NOT NULL-Einschränkung zu einer vorhandenen Spalte in MySQL hinzufügen, indem Sie die Anweisung ALTER TABLE … CHANGE verwenden. Hier ist die Syntax zum Hinzufügen einer Nicht-Null-Einschränkung in einer vorhandenen Tabelle in MySQL.

ALTER TABLE table_name
CHANGE 
   old_column_name 
   new_column_name column_definition;

In der obigen Abfrage erwähnen wir denselben Spaltennamen für old_column_name sowie new_column_name. Auf new_column_name muss die column_definition des Datentyps und das Schlüsselwort NOT NULL folgen.

Hier ist ein Beispiel für eine SQL-Abfrage zum Hinzufügen der Einschränkung NOT NULL zu einer vorhandenen Spalte in MySQL.

mysql> ALTER TABLE product_sales
     CHANGE
         order_date
         order_date DATE NOT NULL;

mysql> describe product_sales;
+------------+---------+------+-----+---------+-------+
| Field      | Type    | Null | Key | Default | Extra |
+------------+---------+------+-----+---------+-------+
| id         | int(11) | YES  |     | NULL    |       |
| amount     | int(11) | NO   |     | NULL    |       |
| order_date | date    | NO   |     | NULL    |       |
+------------+---------+------+-----+---------+-------+

In der obigen Abfrage haben wir der bestehenden Spalte order_date die Einschränkung NOT NULL hinzugefügt

Bonus-Lesetext:MySQL wählt die obersten N Zeilen pro Gruppe aus

Wie man die NOT NULL-Einschränkung löscht

Sie können die Einschränkung NOT NULL auch mit der Anweisung ALTER TABLE … MODIFY löschen. Hier ist die Syntax zum Entfernen der NOT NULL-Einschränkung in MySQL.

ALTER TABLE table_name
MODIFY column_name column_definition;

In der obigen Abfrage müssen Sie den Spaltennamen und die Definition angeben, für die Sie die NOT NULL-Einschränkung entfernen möchten.

Hier ist ein Beispiel zum Entfernen der NOT NULL-Einschränkung für order_date Spalte.

mysql> ALTER TABLE product_sales
       MODIFY order_date DATE;

mysql> describe product_sales;
+------------+---------+------+-----+---------+-------+
| Field      | Type    | Null | Key | Default | Extra |
+------------+---------+------+-----+---------+-------+
| id         | int(11) | YES  |     | NULL    |       |
| amount     | int(11) | NO   |     | NULL    |       |
| order_date | date    | YES  |     | NULL    |       |
+------------+---------+------+-----+---------+-------+

Bonuslektüre:So erhalten Sie Daten der letzten Woche in MySQL

Ubiq macht es einfach, Daten innerhalb von Minuten zu visualisieren und in Echtzeit-Dashboards zu überwachen. Probieren Sie es noch heute aus!