sql >> Database teknologi >  >> RDS >> Mysql

Sådan tilføjes NOT NULL-begrænsning i MySQL

Hvis du skal indstille en MySQL-kolonne til ikke at acceptere null-værdier, kan du tilføje NOT NULL-begrænsning i MySQL. Du kan tilføje NOT NULL-begrænsning, når du opretter tabeltabel ved hjælp af CREATE TABLE-sætning, eller tilføje NOT NULL-begrænsning i eksisterende tabel ved hjælp af ALTER TABLE-sætning. Sådan tilføjer du NOT NULL-begrænsning i MySQL.

Sådan tilføjes NOT NULL-begrænsning i MySQL

Her er trinene til at tilføje NOT NULL-restriktioner for kolonne i MySQL, tilføje NOT NULL-restriktioner til eksisterende kolonne og fjerne NOT NULL-restriktioner fra en kolonne.

Her er syntaksen til at definere NOT NULL-begrænsningen i MySQL, når du opretter en ny tabel.

column_name data_type NOT NULL;

I ovenstående erklæring skal du angive IKKE NULL efter at have nævnt kolonnenavn og dens data_type

Her er et eksempel på at tilføje 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 ovenstående CREATE TABLE-forespørgsel har vi tilføjet en NOT NULL-begrænsning for beløb kolonne. Når du indsætter en NULL-værdi i denne kolonne, vil MySQL give en fejl.

Bonuslæser:Sådan tilføjer du standardbegrænsning i MySQL

ÆNDRINGSTABEL Tilføj NOT NULL-begrænsning i MySQL

Du kan også tilføje NOT NULL-begrænsning til eksisterende kolonne i MySQL ved hjælp af ALTER TABLE … CHANGE-sætning. Her er syntaksen til at tilføje ikke null-begrænsning i eksisterende tabel i MySQL.

ALTER TABLE table_name
CHANGE 
   old_column_name 
   new_column_name column_definition;

I ovenstående forespørgsel nævner vi det samme kolonnenavn for old_column_name såvel som new_column_name. New_column_name skal efterfølges af dets column_definition af datatype og IKKE NULL nøgleord.

Her er et eksempel på SQL-forespørgsel for at tilføje NOT NULL-begrænsning til eksisterende kolonne 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 ovenstående forespørgsel har vi tilføjet NOT NULL-begrænsning til eksisterende kolonne order_date

Bonus Læs:MySQL Vælg Top N rækker pr. gruppe

Sådan slipper du NOT NULL-begrænsningen

Du kan også droppe NOT NULL-begrænsningen ved at bruge ALTER TABLE ... MODIFY-sætning. Her er syntaksen til at fjerne NOT NULL-begrænsningen i MySQL.

ALTER TABLE table_name
MODIFY column_name column_definition;

I ovenstående forespørgsel skal du angive kolonnenavnet og definitionen, som du vil fjerne NOT NULL-begrænsningen for.

Her er et eksempel på at fjerne NOT NULL-begrænsningen for order_date kolonne.

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 Læs:Sådan får du sidste uges data i MySQL

Ubiq gør det nemt at visualisere data på få minutter og overvåge i dashboards i realtid. Prøv det i dag!

  1. Hvornår skal man bruge nedarvede tabeller i PostgreSQL?

  2. Forkert strengværdi, når du forsøger at indsætte UTF-8 i MySQL via JDBC?

  3. Konverter månedsnummer til månedsnavn i PostgreSQL

  4. Hvordan forespørger man værdier fra xml-noder?