Logo Passei Direto
Buscar

Aula 11 - SQL ba¦üsico

User badge image

Enviado por allan costa em

Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original

Criando Instruções SQL Básicas
Prof. Msc. Allan CostaProf. Msc. Allan Costa
Importanto e exportando SQL
• Importar
– Mysql –h localhost –u root –p database-name < 
banco.sql
• Exportar
– Mysqldump –u root –p --opt database_name > 
banco.sql
Catálogo
CATCATÁÁLOGO RELACIONAMENTOS E ATRIBUTOSLOGO RELACIONAMENTOS E ATRIBUTOS
NOME_RELNOME_REL NOME_ATRNOME_ATR TIPO_ATRTIPO_ATR MEMBRO_CPMEMBRO_CP MEMBRO_CH_ESTMEMBRO_CH_EST REL_CH_ESTREL_CH_EST
EMPREGADO CPF VARCHAR(11) SIM NÃO
EMPREGADO NOME VARCHAR(50) NÃO NÃO
EMPREGADO DATA_NASC VARCHAR(6) NÃO NÃO
EMPREGADO ENDERECO VARCHAR(100) NÃO NÃO
EMPREGADO SEXO VARCHAR(1) NÃO NÃO
EMPREGADO SALARIO INT NÃO NÃO
EMPREGADO N_DEPART INT NÃO SIM DEPART
EMPREGADO CPF_SUPERV VARCHAR(11) NÃO SIM EMPREGADO
DEPART NUM_DEP INT SIM NÃO
DEPART NOME_DEP VARCHAR(50) NÃO NÃO
DEPART CPF_GER VARCHAR(11) NÃO SIM EMPREGADO
DEPART DATA_IN_GER VARCHAR(6) NÃO NÃO
PROJETO NUM_PROJ INT SIM NÃO
PROJETO NOME_PROJ VARCHAR(100) NÃO NÃO
PROJETO LOCALIZ VARCHAR(50) NÃO NÃO
PROJETO NUM_DEPART INT NÃO SIM DEPART
TRAB_PARA CPF_EMP VARCHAR(11) SIM SIM EMPREGADO
TRAB_PARA NUM_PROJ INT SIM SIM PROJETO
TRAB_PARA HORAS INT NÃO NÃO
DEPEND CPF_RESP VARCHAR(11) SIM SIM EMPREGADO
DEPEND NOME VARCHAR(50) SIM NÃO
DEPEND SEXO VARCHAR(1) NÃO NÃO
DEPEND DATA_NASC VARCHAR(6) NÃO NÃO
Recursos das Instruções SELECT SQL
SeleçãoProjeção
Tabela 1 Tabela 2
Tabela 1Tabela 1
Junção
Instrução SELECT Básica
SELECT *|{[DISTINCT] coluna|expressão [apelido],...}
FROM tabela;
SELECT *|{[DISTINCT] coluna|expressão [apelido],...}
FROM tabela;
• SELECT identifica quais colunas
• FROM identifica qual tabela
SELECT *
FROM departments;
Selecionando Todas as Colunas
Selecionando Colunas Específicas
SELECT department_id, location_id
FROM departments;
Criando Instruções SQL
• As instruções SQL não fazem distinção entre 
maiúsculas e minúsculas.
• As instruções SQL podem estar em uma ou mais
linhas.
• As palavras-chave não podem ser abreviadas ou
dividas de uma linha para outra.
• Normalmente, as cláusulas são colocadas em linhas
separadas.
• Os recuos são usados para aperfeiçoar a legibilidade.
Manipulando Dados
DML (Data Manipulation Language)
• Uma instrução DML é executada quando você:
– Adiciona novas linhas a uma tabela
– Modifica linhas existentes em uma tabela
– Remove linhas existentes de uma tabela
Adicionando uma Nova Linha a uma Tabela
DEPARTMENTS
Nova
linha
…insira uma nova 
linha na tabela
DEPARTMENTS…
A Sintaxe da Instrução INSERT
• Adicione novas linhas a uma tabela usando a 
instrução INSERT.
• Somente uma linha é inserida por vez com esta
sintaxe.
INSERT INTO tabela [(coluna [, coluna...])]
VALUES (valor [, valor...]);
INSERT INTO tabela [(coluna [, coluna...])]
VALUES (valor [, valor...]);
Inserindo Novas Linhas
• Insira uma nova linha contendo valores para cada
coluna.
• Liste valores na ordem default das colunas na
tabela.
• Opcionalmente, liste as colunas na cláusula
INSERT.
• Coloque os valores de data e de caractere entre 
aspas simples.
INSERT INTO departments(department_id, department_name, 
manager_id, location_id)
VALUES (70, 'Public Relations', 100, 1700);
1 row created.
INSERT INTO departments
VALUES (100, 'Finance', NULL, NULL);
1 row created.1 row created.
INSERT INTO departments (department_id, 
department_name )
VALUES (30, 'Purchasing');
1 row created.1 row created.
Inserindo Linhas com Valores Nulos
• Método implícito: omite a coluna da lista de colunas.
• Método explícito: especifica a palavra-chave NULL na
cláusula VALUES.
Alterando os Dados em uma Tabela
EMPLOYEES
Atualize linhas na tabela EMPLOYEES.
A Sintaxe da Instrução UPDATE
• Modifique linhas existentes com a instrução UPDATE.
• Atualize mais de uma linha por vez, se necessário.
UPDATE tabela
SET coluna = valor [, coluna = valor, ...]
[WHERE condição];
UPDATE tabela
SET coluna = valor [, coluna = valor, ...]
[WHERE condição];
• Uma ou mais linhas específicas serão modificadas
se você especificar a cláusula WHERE.
• Se você omitir a cláusula WHERE, todas as linhas
da tabela serão modificadas.
UPDATE employees
SET department_id = 70
WHERE employee_id = 113;
1 row updated.1 row updated.
Atualizando Linhas em uma Tabela
UPDATE copy_emp
SET department_id = 110;
22 rows updated.
UPDATE copy_emp
SET department_id = 110;
22 rows updated.22 rows updated.
Delete uma linha da tabela DEPARTMENTS.
Removendo uma Linha de uma Tabela
DEPARTMENTS
A Instrução DELETE
Você pode remover linhas de uma tabela usando
a instrução DELETE.
DELETE [FROM] tabela
[WHERE condição];
DELETE [FROM] tabela
[WHERE condição];
• Se você especificar a cláusula WHERE, linhas
específicas serão deletadas.
• Se você omitir a cláusula WHERE, todas as linhas
da tabela serão deletadas.
Deletando Linhas de uma Tabela
DELETE FROM departments
WHERE department_name = 'Finance';
1 row deleted.
DELETE FROM departments
WHERE department_name = 'Finance';
1 row deleted.1 row deleted.
DELETE FROM copy_emp;
22 rows deleted.
DELETE FROM copy_emp;
22 rows deleted.22 rows deleted.
• Criando Instruções SQL Básicas - SELECT
Expressões Aritméticas
Crie expressões com dados numéricos e de datas usando
operadores aritméticos.
Operador
+
-
*
/ 
Descrição
Adicionar
Subtrair
Multiplicar
Dividir
Usando Operadores Aritméticos
SELECT last_name, salary, salary + 300
FROM employees;
…
Precedência de Operadores
• A multiplicação e a divisão têm prioridade sobre a 
adição e a subtração.
• Os operadores com a mesma prioridade são avaliados
da esquerda para a direita.
• Os parênteses são usados para forçar a avaliação
priorizada e para esclarecer as instruções.
*** /// +++ _
__
Precedência de Operadores
SELECT last_name, salary, 12*salary+100
FROM employees;
…
Usando Parênteses
SELECT last_name, salary, 12*(salary+100)
FROM employees;
…
Definindo um Valor Nulo
• Nulo é um valor que não está disponível, não é
atribuído, é desconhecido ou não é aplicável.
• Um valor nulo não é o mesmo que um zero ou um 
espaço em branco.
SELECT last_name, job_id, salary, commission_pct
FROM employees;
…
…
SELECT last_name, 12*salary*commission_pct
FROM employees;
Valores Nulos nas Expressões Aritméticas
As expressões aritméticas que contêm um valor nulo são
avaliadas como nulas.
…
…
Definindo um Apelido de Coluna
Um apelido de coluna:
• Renomeia um cabeçalho de coluna
• É útil para cálculos
• Segue imediatamente o nome da coluna. Também
pode haver a palavra-chave AS opcional entre o 
nome da coluna e o apelido
• Necessita de aspas duplas caso contenha espaços
ou caracteres especiais ou faça distinção entre 
maiúsculas e minúsculas
Usando Apelidos de Coluna
SELECT last_name "Name", salary*12 "Annual Salary"
FROM employees;
SELECT last_name AS name, commission_pct comm
FROM employees;
…
…
Linhas Duplicadas
A exibição default das consultas é de todas as linhas,
incluindo linhas duplicadas.
SELECT department_id
FROM employees;
SELECT department_id
FROM employees;
…
Eliminando Linhas Duplicadas
Elimine linhas duplicadas usando a palavra-chave 
DISTINCT na cláusula SELECT.
SELECT DISTINCT department_id
FROM employees;
Exercício
• Faca uma consulta para exibir todos os dados da 
tabela departamentos.
• Crie uma consulta para exibir as idades exclusivas 
na tabela de empregados
• De um aumento de 50%(salario) a todos os 
empregados, exiba um relatório com o nome do 
empregado, salário antigo e o
salário novo. 
Renomei as colunas para salario_antigo e 
salario_novo.
Respostas
• SELECT * FROM DEPARTAMENTOS;
• SELECT DISTINCT JOB_ID FROM EMPREGADOS;
• SELECT NOME , SALARIO AS 
“SALARIO_ANTIGO”, SALARIO *1.5 AS 
“SALARIO_NOVO” FROM EMPREGADOS;
Restringindo e Classificando Dados
Limitando Linhas Usando uma Seleção
"recuperar todos
os funcionários
do departamento 90"
EMPLOYEES
…
Limitando as Linhas Selecionadas
• Restrinja as linhas retornadas usando a cláusula WHERE.
• A cláusula WHERE segue a cláusula FROM.
SELECT *|{[DISTINCT] coluna|expressão [apelido],...}
FROM tabela
[WHERE condição(ões)];
Usando a Cláusula WHERE
SELECT employee_id, last_name, job_id, department_id
FROM employees
WHERE department_id = 90;
Strings de Caracteres e Datas
• As strings de caracteres e valores de data aparecem 
entre aspas simples.
• Os valores de caractere fazem distinção entre 
maiúsculas e minúsculas e os valores de data fazem 
distinção entre formatos.
• O formato de data default é DD-MON-RR.
SELECT last_name, job_id, department_id
FROM employees
WHERE last_name = 'Whalen';
Condições de Comparação
Operador
=
>
>=
<
<=
<>
Significado
Igual a
Maior que
Maior que ou igual a
Menor que
Menor que ou igual a
Diferente de
SELECT last_name, salary 
FROM employees
WHERE salary <= 3000;
Usando Condições de Comparação
Condições Lógicas
Operador
AND
OR
NOT
Significado
Retorna TRUE se ambas as condições 
de componentes forem verdadeiras
Retorna TRUE se uma das condições 
de componente for verdadeira
Retorna TRUE se a condição seguinte 
for falsa
Usando o Operador AND
AND exige que ambas as condições sejam verdadeiras.
SELECT employee_id, last_name, job_id, salary
FROM employees
WHERE salary >= 10000
AND job_id LIKE '%MAN%';
Usando o Operador OR
OR exige que uma das condições seja verdadeira.OR exige que uma das condições seja verdadeira.
SELECT employee_id, last_name, job_id, salary
FROM employees
WHERE salary >= 10000
OR job_id LIKE '%MAN%';
SELECT last_name, job_id
FROM employees
WHERE job_id 
NOT IN ('IT_PROG', 'ST_CLERK', 'SA_REP');
Usando o Operador NOT
SELECT last_name, job_id, department_id, hire_date
FROM employees
ORDER BY hire_date;
Cláusula ORDER BY
• Classifique linhas com a cláusula ORDER BY
– ASC: ordem crescente, default
– DESC: ordem decrescente
• A cláusula ORDER BY aparece por último na
instrução SELECT.
…
Classificando em Ordem Decrescente
SELECT last_name, job_id, department_id, hire_date
FROM employees
ORDER BY hire_date DESC ;
…
• A ordem da lista ORDER BY é a ordem de 
classificação.
• Você pode classificar por uma coluna que não esteja 
na lista SELECT.
SELECT last_name, department_id, salary
FROM employees
ORDER BY department_id, salary DESC;
Classificando por Várias Colunas
…

Teste o Premium para desbloquear

Aproveite todos os benefícios por 3 dias sem pagar! 😉
Já tem cadastro?