sql >> Database >  >> RDS >> Mysql

Hoe een NIET NULL-beperking in MySQL toe te voegen?

Als u een MySQL-kolom moet instellen om geen null-waarden te accepteren, kunt u de beperking NOT NULL toevoegen in MySQL. U kunt de beperking NOT NULL toevoegen wanneer u een tabeltabel maakt met de instructie CREATE TABLE, of de beperking NOT NULL aan een bestaande tabel toevoegen met de instructie ALTER TABLE. Hier leest u hoe u de NOT NULL-beperking in MySQL kunt toevoegen.

Hoe een NOT NULL-beperking toe te voegen in MySQL

Hier zijn de stappen om de NOT NULL-beperking voor een kolom in MySQL toe te voegen, de NOT NULL-beperking toe te voegen aan een bestaande kolom en de NOT NULL-beperking van een kolom te verwijderen.

Hier is de syntaxis om de beperking NOT NULL in MySQL te definiëren wanneer u een nieuwe tabel maakt.

column_name data_type NOT NULL;

In de bovenstaande verklaring moet u NOT NULL specificeren na het noemen van de column_name en zijn data_type

Hier is een voorbeeld om de beperking NOT NULL toe te voegen 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 de bovenstaande CREATE TABLE-query hebben we een NOT NULL-beperking toegevoegd voor bedrag kolom. Wanneer u een NULL-waarde in deze kolom invoegt, geeft MySQL een foutmelding.

Bonus lezen:standaardbeperking toevoegen in MySQL

WIJZIG TABEL Voeg NOT NULL-beperking toe in MySQL

U kunt ook de beperking NOT NULL toevoegen aan een bestaande kolom in MySQL met behulp van de instructie ALTER TABLE ... CHANGE. Hier is de syntaxis om een ​​niet-null-beperking toe te voegen aan een bestaande tabel in MySQL.

ALTER TABLE table_name
CHANGE 
   old_column_name 
   new_column_name column_definition;

In de bovenstaande query vermelden we dezelfde kolomnaam voor oude_kolomnaam en nieuwe_kolomnaam. De new_column_name moet worden gevolgd door de column_definition van het gegevenstype en het NOT NULL-sleutelwoord.

Hier is een voorbeeld van een SQL-query om de beperking NOT NULL toe te voegen aan een bestaande kolom 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 de bovenstaande query hebben we de beperking NOT NULL toegevoegd aan de bestaande kolom order_date

Bonus Lezen:MySQL Selecteer Top N Rijen Per Groep

Hoe de NOT NULL-beperking te laten vallen

U kunt de beperking NOT NULL ook laten vallen met de instructie ALTER TABLE ... MODIFY. Hier is de syntaxis om de NOT NULL-beperking in MySQL te verwijderen.

ALTER TABLE table_name
MODIFY column_name column_definition;

In de bovenstaande query moet u de kolomnaam en -definitie opgeven waarvoor u de NOT NULL-beperking wilt verwijderen.

Hier is een voorbeeld om de NOT NULL-beperking voor order_date te verwijderen kolom.

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

Bonus lezen:hoe u gegevens van vorige week in MySQL kunt krijgen

Ubiq maakt het gemakkelijk om gegevens binnen enkele minuten te visualiseren en in realtime dashboards te controleren. Probeer het vandaag nog!

  1. SESSIONTIMEZONE Functie in Oracle

  2. Opgeslagen procedure om serveropslaginformatie op server te krijgen

  3. Moet ik het datatype datetime of timestamp in MySQL gebruiken?

  4. Oracle getVerbinding traag