MySQL NULL: o guia para iniciantes

Resumo : neste tutorial você aprenderá como trabalhar com NULLvalores MySQL. Além disso, você aprenderá algumas funções úteis para lidar com os NULLvalores de forma eficaz.

NULLIntrodução aos valores MySQL

No MySQL, um NULLvalor significa desconhecido. Um NULLvalor é diferente de zero( 0) ou de uma string vazia ''.

Um NULLvalor não é igual a nada, nem mesmo a si mesmo. Se você comparar um NULLvalor com outro NULLvalor ou qualquer outro valor, o resultado é NULLporque o valor de cada NULLvalor é desconhecido.

Geralmente, você usa o NULLvalor para indicar que os dados estão ausentes, são desconhecidos ou não são aplicáveis. Por exemplo, o número de telefone de um cliente potencial pode NULLser adicionado posteriormente.

Ao criar uma tabela , você pode especificar se uma coluna aceita NULLvalores ou não usando a NOT NULLrestrição.

Por exemplo, a instrução a seguir cria a leadstabela:

DROP TABLE IF EXISTS leads;

CREATE TABLE leads (
    id INT AUTO_INCREMENT PRIMARY KEY,
    first_name VARCHAR(50) NOT NULL,
    last_name VARCHAR(50) NOT NULL,
    source VARCHAR(255) NOT NULL,
    email VARCHAR(100),
    phone VARCHAR(25)
);Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Nesta leadstabela, a coluna idé a coluna de chave primária , portanto não aceita nenhum NULLvalor.

As colunas first_name, last_namee sourceusam as NOT NULLrestrições, portanto, você não pode inserir nenhum NULLvalor nessas colunas, enquanto as colunas emaile phoneaceitam valores NULL.

Você pode usar um NULLvalor na INSERTinstrução para especificar que os dados estão faltando. Por exemplo, a instrução a seguir insere uma linha na leadstabela. Como o número de telefone está faltando, um NULLvalor é usado.

INSERT INTO leads(first_name,last_name,source,email,phone)
VALUE('John','Doe','Web Search','[email protected]',NULL);Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Como o valor padrão da coluna email é NULL, você pode omitir o email na INSERTinstrução da seguinte maneira:

INSERT INTO leads(first_name,last_name,source,phone)
VALUES
    ('Lily','Bush','Cold Calling','(408)-555-1234'),
    ('David','William','Web Search','(408)-888-6789');Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )
Inserção NULA do MySQL

MySQL SET NULLem UPDATEdeclaração

Para definir o valor de uma coluna como NULL, você usa o operador de atribuição ( =). Por exemplo, para atualizar o telefone de David Williamto NULL, você usa a seguinte   UPDATEinstrução:

UPDATE leads 
SET 
    phone = NULL
WHERE
    id = 3;Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

MySQL ORDER BYcomNULL

Se você usar a ORDER BYcláusula para classificar o conjunto de resultados em ordem crescente, o MySQL considera NULLos valores inferiores aos outros valores, portanto, apresenta os NULLvalores primeiro.

A instrução a seguir classifica os leads por número de telefone em ordem crescente.

SELECT 
    *
FROM
    leads
ORDER BY phone;Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )
MySQL NULO ORDENAR POR

Caso você use o ORDER BY DESC, os NULLvalores aparecem no final do conjunto de resultados. Veja o exemplo a seguir:

SELECT 
    *
FROM
    leads
ORDER BY phone DESC;Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )
MySQL NULO PEDIDO POR DESC

Para testar NULLem uma consulta, você usa o operador IS NULLou IS NOT NULLna WHEREcláusula.

Por exemplo, para obter os leads que ainda não forneceram o número de telefone, você utiliza a IS NULLoperadora da seguinte forma:

SELECT 
    *
FROM
    leads
WHERE
    phone IS NULL;Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )
MySQL É NULO

Você pode usar a IS NOToperadora para obter todos os leads que forneceram os endereços de e-mail.

SELECT 
    *
FROM
    leads
WHERE
    email IS NOT NULL;Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )
MySQL NÃO É NULO

Mesmo que the NULLnão seja igual a NULL, dois NULLvalores são iguais na GROUP BYcláusula.

SELECT 
    id, first_name, last_name, email, phone
FROM
    leads
GROUP BY email;Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )
MySQL NULO com GROUP BY

A consulta retorna apenas duas linhas porque as linhas cuja coluna email está NULLsão agrupadas em uma.

MySQL NULLe UNIQUEíndice

Ao usar uma restrição UNIQUE ou um índice UNIQUE em uma coluna, você pode inserir vários NULLvalores nessa coluna. Está perfeitamente bem porque, neste caso, o MySQL considera que NULLos valores são distintos.

Vamos verificar esse ponto criando um UNIQUEíndice para a phonecoluna.

CREATE UNIQUE INDEX idx_phone ON leads(phone);Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Observe que se você usar o mecanismo de armazenamento BDB , o MySQL considera que os NULLvalores são iguais, portanto você não pode inserir vários NULLvalores em uma coluna que possui uma restrição exclusiva.

NULL Funções MySQL

O MySQL fornece várias funções úteis que lidam com NULL de maneira eficaz: IFNULL, COALESCEe NULLIF.

A IFNULLfunção aceita dois parâmetros. A IFNULLfunção retorna o primeiro argumento se não for NULL, caso contrário, retorna o segundo argumento.

Por exemplo, a instrução a seguir retorna o número de telefone, caso contrário NULL, ela retorna N/A em vez de NULL.

SELECT 
    id, 
    first_name, 
    last_name, 
    IFNULL(phone, 'N/A') phone
FROM
    leads;Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )
Exemplo de função MySQL IFNULL

A COALESCEfunção aceita uma lista de argumentos e retorna o primeiro argumento não NULO. Por exemplo, você pode usar a COALESCEfunção para exibir as informações de contato de um lead com base na prioridade das informações na seguinte ordem: telefone, email e N/A.

SELECT 
    id,
    first_name,
    last_name,
    COALESCE(phone, email, 'N/A') contact
FROM
    leads;Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )
Exemplo de função MySQL COALESCE

A NULLIFfunção aceita dois argumentos. Se os dois argumentos forem iguais, a NULLIFfunção retornará NULL. Caso contrário, ele retorna o primeiro argumento.

A NULLIFfunção é útil quando você tem NULLvalores de string vazios em uma coluna. Por exemplo, por engano, você insere a seguinte linha na leadstabela:

INSERT INTO leads(first_name,last_name,source,email,phone)
VALUE('Thierry','Henry','Web Search','[email protected]','');Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

O telefone é uma string vazia em vez de NULL.

Se você deseja obter os dados de contato dos leads, você acaba com um telefone vazio em vez do e-mail conforme a seguinte consulta:

SELECT 
    id,
    first_name,
    last_name,
    COALESCE(phone, email, 'N/A') contact
FROM
    leads;Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )
MySQL NULL e string vazia

Para corrigir isso, você usa a NULLIFfunção para comparar o telefone com a string vazia, se forem iguais retorna NULL, caso contrário retorna o número do telefone.

SELECT 
    id,
    first_name,
    last_name,
    COALESCE(NULLIF(phone, ''), email, 'N/A') contact
FROM
    leads;Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )
Exemplo de função MySQL NULLIF

Neste tutorial, você aprendeu como trabalhar com MySQL NULLe como usar algumas funções úteis para lidar NULLcom consultas.

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *