Se eu criar a tabela sem especificar "null" ou "not null" poderá acarretar em qual tipo de erro ?
Se eu criar a tabela sem especificar "null" ou "not null" poderá acarretar em qual tipo de erro ?
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' ?
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!