sql >> Databáze >  >> RDS >> Mysql

Jak přidat omezení NOT NULL v MySQL

Pokud potřebujete nastavit sloupec MySQL tak, aby nepřijímal hodnoty null, můžete v MySQL přidat omezení NOT NULL. Omezení NOT NULL můžete přidat, když vytváříte tabulku pomocí příkazu CREATE TABLE, nebo přidat omezení NOT NULL do existující tabulky pomocí příkazu ALTER TABLE. Zde je návod, jak přidat omezení NOT NULL do MySQL.

Jak přidat omezení NOT NULL do MySQL

Zde jsou kroky pro přidání omezení NOT NULL pro sloupec v MySQL, přidání omezení NOT NULL do existujícího sloupce a odstranění omezení NOT NULL ze sloupce.

Zde je syntaxe pro definování omezení NOT NULL v MySQL při vytváření nové tabulky.

column_name data_type NOT NULL;

Ve výše uvedeném příkazu musíte po uvedení název_sloupce zadat NOT NULL a jeho data_type

Zde je příklad přidání omezení NOT NULL do 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

Ve výše uvedeném dotazu CREATE TABLE jsme přidali omezení NOT NULL pro částku sloupec. Když do tohoto sloupce vložíte hodnotu NULL, MySQL zobrazí chybu.

Bonusové čtení:Jak přidat výchozí omezení v MySQL

ALTER TABLE Přidejte do MySQL omezení NOT NULL

Můžete také přidat omezení NOT NULL do existujícího sloupce v MySQL pomocí příkazu ALTER TABLE … CHANGE. Zde je syntaxe pro přidání nenulového omezení do existující tabulky v MySQL.

ALTER TABLE table_name
CHANGE 
   old_column_name 
   new_column_name column_definition;

Ve výše uvedeném dotazu zmiňujeme stejný název sloupce pro starý_název_sloupce i nový_název_sloupce. Za new_column_name musí následovat jeho definice sloupce datového typu a klíčové slovo NOT NULL.

Zde je příklad SQL dotazu pro přidání omezení NOT NULL do existujícího sloupce v 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    |       |
+------------+---------+------+-----+---------+-------+

Ve výše uvedeném dotazu jsme přidali omezení NOT NULL do stávajícího sloupce order_date

Bonusové čtení:MySQL Vyberte prvních N řádků na skupinu

Jak zrušit omezení NOT NULL

Omezení NOT NULL můžete také zrušit pomocí příkazu ALTER TABLE … MODIFY. Zde je syntaxe pro odstranění omezení NOT NULL v MySQL.

ALTER TABLE table_name
MODIFY column_name column_definition;

Ve výše uvedeném dotazu musíte zadat název sloupce a definici, pro kterou chcete odstranit omezení NOT NULL.

Zde je příklad odstranění omezení NOT NULL pro order_date sloupec.

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

Bonusové čtení:Jak získat data z minulého týdne v MySQL

Ubiq usnadňuje vizualizaci dat během několika minut a sledování na řídicích panelech v reálném čase. Vyzkoušejte to ještě dnes!

  1. PostgreSQL chybný převod z časového razítka bez časového pásma na časové razítko s časovým pásmem

  2. Analýza I/O výkonu pro SQL Server

  3. Pomocí průvodce Offline reorganizací

  4. Je něco špatného na spojeních, která nepoužívají klíčové slovo JOIN v SQL nebo MySQL?