A tão famosa linguagem de consulta estruturada(SQL)
Overview:
INNER JOIN = Retorna linhas quando houver pelo menos um registro em ambas as tabelas.
OUTER JOIN = Retorna linhas mesmo quando não houver pelo menos um registro em uma ou ambas as tabelas. O OUTER JOIN se divide em LEFT JOIN, RIGHT JOIN, e CROSS JOIN.
LEFT JOIN = Retorna linhas da tabela à esquerda mesmo se não houver nenhum registro na tabela da direita.
RIGHT JOIN = Retorna linhas da tabela à direita mesmo se não houver nenhum registro na tabela à esquerda. (Inverso da LEFT JOIN)
FULL JOIN = Retorna linhas quando houver registro em qualquer uma das tabelas.
VIEW = Retorna dados dinâmicos de uma visualização(view), basicamente ela é construída cruzando tabelas e os valores das VIEWS sempre vai ser dinâmico.(Mudou na tabela, altera na view)
Afinal, o que significa a tabela a esquerda e direita?
- Tabela à esquerda é a primeira tabela da query, aquela que fica logo após o FROM.
- Tabela a direita é a(são) tabela(s) que fica(am) a frente do JOIN.
INNER JOIN
Retorna linhas quando houver pelo menos um registro em ambas as tabelas.
SINTAXE INNER JOIN:
SELECT colunas
FROM tabela1
INNER JOIN tabela2
ON tabela1.coluna=tabela2.coluna
INNER JOIN tabela3
ON tabela1.coluna=tabela3.coluna
WHERE suas_condicacoes;
Geralmente a primeira tabela(tabela1) é onde estão as chaves estrangeiras(FK).
SINTAXE INNER JOIN COM ALIAS:
É o mesmo princípio da consulta acima, porém essa um pouco menor por conta dos alias das tabelas.
SELECT tb1.colunas, tb2.colunas, tb1.colunas
FROM tabela1 tb1
INNER JOIN tabela2 tb2
ON tb1.colunas=tb2.colunas
WHERE tb1.colunas;
LEFT JOIN
Retorna linhas da tabela à esquerda mesmo se não houver nenhum registro na tabela da direita.
É citado tabela a esquerda e direita. Vamos lá:
- Tabela à esquerda é a primeira tabela da query, aquela que fica logo após o FROM.
- Tabeça a direita é a(s) tabela(s) que fica a frente do JOIN.
SINTAXE LEFT JOIN:
SELECT colunas
FROM tabela_esquerda
LEFT JOIN tabela_direita
ON tabela_esquerda.coluna=tabela_direita.coluna
WHERE tabela_direita.coluna IS NULL;
RIGHT JOIN
Retorna linhas da tabela à direita mesmo se não houver nenhum registro na tabela à esquerda. (Inverso da LEFT JOIN)
É citado tabela a esquerda e direita. Vamos lá:
- Tabela à esquerda é a primeira tabela da query, aquela que fica logo após o FROM.
- Tabela à direita é a(s) tabela(s) que fica a frente do JOIN.
SINTAXE RIGHT JOIN:
SELECT colunas
FROM tabela_esquerda AS esq
RIGHT JOIN tabela_direita AS dir
ON esq.tabela_esquerda.colunas=dir.tabela_direita.coluna
WHERE dir.tabela_direita.colunas IS NULL;
VIEWS
View é uma visualização de dados dinâmicos, basicamente ela é construída cruzando tabelas e os valores das VIEWS sempre vai ser dinâmico.
No caso, qualquer valor alterado nos campos das tabelas da query, será atualizado em tempo real na VIEW.
SINTAXE CRIAÇÃO DE VIEW:
CREATE OR REPLACE VIEW vendas AS
SELECT CL.nome_cliente AS Cliente, PR.nome_produto AS Produto,
PE.qtde AS quantidade, PE.cod_pedido AS Pedido,
PR.preco * PE.preco AS Fatura
FROM pedidos PE
INNER JOIN clientes CL
ON PE.cod_cliente = CL.cod_cliente
INNER JOIN produtos PR
ON PE.cod_produto = PR.cod_produto;
DELETANDO VIEW:
DROP VIEW IF EXISTS nome_view CASCADE;
SUBCONSULTA
Utilizado para retornar um valor que será utilizado na consulta principal.
Geralmente é utilizado quando tem função de agregação.
SINTAXE SUBCONSULTA:
SELECT nome_livro,preco_livro
FROM livros
WHERE preco_livro = (
SELECT MAX(preco_livro)
FROM livros
);
INSERT
Utilizado para inserir dados na tabela.
SINTAXE INSERT:
INSERT INTO nome_tabela (coluna1,coluna2,coluna3,coluna4) VALUES
(valor_coluna1,valor_coluna2,valor_coluna3,valor_coluna4),
(valor_coluna1,valor_coluna2,valor_coluna3,valor_coluna4);
DELETE
Utilizar para deletar registros na tabela.
Jamais utilize o DELETE sem a cláusula WHERE. Você pode deletar todos os registros um a um.
SINTAXE DELETE:
DELETE FROM nome_tabela
WHERE condicao;
TRUNCATE
Utilizado para deletar todos os registros da tabela em uma única ação.
SINTAXE TRUNCATE:
TRUNCATE TABLE nome_tabela;
UPDATE
Utilizado para modificar dados existentes na tabela.
SINTAXE UPDATE:
UPDATE nome_tabela
SET coluna = novo_valor
WHERE coluna = valor_id;
ARRAYS
Arrays são listas e também indexadas, para fazer uma consulta:
SINTAXE SELECT ARRAY:
SELECT coluna1,coluna2[1]
FROM nome_tabela
WHERE id=19;
SINTAXE UPDATE ARRAY:
UPDATE nome_tabela
SET coluna1 = ARRAY['valor1','valor2','valor3','valor4']
WHERE id=19;
OPERADOR BETWEEN
Utilizado para filtrar intervalo de dados.
SINTAXE BETWEEN:
SELECT *
FROM nome_tabela
WHERE coluna (NOT) BETWEEN valor1 AND valor2;
OUTRO EXEMPLO:
SELECT nome,produto
FROM vendas
WHERE preco BETWEEN 15.00 AND 25.00;