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;