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:
Artigo muito didático e escrito de uma forma estruturada e interessante. Parabéns pela postagem!
CurtirCurtir