SELECT
Comando utilizado para recuperar as informações armazenadas em um banco de dados.
O comando SELECT
é composto dos atributos que desejamos, a ou as tabela(s) que possuem esses atributos e as condições que podem ajudar a filtrar os resultados desejados. Não é uma boa prática usar o *
ou star para trazer os registros de uma tabela. Procure especificar somente os campos necessários. Isso ajuda o motor de execação de consultas a construir bons planos de execução. Se você conhecer a estrutura da tabela e seus índices, procure tirar proveito disso usando campos chaves, ou buscando e filtrando por atributos que fazem parte de chaves e índices no banco de dados.
O Comando
FROM
indica a origem dos dados que queremos.
Na consulta acima indicamos que queremos todas as informações de clientes. É possível especificar mais de uma tabela no comando FROM
, porém, se você indicar mais de uma tabela no comando FROM
, lembre-se de indicar os campos que fazem o relacionamento entre as tabelas mencionadas na cláusula FROM
.
O comando
WHERE
indica quais as consições necessárias e que devem ser obedecidadas para aquela consulta.
Procure usar campos restritivos ou indexados para otimizar sua consulta. Na tabela Clientes
temos o código do cliente como chave, isso mostra que ele é um bom campo para ser usado como filtro.
Um comando que pode auxiliar na obtenção de metadados da tabela que você deseja consultar é o comando
sp_help
. Esse comando mostrar a estrutura da tabela, seus atributos, relacionamentos e o mais importante, se ela possui índice ou não.
Repare que a tabela Clientes possui uma chave no
ClienteCodigo
, portanto se você fizer alguma busca ou solicitar o campoClienteCodigo
a busca será muito mais rápida. Caso você faça alguma busca por algum campo que não seja chave ou não esteja “indexado” (Veremos índice mais pra frente) a busca vai resultar em uma varredura da tabela, o que não é um bom negócio para o banco de dados.Para escrever um comando
SELECT
procuramos mostrar ou buscar apenas os atributos que vamos trabalhar, evitando assim carregar dados desnecessários e que serão descartados na hora da montagem do formulário da aplicação. Também recomendamos o uso do nome da Tabela antes dos campos para evitar erros de ambiguidade que geralmente aparecem quando usamos mais de uma tabela.
Você pode usar o comando
AS
para dar apelidos aos campos e tabelas para melhorar a visualização e compreensão.
Você pode usar o operador
ORDER BY
para ordenar os registros da tabela.
Procure identificar os campos da ordenação e verificar se eles possuem alguma ordenação na tabela através de algum índice. As operações de ordenação são muito custosas para o banco de dados. A primeira opção traz os campos ordenados em ordem ascendente ASC
, não precisando informar o operador. Caso você deseje uma ordenação descendente você deverá informar o DESC
.
Outro operador que é muito utilizado em parceria com o
ORDER BY
é oTOP
, que permite limitar o conjunto de linhas retornado. Caso ele não esteja associado com oORDER BY
ele trará um determinado conjunto de dados baseado na ordem em que estão armazenados. Caso você use um operadorORDER BY
ele mostrará osTOP
maiores ou menores. O Primeiro exemplo mostra as duas maiores contas em relação ao seu saldo. A segunda, as duas menores.
Podemos usar mais de uma tabela no comando
FROM
como falamos anteriormente, porém devemos respeitar seus relacionamentos para evitar situações como o exemplo abaixo. Execute o comando e veja o que acontece.
A maneira correta deve levar em consideração que as tabelas que serão usadas tem relação entre si “chaves”, caso não tenham, poderá ser necessário passar por um outra tabela antes. Lembre-se das tabelas associativas.
O comando
LIKE
é usado para encontrar registros usando parte do que sabemos sobre ele. Por exemplo podemos buscar todas as pessoas que tenham nome começado comR
, usando um coringa%
(Percentual). Podemos fazer diversas combinação com o%
.
O Comando
CASE
é utilizado quando queremos fazer validações e até gerar novar colunas durante a execução da consulta. No exemplo abaixo fazemos uma classificação de um cliente com base no seu saldo, gerando assim uma nova colunaCurva Cliente
.
Podemos incluir em nossas consultas diversos operadores condicionais:
=
(igual),<>
(diferente),>
(maior),<
(menor),<=
(menor ou igual),>=
(maior ou igual),OR
(ou),AND
(e) eBETWEEN
(entre).
O
ALIAS
ou apelido ajuda na exibição de consultas e tabelas. Dessa forma podemos dar nomes amigáveis para campos e tabelas durante a execução de consultas. Use sempre oAS
antes de cadaALIAS
, mesmo sabendo que não é obrigatório.
O comando
DISTINCT
serve para retirar do retorno da consulta registros repetidos.
A SUB CONSULTA,
IN
eNOT IN
são poderosos recursos para auxiliar em buscas e filtragem de registros. Podemos criar subconjuntos de registros e usar operadores comoIN
para validar se os registros estão dentro daquele subconjunto.
Os operadores
UNION
eUNION ALL
ajudam a consolidar conjuntos de registros que são retornados por consultas distintas. O operadorALL
faz a junção das consultas sem eliminar itens duplicados. Precisamos obedecer o mesmo número de colunas e tipos de dados entre as consultas.
Existem diversos tipos de
JOINS
. O mais tradicional e restritivo é oJOIN
ouINNER JOIN
que requer que o registros usado na comparação exista em ambas as tabelas.
No exemplo abaixo, o ClienteCodigo
não poderá ser vazio em nenhuma das tabelas envolvidas, caso isso ocorra, aquela linha não será retornada no resultado.
Fonte da imagem: Representação Visual das Joins
LEFT JOIN
O comando LEFT indica que todos os registros existentes na tabela da sua esquerda serão retornados e os registros da outra tabela da direita irão ser retornados ou então virão em branco.
RIGHT
Já o comando RIGHT traz todos os registros da tabela da direita e os registos da tabela da esquerda, mostrando em branco aqueles que não tem relação.
FULL
O comando FULL retorna todos os registros das tabelas relacionadas, mesmo que não exista um correspondente entre elas.
CROSS
Efetua um operação de produto cartesiano, para cada registro de uma tabela ele efetua um relacionamento com os registros das outras tabelas.
As FUNÇÕES DE AGREGAÇÃO,
SUM
(soma),MIN
(mínimo),MAX
(máximo),COUNT
(contagem),AVG
(média), permitem um nível mais robusto de informação, criando conjuntos de dados agrupados, médias entre outros, permitindo o resumo e a totalização de conjuntos de resultados. Sempre que usarmos a função de agregação em conjunto com um campo agregador, devemos usar a funçãoGROUP BY
para indicar qual o campo será o responsável pelo agrupamento das informações.
Caso você deseje comparar conjuntos de informações contidos na função de agregação você deve compará-los usando o HAVING
.
EXISTS
O comando EXISTS é parecido com o comando IN
, quando queremos comparar mais de um campo contra uma subconsulta.
FUNÇÕES DE Data e Hora
Variáveis
Muitas vezes necessitamos armazenar determinados valores para uso posterior. Um exemplo é guardar um valor total em uma variável para que ele seja usado em cálculo de percentual por exemplo.
SELECT INTO
CAST, CONVERT e concatenação
Comandos utilizados para converter tipos de dados e concatenar Strings.
Last updated