3.1 Comparando valores: <, >, =, <>

Uma das palavras-chave mais comuns usadas ao escrever consultas SQL é a WHERE. É com sua ajuda que informamos ao MySQL quais linhas da tabela queremos filtrar (selecionar).

Após a palavra-chave, WHEREvocê pode escrever condições muito complexas e complicadas. Então, quais operações essa condição pode conter?

Operador Descrição Exemplo
< Menos salário <40000
> Mais salário > 100.000
<= menor ou igual idade <= 25
>= Mais ou igual idade >= 18
= É igual a ocupação = 'Programador'
<>, != Não igual Year(join_date) != 2015

Ao contrário da linguagem Java, para igualdade estrita, um caractere igual é usado aqui, e não dois .

Se você deseja verificar se os valores não são iguais, isso pode ser feito de duas maneiras: A <>primeira !=abordagem é usada em linguagens como Pascal, a segunda é típica para linguagens como C ++ e Java.

Para atribuição em SQL, é usado :=como em Pascal, mas a atribuição em si é usada muito raramente.

Vamos escrever uma consulta onde mostramos todos os funcionários que não foram contratados em 2015.


SELECT * FROM employee WHERE YEAR(join_date) != 2015
        

E obtemos o seguinte resultado da consulta:

eu ia nome ocupação salário idade data de afiliação
1 Ivanov Ivan Programador 100.000 25 30/06/2012
2 Petrov Petr Programador 80.000 23 12/08/2013
3 Ivanov Sergei Testador 40.000 trinta 2014-01-01
6 Vaska gato 1.000 3 2018-01-01

3.2 Operações lógicas E, OU, NÃO

Você também pode WHEREusar as operações lógicas AND, ORe NOT. E eles estão escritos exatamente como eu os descrevi aqui. Nenhum &&, ||ou!

Vamos escrever uma consulta SQL onde selecionamos funcionários com mais de 20 anos e recebem um salário inferior a 50 mil.


SELECT * FROM employee WHERE age > 20 AND salary < 50000
        

E obtemos o seguinte resultado da consulta:

eu ia nome ocupação salário idade data de afiliação
3 Ivanov Sergei Testador 40.000 trinta 2014-01-01
5 Kirienko Anastácia Gerente 40.000 25 2015-10-10

Muito fácil. Vamos escrever uma consulta onde selecionamos funcionários que recebem mais de 100K e não trabalham como diretor:


SELECT * FROM employee WHERE salary >= 100000 AND NOT occupation = 'Director'
        

Aqui usamos especificamente !=o operador em vez do símbolo NOT.

E obtemos o seguinte resultado da consulta:

eu ia nome ocupação salário idade data de afiliação
1 Ivanov Ivan Programador 100.000 25 30/06/2012

3.3 ENTRE: intervalo de valores

Também no SQL existe um operador especial BETWEENcom o qual você pode verificar se uma variável está entre dois valores. Este operador é usado dentro de expressões booleanas. A forma geral de tal operador é:


variable BETWEEN bottom line AND top_bound
        

Nesse caso, ao contrário da linguagem Java, os limites inferior e superior estão incluídos no intervalo permitido.

Vamos escrever um exemplo onde selecionamos todos os funcionários com salário de 40K a 100K. A solicitação ficará assim:

SELECT * FROM employee WHERE salary BETWEEN 40000 AND 100000

E obtemos o seguinte resultado da consulta:

eu ia nome ocupação salário idade data de afiliação
1 Ivanov Ivan Programador 100.000 25 30/06/2012
2 Petrov Petr Programador 80.000 23 12/08/2013
3 Ivanov Sergei Testador 40.000 trinta 2014-01-01
5 Kirienko Anastácia Gerente 40.000 25 2015-10-10

O operador BETWEENsuporta não apenas tipos numéricos, mas também datas e até mesmo tipos de string . No caso de trabalhar com strings, utiliza-se a ordem lexicográfica: aaba vem antes de aabb

3.4 IN: lista de valores

Além disso, o SQL possui um operador especial INcom o qual você pode verificar se uma variável está contida na lista especificada. Este operador é usado dentro de expressões booleanas. A forma geral de tal operador é:

variable IN (value 1 , value 2 , ... value N)

Vamos escrever uma consulta na qual selecionamos funcionários com 20, 25 ou 30 anos. A solicitação ficará assim:

SELECT * FROM employee WHERE age IN (20, 25, 30)

E obtemos o seguinte resultado da consulta:

eu ia nome ocupação salário idade data de afiliação
1 Ivanov Ivan Programador 100.000 25 30/06/2012
3 Ivanov Sergei Testador 40.000 trinta 2014-01-01
5 Kirienko Anastácia Gerente 40.000 25 2015-10-10

E agora vamos escrever uma consulta, onde, ao contrário, selecionamos funcionários com idade de not20, 25 ou 30 anos. A consulta ficará assim:

SELECT * FROM employee WHERE age NOT IN (20, 25, 30)

E obtemos o seguinte resultado da consulta:

eu ia nome ocupação salário idade data de afiliação
2 Petrov Petr Programador 80.000 23 12/08/2013
4 Rabinovich Moisha Diretor 200.000 35 2015-05-12
6 Vaska gato 1.000 3 2018-01-01

Tudo funcionou como esperado. Beleza.

3.5 LIKE: padrão de string

E, finalmente, outro operador importante e muito usado - LIKE. É usado ao comparar strings. Ele pode ser usado para definir um padrão de string. Este operador é usado dentro de expressões booleanas. A forma geral de tal operador é:

variable LIKE 'sample'

Caracteres especiais podem ser usados ​​no padrão: %e _.

  • Sublinhado significa qualquer caractere, sempre 1 pc.
  • Porcentagem significa qualquer caractere e qualquer número de vezes (incluindo 0 vezes).

Vamos escrever uma consulta que selecionará todas as pessoas cujo sobrenome começa com a letra "I". A solicitação ficará assim:

SELECT * FROM employee WHERE name LIKE 'I%'

E obtemos o seguinte resultado da consulta:

eu ia nome ocupação salário idade data de afiliação
1 Ivanov Ivan Programador 100.000 25 30/06/2012
3 Ivanov Sergei Testador 40.000 trinta 2014-01-01

Agora vamos complicar a tarefa - o nome deve conter "o" e o nome deve terminar com "a". A solicitação ficará assim:

SELECT * FROM employee WHERE name LIKE '%o%a'

E obtemos o seguinte resultado da consulta:

eu ia nome ocupação salário idade data de afiliação
4 Rabinovich Moisha Diretor 200.000 35 2015-05-12

Ok, vamos tornar isso um pouco mais difícil. Vamos filtrar todos os funcionários cuja idade começa com o número "3". A solicitação ficará assim:

SELECT * FROM employee WHERE age LIKE '3%'

E obtemos o seguinte resultado da consulta:

eu ia nome ocupação salário idade data de afiliação
3 Ivanov Sergei Testador 40.000 trinta 2014-01-01
4 Rabinovich Moisha Diretor 200.000 35 2015-05-12
6 Vaska gato 1.000 3 2018-01-01

A propósito, nossa coluna de idadeint é do tipo , portanto LIKEnão funciona apenas com strings. O que não pode deixar de se alegrar.