Você está na página 1de 16

SQL

Assuntos abordados
o Consultas e Comandos em SQL
o Sublinguagens SQL (DDL, DML, DQL, DCL e DTL)

SQL (Structured Query Language - Linguagem de Consulta


Estruturada)

 É a linguagem padrão para acesso e manipulação de banco


de dados.

SUBLINGUAGENS SQL
DML DDL DCL DTL
(Data Manipula- (Data Defini- (Data Control (Data Transac-
tion Language) tion Language) Language) tion Language)

SELECT CREATE GRANT COMMIT


INSERT ALTER REVOKE ROLLBACK
UPDATE DROP SAVEPOINT
DELETE TRUNCATE
MERGE RENAME

DDL (Data Definition Language) – Linguagem de Definição de


Dados
São os comandos que interagem com os objetos do banco:

INSTRU-
FINALIDADE
ÇÃO

CREATE Criar uma tabela em um banco de dados.


ALTER Promove uma alteração na tabela: alterando,
adicionando ou descartando colunas e restrições.

TRUNCATE Remove todas as linhas de uma tabela ou partições


especificadas de uma tabela, sem registrar as
exclusões de linha individuais.
Remove uma ou mais definições de tabela e todos
DROP os dados, índices, gatilhos, restrições
e especificações de permissão dessas tabelas.
RENAME Renomeia uma tabela criada no banco de dados.

DML (Data Manipulation Language) – Linguagem de


MANIPULAÇÃO de Dados
São os comandos que interagem com os dados dentro das tabelas:

INSTRUÇÃO FINALIDADE

INSERT Uma nova linha na tabela


UPDATE Atualiza uma linha existente

DELETE Deletar uma linha

MERGE Mescla duas linhas ou duas tabelas

DCL (Data Control Language) Linguagem de Controle de Dados


São os comandos para controlar a parte de segurança do banco de
dados:
INSTRU-
FINALIDADE
ÇÃO

GRANT Concede explicitamente uma ou mais permissões.


DENY nega explicitamente uma ou mais permissões à
entidade de segurança.
REVOKE remove as permissões GRANT ou DENY existentes.

DTL (Data Transaction Language) - Linguagem de Transação


de Dados.
São os comandos para controle de transação:
INSTRUÇÃO FINALIDADE

COMMIT Salvar a permanentemente a transação


ROLLBACK Desfazer a transação
SAVEPOINT Salvar temporariamente a transação

DQL (Data Query Language) - Linguagem de Consulta de


dados.
São os comandos de consulta.
INSTRUÇÃO FINALIDADE

SELECT é o comando de consulta

Observação: Em alguns livros o SELECT fica na DML; em outros,


tem esse grupo próprio.

COMANDOS DDL (CREATE, DROP, ALTER, TRUNCATE,


RENAME)

CREATE TABLE
O CREATE TABLE comando cria uma nova tabela no banco de
dados.
Exemplo:

CREATE TABLE Gurujas(

CPF int,

UltimoNome varchar(255),

PrimeiroNome varchar(255),

Endereco varchar(255),

Cidade varchar(255)

);
DROP

 DROP: exclui uma tabela do banco de dados

DROP TABLE Gurujas

TRUNCATE TABLE

 O TRUNCATE TABLEcomando exclui os dados dentro de


uma tabela, mas não a tabela em si.
 O seguinte SQL exclui os dados da tabela "Gurujas":

TRUNCATE TABLE Gurujas;

ALTER TABLE

 A instrução ALTER TABLE é usada para adicionar, excluir ou


modificar colunas em uma tabela existente.
 O SQL a seguir adiciona uma coluna "Aprovacoes" à tabela
"Gurujas":

ALTER TABLE Gurujas


ADD Aprovacoes varchar(255);

 A instrução ALTER TABLE também é usada para adicionar e


remover várias restrições em uma tabela existente.

Restrições SQL

 São usadas para especificar regras para os dados em uma


tabela:
 Por exemplo: podem delimitar quais tipo de dados que podem
entrar em uma tabela.

As seguintes restrições são comumente usadas em SQL:

 NOT NULL- Garante que uma coluna não pode ter um valor
NULL
 UNIQUE- Garante que todos os valores em uma coluna sejam
diferentes
 PRIMARY KEY- Uma combinação de a NOT
NULLe UNIQUE. Identifica exclusivamente cada linha em uma
tabela
 FOREIGN KEY - Impede ações que destruiriam links entre
tabelas
 CHECK- Garante que os valores em uma coluna satisfaçam
uma condição específica
 DEFAULT- Define um valor padrão para uma coluna se
nenhum valor for especificado
 CREATE INDEX- Usado para criar e recuperar dados do
banco de dados muito rapidamente

SELECT
SELECT nos permite pegar dados para colunas específicas do
banco de dados:

 (asterisco): é usado após o SELECT para pegar todas as


colunas da tabela;
 column_name(s): para selecionar colunas específicas,
coloque os nomes das colunas após SELECT e use vírgulas
para separá-las.

FROM
FROM permite-nos especificar com qual(is) tabela(s) nos
importamos; para selecionar várias tabelas, liste os nomes das
tabelas e use vírgulas para separá-las.

Exemplo de uso:
1) SELECT coluna FROM Tabela
SELECT Nome_Autor FROM tbl_Autores

2) SELECT * FROM tbl_Autores


[SELECT * = traga as informações de todas as colunas]

3)Especificando as Colunas:
SELECT Nome_Livro, ID_Autor FROM tbl_Livro

WHERE
A cláusula WHERE em uma consulta é usada para filtrar resultados
por critérios específicos.

Exemplo de uso:
1) SELECT colunas FROM tabela
WHERE coluna=valor

SELECT * FROM tbl_Livro


WHERE ID_Autor='1'

SELECT ID_Autor
FROM tbl_autores
WHERE Sobrenome_Autor = 'Stanek'

AND
A palavra-chave AND é usada para agrupar vários critérios de
filtragem para que os resultados filtrados atendam a cada um dos
critérios. (Há também uma palavra-chave OR, que retorna linhas
que correspondem a qualquer um dos critérios.)

Exemplo de uso:
SELECT * FROM tbl_Livro
WHERE ID_Livro > 2 AND ID_Autor <3

SELECT * FROM tbl_Livro


WHERE ID_Livro > 2 OR ID_Autor <3

LIKE e NOT LIKE


São utilizados para buscar um padrão específico em uma string
(cadeia de caracteres, ‘palavras’). O NOT LIKE é o oposto do LIKE:
enquanto que com o uso do LIKE buscamos um padrão, utilizando
o NOT LIKE buscamos todos o conjunto que não corresponda ao
padrão.

 % substitui zero ou mais caracteres


 _ substitui um único caractere
Exemplo de uso:
1)Buscar nomes de alunos do Guruja que comecem com a letra J
SELECT nome FROM gurujas WHERE nome LIKE 'J%’
Resultados possíveis: José Josefina Jairo

2) Buscar os nomes de alunos do Guruja terminados com a letra o


SELECT nome FROM gurujas WHERE nome LIKE '%o’
Resultados possíveis: Marcelo, Fernando, Mario

3) Buscar nomes de alunos do Guruja que tenham ‘oa’ em qualquer posição


SELECT nome FROM gurujas WHERE nome LIKE '%oa%’
Resultados possíveis: João, Joana, Joaquim

4) Buscar a segunda letra de um determinado campo


SELECT nome FROM gurujas WHERE nome LIKE '_o%’
Resultados possíveis: Joana, João, José

5)Buscar palavras com três caracteres entre outras letras


SELECT nome FROM gurujas where nome like '%p___o%’
Resultados possíveis: João Paulo, Paulo Henrique, José Pedro

6) Pesquisar por palavras que começam e terminam com determinado caract


SELECT nome, cidade FROM alunos WHERE cidade LIKE 'b%e’

Resultados possíveis:

 Jeremias/ Belo Horizonte


 Fernando/ Belo Horizonte
 Mariana / Belo Horizonte

INSERT

Sintaxe

 Especificando tanto o nome da coluna como os valores a


serem inseridos:

INSERT INTO nome_da_tabela (coluna1, coluna2, coluna3, ...)

VALUES (valor1, valor2, valor3, ...);


 Se você estiver adicionando valores para todas as colunas da
tabela, não é necessário especificar os nomes das colunas no
comando SQL (os valores serão inseridos na mesma ordem
das colunas da tabela)

INSERT INTO nome_da_tabela


VALUES (valor1, valor2, valor3, ...);

UPDATE

 O comando UPDATE é utilizado para modificar os dados


existentes em uma tabela (os dados serão ''''atualizados''''):

Sintaxe:
UPDATE nome_da_tabela
SET coluna1 = valor1, coluna2 = valor2, ...
WHERE condição;

DELETE

 O comando DELETE é utilizado para deletar um dado


existente em uma tabela.

Sintaxe
DELETE FROM nome_da_tabela WHERE condição;

Diferentes tipos de JOINs (SQL)

Existem diferentes tipos de joins em SQL:

 (INNER) JOIN: Retorna registros que possuem valores


correspondentes em ambas as tabelas
 LEFT (OUTER) JOIN: Retorna todos os registros da tabela da
esquerda e os registros correspondentes da tabela da direita
 RIGHT (OUTER) JOIN: Retorna todos os registros da tabela
da direita e os registros correspondentes da tabela da
esquerda
 FULL (OUTER) JOIN: Retorna todos os registros quando há
uma correspondência na tabela esquerda ou direita
Imagem retirada de https://ajuda.gitlab.io/guia-rapido/sql/sql/

Exemplos de Joins (retirados de https://ajuda.gitlab.io/guia-


rapido/sql/sql/)
Os exemplos a seguir irão usar as seguintes tabelas como
referência:

Tabelas de exemplo
INNER JOIN

 INNER JOIN é um formato comum de join, que retorna dados


apenas quando as duas tabelas tem chaves correspondentes
na cláusula ON do join.

Inner Join
SELECT TabelaA.*, TabelaB.* FROM TabelaA INNER JOIN
TabelaB ON TabelaA.Chave = TabelaB.Chave

Resultado Inner Join

LEFT JOIN

 LEFT OUTER JOIN ou simplesmente LEFT JOIN é um dos


formatos mais usados de join, que retorna a Tabela A inteira e
apenas os registros que coincidirem com a igualdade do join
na TabelaB (ou campos nulos para os campos sem
correspondência).
Left Join
SELECT TabelaA.*, TabelaB.* FROM TabelaA LEFT JOIN TabelaB
ON TabelaA.Chave = TabelaB.Chave

Resultado Left Join

RIGHT JOIN

 RIGHT OUTER JOIN ou simplesmente RIGHT JOIN segue o


mesmo raciocínio do LEFT JOIN, mas se aplicando à tabela B
em vez da A:

Right Join
SELECT TabelaA.*, TabelaB.* FROM TabelaA RIGHT JOIN
TabelaB ON TabelaA.Chave = TabelaB.Chave

Resultado Right Join

FULL OUTER JOIN

 Conhecida como OUTER JOIN ou simplesmente FULL JOIN,


este retorna todos os registros de ambas as tabelas.
Full Join

SELECT TabelaA.*, TabelaB.* FROM TabelaA FULL OUTER JOIN


TabelaB ON TabelaA.Chave = TabelaB.Chave

Resultado Full Join

CROSS JOIN

 Basicamente é o produto cartesiano entre as duas tabelas.


Para cada linha de TabelaA, são retornadas todas as linhas
de TabelaB.
 É mais fácil entender o CROSS JOIN como um "Join sem
cláusula ON", ou seja, todas as combinações de linhas de A e
B são devolvidas. Inclusive, se você fizer um CROSS
JOIN com cláusula ON, ele "vira" um mero INNER JOIN.
Cross Join
SELECT TabelaA.*, TabelaB.* FROM TabelaA CROSS JOIN
TabelaB
ou
SELECT TabelaA.*, TabelaB.* FROM TabelaA, TabelaB

Resultado Cross Join

Operador IN

 O operador IN permite que você especifique múltiplos valores


em uma cláusula WHERE.

Sintaxe:
SELECT nome_das_coluna(s)
FROM nome_da_tabela
WHERE nome_das_coluna IN (valor1, valor2, ...);

Operador Exists

 O operador Exists é utilizado para testar a existência de


algum registro em uma subquery.

Sintaxe:
SELECT nome_das_coluna(s)
FROM nome_da_tabela
WHERE EXISTS
(SELECT nome_das_coluna FROM nome_da_tabela WHERE con-
dicao);

Group By
Funções Agregadas SQL

 Às vezes, as perguntas que você deseja fazer não são tão


simples quanto encontrar a linha de dados que se encaixa em
um conjunto de critérios. Você pode querer fazer perguntas
mais complexas, como “Quem é a pessoa mais velha?” ou
"Quem é a pessoa mais baixa?" As funções agregadas
podem ajudá-lo a responder a essas perguntas. Na verdade,
você aprendeu uma função agregada acima, COUNT.
 MÁX :encontra o valor máximo
 MIN : encontra o valor mínimo
 SOMA : calcula a soma dos valores de coluna especificados
 AVG : calcula a média dos valores de coluna especificados
 COUNT: conta o número de valores de coluna especificados

 O comando GROUP BY agrupa linhas que possuem uma


mesma característica e é frequentemente utilizado com as
funções de agregação.
 Por exemplo, poderíamos agrupar os alunos do guruja por
estado.

Sintaxe:
SELECT nome_das_coluna(s)
FROM nome_da_tabela
WHERE condicao
GROUP BY nome_da_coluna
ORDER BY nome_da_coluna;

 O Order by é utilizado para ordenar as linhas do resultado do


comando Group By. Poderíamos agrupar os gurujas por
estado e ordená-los por quantidade (do maior para o menor -
DESC - ou do menor para o maior - ASC)

Having

 o comando having é utilizado como se fosse um "WHERE", só


que para as funções de agregação:

SELECT nome_das_coluna(s)
FROM nome_da_tabela
WHERE condicao
GROUP BY nome_da_coluna(s)
HAVING condicao
ORDER BY nome_da_coluna(s);

Exemplo:

 A instrução SQL a seguir lista o número de clientes em cada


país. Incluir apenas países com mais de 5 clientes:

SELECT COUNT(CustomerID), Country


FROM Customers
GROUP BY Country
HAVING COUNT(CustomerID) > 5;

Referência: https://www.w3schools.com/

Commit e RollBack

 O comando Commit permite que as alterações no banco


sejam salvas após uma transação.
 É utilizado ao final de uma operação no banco, como se fosse
um "Salvar"

Sintaxe:
COMMIT;
 O comando RollBack permite reverter as alterações
realizadas por uma transação.
 É como se fosse um "Ctrl+z" no banco, "Desfazer"

Sintaxe:
ROLLBACK;

Grant e Revoke

 Esses comandos permitem conceder (Grant) permissões,


privilégios a um usuário do banco de dados ou de revogar
essas permissões (Revoke)

Sintaxe:
GRANT privileges ON object TO user;
REVOKE privilegesd ON object FROM user;

Exemplo:
GRANT SELECT, INSERT, UPDATE, DELETE ON t_planeja TO
bruno_machado;
REVOKE DELETE ON t_planeja FROM eduardo_framb;

Você também pode gostar