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

Sådan ændres kolonne fra NULL til IKKE NULL

Nogle gange skal du muligvis ændre en nullbar kolonne med NULL-værdier til en uden NULL-værdier. I denne artikel vil vi se på, hvordan man ændrer kolonne fra NULL til NOT NULL værdier. Du kan bruge disse trin til at ændre kolonne fra NULL til NOT NULL i MySQL, PostgreSQL og SQL Server.


Sådan ændres kolonne fra Null til Ikke Null

Her er trinene til at ændre kolonne fra NULL til NOT NULL.


1. Opdater tabel for at fjerne null-værdier.

Det første trin er at fjerne null-værdier fra vores kolonne. Lad os sige, at du har en tabel salg(id, beløb, ordredato)

mysql> create table sales(id int, amount int,order_date date);

mysql> insert into sales(id, amount)
       values(1, 100),(2,300),(3,45);

mysql> insert into sales(id, order_date)
       values(4,'2020-11-01');

mysql> select * from sales;
+------+--------+------------+
| id   | amount | order_date |
+------+--------+------------+
|    1 |    100 | NULL       |
|    2 |    300 | NULL       |
|    3 |     45 | NULL       |
|    4 |   NULL | 2020-11-01 |
+------+--------+------------+

Som du kan se, indeholder ovenstående tabel null-værdier i order_date og beløb kolonner.

Lad os sige, at du vil ændre beløbskolonnen fra null til ikke null. Så først vil vi fjerne null-værdier fra denne kolonne ved hjælp af UPDATE-sætning.

mysql> update sales set amount=0 
       where amount is null;

mysql> select * from sales;
+------+--------+------------+
| id   | amount | order_date |
+------+--------+------------+
|    1 |    100 | NULL       |
|    2 |    300 | NULL       |
|    3 |     45 | NULL       |
|    4 |      0 | 2020-11-01 |
+------+--------+------------+

På samme måde, hvis du vil ændre ordre_date kolonne fra null til ikke null, opdater først null-værdier til ikke-null-værdier, som vist nedenfor.

mysql> update sales set order_date='0000-00-00' 
       where order_date is null;

mysql> select * from sales;
+------+--------+------------+
| id   | amount | order_date |
+------+--------+------------+
|    1 |    100 | 0000-00-00 |
|    2 |    300 | 0000-00-00 |
|    3 |     45 | 0000-00-00 |
|    4 |      0 | 2020-11-01 |
+------+--------+------------+


2. Rediger tabel og Rediger kolonne

Dernæst vil vi ændre beløbskolonnen fra null til ikke null ved hjælp af ALTER TABLE-sætning.

Her er syntaksen for det.

ALTER TABLE table_name ALTER COLUMN col_name data_type NOT NULL;

Erstat tabelnavn, kolonnenavn og datatype med henholdsvis tabelnavn, kolonnenavn og datatype.

Her er SQL-forespørgslen for at ændre beløbskolonnen fra NULL til IKKE NULL.

For MySQL
---------
ALTER TABLE sales
MODIFY COLUMN amount int NOT NULL;

For SQL Server/PostgreSQL
-------------------------
ALTER TABLE sales
ALTER COLUMN amount int NOT NULL;

På samme måde er her SQL-forespørgslerne til at ændre ordre_dato-kolonnen fra NULL til IKKE NULL

For MySQL
---------
ALTER TABLE sales
MODIFY COLUMN order_date date NOT NULL;

For SQL Server/PostgreSQL
-------------------------
ALTER TABLE sales
ALTER COLUMN order_date date NOT NULL;

Vi bekræfter ovenstående ændring ved at køre kommandoen describe table i MySQL.

mysql> describe sales;
+------------+---------+------+-----+---------+-------+
| Field      | Type    | Null | Key | Default | Extra |
+------------+---------+------+-----+---------+-------+
| id         | int(11) | YES  |     | NULL    |       |
| amount     | int(11) | NO   |     | NULL    |       |
| order_date | date    | NO   |     | NULL    |       |
+------------+---------+------+-----+---------+-------+

Du vil se, at kolonnerne beløb og ordre_dato indeholder INGEN værdi for kolonnen NULL, hvilket indikerer, at de ikke har tilladelse til at gemme NULL-værdier.

Ubiq gør det nemt at visualisere data og overvåge dem i dashboards i realtid. Prøv Ubiq gratis.

  1. SQL Server Failover Cluster Installation -1

  2. Sådan bruger du flere databaser dynamisk til en model i CakePHP

  3. Fejl ved oprettelse af unaccent-udvidelse på PostgreSQL

  4. Statisk og dynamisk datamaskering i FieldShield