Exercícios SQL Iniciais com Respostas
Exercícios SQL Iniciais com Respostas
Pergunta:
[A] Criação de Tabela
Crie uma tabela de acordo com o esquema dado abaixo. Escolha os dados apropriados.
tipos ao criar a tabela. Insira os registros dados na Tabela 1 na
Tabela de funcionários. E, escreva consultas SQL para satisfazer as perguntas a seguir.
Employee (Emp_ID, Emp_Name, DoB, Department, Designation, DoJ, Salary)
Aqui, DoB significa Data de Nascimento, DoJ significa Data de Admissão.
[B] Consultas
1. Exibir todos os registros da tabela Funcionário.
2. Encontre todos os funcionários que estão trabalhando para o departamento de CSE.
Departamento VARCHAR(20)
Designação VARCHAR(15)
DATA DoJ
Número do Salário(10,2);
Explicação:
Tudo o que está escrito em LETRAS MAIÚSCULAS são palavras-chave/palavras reservadas.
Inserção de Dados
Todos os registros apresentados na Tabela 1 podem ser inseridos usando o seguinte INSERT INTO
declaração.
INSERIR EM Funcionário VALORES ('F110', 'Sam', '15-JUN-1970', 'Bio-Tecnologia',
‘Professor’, ‘12-ABR-2001’, 45000);
Como mencionado acima, as palavras em LETRAS MAIÚSCULAS são palavras-chave/palavras reservadas.
Observe como as informações são especificadas para cada coluna. Você deve
mencione os valores na ordem em que você declarou os atributos no
mesa, com as seguintes regras simples;
Os valores dos atributos CHAR, VARCHAR e DATE devem ser fornecidos dentro de um par de
aspas simples.
As entradas NUMERO podem ser especificadas sem aspas.
[B] Consultas
Antes de entrar nas consultas SELECT, lembre-se da estrutura de uma consulta SELECT. Basicamente,
Precisamos de pelo menos duas cláusulas, SELECT e FROM, para escrever uma consulta completa. O
as perguntas acima precisam das cláusulas SELECT, FROM e WHERE. Veja abaixo para
as cláusulas com os parâmetros necessários;
SELECIONE */lista de atributos a serem incluídos no resultado
DA lista de uma ou mais tabelas
ONDE lista de condições E, OU ou Negada (NÃO)
SELECIONE * DO Funcionário;
A Pergunta 2 inclui uma condição. A condição é 'os funcionários que trabalham para a CSE'
departamento'. Portanto, temos um parâmetro para a cláusula WHERE. O parâmetro dado
na cláusula WHERE tem uma forma;
Attribute_name θ value
Aqui, θ significaria qualquer operador de comparação válido (=, <, >, <=, >=, <>). Então, o
a consulta seria escrita da seguinte forma;
Result:
Emp_ID Emp_Name DoB Departamento Designação DoJ Salário
F115 Raguvaran 10-AGO- CSE Prof. Assistente 05-MAI- 27000
1982 2007
F114 Jennifer 10-SET-1975 CSE Prof. Assistente 03-JUN- 35000
2004
Result:
Emp_ID Emp_Name Data de Nascimento
Departamento Designation DoJ Salário
F110 Sam 15-JUN- Biotecnologia Professor 12-APR-2001 45000
1970
F114 Jennifer 10-SET-1975 CSE Prof. Assistente 03-JUN- 35000
2004
F117 Ismail 15-MAY- TI Prof. Assistente 10-MAI- 33000
1979 2005
‘ELE’
Aqui, os parâmetros para a cláusula SELECT são separados por vírgulas (‘,’).
Result:
Emp_Name Data de Nascimento
Designation
Ismail 15-MAI-1979 Prof. Assist.
Departamento
Biotecnologia
Mecânico
CSE
CSE
TI
DoB
25-MAI-1980
Emp_Name Departamento
Kumar Mecânico
Raguvaran CSE
Jennifer CSE
Ismail TI
10. Encontre os detalhes de qualquer funcionário que trabalhe para 'CSE' e ganhe mais.
do que 30000.
This question requires all the records from Employee table. The conditions are the
Departamento e Salário.
SELECIONE * DE Funcionário ONDE Departamento = 'CSE' E Salário >
30000;
Result:
Emp_ID Emp_Name Data de Nascimento
Departamento Designation DoJ Salary
F114 Jennifer 10-SET-1975 CSE Prof. Adj. 03-JUN- 35000
2004
Exercícios de SQL Simples com Respostas / Exercícios de SQL para Tabela Simples
consultas de criação e SELECT / Consultas envolvendo seleção, projeção
junções e cláusulas order by
Resolva e escreva as consultas necessárias para o caso abaixo;
Considere os esquemas de relação de um banco de dados de vendas apresentados abaixo. Chaves primárias de
todas as tabelas estão sublinhadas.
Consulta:
SELECTPart_Number, Part_Description, Quantity_On_Hand, Price
DA Parte
ORDENAR POR Descrição_da_Parte;
2. List down the Pincode, Last_name, Street, City, and State of every customer in
a ordem crescente do Código Postal.
O que precisamos exibir? (cláusula SELECT) Pincode, Last_name, Street, City, and State of
cada cliente
Onde nós conseguimos isso? (Tabela/Tabelas) (DA tabela Cliente
Cláusula
Conditions (if any) Sem condições
(cláusula WHERE)
Informação Especial Ordene os registros pelo atributo Pincode em
(Quaisquer outras cláusulas) ordem ascendente
Consulta:
SELECIONAR Código_Postal, Sobrenome, Rua, Cidade, Estado
DECliente
ORDENAR POR Código Postal;
Consulta:
SELECTPart_Number, Part_Description, Quantity_On_Hand, Price
DEPARTAMENTO
Consulta:
SELECIONE*
DEOREderline
ONDE Parte_Numero_Pedido >= 2;
[Link] todos os clientes com Last_Name e First_Name cujo Credit_Limit seja inferior a
igual a 10000.
O que precisamos exibir? (SELECIONE o sobrenome e o primeiro nome de)
cláusula customers
Onde conseguimos isso? (Tabela/Tabelas)Tabela de Clientes
(Cláusula FROM)
Condições (se houver) O valor do limite de crédito é <=10000
(cláusula WHERE)
Informação Especial Nil
(Quaisquer outras cláusulas)
Consulta:
DECliente
ONDE Limite_Crédito <= 10000;
6. Liste o Sobrenome e o Nome dos clientes cujo Limite_de_Crédito é maior que
maior ou igual a 10000 e o Código Postal é 649219.
O que precisamos exibir? (SELECIONE o sobrenome e o nome)
cláusula clientes
Onde conseguimos isso? Tabela de Clientes
(Cláusula FROM)
Conditions (if any) O valor do limite de crédito é >=10000
Consulta:
SELECIONAR Sobrenome, Nome
DECliente
ONDE Limite_Crédito >= 10000 E CódigoPostal = 649219;
7. Exibir todas as peças que têm um Número_de_Parte que começa com 'B'
What we need to display? (SELECT * / All the columns
cláusula)
Onde conseguimos isso? Tabela de Peças
(Cláusula FROM)
Condições (se houver) Números de peça que começam com B. Para
exemplo, 'B101'
(cláusula WHERE)
Consulta:
SELECIONE*
DEPartes
WHERE Part_Number LIKE 'B%';
(Nota: na pergunta, a condição dada especifica uma parte do valor. Esse
ou seja, precisamos combinar uma substring dos valores reais. Portanto, temos que usar
a palavra-chave LIKE. LIKE combina a substring dada à direita dela com o
valores armazenados na coluna que está à esquerda do LIKE)
the
8. Encontre part number, part description, number of parts
quantidade_pedida e o preço cotado para cada peça que foi pedida.
O que precisamos exibir? (SELECIONAR Número da peça, descrição da peça, quantidade
cláusula) preço cotado e ordenado
Onde faça nós get1. Número_da_Parte e Descrição_da_Parte são
{"text":"it?"}
Tabela/Tabelas (DISPONÍVEL na Tabela PARTE.
Cláusula)
2. Quantidade_Ordenada e Preço_Orçado são
parte da tabela ORDERLINE.
Part_Number_Ordered attribute (estrangeiro
a chave) da tabela ORDERLINE refere-se ao
valor do atributo Part_Number da PEÇA
tabela.
Duas tabelas estão envolvidas - PART e
LINHA DE PEDIDO
Condições (se houver) Somente condição de junção (no caso de CARTESIAN)
Produto). Ou seja, os valores comuns
(cláusula WHERE) os atributos de ambas as tabelas devem ser
correspondido.
Informação Especial Nil
(Qualquer outra cláusula)
Consulta:
SELECTPart_Number, Part_Description, Quantity_Ordered, Quoted_Price
FROMPart, Orderline
WHEREPart.Part_Number = Orderline.Part_Number_Ordered;
(Nota: A notação de ponto 'Parte.Número_da_Parte' é usada porque em alguns casos o
atributos comuns podem ser nomeados com o mesmo nome de atributo. Para o acima
consulta, podemos até mencionar a condição WHERE como Parte_Número =
Número_Parte_Pedido, pois estes dois estão apontando para o mesmo domínio com diferentes
nomes.)
9. List the Part_Number, Part_Description, Quantity_Ordered and Quoted_Price of
todas as peças cujo Número_da_Peça começa com 'C'
What we need to display? (SELECT Part number, part description, quantity
cláusula) preço ordenado e cotado
Onde faça nós get1. Número_da_Parte e Descrição_da_Parte são
isso? (Tabela/Tabelas) (DISPONÍVEL na Tabela PARTE.
Cláusula)
2. Quantidade_Ordered e Preço_Quoted são
parte da tabela ORDERLINE.
Part_Number_Ordered attribute (estrangeiro
a chave) da tabela ORDERLINE refere-se ao
valor do atributo Part_Number da PEÇA
mesa.
Duas tabelas estão envolvidas - PART, e
LINHA DE PEDIDO
Conditions (if any) A primeira condição é a condição de junção (CARTESIANO
Produto) que corresponde aos valores de
(cláusula WHERE)
atributos comuns de ambas as tabelas.
A segunda condição menciona apenas a parte
números que começam com a letra 'C'.
Informação Especial Nada
(Quaisquer outras cláusulas)
Consulta:
SELECTPart_Number, Part_Description, Quantity_Ordered, Quoted_Price
FROMPart, Orderline
WHEREPart.Part_Number = Orderline.Part_Number_Ordered E Part_Number
COMO 'C%';
[Consulte a nota da Consulta 7]
10. Encontre o número do pedido, data do pedido de cada pedido feito pelo cliente ao longo
with the part numbers, part description, number of parts ordered and the quoted
preço da peça.
O que precisamos exibir? (SELECIONE Número do pedido, Data do pedido, Número da peça,
cláusula) Part description, Quantity ordered and
preço cotado
Onde fazer nós get1. Número_Part e Descrição_Part são
isso? Tabela/Tabelas (DISPONÍVEL na Tabela PARTE.
Cláusula
2. Quantidade_Ordenada e Preço_Oferecido são
parte da tabela ORDERLINE.
Part_Number_Ordered attribute (estrangeiro
a chave) da tabela ORDERLINE referencia o
valor do atributo Part_Number de PART
mesa.
3. Número_do_Pedido e Data_do_Pedido fazem parte
da tabela de PEDIDOS.
Consulta:
SELECIONAR Ordem.Número_da_Ordem, Order_Date, Part_Number, Part_Description,
Quantity_Ordered, Quoted_Price
DAOrdens, Peça, Linha de pedido
WHEREOrder.Order_Number = Orderline.Order_Number AND Part.Part_Number =
Orderline.Part_Number_Ordered;
(Nota: Observe na consulta acima a notação de ponto Order.Order_Number. Em
neste caso, devemos usar a notação de ponto e especificar a qual tabela nos referimos. Caso contrário,
isso causará ambiguidade. Ou seja, se usarmos Order_Number sem o prefixo no nome
do tabelo, o processador de consultas confundiu-se com o nome como Número do Pedido
disponível em ambas as tabelas PEDIDO e LINHA_DE_PEDIDO
11. List the Order_Number, Order_Date, Part_Number, Part_Description,
Quantidade_Pedida e Preço_Ofertado de todos os pedidos onde a quantidade mínima
o pedido é de pelo menos 10.
O que precisamos exibir? (SELECIONAR Número do pedido, Data do pedido, Número da peça,
cláusula) Part description, Quantity ordered and
preço cotado
Onde fazer nós get1. Número_da_Peça e Descrição_da_Peça são
isso? Mesa/Mesas (DISPONÍVEL na Tabela PARTE.
Cláusula)
2. Quantidade_Ordenada e Preço_Cotado são
parte da tabela ORDERLINE.
Part_Number_Ordered attribute (estrangeiro
key) of ORDERLINE table references the
valor do atributo Part_Number de PART
mesa.
3. Número_de_Pedido e Data_do_Pedido fazem parte
da tabela PEDIDO.
Atributo Order_Number (chave estrangeira) de
A tabela ORDERLINE refere-se ao Número_do_Pedido
atributo (Chave Primária) da tabela ORDER.
Três tabelas estão envolvidas –PART,
ORDERLINE and ORDER
Condições (se houver) Uma condição de junção corresponde ao comum
atributos de PART e ORDERLINE e o
(cláusula WHERE) a segunda condição de junção corresponde ao comum
atributos das tabelas ORDERLINE e ORDER.
A outra condição verifica para o
quantidade maior ou igual a 10.
TRÊS condições são usadas.
Special Information Nil
(Qualquer outra cláusula)
Consulta:
SELECIONAR Pedido.Número_do_Pedido, Order_Date, Part_Number, Part_Description,
Quantity_Ordered, Quoted_Price
FROMOrder, Part, Orderline
WHEREOrder.Order_Number = Orderline.Order_Number E Part.Part_Number =
Orderline.Part_Number_Ordered AND Quantity_Ordered >= 10;
[Link] o Sobrenome e Nome do Cliente seguido pelo
Order_Number, Part_Description and Quantity_Ordered for all of his orders.
O que precisamos exibir? (SELECIONE o sobrenome e o primeiro nome dos clientes,
cláusula) Order number, Part description, and
Quantidade encomendada
Consulta:
SELECIONE Sobrenome First_Name, Order.Order_Number, Part_Description,
Quantity_Ordered
FROMCustomer, Order, Orderline, Part
ONDE Cliente.Numero_do_Cliente = Order.Customer_Number E
Pedido.Numero_Do_Pedido = Linha_Do_Pedido.Numero_Do_Pedido E Numero_Do_Parte =
Part_Number_Ordered;
(Nota: Aqui, a condição Part_Number = Part_Number_Ordered está escrita
sem prefixar os nomes das tabelas, o que é válido)