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

Come aggiungere il vincolo NOT NULL in MySQL

Se è necessario impostare una colonna MySQL per non accettare valori null, è possibile aggiungere il vincolo NOT NULL in MySQL. È possibile aggiungere il vincolo NOT NULL quando si crea una tabella tabella utilizzando l'istruzione CREATE TABLE o aggiungere il vincolo NOT NULL nella tabella esistente utilizzando l'istruzione ALTER TABLE. Ecco come aggiungere il vincolo NOT NULL in MySQL.

Come aggiungere il vincolo NOT NULL in MySQL

Ecco i passaggi per aggiungere il vincolo NOT NULL per la colonna in MySQL, aggiungere il vincolo NOT NULL alla colonna esistente e rimuovere il vincolo NOT NULL da una colonna.

Ecco la sintassi per definire il vincolo NOT NULL in MySQL quando crei una nuova tabella.

column_name data_type NOT NULL;

Nella dichiarazione precedente, devi specificare NOT NULL dopo aver menzionato il nome_colonna e il suo tipo_dati

Ecco un esempio per aggiungere il vincolo NOT NULL 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

Nella query CREATE TABLE sopra, abbiamo aggiunto un vincolo NOT NULL per importo colonna. Quando inserisci un valore NULL in questa colonna, MySQL visualizzerà un errore.

Bonus Lettura:come aggiungere un vincolo predefinito in MySQL

ALTER TABLE Aggiungi vincolo NOT NULL in MySQL

Puoi anche aggiungere il vincolo NOT NULL alla colonna esistente in MySQL usando l'istruzione ALTER TABLE … CHANGE. Ecco la sintassi per aggiungere il vincolo non nullo nella tabella esistente in MySQL.

ALTER TABLE table_name
CHANGE 
   old_column_name 
   new_column_name column_definition;

Nella query precedente, menzioniamo lo stesso nome di colonna per old_column_name e new_column_name. Il new_column_name deve essere seguito dalla sua column_definition del tipo di dati e dalla parola chiave NOT NULL.

Ecco un esempio di query SQL per aggiungere il vincolo NOT NULL alla colonna esistente 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    |       |
+------------+---------+------+-----+---------+-------+

Nella query precedente, abbiamo aggiunto il vincolo NOT NULL alla colonna esistente data_ordine

Bonus Lettura:MySQL Seleziona le prime N righe per gruppo

Come eliminare il vincolo NOT NULL

Puoi anche eliminare il vincolo NOT NULL usando l'istruzione ALTER TABLE … MODIFY. Ecco la sintassi per rimuovere il vincolo NOT NULL in MySQL.

ALTER TABLE table_name
MODIFY column_name column_definition;

Nella query precedente, è necessario specificare il nome della colonna e la definizione per cui si desidera rimuovere il vincolo NOT NULL.

Ecco un esempio per rimuovere il vincolo NOT NULL per data_ordine colonna.

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 Leggi:Come ottenere i dati della scorsa settimana in MySQL

Ubiq semplifica la visualizzazione dei dati in pochi minuti e il monitoraggio in dashboard in tempo reale. Provalo oggi!