sql >> Databasteknik >  >> RDS >> Database

Hur man ändrar kolumn från NULL till NOT NULL

Ibland kan du behöva ändra en nullbar kolumn med NULL-värden till en utan NULL-värden. I den här artikeln kommer vi att titta på hur man ändrar kolumn från NULL till NOT NULL-värden. Du kan använda dessa steg för att ändra kolumn från NULL till NOT NULL i MySQL, PostgreSQL och SQL Server.


Hur man ändrar kolumn från null till inte noll

Här är stegen för att ändra kolumn från NULL till NOT NULL.


1. Uppdatera tabell för att ta bort nollvärden.

Det första steget är att ta bort nollvärden från vår kolumn. Låt oss säga att du har en tabell försäljning(id, summa, order_date)

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 innehåller tabellen ovan nollvärden i order_date och belopp kolumner.

Låt oss säga att du vill ändra beloppskolumnen från null till inte null. Så först tar vi bort nollvärden från den här kolumnen med UPDATE-satsen.

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å samma sätt, om du vill ändra order_date kolumn från null till inte null, uppdatera först null-värden till inte null-värden, som visas nedan.

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. Ändra tabell och Ändra kolumn

Därefter kommer vi att ändra beloppskolumnen från null till inte null, med hjälp av ALTER TABLE-satsen.

Här är syntaxen för det.

ALTER TABLE table_name ALTER COLUMN col_name data_type NOT NULL;

Ersätt tabellnamn, kolumnnamn och datatyp med tabellnamn, kolumnnamn respektive datatyp.

Här är SQL-frågan för att ändra mängdkolumnen från NULL till NOT 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å liknande sätt, här är SQL-frågorna för att ändra kolumnen order_date från NULL till NOT 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 verifierar ändringen ovan genom att köra kommandot 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 kommer att se att kolumnerna summa och order_date innehåller INGET värde för NULL-kolumnen, vilket indikerar att de inte är tillåtna att lagra NULL-värden.

Ubiq gör det enkelt att visualisera data och övervaka dem i realtidsinstrumentpaneler. Prova Ubiq gratis.

  1. PostgreSQL:kodningsproblem på Windows när du använder kommandoradsverktyget psql

  2. LINQ to Entities känner inte igen metoden 'System.String ToString()' och den här metoden kan inte översättas till ett butiksuttryck

  3. Oracle GROUP_CONCAT() ekvivalent

  4. Effekten av query_post_execution_showplan Extended Event i SQL Server 2012