it-swarm-pt.tech

Qual é o valor padrão para um campo se nenhum valor padrão for fornecido?

Espero que não seja uma pergunta idiota. Você pode definir um valor padrão para todas as variáveis ​​ou uma função para quando ela for inserida. mas se o campo não é obrigatório para inserção e você não permite valores nulos, qual é o valor "em branco" que você vê no phpMyAdmin? em uma consulta é retornado como string vazia, etc?

apenas tentando descobrir isso, eu quero consultar todos os registros de forma que o valor de uma coluna específica nesse registro não esteja "vazio" ou em branco ou qualquer outra coisa.

obrigado.

16
lollercoaster

Referindo-se ao manual ,

Para a entrada de dados para uma coluna NOT NULL que não tem cláusula DEFAULT explícita, se uma instrução INSERT ou REPLACE não incluir nenhum valor para a coluna, ou uma instrução UPDATE definir a coluna como NULL, o MySQL tratará a coluna de acordo com o modo SQL em vigor em A Hora:

  • Se o modo SQL estrito não estiver ativado, o MySQL definirá a coluna com o valor padrão implícito para o tipo de dados da coluna.
  • Se o modo estrito estiver ativado, ocorrerá um erro nas tabelas transacionais e a instrução será revertida. Para tabelas não transacionais, um
    erro ocorre, mas se isso acontecer para a segunda linha ou subsequente de uma instrução de várias linhas, as linhas anteriores terão sido inseridas.

Portanto, sua pergunta agora pode ser: quais são os valores padrão implícitos para os vários tipos de dados de coluna? Aqui está:

Os padrões implícitos são definidos da seguinte forma:

  • Para tipos numéricos, o padrão é 0, com exceção dos tipos inteiros ou de ponto flutuante declarados com AUTO_INCREMENT
    atributo, o padrão é o próximo valor na sequência.
  • Para tipos de data e hora diferentes de TIMESTAMP, o padrão é o valor “zero” apropriado para o tipo. Para a primeira coluna TIMESTAMP em uma tabela, o valor padrão é a data e hora atuais. Consulte a Seção 10.3, “Tipos de data e hora”.
  • Para tipos de string diferentes de ENUM, o valor padrão é a string vazia. Para ENUM, o padrão é o primeiro valor de enumeração.
27
Question Overflow

Há IS nenhum valor padrão, a menos que você especifique um (ou seja, a menos que você defina uma "restrição padrão" para a coluna em questão).

Aqui está um exemplo para adicionar um padrão a uma coluna existente:

ALTER TABLE dbo.customer ALTER COLUMN contactname SET DEFAULT 'Unknown'

Aqui está um exemplo de criação de tabela com um padrão:

CREATE TABLE Books (
  ID SMALLINT NOT NULL,
  Name VARCHAR(40) NOT NULL,
  PubID SMALLINT NOT NULL DEFAULT 0
)

É uma boa prática declarar TODAS as colunas "não nulas" e fornecer restrições padrão conforme apropriado.

No exemplo de "livros" acima, se você "inserir" sem especificar PubID, o PubID será zero.

No mesmo exemplo, se você "inserir" sem especificar ID ou Nome ..., você obterá um erro.

Se você deseja que o MySQL atribua automaticamente um ID, use esta sintaxe:

CREATE TABLE Books (
  ID SMALLINT NOT NULL AUTO_INCREMENT,
  Name VARCHAR(40) NOT NULL,
  PubID SMALLINT NOT NULL DEFAULT 0
)
0
paulsm4