Você está na página 1de 30

Banco de Dados

SQL

Profa. Socorro Vânia L. Alves


SQL como uma LMD

2
Insert

Insere um novo registro em uma tabela


INSERT INTO Nome-da-Tabela (att1, att2, ...)
VALUES (valor1, valor2, ...);

Exemplo:
INSERT INTO vendedores
VALUES(1, 'JOÃO DIAS', 0);

INSERT INTO empregados (codigo, nome, sexo, salario, num_departamento, cod_supervisor)


VALUES (015, ‘José da Silva’, ‘M’, 1000, 1, 20);

3
Insert
Insere um novo registro em uma tabela
CREATE TABLE usuario (
id serial NOT NULL PRIMARY KEY,
nm_login character varying
);

Exemplo:
INSERT INTO usuario (nm_login)
VALUES (‘Leandra Ferreira');

4
Update
Atualiza registros em uma tabela.
UPDATE <nome tabela>
SET <nome atributo> = valor
WHERE <condição>

Exemplo: atualizar o salário do empregado de codigo 15 para


1500
UPDATE empregados
SET salario = 1500
WHERE codigo = 15;

5
Delete
Deleta registros em uma tabela.
DELETE FROM Nome-da-Tabela
WHERE <Condição>

Remover os empregados que ganham acima de 5000.


DELETE FROM empregados
WHERE salario > 5000;

Remover todos os empregados


DELETE FROM empregados;

6
Select
Extração de Dados de uma Tabela: Comando SELECT
Estrutura base do SELECT:
SELECT <atributos>
FROM <tabelas>
[WHERE <condição>]

Exemplo: Listar nome e salário de todos os empregados


SELECT nome, salario
FROM empregados;

7
Select
Para selecionar registros nas tabelas.
Pode ser usado Distinct - indica se apenas os registros com
valores distintos serão selecionadas ou todos. Ou seja,
elimina as duplicatas.
SELECT [DISTINCT] lista_atributos
FROM tabela;

Pode ser usado o * (para mostrar todos os atributos) ou


uma lista de atributos separados por uma virgula.

8
Select

Outro Exemplo:
- buscar as especialidades dos médicos

SELECT DISTINCT especialidade


FROM medicos;
Outro Exemplo:

9
Select
Selecionando registros específicos da tabela com WHERE
SELECT <lista de atributos>
FROM <tabelas>
WHERE (condição)

Na condição do WHERE você pode usar:


Operadores Relacionais: =, <>, <, <=, >, >=
Operadores Lógicos: AND, OR e NOT

10
Exemplo:
Nome dos clientes que moram em Santarém
SELECT nome
FROM clientes
WHERE localidade=‘Santarém’;

Nome dos empregados de sexo Masculino


SELECT nome
FROM empregados
WHERE sexo=‘M’;

11
Exemplo:
Listar nome e sexo dos empregados do departamento 15.
SELECT nome, sexo
FROM empregados
WHERE num_Dep = 15;

Listar nome e sexo dos empregados do departamento de número


15 e com salário > R$ 1.000,00
SELECT nome, sexo
FROM empregados
WHERE ((num_Dep = 15 ) AND (salario > 1000));

12
Exemplo:

Selecionar o id do pedido, o valor do pedido e o id do cliente


registrados na tabela pedidos, somente daquele feitos a partir
de '06/15/2015'
SELECT id_pedido, valor_pedido, id_cliente
FROM pedidos
WHERE data > '06/15/2015';

13
Uso de Alias com As
A cláusula AS permite que as colunas recebam um apelido. Se o
apelido possuir espaços, como na coluna RAZAO_SOCIAL,
deve-se defini-lo entre aspas. A cláusula AS é opcional. O
comando no formato a seguir produz o mesmo resultado:

SELECT id_fornecedor codigo, razao_social "Razão Social"


FROM Fornecedores;

14
Select com Between e Not Beteween
Operadores BETWEEN e NOT BETWEEN: substituem o uso dos
operadores <= e >=
... WHERE <nome atributo> BETWEEN <valor1> and <valor2>

Exemplo:
Listar os empregados com salário entre R$ 1.000,00 e R$
2.000,00
SELECT *
FROM empregados
WHERE salario BETWEEN 1000 AND 2000;

15
Select com Between e Not Beteween

Buscar os dados das consultas marcadas para o período da tarde


SELECT *
FROM consultas
WHERE hora BETWEEN ‘14:00’ and ‘18:00’;

16
Select com Like, ilike e Not Like
Operadores LIKE, ILIKE e NOT LIKE: busca por padrões. Só se
aplicam sobre atributos do tipo char. Operam como = e <>,
utilizando o símbolo: % (substitui uma palavra).
O ilike é usado para operações case insensitve.
...WHERE <nome atributo> LIKE <valor1>
Obs.: em alguns dialetos SQL, ´*´ é usado invés de ´%´

Exemplo:
Listar os empregados que tem como primeiro nome ‘José’
SELECT nome
FROM empregados
WHERE nome LIKE ‘José%’;

17
Select com Like e Not Like
➢ Buscar RG e nome dos médicos com inicial M
SELECT RG, nome
FROM medicos

WHERE nome like ‘M%’;

➢ Buscar RG e nome dos médicos com inicial M (com case


insensitve)
SELECT RG, nome
FROM medicos
WHERE nome ilike ‘M%’;

18
Select com IN e Not IN
Operadores IN e NOT IN: procuram dados que estão ou não
contidos em um dado conjunto de valores.
... WHERE <nome atributo> IN <valores>

O operador IN é como o “pertence” da teoria de conjuntos.


Exemplo:
Listar o nome e data de nascimento dos dependentes com grau
de parentesco ‘M’ ou ‘P’
SELECT nome, data_nasc
FROM dependentes
WHERE grauParentesco IN (‘M’, ‘P’);

19
Select com IN e Not IN
Buscar os dados das médicos ortopedistas,
traumatologistas e cardiologistas de Florianópolis

SELECT *
FROM medicos
WHERE (cidade = ‘Florianópolis’) AND
(especialidade IN (‘cardiologia’, ‘traumatologia’));

20
Select com Is Null e Is Not Null
Operadores IS NULL e IS NOT NULL: identificam valores nulos
dos atributos.

... WHERE <nome atributo> IS NULL

Exemplo:

Listar os projetos que não tenham local definido


SELECT *
FROM Projetos
WHERE Local IS NULL;

21
Select com Order By
Como padrão, uma consulta recupera linhas na mesma ordem em
que ela as encontra na tabela. Para especificar uma ordem na qual
as linhas devem ser retornadas por uma consulta, usa-se a
cláusula ORDER BY no fim do comando SELECT.

SELECT <lista atributos>


FROM <tabela>
[WHERE <condição>]
ORDER BY <Nome atributo> {ASC | DESC}

22
Select com Order By
Obs.: Cada coluna na cláusula ORDER BY deve também aparecer
na cláusula SELECT no início do comando. Cada coluna pode,
opcionalmente, ser ordenada em ordem ascendente (ASC, o
padrão) ou ordem descendente (DESC). Por exemplo:

SELECT id_fornecedor, razao_social, cidade


FROM fornecedores
ORDER BY cidade;

SELECT id_fornecedor, razao_social, cidade


FROM fornecedores
ORDER BY cidade DESC, razao_social;

23
Select com Order By
• Quando mais de uma coluna é especificado em ORDER BY,
as linhas são ordenadas primeiramente pela primeira coluna.
Depois, as linhas que têm o mesmo valor na primeira coluna,
são ordenadas pela segunda coluna, e assim por diante.

• Cada coluna em ORDER BY pode especificar sua própria


ordenação.

24
Select com Order By
Listar todos os empregados ordenados ascendentemente
por nome.
SELECT *
FROM empregados
ORDER BY nome ASC;

Listar todos os empregados ordenados descendentemente


por salário
SELECT *
FROM empregados
ORDER BY salario DESC;

25
Select com cálculo
Realizando cálculo com informação selecionada
Pode-se criar um campo que não pertença à
tabela a partir de cálculos sobre atributos da
tabela

Exemplo:
Mostrar o novo salário dos empregados calculado com
base no reajuste de 60% para os que ganham abaixo de
R$ 1.000,00.
SELECT nome, salario, (salario * 1.60) AS “Novo Salario”
FROM empregados
WHERE salario < 1000;

26
Select com cálculo
Outros Exemplos:
Quantos grupos de 5 leitos podem ser formados em cada
ambulatório?

SELECT numAmb, capacidade/5 AS grupos5


FROM ambulatorios;

Qual o salário líquido dos funcionários


SELECT RG, salario – (salario * 0.1) AS líquido
FROM funcionarios;

27
Select com várias tabelas
Recuperando dados de várias tabelas (JOIN)
Deve-se citar as tabelas envolvidas na cláusula FROM e
usar Qualificadores de nomes para referenciar os
atributos. Por exemplo, o nome do empregado deve ser
qualificado como Empregados.Nome

Listar o nome do empregado e do departamento onde está


alocado.
SELECT empregados.nome, departamentos.nome
FROM empregados, departamentos
where empregados.num_dep = departamentos.numero;

28
Select com várias tabelas
Exemplo:
Listar os nomes dos departamentos que têm projetos
SELECT departamentos.nome
FROM departamentos, projetos
WHERE projetos.num_Dep= departamentos.numero

O comando acima também pode ser escrito como segue:


SELECT d.nome
FROM departamentos d, projetos p
WHERE p.num_Dep= d.numero

29
Select com várias tabelas

Junções entre tabelas

Exemplo:
Listar o nome dos empregados, com seu respectivo
departamento que trabalhem mais de 20 horas em algum
projeto
SELECT empregados.nome, departamentos.nome
FROM empregados, departamentos, trabalha_em
WHERE (trabalha_em.horas > 20)
AND (trabalha_em.cod_emp = empregados.cod)
AND (empregados.num_dep = departamentos.numero);

30

Você também pode gostar