Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

NULL E NOT NULL

Se eu criar a tabela sem especificar "null" ou "not null" poderá acarretar em qual tipo de erro ?

3 respostas

Olá Miguel, tudo bem? Primeiro precisamos entender qual a diferença entre os dois, bem um campo definido como NULL, significa dizer que esse campo pode ficar nulo, ou seja, não é obrigatório possuir nenhum valor. Já um campo definido como NOT NULL precisa de algum valor na coluna, mesmo que seja um valor vazio como um "".

Assim, você precisa ver suas necessidades, geralmente o que acontece quando estamos criando a estrutura do banco de dados é que colocamos o NOT NULL nas colunas essenciais para a tabelas, as colunas que não podem de forma alguma serem armazenadas sem um valor definido pra ela. Já o NULL indicamos apenas quando temos campos opcionais, onde não fazem muita diferença ter esse campo ou não ter.

Sobre quais os erros que podemos ter: Se tentarmos inserir um registro (uma linha completa, com todos os campos da tabela), e não informarmos um valor (nem que seja ""), teremos uma erro de violação. Já usando o NULL não teremos erros já que não precisamos indicar campos nulos, podemos simplesmente ignorá-los.

Espero ter esclarecido sua dúvida!

Agradeço a atenção, mas o que eu gostaria de entender é o que o SQL interpreta por default. Exemplo:

CREATE TABLE TABELA_EXEMPLO (COLUNA 1 VARCHAR(50), COLUNA 2 VARCHAR(50), PRIMARY KEY (COLUNA1) );

Se eu criasse essa tabela dessa forma, ele interpretaria essas colunas como 'null' ou 'not null' ?

solução!

Peço desculpas pelo engano Miguel, não tinha compreendido dessa forma! Bom nesse caso, se você não indicar explicitamente no comando CREATE TABLE quais campos são NOT NULL, nenhum campo será obrigatório, ou seja os campos não marcados como NOT NULL são NULL, ou seja aceita valores nulos. Nesses casos podemos indicar o campo como NULL da seguinte forma:

CREATE TABLE tabela_exemplo (COLUNA _ VARCHAR(50) NULL);

Ou simplesmente não indicarmos nada:

CREATE TABLE tabela_exemplo (COLUNA_1 VARCHAR(50));

É a mesma coisa. Porém se indicarmos o NOT NULL:

CREATE TABLE tabela_exemplo (COLUNA_1 VARCHAR(50) NOT NULL);

Ai sim, o campo COLUNA_1 será obrigatório seu preenchimento.

Espero ter esclarecido sua dúvida!