Database
 sql >> база данни >  >> RDS >> Database

Как да промените колона от NULL на NOT NULL

Понякога може да се наложи да промените колона с NULL стойности с NULL в такава без стойности NULL. В тази статия ще разгледаме как да променим колоната от NULL на NOT NULL стойности. Можете да използвате тези стъпки, за да промените колоната от NULL на NOT NULL в MySQL, PostgreSQL и SQL Server.


Как да промените колона от нула на ненулева

Ето стъпките за промяна на колоната от NULL на NOT NULL.


1. Актуализирайте таблицата, за да премахнете нулеви стойности.

Първата стъпка е да премахнем нулеви стойности от нашата колона. Да приемем, че имате таблица sales(id, amount, 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 |
+------+--------+------------+

Както можете да видите, горната таблица съдържа нулеви стойности в order_date и сума колони.

Да кажем, че искате да промените колоната за сума от нула на ненулева. Така че първо ще премахнем нулеви стойности от тази колона с помощта на оператор UPDATE.

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

По същия начин, ако искате да промените order_date колона от null на not null, първо актуализирайте null стойности до стойности без null, както е показано по-долу.

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. Промяна на таблица и промяна на колона

След това ще променим колоната за сума от нула на ненулева, като използваме оператор ALTER TABLE.

Ето синтаксиса за него.

ALTER TABLE table_name ALTER COLUMN col_name data_type NOT NULL;

Заменете table_name, col_name и data_type с съответно име на таблица, име на колона и тип данни.

Ето SQL заявката за промяна на колоната за сума от NULL на 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;

По същия начин, тук са SQL заявките за промяна на колоната order_date от NULL на 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;

Ние проверяваме горната промяна, като изпълняваме командата describe table в 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    |       |
+------------+---------+------+-----+---------+-------+

Ще видите, че колоните сума и order_date съдържат НЯМА стойност за колона NULL, което показва, че не им е разрешено да съхраняват NULL стойности.

Ubiq улеснява визуализирането на данни и наблюдението им в табла за управление в реално време. Опитайте Ubiq безплатно.

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Обединяване на различни източници на данни в наслояване

  2. Създаване на тестова среда от производствено хранилище

  3. Използване на Geekbench 3.2 за тестване на големи сървъри за бази данни

  4. Защо оптимизаторът не използва знания за буферен пул

  5. Острова T-SQL предизвикателство