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

Как да промените колона от Null на Not Null в таблицата на SQL Server - SQL Server / T-SQL урок, част 52

Сценарий:

Вие работите като разработчик на SQL Server в банка. Те имат таблица Dbo.Customer в базата данни TechBrothersIT с дефиниция по-долу.

Create Table dbo.Customer
(FirstName VARCHAR(50) Not Null,
LastName VARCHAR(50),
Age SmallInt,
PhoneNumber CHAR(9),
DOB Date,
Gender CHAR(1)
)
 Както забелязахте, фамилното име може да бъде Null. Това е проблемът. Компанията забеляза това по-късно и винаги иска да има стойността за LastName. От вас се иска да направите анализ и да напишете Alter script, за да промените колоната от Null на Not Null. Какви неща ще обмислите или предложения, които ще предоставите?

Решение:

Първото нещо, което трябва да вземете предвид в този сценарий, е да разберете дали някакви стойности вече са вмъкнати в таблицата за фамилно име като нула. Ако случаят е такъв, не можете да продължите напред и да промените колоната от Null на Not Null. Ако опитате, ще получите грешка по-долу.
Съобщение 515, ниво 16, състояние 2, ред 14 Не може да се вмъкне стойността NULL в колона 'LastName', таблица 'TechBrothersIT.dbo.Customer'; колоната не позволява нулеви стойности. UPDATE не успява.
Това означава, че първо трябва да се справим с Null стойности в тази колона. Можете да говорите с бизнеса и да ги попитате какво биха искали да направят за всички клиенти, при които фамилното име е нула. Можете да намерите списъка с клиенти, при които фамилното име е нула, като използвате заявката по-долу.
Select * From dbo.Customer
where LastName Is null
 Бизнесът може да предостави различни предложения, като например Нека актуализираме фамилното име, за да не знае къде е Null или актуализиране на фамилното име до празно(''), ако е Null или актуализиране на колоната за фамилното име на LNNP (фамилното име не е предоставено) Или те се връщат към клиентите и вземете фамилното им име за актуализиране 
В зависимост от предложенията, продължете и актуализирайте стойностите в колоната за фамилно име. Да кажем, че сме решили да актуализираме до празно '', можем да използваме заявката по-долу, за да актуализираме
update dbo.Customer
set LastName=''
where LastName is Null
 
 Вече сте готови да промените колоната в таблицата от Null на Not Null. 
Alter Table dbo.Customer
Alter Column LastName VARCHAR(50) Not Null




  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. Добавете водещи и последващи нули в SQL Server

  3. Изграждане на модел за машинно обучение със SQL Server, ML.NET и C#

  4. Как да намерите имена на колони за всички таблици във всички бази данни в SQL Server

  5. Съхранена процедура за SQL повикване за всеки ред без използване на курсор