0% acharam este documento útil (0 voto)
6 visualizações12 páginas

Comandos SQL: DDL, DML, DCL e JOINs

SQL
Direitos autorais
© All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
0% acharam este documento útil (0 voto)
6 visualizações12 páginas

Comandos SQL: DDL, DML, DCL e JOINs

SQL
Direitos autorais
© All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd

SQL

DDL (Data Definition Language)


CREATE

CREATE TABLE Estudantes (


ID int,
Nome varchar(255),
Idade int
);

Este comando cria uma nova tabela chamada Estudantes com três colunas: ID,
Nome e Idade.

ALTER

ALTER TABLE Estudantes ADD Email varchar(255);

Este comando adiciona uma nova coluna chamada Email à tabela Estudantes.

DROP

DROP TABLE Estudantes;

Este comando deleta a tabela Estudantes do banco de dados.


DML (Data Manipulation Language)

INSERT

INSERT INTO Estudantes (ID, Nome, Idade, Email) VALUES (1, 'João
Silva', 20, '[Link]@[Link]');

Este comando insere um novo registro na tabela Estudantes.

UPDATE

UPDATE Estudantes SET Idade = 21 WHERE ID = 1;

Este comando atualiza a idade do estudante com ID 1 para 21.

DELETE

DELETE FROM Estudantes WHERE ID = 1;

Este comando remove o registro do estudante com ID 1 da tabela Estudantes.


DCL (Data Control Language)
GRANT

GRANT SELECT, UPDATE ON Estudantes TO usuario_junior;

Este comando concede ao usuario_junior permissões para selecionar e atualizar


registros na tabela Estudantes.

REVOKE

REVOKE UPDATE ON Estudantes FROM usuario_junior;

Este comando retira a permissão de atualizar registros na tabela Estudantes do


usuario_junior.

TCL (Transaction Control Language)


COMMIT

BEGIN TRANSACTION;
INSERT INTO Estudantes (ID, Nome, Idade, Email) VALUES (2, 'Maria
Fernanda', 19, '[Link]@[Link]');
COMMIT;

Este comando inicia uma transação, insere um novo registro e, depois, comita a
transação para salvar permanentemente as alterações no banco de dados.

ROLLBACK

BEGIN TRANSACTION;
UPDATE Estudantes SET Idade = 22 WHERE ID = 2;
ROLLBACK;

Este comando inicia uma transação, tenta atualizar um registro e, então, desfaz
todas as alterações realizadas na transação.
SAVEPOINT

BEGIN TRANSACTION;
INSERT INTO Estudantes (ID, Nome, Idade, Email) VALUES (3,
'Carlos Augusto', 18, '[Link]@[Link]');
SAVEPOINT Save1;
UPDATE Estudantes SET Idade = 19 WHERE ID = 3;
ROLLBACK TO Save1;
COMMIT;

Este comando define um ponto de salvamento dentro de uma transação após inserir
um registro, tenta atualizar o registro e, em seguida, reverte para o ponto de
salvamento antes de comitar a transação.
Conceitos Diversos
Inserir dados em uma visão pode ser possível sob certas condições. Uma visão
simples baseada em uma única tabela, que inclua a chave primária, pode permitir
operações de insert, desde que todos os campos obrigatórios sejam incluídos na
visão.

RECURSIVE

WITH RECURSIVE cte AS (


-- Base(anchor) query
...
UNION ALL
-- Recursive query
...
)
SELECT ...
FROM cte;

Repete o segundo SELECT até que o resultado seja vazio.

SQL MINUS

A cláusula SQL MINUS é usada para combinar duas declarações SELECT, mas
retorna linhas da primeira declaração SELECT que não são retornadas pela
segunda declaração SELECT. A SQL MINUS só retorna linhas que não estão
disponíveis na segunda instrução SELECT.

SELECT column_1 [, column_2, …, column_n]

FROM table_1 [, table_2, …, table_n]

[WHERE condition]

MINUS

SELECT column_1 [, column_2, …, column_n]

FROM table_1 [, table_2, …, table_n]

[WHERE condition]
EXTRA - TIPOS DE JOIN
Tabelas de Exemplo

Vamos considerar duas tabelas:

Tabela empregados

id nome departamento_id

1 Alice 1

2 Bob 2

3 Charlie 1

4 Diana 3


Tabela departamentos

id departamento

1 Vendas

2 TI

3 RH

4 Marketing
1. INNER JOIN

O INNER JOIN retorna apenas as linhas onde há uma correspondência em ambas


as tabelas.

Exemplo:

SELECT [Link], [Link]

FROM empregados

INNER JOIN departamentos ON empregados.departamento_id =


[Link];

Resultado:

nome departamento

Alice Vendas

Bob TI

Charlie Vendas

Diana RH

Explicação: Retorna apenas os empregados que têm um departamento


correspondente na tabela departamentos.
2. LEFT JOIN ou LEFT OUTER JOIN

O LEFT JOIN retorna todas as linhas da tabela à esquerda (empregados) e as


correspondentes da tabela à direita (departamentos).

Exemplo:

SELECT [Link], [Link]

FROM empregados

LEFT JOIN departamentos ON empregados.departamento_id =


[Link];

Resultado:

nome departamento

Alice Vendas

Bob TI

Charlie Vendas

Diana RH

Explicação: Como todos os departamento_id dos empregados têm


correspondência na tabela departamentos, o resultado é o mesmo do INNER
JOIN. Se houvesse um empregado com um departamento_id que não
correspondesse a nenhum departamento, ele ainda apareceria na lista com NULL na
coluna departamento.
3. RIGHT JOIN ou RIGHT OUTER JOIN

O RIGHT JOIN retorna todas as linhas da tabela à direita (departamentos) e as


correspondentes da tabela à esquerda (empregados).

Exemplo:

SELECT [Link], [Link]

FROM empregados

RIGHT JOIN departamentos ON empregados.departamento_id =


[Link];

Resultado:

nome departamento

Alice Vendas

Bob TI

Charlie Vendas

Diana RH

NULL Marketing

Explicação: Neste caso, o departamento de Marketing aparece no resultado,


mesmo que não haja empregados associados a ele. O campo nome aparece como
NULL para o departamento de Marketing.
4. FULL JOIN ou FULL OUTER JOIN

O FULL JOIN retorna todas as linhas onde há uma correspondência em uma das
tabelas. Linhas que não têm correspondência em uma das tabelas terão NULL nas
colunas da outra tabela.

Exemplo:

SELECT [Link], [Link]


FROM empregados
FULL OUTER JOIN departamentos ON empregados.departamento_id =
[Link];

Resultado:

nome departamento

Alice Vendas

Bob TI

Charlie Vendas

Diana RH

NULL Marketing

Explicação: Este resultado inclui todos os empregados e todos os departamentos.


Como o departamento de Marketing não tem empregados, ele aparece com NULL
na coluna nome.
5. CROSS JOIN

O CROSS JOIN retorna o produto cartesiano das duas tabelas, combinando cada
linha da primeira tabela com cada linha da segunda tabela.

Exemplo:

SELECT [Link], [Link]


FROM empregados
CROSS JOIN departamentos;

nome departamento
Resultado:Explicação: O CROSS JOIN
Alice Vendas combina cada empregado com cada
departamento, resultando em um total de 16
Alice TI
combinações (4 empregados x 4
Alice RH departamentos).

Alice Marketing

Bob Vendas

Bob TI

Bob RH

Bob Marketing

Charlie Vendas

Charlie TI

Charlie RH

Charlie Marketing

Diana Vendas

Diana TI

Diana RH

Diana Marketing
6. SELF JOIN

Um SELF JOIN é uma junção de uma tabela consigo mesma.

Exemplo:

Suponha que a tabela empregados tenha uma coluna supervisor_id que


referencia o id de outro empregado na mesma tabela. Vamos usar esta estrutura
para mostrar o SELF JOIN.

Tabela modificada empregados:

id nome departamento_id supervisor_id

1 Alice 1 NULL

2 Bob 2 1

3 Charlie 1 1

4 Diana 3 2

Exemplo de SELF JOIN:

SELECT [Link] AS Empregado, [Link] AS Supervisor


FROM empregados A
LEFT JOIN empregados B ON A.supervisor_id = [Link];

Empregado Supervisor Resultado:Explicação: Este comando


Alice NULL retorna uma lista de empregados e seus
respectivos supervisores. Como Alice não
Bob Alice tem um supervisor (supervisor_id é

Charlie Alice NULL), a coluna Supervisor para Alice


aparece como NULL.
Diana Bob

Você também pode gostar