Olá galera o/

Continuando nossa série de postagens sobre as restrições de domínio vulgo constraints, hoje abordaremos sobre O Not Null.

Let’s go para nosso quarto episódio Guys!!!

O que é a Constraint Not Null?

Restrição que impede a coluna de receber valores nulos no momento da inserção ou atualização.

Obs.1: O SQL Server coloca como padrão NULL quando não é informado se o campo não pode receber valores nulos.

Obs.2: Quando uma coluna recebe a restrição Primary Key, automaticamente é atribuida NOT NULL.

Boa prática!

Analise MUITO bem quais colunas vão não podem receber nulo, ou seja, caso todas as colunas recebam a restrição, você estará informando a obrigatoriedade de preenchimento de todas as colunas no momento do insert.

Sempre explicitar se o campo é NULL ou NOT NULL na criação da tabela.

Para facilitar o entendimento, unificaremos a nomenclatura tudo que for referente a atributo, coluna ou campo, utilizaremos a palavra coluna (Column).

Praticando a criação da constraint Not Null!

A partir de agora, começaremos a praticar a criação da constraint Not Null.

1 – Criando tabelas com Not Null- Definição no create table

1.1 – Criaremos uma tabela chamada TB_NOTNULL com 4 colunas. Duas colunas receberão a constraint NOT NULL e uma poderá receber valores nulos. .

Sintaxe da atribução do NOT NULL:

Sem nome da constraint:
– coluna TIPO NOT NULL

Com nome da constraint:
– coluna TIPO CONSTRAINT nome_constraint NOT NULL

CREATE TABLE TB_NOTNULL(
COD SMALLINT PRIMARY KEY IDENTITY,
COLUNA_LETRA CHAR(1) NOT NULL,
COLUNA_NUMERO MONEY CONSTRAINT CONSTRAINT_NOTNULL NOT NULL,
COLUNA_DATA DATE NULL
)

1.2 – Iremos inserir 3 registros nas tabelas TB_NOTNULL, ao inserir os registros, devemos consultar a tabela.Percebam que, atribuímos o valor NULL para a coluna COLUNA_DATA.

INSERT INTO TB_NOTNULL(COLUNA_LETRA,COLUNA_NUMERO,COLUNA_DATA)
VALUES 
	('A', 10.5, '2022-11-28'),
	('B', 25.9, NULL),
	('C', 5.5, '2022-11-28')


SELECT * FROM TB_NOTNULL

1.2 – Agora tentaremos inserir mais valores nulos nas colunas com o NOT NULL.

No primeiro INSERT passamos valores apenas para as colunas COLUNA_LETRA e COLUNA_DATA, ou seja, a coluna COLUNA_NUMERO receberá um valor nulo.

No segundo INSERT passamos valores apenas para as colunas COLUNA_NUMERO e COLUNA_DATA, ou seja, a coluna COLUNA_LETRA receberá um valor nulo.

No terceiro INSERT passamos valores apenas para a COLUNA_DATA, ou seja, as colunas COLUNA_LETRA e COLUNA_NUMERO receberão valores nulos.

Em todas as situações o SQL Server apresentará erro, informando que as colunas em questão não podem receber valores nulos por conta da constraint NOT NULL.

INSERT INTO TB_NOTNULL(COLUNA_LETRA,COLUNA_DATA)
VALUES 
	('D', '2022-11-28')

INSERT INTO TB_NOTNULL(COLUNA_NUMERO,COLUNA_DATA)
VALUES 
	(100, '2022-11-28')

INSERT INTO TB_NOTNULL(COLUNA_LETRA, COLUNA_NUMERO,COLUNA_DATA)
VALUES 
	(NULL, NULL, '2022-11-28')

1.3 – Iremos inserir um novo registro passando como duas aspas simples sem valor nenhum dentro, ou seja, em branco (”). Lembrem-se que, o valor EM BRANCO é totalmente diferente de NULO. Após inserirmos o registro, devemos consultar a tabela.

INSERT INTO TB_NOTNULL(COLUNA_LETRA, COLUNA_NUMERO,COLUNA_DATA)
VALUES 
	('', 655.88, '2022-11-28')

SELECT * FROM TB_NOTNULL

3 – Adicionando NOT NULL depois de uma tabela já criada.

2.1 – Iremos adicionar agora uma restrição not null em uma tabela já existente. Para isso, atribuiremos a constraint NOT NULL para a coluna COLUNA_DATA. Porém, será apresentado um erro, pois, a coluna COLUNA_DATA possui valores nulos inseridos.

ALTER TABLE TB_NOTNULL
ALTER COLUMN COLUNA_DATA DATE NOT NULL

2.2 – Para resolvermos isso, devemos primeiro analisar quais registros estão com a COLUNA_DATA com valores nulos, para que depois possamos atualizar todos os valores nulos da coluna, após atualização devemos re-executar o comando de alteração da estrutura da tabela.

SELECT * FROM TB_NOTNULL
UPDATE TB_NOTNULL
SET COLUNA_DATA = '2022-11-28' 
WHERE COD = 2

SELECT * FROM TB_NOTNULL
ALTER TABLE TB_NOTNULL
ALTER COLUMN COLUNA_DATA DATE NOT NULL

2.3 – Para removermos uma restrição NOT NULL em uma coluna, devemos apenas atribuir o valor NULL no momento do comando de alteração da estrutura da tabela

ALTER TABLE TB_NOTNULL
ALTER COLUMN COLUNA_DATA DATE NULL

3 – Considerações Finais

No episódio 04 aprendemos um pouco sobre a constraint NOT NULL, como criar uma tabela com Not Null, como adicionar uma Not Null em uma tabela já existente, o que acontece quando tentamos inserir valores nulos em coluna com a constraint Not Null aplicada.

Este é o quarto de 6 posts sobre as constraints, fiquem atentos aos próximos episódios dessa série.

Espero que tenham gostado pessoal, boa leitura e bons estudos!

Quem quiser mandar comentários, sugestões, críticas ou dicas complementares, fiquem a vontade, pois feedbacks positivos ou negativos engradecem meu conhecimento para poder melhorar as postagens para vocês.

Até a próxima o/

Acessem nossas Redes Sociais: