Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Consultas MySQL


Até agora criamos um banco de dados, adicionamos duas tabelas e inserimos dados em ambas as tabelas. Agora vamos ver como recuperar esses dados. Mas não apenas recuperar os dados, mas para consultar o banco de dados para isso.

SQL significa Linguagem de Consulta Estruturada . É a Consulta pouco que torna o SQL tão poderoso. SQL é uma linguagem que permite executar consultas contra seu banco de dados. Permite consultar banco de dados para os dados que você deseja.

O SQL SELECT Declaração


Quando se trata de consultar seu banco de dados MySQL, o SQL SELECT declaração torna tudo isso possível. Esta é provavelmente a sua instrução SQL usada com mais frequência ao trabalhar com o MySQL. O SELECT permite que você descreva para o MySQL exatamente quais dados você deseja que ele recupere.

Considere a seguinte instrução SQL:
SELECT * FROM Fruit;

Aqui está o resultado:

Este é o SELECT declaração em sua forma mais simples. A instrução SQL acima recupera todos os registros do Fruit tabela.

O asterisco (* ) diz ao MySQL para retornar todas as colunas. Isso nos poupa tempo e esforço. Sem isso, precisaríamos escrever os nomes de todas as colunas que gostaríamos de ter retornado.

Dito isso, você também pode dizer ao MySQL para retornar apenas as colunas que deseja retornar. Isso é feito nomeando apenas as colunas que você gostaria de ter retornado. Assim:
SELECT FruitId, FruitName 
FROM Fruit;

Aqui está o resultado:

A instrução SQL acima seleciona o FruitId e FruitName colunas da Frutas tabela.

Isso pode reduzir a desordem para que você veja apenas as colunas nas quais está interessado. Também pode aumentar o desempenho, porque o MySQL (e qualquer aplicativo que você usa) não precisa usar recursos valiosos para retornar dados desnecessários.

Novamente, esta consulta recupera todos registros da tabela — o MySQL retornará todos os registros a menos que especificado de outra forma.

O WHERE Cláusula


Você pode adicionar o WHERE cláusula para restringir o conjunto de resultados apenas aos registros nos quais você está interessado. Assim:
SELECT * FROM Fruit
WHERE UnitId = 1;

Resultado:

A consulta acima retorna todos os registros da Fruit tabela onde o UnitId coluna tem um valor de 1 .

Subconsultas — SELECT aninhado Declarações


E se não conhecêssemos o UnitId ? E se soubéssemos procurar esses registros com um nome de unidade de Piece ?

Fácil! Poderíamos reescrever o exemplo acima para usar um SELECT aninhado instrução (também conhecida como subconsulta ) que consulta outra tabela (as Unidades tabela). Isso nos permitirá usar a unidade real nome (em vez de seu ID) porque a segunda tabela contém isso no UnitName campo:
SELECT * FROM Fruit
WHERE UnitId = 
	(SELECT UnitId 
    FROM Units 
    WHERE UnitName = 'Piece');

Resultado:

Aqui usamos um SELECT aninhado instrução (ou seja, um SELECT declaração dentro de um SELECT instrução) para consultar as Unidades tabela para o UnitId do registro que contém Piece como seu UnitName valor. Podemos fazer isso porque Fruit.UnitId coluna é uma chave estrangeira para o Units.UnitId coluna.

Aqui estão mais exemplos de subconsultas se você estiver interessado.

Usando um SQL JOIN


Dando um passo adiante, poderíamos reescrever nosso SELECT aninhado declaração em um INNER JOIN .

No SQL, um JOIN permite consultar várias tabelas que compartilham dados. No nosso caso, ambas as tabelas compartilham o UnitId então você poderia dizer que eles estão "unidos" por este campo.

Existem diferentes tipos de junções no SQL, no entanto, estamos interessados ​​principalmente no INNER JOIN por enquanto.

O INNER JOIN sintaxe fica assim:
SELECT * FROM table_name_1
INNER JOIN table_name_2
ON table_name_1.column_name = table_name_2.column_name

Assim, poderíamos reescrever nossa subconsulta do exemplo anterior para o seguinte:
SELECT Fruit.* FROM Fruit
INNER JOIN Units
ON Fruit.UnitId = Units.UnitId
WHERE Units.UnitName = 'Piece';

Resultado:

Especificamos Fruit.* em vez de apenas * porque só queríamos retornar todas as colunas do Fruit tabela. Se tivéssemos usado * , a consulta retornaria todas as colunas de ambas as tabelas.

Confira também o LEFT JOIN e RIGHT JOIN para ver como você pode obter dados diferentes dependendo do tipo de junção.

Subconsulta vs JOIN ?


Agora que você viu dois métodos para alcançar o mesmo resultado, provavelmente está se perguntando qual é o melhor?

As subconsultas tendem a ser mais legíveis (e talvez mais fáceis de compreender), o que pode facilitar a compreensão dos iniciantes.

No entanto, muitos programadores SQL encontram JOIN é mais eficiente e tem melhor desempenho. Se você encontrar problemas de desempenho com suas consultas ou um aplicativo, tente converter qualquer subconsulta em JOIN s ou vice-versa (em alguns casos, uma subconsulta pode ter um desempenho melhor).

Além disso, pode haver casos em que uma subconsulta seja sua única opção, portanto, isso também é uma consideração.

Mais operadores


Nossas consultas até agora continham um sinal de igual (= ). Isso é chamado de operador . Mais especificamente, é um operador de comparação uma vez que compara uma expressão com outra.

Existem muitos outros operadores que você pode usar em suas consultas. Isso pode ajudar muito a restringir o conjunto de resultados apenas aos registros necessários. Não é incomum que um banco de dados contenha milhões de registros. Mesmo se você tiver apenas milhares de registros, tentar encontrar um registro (ou mesmo apenas um punhado) entre milhares seria uma tarefa muito difícil se você não tivesse esses operadores à sua disposição.

Aqui estão alguns dos operadores SQL mais usados.

O > Operador


Você pode usar o > operador para selecionar dados maiores do que um determinado valor.
SELECT * FROM Fruit
WHERE Inventory > 10;

O < Operador


Você pode usar o < operador para selecionar dados menos do que um determinado valor.
SELECT * FROM Fruit
WHERE Inventory < 10;

O <> Operador


Você pode usar o <> operador para selecionar dados que são menores que e maior que um determinado valor.
SELECT * FROM Fruit
WHERE Inventory <> 10;

O >= Operador


Você pode usar o >= operador para selecionar dados maiores ou iguais a um determinado valor.
SELECT * FROM Fruit
WHERE Inventory >= 10;

O <= Operador


Você pode usar o <= operador para selecionar dados que são menores ou iguais a um determinado valor.
SELECT * FROM Fruit
WHERE Inventory <= 10;

O AND Operador


Você pode adicionar um AND operador para WHERE cláusula para limitar sua seleção apenas aos registros que atendem a duas condições (ou mais, se você incluir mais AND operadores).

Aqui está um exemplo:
SELECT * FROM Fruit
WHERE Inventory > 10 
AND DateEntered > '2015-01-15';

O OR Operador


Você pode usar um OR operador para ampliar sua seleção para mais de um critério. Como o nome sugere, o OR cláusula permite que você selecione dados onde o critério é este OU que. Portanto, o AND operador limites sua seleção e o OR operador amplia isto.

Aqui está um exemplo:
SELECT * FROM Fruit
WHERE UnitId = 1 OR UnitId = 2;

O BETWEEN Operador


Use o BETWEEN operador para selecionar dados que estão entre dois valores fornecidos.
SELECT * FROM Fruit
WHERE DateEntered 
BETWEEN '2015-01-25' AND '2015-02-25';

O NOT Operador


Use o NOT operador para selecionar dados que não equivalente a uma dada condição.
SELECT * FROM Fruit
WHERE NOT (FruitName = 'Apple');