PDA

View Full Version : |Dúvida| Qual diferença coluna DEFAULT ((0)) NOT NULL e uma DEFAULT ((0))



_-TONNYB0RUS-_
09/07/2016, 05:00 PM
Qual é a diferença de uma coluna que é DEFAULT ((0)) NOT NULL de uma DEFAULT ((0)) , pra que server aquela opção de marca Allow Nulls , Obrigado.

louis
09/07/2016, 05:33 PM
Quando você colocar um valor default deixe o not null descelecionado

_-TONNYB0RUS-_
09/07/2016, 06:16 PM
Quando você colocar um valor default deixe o not null descelecionado

isso eu sei . quero saber se interfere alguma coisa , se tem alguma função?

s00x
09/07/2016, 07:53 PM
Vou explicar, esse campo ele retorna um valor booleano, TRUE ou FALSE.
Se você informar um valor padrão (Default) NULL tem que retornar FALSE.
Se não tiver um valor padrão NULL tem que retornar TRUE.

NULL = Booleano. (0 & 1, TRUE & FALSE)
NOT NULL = Não booleano (creio que não tenha limite de caracteres para um campo NOT NULL, se tiver deve ser gigantesco também a quantidade).

Obs: caso eu esteja errado sobre NOT NULL não ter tamanho, me avise, pois realmente eu não sei.

4i20
09/07/2016, 11:10 PM
O atributo NOT NULL do SQL é usado quando queremos reforçar a necessidade de se informar o valor para um determinado campo da tabela. Quando usamos este atributo na definição de um campo, o valor para este campo não poderá ser deixado em branco, ou seja, não poderá conter o valor NULL (ausência de valor).

Veja um comando DDL CREATE TABLE usado para criar uma tabela chamada usuarios:

CREATE TABLE usuarios(
id INT NOT NULL AUTO_INCREMENT,
usuario VARCHAR(30) NOT NULL,
senha VARCHAR(10) DEFAULT NULL,
email VARCHAR(150) DEFAULT NULL,
PRIMARY KEY(id)
)ENGINE=InnoDB DEFAULT CHARSET=latin1;

Veja que aqui o campo id é do tipo INT, não aceita NULL e é auto-incremento. O campo usuario também não aceita NULL, enquanto os campos senha e email o permitem. Observe agora a seguinte instrução SQL INSERT INTO:

INSERT INTO usuarios VALUES(NULL, 'osmar', '1234',
[Only registered and activated users can see links]

Esta instrução é executada sem qualquer problema. Embora o campo id seja NOT NULL, ele é auto-incremento. Desta forma, ao fornecermos o valor NULL, o MySQL se encarrega de inserir o próximo valor de auto-incremento. Veja agora o que acontece se fornecermos o valor NULL para o campo usuario:

INSERT INTO usuarios VALUES(NULL, NULL, '1234',
[Only registered and activated users can see links]

Ao tentarmos executar esta query o MySQL lançará o seguinte erro:

Column 'usuario' cannot be null (1048)

Note que uma string vazia (ou um zero) é diferente de NULL. Assim, a instrução abaixo será executada sem quaisquer problemas:

INSERT INTO usuarios VALUES(NULL, '', '1234',
[Only registered and activated users can see links]

_-TONNYB0RUS-_
09/07/2016, 11:17 PM
Obrigado a todos , ajudou muito

s00x
10/07/2016, 03:24 AM
O atributo NOT NULL do SQL é usado quando queremos reforçar a necessidade de se informar o valor para um determinado campo da tabela. Quando usamos este atributo na definição de um campo, o valor para este campo não poderá ser deixado em branco, ou seja, não poderá conter o valor NULL (ausência de valor).

Veja um comando DDL CREATE TABLE usado para criar uma tabela chamada usuarios:

CREATE TABLE usuarios(
id INT NOT NULL AUTO_INCREMENT,
usuario VARCHAR(30) NOT NULL,
senha VARCHAR(10) DEFAULT NULL,
email VARCHAR(150) DEFAULT NULL,
PRIMARY KEY(id)
)ENGINE=InnoDB DEFAULT CHARSET=latin1;

Veja que aqui o campo id é do tipo INT, não aceita NULL e é auto-incremento. O campo usuario também não aceita NULL, enquanto os campos senha e email o permitem. Observe agora a seguinte instrução SQL INSERT INTO:

INSERT INTO usuarios VALUES(NULL, 'osmar', '1234',
[Only registered and activated users can see links]

Esta instrução é executada sem qualquer problema. Embora o campo id seja NOT NULL, ele é auto-incremento. Desta forma, ao fornecermos o valor NULL, o MySQL se encarrega de inserir o próximo valor de auto-incremento. Veja agora o que acontece se fornecermos o valor NULL para o campo usuario:

INSERT INTO usuarios VALUES(NULL, NULL, '1234',
[Only registered and activated users can see links]

Ao tentarmos executar esta query o MySQL lançará o seguinte erro:

Column 'usuario' cannot be null (1048)

Note que uma string vazia (ou um zero) é diferente de NULL. Assim, a instrução abaixo será executada sem quaisquer problemas:

INSERT INTO usuarios VALUES(NULL, '', '1234',
[Only registered and activated users can see links]

Lembrando que o conteúdo mencionado é relacionado a MySQL, em MSSQL, já entra o método SPARSE para campos nulos.

4i20
10/07/2016, 09:07 AM
A pergunta do mesmo esta falando sobre coluna de dados , nao sobre valores e definicoes de variaveis. Pergunta dele foi simple e vo dexa mais simples...
e so traduzir:
Null = Nulo
Not Null = Nao Nulo

[Only registered and activated users can see links]

s00x
10/07/2016, 09:33 AM
A pergunta do mesmo esta falando sobre coluna de dados , nao sobre valores e definicoes de variaveis. Pergunta dele foi simple e vo dexa mais simples...
e so traduzir:
Null = Nulo
Not Null = Nao Nulo

[Only registered and activated users can see links]

Quer da uma de ignorante, então vamos ser ignorante, a duvida dele foi postada em MUONLINE, se você usa MYSQL pra alguma coisa em MuOnline, meus parabéns, e quem ta falando de variáveis meu jovem? muito menos de binário ? Acho que estamos no mesmo tópico e alguém esta num assunto contrário.

L.Henrique
10/07/2016, 09:46 AM
Tópico Fechado!

Caso o autor queira que reabra, entre em contato com algum membro da Staff solicitando a reabertura via MP.


Grato
[]'