sql >> Databasteknik >  >> RDS >> Mysql

Hur man lägger till NOT NULL-begränsning i MySQL

Om du behöver ställa in en MySQL-kolumn så att den inte accepterar null-värden, kan du lägga till NOT NULL-begränsning i MySQL. Du kan lägga till NOT NULL-begränsning när du skapar tabelltabell med CREATE TABLE-satsen, eller lägga till NOT NULL-begränsning i befintlig tabell med ALTER TABLE-satsen. Så här lägger du till NOT NULL-begränsning i MySQL.

Hur man lägger till NOT NULL-begränsning i MySQL

Här är stegen för att lägga till NOT NULL-begränsning för kolumn i MySQL, lägga till NOT NULL-begränsning till befintlig kolumn och ta bort NOT NULL-begränsning från en kolumn.

Här är syntaxen för att definiera NOT NULL-begränsningen i MySQL när du skapar en ny tabell.

column_name data_type NOT NULL;

I ovanstående uttalande måste du ange NOT NULL efter att ha nämnt kolumnnamn och dess data_type

Här är ett exempel för att lägga till NOT NULL-begränsning i 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

I CREATE TABLE-frågan ovan har vi lagt till en NOT NULL-begränsning för belopp kolumn. När du infogar ett NULL-värde i den här kolumnen kommer MySQL att ge ett felmeddelande.

Bonusläsning:Hur man lägger till standardbegränsning i MySQL

ALTER TABLE Lägg till NOT NULL-begränsning i MySQL

Du kan också lägga till NOT NULL-begränsning till befintlig kolumn i MySQL med ALTER TABLE … CHANGE-satsen. Här är syntaxen för att lägga till inte null-begränsning i befintlig tabell i MySQL.

ALTER TABLE table_name
CHANGE 
   old_column_name 
   new_column_name column_definition;

I ovanstående fråga nämner vi samma kolumnnamn för gammalt_kolumnnamn såväl som nytt_kolumnnamn. New_column_name måste följas av dess column_definition av datatyp och INTE NULL nyckelord.

Här är ett exempel på SQL-fråga för att lägga till NOT NULL-begränsning till befintlig kolumn i 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    |       |
+------------+---------+------+-----+---------+-------+

I ovanstående fråga har vi lagt till NOT NULL-begränsning i befintlig kolumn order_date

Bonusläsning:MySQL Välj Top N rader per grupp

Hur man släpper NOT NULL-begränsningen

Du kan också släppa NOT NULL-begränsningen genom att använda ALTER TABLE ... MODIFY-satsen. Här är syntaxen för att ta bort NOT NULL-begränsningen i MySQL.

ALTER TABLE table_name
MODIFY column_name column_definition;

I ovanstående fråga måste du ange kolumnnamnet och definitionen för vilken du vill ta bort NOT NULL-begränsningen.

Här är ett exempel för att ta bort NOT NULL-begränsningen för order_date kolumn.

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

Bonusläs:Hur man får förra veckans data i MySQL

Ubiq gör det enkelt att visualisera data på några minuter och övervaka i realtidsinstrumentpaneler. Prova det idag!

  1. Skriver ut till skärm i .sql-fil postgres

  2. Vilka är BIN$...-tabellerna i Oracles ALL_TAB_COLUMNS-tabell?

  3. Förstå skillnaden mellan EXCEPT och NOT IN-operatörer

  4. Åtgärda "ERROR 1136 (21S01):Kolumnantal matchar inte värderäkning på rad 1" när du infogar data i MySQL