Você está na página 1de 76

Aula 02

Curso: TI para Área Fiscal


Professor: Ramon Souza
Curso: TI para Área Fiscal
Teoria e Questões comentadas
Prof. Ramon Souza

Aula 02 – Noções básicas de linguagem SQL

ASSUNTOS PÁGINA

1. SQL .............................................................................................. 3
2. A Instrução SELECT ........................................................................ 6
2.2 Ordenação com SELECT ................................................................... 20
2.3 Funções de agregação ..................................................................... 23
2.4 Agrupamentos com SELECT .............................................................. 26
2.5 Junções (joins) ............................................................................... 29
3. A instrução DELETE ...................................................................... 36
4. A instrução UPDATE ...................................................................... 38
5. A instrução INSERT....................................................................... 41
6. QUESTÕES COMENTADAS ............................................................. 44
7. RISCO EXPONENCIAL .................................................................... 59
8. LISTAS DE EXERCÍCIOS ................................................................ 64
9. GABARITO ................................................................................... 76
10. REFERÊNCIAS ........................................................................... 76

Para facilitar sua referência, abaixo listamos as esquematizações desta aula:


Esquema 1 – Linguagem SQL e subdivisões. ....................................................................... 4
Esquema 2 – Sintaxe básica da instrução SELECT. .............................................................. 7
Esquema 3 – Condições na cláusula WHERE ....................................................................... 9
Esquema 4 – Exemplos de padrões para a operação com LIKE ............................................. 13
Esquema 5 – Cláusulas para definir mais de uma condição e negação de condição ................. 16
Esquema 6 – Instrução SELECT. ...................................................................................... 19
Esquema 7 – Cláusula ORDER BY. .................................................................................... 21
Esquema 8 – Funções de agregação ................................................................................. 23
Esquema 9 – Cláusula GROUP BY e HAVING ...................................................................... 27
Esquema 10 – Tipos de JOIN. .......................................................................................... 29
Esquema 11 – Sintaxe básica do comando DELETE ............................................................. 37
Esquema 12 – Sintaxe básica do comando UPDATE ............................................................ 39
Esquema 13 – Sintaxe básica do comando INSERT ............................................................. 42

Prof. Ramon Souza 2 de 76


www.exponencialconcursos.com.br
Curso: TI para Área Fiscal
Teoria e Questões comentadas
Prof. Ramon Souza
1. SQL

A linguagem SQL (Structured Query Language – Linguagem de


Consulta Estruturada) é a linguagem padrão para acesso e manipulação
de bancos de dados.
Por ser um padrão, ela é foi um dos principais motivos para o sucesso
dos bancos de dados comerciais, pois os usuários possuem liberdade para
alternar entre os SGBDs, sem ter que mudar os códigos SQL. Contudo, vale
mencionar que existem diferentes versões da linguagem SQL que fogem um
pouco do padrão.
A linguagem SQL possui comandos para acesso e manipulação dos
dados, mas também para a criação, exclusão e alteração das tabelas, índices e
demais estruturas de bancos de dados, além de comandos para controlar os
dados e transações. Dada essa amplitude, geralmente se fala em subdivisões
da linguagem, geralmente tratando-se dos seguintes subgrupos:
▪ DML (Data Manipulation Language): utilizado para realizar
inclusões, consultas, alterações e exclusões de dados
presentes em registros. Estas tarefas podem ser executadas em
vários registros de diversas tabelas ao mesmo tempo. Os comandos
que realizam respectivamente as funções referidas são SELECT,
INSERT, UPDATE e DELETE.

o DQL (Data Query Language): por vezes, o comando SELECT


é dito como integrante da DQL e permite ao usuário especificar
uma consulta ("query") como uma descrição do
resultado desejado. Esse comando é composto de várias
cláusulas e opções, possibilitando elaborar consultas das mais
simples às mais elaboradas.

▪ DDL (Data Definition Language): permite ao utilizador definir


tabelas novas e elementos associados. Os comandos desta
linguagem são CREATE, ALTER e DROP.

o VDL (View Definition Language): há autores que falam em


uma linguagem específica para a definição de visões.

o SDL (Storage Definition Language): há autores que falam


em uma linguagem específica para a definição do
armazenamento ou especificação do esquema interno.

Prof. Ramon Souza 3 de 76


www.exponencialconcursos.com.br
Curso: TI para Área Fiscal
Teoria e Questões comentadas
Prof. Ramon Souza
▪ DCL (Data Control Language): controla os aspectos de autorização
de dados e licenças de usuários para controlar quem tem acesso
para ver ou manipular dados dentro do banco de dados. Inclui os
comandos GRANT e REVOKE.

▪ DTL (Data Transaction Language): linguagem para tratar as


transações. Os principais comandos desta linguagem são o COMMIT
e o ROLLBACK.

SQL

DML DDL DCL DTL

DQL VDL SDL


Definir tabelas Controlar o
Manipulação de Tratar as
e elementos acesso aos
dados transações
associados dados

Específica para
Somente o Específica para
armazenament
SELECT visões
o
SELECT CREATE GRANT COMMIT

INSERT ALTER REVOKE ROLLBACK

UPDATE DROP

DELETE

Esquema 1 – Linguagem SQL e subdivisões.

Se você souber para que servem as subdiviões e quais comandos estão


em cada uma delas, já irá acertar algumas questões sobre esse assunto ou,
pelo menos, eliminar alguns itens em questões de múltipla escolha.
Como não é nosso objetivo esgotar toda a linguagem SQL, então iremos
nos concentrar nos aspectos mais importantes, principalmente os comandos da
DML (SELECT, INSERT, DELETE e UPDATE).
Mas primeiro vamos resolver uma questão genérica que você consegue
resolver somente sabendo as subdivisões.

Prof. Ramon Souza 4 de 76


www.exponencialconcursos.com.br
Curso: TI para Área Fiscal
Teoria e Questões comentadas
Prof. Ramon Souza

1- (FCC - 2017 - TST - Técnico Judiciário –


Programação) Um Programador:
I. criou uma tabela e uma view em um banco de dados relacional.
II. alterou a estrutura da tabela.
III. incluiu registros na tabela.
Os comandos SQL utilizados nas operações realizadas em I, II e III enquadram-
se, correta e respectivamente, no âmbito da
a) DDL − DML − DDL.
b) DML − DML − DDL.
c) DML − DDL − DDL.
d) DDL − DML − DML.
e) DDL − DDL − DML.
Resolução:

SQL

DML DDL DCL DTL

DQL Definir VDL SDL Controlar o


Manipulação tabelas e Tratar as
de dados acesso aos transações
elementos
dados
associados

Específica
Somente o Específica para
SELECT para visões armazename
SELECT CREATE nto GRANT COMMIT

INSERT ALTER REVOKE ROLLBACK

UPDATE DROP

DELETE

Vamos analisar cada item da questão.


I. DDL (CREATE): criou uma tabela e uma view em um banco de dados
relacional.
II. DDL (ALTER): alterou a estrutura da tabela.
III. DML (INSERT): incluiu registros na tabela.
Gabarito: Letra E.

Prof. Ramon Souza 5 de 76


www.exponencialconcursos.com.br
Curso: TI para Área Fiscal
Teoria e Questões comentadas
Prof. Ramon Souza
2. A Instrução SELECT
A instrução básica para recuperar informações de um banco de
dados é a instrução SELECT. É importante ressaltar que esta instrução não
realiza a mesma função que a operação de seleção da álgebra
relacional.
A sintaxe básica de uma instrução SELECT é da seguinte forma:
SELECT coluna1, coluna2, ... FROM nome_da_tabela WHERE condição;
Esse comando permite recuperar os valores das colunas de uma tabela
que cumprem uma determinada condição.

É possível realizar uma consulta sem indicar colunas específicas,


retornando-se todas as colunas, basta usar o * do seguinte modo:
SELECT * FROM nome_da_tabela WHERE condição;

É possível realizar uma instrução SELECT mesmo sem indicar nenhuma


condição e, portanto, a cláusula WHERE é opcional. Assim, teremos a forma
mais simples:
SELECT coluna1, coluna2, ... FROM nome_da_tabela;

EXEMPLO:
Dada a tabela Clientes a seguir:

IDCliente Nome_Cliente Nome_Conhecido Endereco Cidade CEP Pais

1 Alfreds Futterkiste Maria Anders Obere Str. 57 Berlin 12209 Germany

2 Ana Trujillo Emparedados Ana Trujillo Avda. de la México 05021 Mexico


y helados Constitución 2222 D.F.

3 Antonio Moreno Taquería Antonio Moreno Mataderos 2312 México 05023 Mexico
D.F.

Vamos supor que você deseje recuperar informações dessa tabela, mas
somente esteja interessado no nome do cliente e na cidade. Para isso, poderá
usar a seguinte consulta:
SELECT Nome_Cliente, Cidade FROM Clientes;
O retorno dessa consulta será:

Nome_Cliente Cidade

Alfreds Futterkiste Berlin

Ana Trujillo Emparedados y helados México D.F.

Antonio Moreno Taquería México D.F.

Prof. Ramon Souza 6 de 76


www.exponencialconcursos.com.br
Curso: TI para Área Fiscal
Teoria e Questões comentadas
Prof. Ramon Souza
Em uma tabela, frequentemente, uma coluna pode conter valores
duplicados e, algumas vezes, estamos interessados somente nos valores
diferentes. Para isso, usa-se a cláusula DISTINCT após o SELECT. Ao usar
SELECT DISTINCT, somente serão retornados os valores diferentes ou
distintos, isto é, não são exibidos valores duplicados. A sintaxe é:
SELECT DISTINCT coluna1, coluna2, ... FROM nome_da_tabela
WHERE condição;
EXEMPLO:
Dada a tabela Clientes a seguir:

IDCliente Nome_Cliente Nome_Conhecido Endereco Cidade CEP Pais

1 Alfreds Futterkiste Maria Anders Obere Str. 57 Berlin 12209 Germany

2 Ana Trujillo Emparedados Ana Trujillo Avda. de la México 05021 Mexico


y helados Constitución 2222 D.F.

3 Antonio Moreno Taquería Antonio Moreno Mataderos 2312 México 05023 Mexico
D.F.

Vamos supor que você deseje saber em que países você possui clientes. A
consulta a seguir pode ser utilizada:
SELECT Pais FROM Clientes;
O retorno dessa consulta será:
Pais
Germany
Mexico
Mexico

Note, porém, que neste resultado, o Pais Mexico foi retornado duas vezes. Para
eliminar essa redundância, podemos usar a cláusula DISTINCT:
SELECT DISTINCT Pais FROM Clientes;
O novo resultado será:
Pais
Germany
Mexico

Diante do visto até agora, a sintaxe básica é esquematizada a seguir:

SELECT FROM WHERE

• lista_de_atributos

• condição
• * retorna todos os
atributos. • nome_tabela
• Opcional, mas
geralmente usada.
• DISTINCT elimina
duplicidades.

Esquema 2 – Sintaxe básica da instrução SELECT.

Prof. Ramon Souza 7 de 76


www.exponencialconcursos.com.br
Curso: TI para Área Fiscal
Teoria e Questões comentadas
Prof. Ramon Souza

2- (FCC - 2016 - TRT - 20ª REGIÃO (SE) - Técnico


Judiciário - Tecnologia da Informação) Considere que exista uma tabela
denominada com os campos e
. Um Técnico com especialidade em TI foi solicitado a apresentar
todos os nomes de advogados cadastrados sem repetição. Para isso o Técnico
deve utilizar o comando SQL

a)

b)

c)

d)

e)
Resolução:
Em uma tabela, frequentemente, uma coluna pode conter valores duplicados e,
algumas vezes, estamos interessados somente nos valores diferentes. Para isso,
usa-se a cláusula DISTINCT após o SELECT. Ao usar SELECT DISTINCT,
somente serão retornados os valores diferentes ou distintos, isto é, não são
exibidos valores duplicados. A sintaxe é:
SELECT DISTINCT coluna1, coluna2, ... FROM nome_da_tabela WHERE
condição;
A questão pede para selecionar (SELECT) sem repetição (DISTINCT) todos os
nomes de advogados da (FROM) tabela TabProcessos. Assim temos a seguinte
consulta: SELECT DISTINCT NomeAdvogado FROM TabProcessos;
Gabarito: Letra D.

Prof. Ramon Souza 8 de 76


www.exponencialconcursos.com.br
Curso: TI para Área Fiscal
Teoria e Questões comentadas
Prof. Ramon Souza
Condições
A condição é uma expressão condicional (booleana) que identifica
tuplas a serem recuperadas. Em SQL, os operadores básicos de comparação
usados na clásula WHERE são:

= igual

< menor

<= menor ou igual


Condições

> maior

>= maior ou igual

<> diferente

BETWEEN registros em um intervalo

LIKE procurar padrão

IN possíveis valores

Esquema 3 – Condições na cláusula WHERE.

EXEMPLO:
Dada a tabela Clientes a seguir:

IDCliente Nome_Cliente Nome_Conhecido Endereco Cidade CEP Pais

1 Alfreds Futterkiste Maria Anders Obere Str. 57 Berlin 12209 Germany

2 Ana Trujillo Ana Trujillo Avda. de la México 05021 Mexico


Emparedados y helados Constitución D.F.
2222

3 Antonio Moreno Taquería Antonio Moreno Mataderos 2312 México 05023 Mexico
D.F.

4 Blondel père et fils Frédérique Citeaux 24, place Kléber Strasbourg 67000 France

Vamos supor que você deseje recuperar os clientes que residem no Mexico,
então poderá realizar a seguinte consulta:
SELECT * FROM Clientes WHERE Pais=’Mexico’;
O retorno dessa consulta será:

IDCliente Nome_Cliente Nome_Conhecido Endereco Cidade CEP Pais

2 Ana Trujillo Emparedados Ana Trujillo Avda. de la México 05021 Mexico


y helados Constitución 2222 D.F.

3 Antonio Moreno Taquería Antonio Moreno Mataderos 2312 México 05023 Mexico
D.F.

Prof. Ramon Souza 9 de 76


www.exponencialconcursos.com.br
Curso: TI para Área Fiscal
Teoria e Questões comentadas
Prof. Ramon Souza
Note que praticamente todas as condições são bem intuitivas, então
vamos detalhar somente as condições BETWEEN, LIKE e IN.

Operador BETWEEN
O operador BETWEEN recupera os registros que estão em um
determinado intervalo. Os valores podem ser números, texto ou datas e tanto
os valores de início como o de fim são incluídos.

A sintaxe básica com esse operador é:


SELECT coluna1, coluna2, ... FROM nome_da_tabela WHERE coluna
BETWEEN valor1 AND valor2;

EXEMPLO:
Dada a tabela Clientes a seguir:

IDCliente Nome_Cliente Nome_Conhecido Endereco Cidade CEP Pais

1 Alfreds Futterkiste Maria Anders Obere Str. 57 Berlin 12209 Germany

2 Ana Trujillo Ana Trujillo Avda. de la México 05021 Mexico


Emparedados y helados Constitución D.F.
2222

3 Antonio Moreno Taquería Antonio Moreno Mataderos 2312 México 05023 Mexico
D.F.

4 Blondel père et fils Frédérique Citeaux 24, place Kléber Strasbourg 67000 France

Vamos supor que você deseje recuperar somente os clientes que possuam CEP
entre 00000 e 06000, então poderá usar a seguinte consulta:
SELECT * FROM Clientes WHERE CEP BETWEEN 00000 AND 06000;
O retorno dessa consulta será:

IDCliente Nome_Cliente Nome_Conhecido Endereco Cidade CEP Pais

2 Ana Trujillo Emparedados Ana Trujillo Avda. de la México 05021 Mexico


y helados Constitución 2222 D.F.

3 Antonio Moreno Taquería Antonio Moreno Mataderos 2312 México 05023 Mexico
D.F.

Nesse exemplo, temos poucos dados, mas note que o operador BETWEEN pode
ser bastante útil para um banco com uma infinidade de dados em que queremos
separar dados com base em intervalos.

Prof. Ramon Souza 10 de 76


www.exponencialconcursos.com.br
Curso: TI para Área Fiscal
Teoria e Questões comentadas
Prof. Ramon Souza

3- (FCC - 2017 - TRE-PR - Técnico Judiciário -


Programação de Sistemas) Em um banco de dados aberto e em condições
ideais, uma tabela chamada processo possui os registros abaixo.
NumeroProcesso DataAbertura
1279678-05.2016.1.00.0001 2016-12-26
4598765-03.2017.1.90.0002 2017-01-15
6789764-02.2016.1.80.0003 2016-03-30
9876534-05.2016.1.00.0000 2016-03-20
Ao ser digitado um comando SQL, foi exibido na tela.
NumeroProcesso DataAbertura
6789764-02.2016.1.80.0003 2016-03-30
9876534-05.2016.1.00.0000 2016-03-20
O comando digitado foi:
a) SELECT * FROM processo WHERE DataAbertura BETWEEN '2016-03-01' AND
'2016-03-30';
b) SELECT NumeroProcesso, DataAbertura FROM processo WHERE
DataAbertura BETWEEN ('2016-03- 01','2016-03-30');
c) SELECT * FROM processo WHERE DataAbertura>='2016-03-01' OR
DataAbertura<='2016-03-30';
d) SELECT NumeroProcesso, DataAbertura FROM processo WHERE
DataAbertura IN ('2016-03-20' AND '2016-03-30');
e) SELECT * FROM processo WHERE DataAbertura>'2016-03-20' AND
DataAbertura<'2016-03-30';
Resolução:
A questão pede uma consulta que traga o número do processo e a data abertura,
cuja data esteja em um determinado intervalo de tempo.
O operador BETWEEN recupera os registros que estão em um determinado
intervalo. Os valores podem ser números, texto ou datas e tanto os valores de
início como o de fim são incluídos.
A sintaxe básica com esse operador é:
SELECT coluna1, coluna2, ... FROM nome_da_tabela WHERE coluna
BETWEEN valor1 AND valor2;
Assim, temos a consulta SELECT * FROM processo WHERE DataAbertura
BETWEEN '2016-03-01' AND '2016-03-30';
Gabarito: Letra A.

Prof. Ramon Souza 11 de 76


www.exponencialconcursos.com.br
Curso: TI para Área Fiscal
Teoria e Questões comentadas
Prof. Ramon Souza
Operador IN
O operador IN permite especificar múltiplos valores para uma
condição, isto é, a condição será testada com base na lista de valores indicada.

A sua sintaxe básica é:


SELECT coluna1, coluna2, ... FROM nome_da_tabela WHERE coluna IN
(valor1, valor2, ...);

EXEMPLO:
Dada a tabela Clientes a seguir:

IDCliente Nome_Cliente Nome_Conhecido Endereco Cidade CEP Pais

1 Alfreds Futterkiste Maria Anders Obere Str. 57 Berlin 12209 Germany

2 Ana Trujillo Ana Trujillo Avda. de la México 05021 Mexico


Emparedados y helados Constitución D.F.
2222

3 Antonio Moreno Taquería Antonio Moreno Mataderos 2312 México 05023 Mexico
D.F.

4 Blondel père et fils Frédérique Citeaux 24, place Kléber Strasbourg 67000 France

Vamos supor que você deseje consultar os clientes de cidades específicas,


digamos que de Strasbourg e Berlin. Então poderá usar a seguinte consulta:
SELECT * FROM Clientes WHERE Cidade IN (‘Berlin’, ‘Strasbourg’);
O retorno dessa consulta será:

IDCliente Nome_Cliente Nome_Conhecido Endereco Cidade CEP Pais

1 Alfreds Futterkiste Maria Anders Obere Str. 57 Berlin 12209 Germany

4 Blondel père et fils Frédérique Citeaux 24, place Kléber Strasbourg 67000 France

Note que somente foram retornados os registros cuja cidade está informada na
cláusula IN, que foram Berlin e Strasbourg.

Prof. Ramon Souza 12 de 76


www.exponencialconcursos.com.br
Curso: TI para Área Fiscal
Teoria e Questões comentadas
Prof. Ramon Souza
Operador LIKE
O operador LIKE é utilizado para procurar um padrão em uma coluna.
Este operador permite a comparação com parte de uma cadeia de caracteres.
Este operador é usado em conjunto com dois elemenos curinga (wildcard):
▪ % substitui um número qualquer de 0 ou mais caracteres.
▪ _ substitui um único caractere.

A sintaxe com esse operador é:


SELECT coluna1, coluna2, ... FROM nome_da_tabela WHERE coluna
LIKE padrão;

Você pode definir uma série de padrões para a consulta, mas o quadro a
seguir apresenta alguns significados básicos para os padrões:

Expressão Resultado

LIKE ‘A%’ Qualquer string que inicie com A.

LIKE ‘%A’ Qualquer string que termine com A.

LIKE ‘%A%’ Qualquer string que tenha A em qualquer posição.

String de dois caracteres que tenha a primeira letra A e o


LIKE ‘A_’
segundo caractere seja qualquer outro.

String de dois caracteres cujo primeiro caractere seja


LIKE ‘_A’
qualquer um e a última letra seja a letra A.

String de três caracteres cuja segunda letra seja A,


LIKE ‘_A_’
independentemente do primeiro ou do último caractere.

Qualquer string que tenha a letra A na penúltima posição


LIKE ‘%A_’
e a última seja qualquer outro caractere.

Qualquer string que tenha a letra A na segunda posição e


LIKE ‘_A%’
o primeiro caractere seja qualquer outro caractere.

LIKE ‘_ _ _’ Qualquer string com exatamente três caracteres.

LIKE ‘_ _ _%’ Qualquer string com pelo menos três caracteres.

Qualquer string que tenha o caractere “ em qualquer


LIKE ‘%”%’
posição.
Esquema 4 – Exemplos de padrões para a operação com LIKE.

Prof. Ramon Souza 13 de 76


www.exponencialconcursos.com.br
Curso: TI para Área Fiscal
Teoria e Questões comentadas
Prof. Ramon Souza
EXEMPLO:
Dada a tabela Clientes a seguir:

IDCliente Nome_Cliente Nome_Conhecido Endereco Cidade CEP Pais

1 Alfreds Futterkiste Maria Anders Obere Str. 57 Berlin 12209 Germany

2 Ana Trujillo Ana Trujillo Avda. de la México 05021 Mexico


Emparedados y helados Constitución D.F.
2222

3 Antonio Moreno Taquería Antonio Moreno Mataderos 2312 México 05023 Mexico
D.F.

4 Blondel père et fils Frédérique Citeaux 24, place Kléber Strasbourg 67000 France

Vamos supor que você deseje consultar o nome dos clientes que iniciem com
‘An’. A seguinte consulta servirá a esse propósito:
SELECT * FROM Clientes WHERE Nome_Cliente LIKE ‘An%’;
O retorno dessa consulta será:

IDCliente Nome_Cliente Nome_Conhecido Endereco Cidade CEP Pais

2 Ana Trujillo Ana Trujillo Avda. de la México 05021 Mexico


Emparedados y helados Constitución D.F.
2222

3 Antonio Moreno Taquería Antonio Moreno Mataderos 2312 México 05023 Mexico
D.F.

Note que somente foram retornados os registros dos clientes que começam com
‘An’ e terminam com qualquer sequência de caracteres.
Outros exemplos de consultas e padrões possíveis seriam:
▪ Clientes que tenham ‘Ana’ em qualquer parte do nome:
o SELECT * FROM Clientes WHERE Nome_Cliente LIKE ‘%Ana%’;

IDCliente Nome_Cliente Nome_Conhecido Endereco Cidade CEP Pais

2 Ana Trujillo Ana Trujillo Avda. de la México 05021 Mexico


Emparedados y helados Constitución D.F.
2222

▪ Clientes que tenham ‘l’ como a segunda letra:


o SELECT * FROM Clientes WHERE Nome_Cliente LIKE ‘_l%’;

IDCliente Nome_Cliente Nome_Conhecido Endereco Cidade CEP Pais

1 Alfreds Futterkiste Maria Anders Obere Str. 57 Berlin 12209 Germany

4 Blondel père et fils Frédérique Citeaux 24, place Kléber Strasbourg 67000 France

As possibilidades são inúmeras e dependem do seu objetivo ao realizar a


consulta.

Prof. Ramon Souza 14 de 76


www.exponencialconcursos.com.br
Curso: TI para Área Fiscal
Teoria e Questões comentadas
Prof. Ramon Souza

4- (FCC - 2018 - Prefeitura de São Luís - MA - Auditor


Fiscal de Tributos I - Tecnologia da Informação (TI)) Um Auditor está
executando operações em uma tabela chamada cidadao de um banco de dados
aberto e em condições ideais. Para exibir os dados de todas as pessoas que
possuem na segunda letra do campo nome a vogal a, deve-se utilizar a instrução
SQL:
SELECT * FROM cidadao WHERE
a) nome = '*a';
b) nome LIKE '_a%';
c) nome CONTAINS('a',2);
d) nome LIKE '*a';
e) nome HAVE(2,'a');
Resolução:
Para busca parcial de string, o SELECT fornece o operador LIKE. Alguns
exemplos de expressões com strings usando o operador LIKE são mostrados na
tabela abaixo.

Expressão Resultado

LIKE ‘A%’ Qualquer string que inicie com A.

LIKE ‘%A’ Qualquer string que termine com A.

LIKE ‘%A%’ Qualquer string que tenha A em qualquer posição.

String de dois caracteres que tenha a primeira letra A e o segundo


LIKE ‘A_’
caractere seja qualquer outro.

String de dois caracteres cujo primeiro caractere seja qualquer um e a


LIKE ‘_A’
última letra seja a letra A.

String de três caracteres cuja segunda letra seja A, independentemente


LIKE ‘_A_’
do primeiro ou do último caractere.

Qualquer string que tenha a letra A na penúltima posição e a última seja


LIKE ‘%A_’
qualquer outro caractere.

Qualquer string que tenha a letra A na segunda posição e o primeiro


LIKE ‘_A%’
caractere seja qualquer outro caractere.

LIKE ‘_ _ _’ Qualquer string com exatamente três caracteres.

LIKE ‘_ _ _%’ Qualquer string com pelo menos três caracteres.

LIKE ‘%”%’ Qualquer string que tenha o caractere “ em qualquer posição.

Assim, temos que SELECT * FROM cidadao WHERE nome LIKE ‘_a%’ traz
todos os cidadãos que tem a vogal a na segunda letra do nome.
Gabarito: Letra B.

Prof. Ramon Souza 15 de 76


www.exponencialconcursos.com.br
Curso: TI para Área Fiscal
Teoria e Questões comentadas
Prof. Ramon Souza
Mais de uma condição e negação de condição
Uma cláusula WHERE pode conter mais de uma condição, sendo
possível usar operadores lógicos para indicar a união entre as condições:
▪ AND: exibe os registros em que todas as condições são verdadeiras.
SELECT coluna1, coluna2, ... FROM nome_da_tabela WHERE
condição1 AND condição2 AND condição3 ...;

▪ OR: exibe os registros em que pelo menos uma condição é verdadeira.


SELECT coluna1, coluna2, ... FROM nome_da_tabela WHERE
condição1 OR condição2 OR condição3 ...;

Também é possível recuperar os registram que não safisfazem uma


determinada condição. Basta usar o NOT antes da condição.
▪ NOT: exibe os registros que não satisfazem uma condição.
SELECT coluna1, coluna2, ... FROM nome_da_tabela WHERE NOT
condição;

• Registros em que todas as condições são verdadeiras.

AND
• SELECT coluna1, coluna2, ... FROM nome_da_tabela WHERE condição1
AND condição2 AND condição3 ...;

• Registros em que pelo menos uma das condições é


verdadeira.

OR • SELECT coluna1, coluna2, ... FROM nome_da_tabela WHERE condição1


OR condição2 OR condição3 ...;

• Registros que não satisfazem uma condição.

NOT
• SELECT coluna1, coluna2, ... FROM nome_da_tabela WHERE NOT
condição;

Esquema 5 – Cláusulas para definir mais de uma condição e negação de condição.

Prof. Ramon Souza 16 de 76


www.exponencialconcursos.com.br
Curso: TI para Área Fiscal
Teoria e Questões comentadas
Prof. Ramon Souza

EXEMPLO:
Dada a tabela Clientes a seguir:

IDCliente Nome_Cliente Nome_Conhecido Endereco Cidade CEP Pais

1 Alfreds Futterkiste Maria Anders Obere Str. 57 Berlin 12209 Germany

2 Ana Trujillo Emparedados Ana Trujillo Avda. de la México 05021 Mexico


y helados Constitución 2222 D.F.

3 Antonio Moreno Taquería Antonio Moreno Mataderos 2312 México 05023 Mexico
D.F.

Para recuperar somente os clientes do Mexico e cujo CEP seja maior ou igual a
05023, podemos usar a seguinte consulta:
SELECT * FROM Clientes WHERE Pais=’Mexico’ AND CEP>=05023;
O retorno dessa consulta será:

IDCliente Nome_Cliente Nome_Conhecido Endereco Cidade CEP Pais

3 Antonio Moreno Taquería Antonio Moreno Mataderos 2312 México 05023 Mexico
D.F.

Para retornar os clientes da Alemanha (Germany) OU os que possuam CEP


05021, podemos usar a consulta:
SELECT * FROM Clientes WHERE Pais=’Germany’ OR CEP=05021;
O retorno dessa consulta será:

IDCliente Nome_Cliente Nome_Conhecido Endereco Cidade CEP Pais

1 Alfreds Futterkiste Maria Anders Obere Str. 57 Berlin 12209 Germany

2 Ana Trujillo Emparedados Ana Trujillo Avda. de la México 05021 Mexico


y helados Constitución 2222 D.F.

Para retornar os clientes que não são do Mexico, podemos utilizar a consulta:
SELECT * FROM Clientes WHERE NOT Pais=’Mexico’;
Termos como retorno:

IDCliente Nome_Cliente Nome_Conhecido Endereco Cidade CEP Pais

1 Alfreds Futterkiste Maria Anders Obere Str. 57 Berlin 12209 Germany

Prof. Ramon Souza 17 de 76


www.exponencialconcursos.com.br
Curso: TI para Área Fiscal
Teoria e Questões comentadas
Prof. Ramon Souza

5- (FCC - 2017 - DPE-RS - Técnico - Informática)


Solicitou-se a um Técnico selecionar em um banco de dados padrão SQL todos
os registros da tabela processo cujo conteúdo do campo cidade_origem não
contenha os valores Brasília ou Campinas. Para isso, utilizou a instrução SELECT
* FROM processo
a) WHEN cidade_origem NOT ('Brasília' OR 'Campinas');
b) WHERE cidade_origem NOT IN ('Brasília','Campinas');
c) LIKE cidade_origem IS NOT ('Brasília','Campinas');
d) WHERE cidade_origem NOT IN ('Brasília' OR 'Campinas');
e) WHERE cidade_origem IS NOT ('Brasília';'Campinas');
Resolução:
Vamos analisar cada item:
a) Incorreto: WHEN cidade_origem NOT ('Brasília' OR 'Campinas'); A SQL não
prevê uma clausula para filtro de registro denominada WHEN. O
operador NOT exibe um registro se as condições não forem verdadeiras.
A sintaxe do operador NOT é: SELECT nome_coluna(s) FROM
nome_tabela WHERE NOT condicao;
b) Correto: WHERE cidade_origem NOT IN ('Brasília','Campinas');
O operador IN permite especificar múltiplos valores em uma clausula WHERE
(SELECT nome_coluna(s) FROM nome_tabela WHERE nome_coluna IN (valor1,
valor2 ...)).
O operador NOT pode ser utilizado junto ao operador IN para verificar
se uma coluna não está entre os valores definidos (SELECT
nome_coluna(s) FROM nome_tabela WHERE coluna NOT IN (valor1,
valor2, ...)).
c) Incorreto: LIKE cidade_origem IS NOT ('Brasília','Campinas'); LIKE não é
uma clausula para filtrar registros, é uma instrução para busca parcial
de string utilizada com a clausula WHERE. A SQL não prevê uma
instrução chamada IS NOT.
d) Incorreto: WHERE cidade_origem NOT IN ('Brasília' OR 'Campinas'); O
operador IN separa os valores por virgula.
e) Incorreto: WHERE cidade_origem IS NOT ('Brasília';'Campinas');
Gabarito: Letra B.

Prof. Ramon Souza 18 de 76


www.exponencialconcursos.com.br
Curso: TI para Área Fiscal
Teoria e Questões comentadas
Prof. Ramon Souza
Um esquema geral sobre a sintaxe básica da instrução SELECT é:

mais de
uma
condição
Lista de
SELECT FROM tabela WHERE condição ou
atributos
negação
de
condição

<

<=

> AND
coluna1, coluna
2, ...

FROM tabela WHERE >= OR


ou

*
SELECT <> NOT

OU
BETWEEN
SELECT
DISTINCT
coluna1, coluna
2, ... LIKE

FROM tabela
ou
IN
*

Esquema 6 – Instrução SELECT.

Prof. Ramon Souza 19 de 76


www.exponencialconcursos.com.br
Curso: TI para Área Fiscal
Teoria e Questões comentadas
Prof. Ramon Souza
2.2 Ordenação com SELECT

A linguagem SQL permite que o usuário ordene as tuplas no resultado


de uma consulta pelos valores de um ou mais atributos que aparecem, usando
a cláusula ORDER BY.
A ordem padrão está em ordem crescente de valores. A palavra-chave
DESC pode ser usada para ordenar os resultados em ordem decrescente de
valores. A palavra-chave ASC pode ser usada para especificar a ordem
crescente explicitamente.
A sintaxe básica para esse comando é:
SELECT coluna1, coluna2, ... FROM nome_da_tabela WHERE condição
ORDER BY coluna ASC/DESC;

EXEMPLO:
Dada a tabela Clientes a seguir:

IDCliente Nome_Cliente Nome_Conhecido Endereco Cidade CEP Pais

1 Alfreds Futterkiste Maria Anders Obere Str. 57 Berlin 12209 Germany

2 Ana Trujillo Ana Trujillo Avda. de la México 05021 Mexico


Emparedados y helados Constitución D.F.
2222

3 Antonio Moreno Taquería Antonio Moreno Mataderos 2312 México 05023 Mexico
D.F.

4 Blondel père et fils Frédérique Citeaux 24, place Kléber Strasbourg 67000 France

Vamos supor que você deseje consultar os clientes ordenados pelo país, exceto
os clientes do Mexico. A seguinte consulta servirá a esse propósito:
SELECT * FROM Clientes WHERE NOT Pais=’Mexico’ ORDER BY Pais ASC;
OU
SELECT * FROM Clientes WHERE NOT Pais=’Mexico’ ORDER BY Pais;
O retorno dessa consulta será:

IDCliente Nome_Cliente Nome_Conhecido Endereco Cidade CEP Pais

4 Blondel père et fils Frédérique Citeaux 24, place Kléber Strasbourg 67000 France

1 Alfreds Futterkiste Maria Anders Obere Str. 57 Berlin 12209 Germany

Se quisesse retornar em ordem decrescente, bastaria usar a consulta:


SELECT * FROM Clientes WHERE NOT Pais=’Mexico’ ORDER BY Pais DESC;

IDCliente Nome_Cliente Nome_Conhecido Endereco Cidade CEP Pais

1 Alfreds Futterkiste Maria Anders Obere Str. 57 Berlin 12209 Germany

4 Blondel père et fils Frédérique Citeaux 24, place Kléber Strasbourg 67000 France

Prof. Ramon Souza 20 de 76


www.exponencialconcursos.com.br
Curso: TI para Área Fiscal
Teoria e Questões comentadas
Prof. Ramon Souza
É importante destacar que é possível ordenar por mais de uma coluna,
bastando indicar as colunas e a ordem desejada. Assim, por exemplo, valem as
seguintes sintaxes:
SELECT coluna1, coluna2, ... FROM nome_da_tabela WHERE condição
ORDER BY coluna1, coluna2 ASC;
SELECT coluna1, coluna2, ... FROM nome_da_tabela WHERE condição
ORDER BY coluna1 ASC coluna2 DESC;

Ordem
colunas
crescente
Ordem
ORDER BY colunas ASC
crescente
Ordem
colunas DESC
decrescente
Esquema 7 – Cláusula ORDER BY.

6- (FCC - 2015 - TRT - 4ª REGIÃO (RS) - Técnico


Judiciário - Tecnologia da Informação) Considere que o Tribunal Regional
do Trabalho possua em seu Banco de Dados a tabela Processos descrita abaixo.
Nro_Processo Envolvido
1112222-12.2011.5.04.0000 Maria da Silva
3336666-36.2013.5.04.0000 Jose dos Santos
7779999-79.2015.5.04.0000 Antonio Alves
1234567-89.2012.5.04.0000 Jeronimo Souza
O comando SQL que traz todos os dados da tabela ordenados pela ordem
alfabética dos nomes dos envolvidos é:
a) SELECT *.* FROM Tabela_Processos ORDERED BY Envolvido;
b) SELECT * FROM Tabela_Processos ORDER BY Envolvido ASCENDING;
c) SELECT Nro_Processo AND Envolvido FROM Tabela_Processos ORDER BY
Envolvido ASC;
d) SELECT (Nro_Processo, Envolvido) FROM Processos ORDER BY
Nome_Envolvido;
e) SELECT * FROM Processos ORDER BY Envolvido ASC;

Prof. Ramon Souza 21 de 76


www.exponencialconcursos.com.br
Curso: TI para Área Fiscal
Teoria e Questões comentadas
Prof. Ramon Souza
Resolução:
A linguagem SQL permite que o usuário ordene as tuplas no resultado de
uma consulta pelos valores de um ou mais atributos que aparecem, usando a
cláusula ORDER BY.
A ordem padrão está em ordem crescente de valores. A palavra-chave DESC
pode ser usada para ordenar os resultados em ordem decrescente de valores.
A palavra-chave ASC pode ser usada para especificar a ordem crescente
explicitamente.
A sintaxe básica para esse comando é:
SELECT coluna1, coluna2, ... FROM nome_da_tabela WHERE condição ORDER
BY coluna ASC/DESC;
Logo, para selecionar os dados da tabela em ordem crescente podemos usar a
consulta a seguir:
SELECT * FROM Processos ORDER BY Envolvido ASC; OU
SELECT * FROM Processos ORDER BY Envolvido;
Gabarito: Letra E.

Prof. Ramon Souza 22 de 76


www.exponencialconcursos.com.br
Curso: TI para Área Fiscal
Teoria e Questões comentadas
Prof. Ramon Souza
2.3 Funções de agregação

As funções de agregação são usadas para resumir informações de


várias tuplas em uma síntese de tupla única. Existem diversas funções de
agregação embutidas no SQL: COUNT, SUM, MAX, MIN e AVG.
A sintaxe básica para essas funções é:
SELECT FUNCAO(coluna1) FROM nome_da_tabela WHERE condição;
em que FUNCAO é qualquer uma das funções de agregação.

O quadro a seguir apresenta as definições dessas funções:


FUNÇÃO RETORNO
MIN Menor valor de uma coluna.
MAX Maior valor de uma coluna.
COUNT Número de linhas que atendem a um critério.
AVG Média dos valores de uma coluna numérica.
SUM Soma dos valores de uma coluna numérica.
Esquema 8 – Funções de agregação.

EXEMPLO:
Dada a tabela Produtos a seguir:

ProdutoID Nome_do_Produto FornecedorID CategoriaID Unidade Preco

1 Leite 1 1 Litros 3

2 Banana 1 1 Kilogramas 5

3 Melancia 1 2 Unidade 6

4 Pão 2 2 Pacote 4

5 Suco 2 2 Litros 8

Vamos supor que você deseje consultar a quantidade de produtos que existem,
então poderá usar a seguinte consulta:
SELECT COUNT(ProdutoID) FROM Produtos;
O retorno dessa consulta será:

COUNT(ProdutoID)

Prof. Ramon Souza 23 de 76


www.exponencialconcursos.com.br
Curso: TI para Área Fiscal
Teoria e Questões comentadas
Prof. Ramon Souza

EXEMPLO:
Continuando o exemplo para mais algumas consultas com função de agregação:
▪ Consultar o menor preço:
SELECT MIN(Preco) FROM Produtos;

MIN(Preco)

▪ Consultar o maior preço:


SELECT MAX(Preco) FROM Produtos;

MAX(Preco)

▪ Consultar o preço médio:


SELECT AVG(Preco) FROM Produtos;

AVG(Preco)

5,2

Dada a tabela DetalheVendas:

DetalheVendasID VendaID ProdutoID Quantidade

1 10248 11 12

2 10248 42 10

3 10248 72 5

4 10249 14 9

5 10249 51 40

Para selecionar a quantidade vendida, podemos usar o agregador SUM:


SELECT SUM(Quantidade) FROM DetalheVendas;
O retorno será:

SUM(Quantidade)

76

Prof. Ramon Souza 24 de 76


www.exponencialconcursos.com.br
Curso: TI para Área Fiscal
Teoria e Questões comentadas
Prof. Ramon Souza

7- (FCC - 2017 - TRT - 11ª Região (AM e RR) - Técnico


Judiciário - Tecnologia da Informação) Considere que no TRT exista, em
um banco de dados, a tabela TRAB que possui como campos: nome, sexo,
salario de vários trabalhadores. Um Técnico foi solicitado a escrever um
comando SQL para obter a média salarial dos trabalhadores do sexo FEMININO.
O comando correto é:
a) SELECT sexo, AVG(salario) as MediaSalarial FROM TRAB GROUP BY sexo;
b) SELECT AVG(salario) FROM TRAB WHERE sexo=’FEMININO’;
c) SELECT sexo, AVG(salario) FROM TRAB GROUP BY sexo="FEMININO";
d) SELECT * FROM TRAB WHERE sexo='FEMININO' as AVG(salario);
e) SELECT sexo="FEMININO" FROM TRAB WHERE AVG(salario);
Resolução:
A função AVG() retorna a média de uma coluna numérica. A função AVG é
usada após a instrução SELECT. Sua sintaxe é:
SELECT AVG(nome_coluna) FROM nome_tabela WHERE condicao;
Assim, para selecionar (SELECT) a média (AVG) do salario dos funcionários da
tabela (FROM) TRAB com (WHERE) o sexo igual (=) a FEMININO temos a
consulta: SELECT AVG(salario) FROM TRAB WHERE sexo=’FEMININO’;
Gabarito: Letra B.

Prof. Ramon Souza 25 de 76


www.exponencialconcursos.com.br
Curso: TI para Área Fiscal
Teoria e Questões comentadas
Prof. Ramon Souza
2.4 Agrupamentos com SELECT

Geralmente queremos aplicar as funções de agregação a subgrupos de


tuplas em uma relação, na qual os subgrupos são baseados em alguns valores
de atributo. Cada grupo (partição) consistirá nas tuplas que possuem o mesmo
valor de algum(ns) atributo(s), chamado(s) atributo(s) de agrupamento.
A linguagem SQL tem uma cláusula GROUP BY para aplicar
agrupamentos. Esta cláusula especifica os atributos de agrupamento, que
também devem aparecer na cláusula SELECT, de modo que o valor resultante
da aplicação de cada função de agregação a um grupo de tuplas apareça junto
com o valor do(s) atributo(s) de agrupamento.
A sintaxe básica da cláusula GROUP BY é:
SELECT colunas FROM nome_da_tabela WHERE condição GROUP BY
coluna;

EXEMPLO:
Dada a tabela Produtos a seguir:

ProdutoID Nome_do_Produto FornecedorID CategoriaID Unidade Preco

1 Leite 1 1 Litros 3

2 Banana 1 1 Kilogramas 5

3 Melancia 1 2 Unidade 6

4 Pão 2 2 Pacote 4

5 Suco 2 2 Litros 8

Vamos supor que você deseje consultar a quantidade de produtos que são
fornecidos por cada fornecedor, então poderá usar a seguinte consulta:
SELECT FornecedorID, COUNT(ProdutoID) FROM Produtos GROUP BY
FornecedorID;
O retorno dessa consulta será:

FornecedorID COUNT(ProdutoID)

1 3

2 2

Prof. Ramon Souza 26 de 76


www.exponencialconcursos.com.br
Curso: TI para Área Fiscal
Teoria e Questões comentadas
Prof. Ramon Souza
A cláusula HAVING pode ser usada para definir uma condição para
um agrupamento com GROUP BY.
A sintaxe básica da cláusula GROUP BY com HAVING é:
SELECT colunas FROM nome_da_tabela WHERE condição GROUP BY
coluna HAVING condição;

EXEMPLO:
Dada a tabela Produtos a seguir:

ProdutoID Nome_do_Produto FornecedorID CategoriaID Unidade Preco

1 Leite 1 1 Litros 3

2 Banana 1 1 Kilogramas 5

3 Melancia 1 2 Unidade 6

4 Pão 2 2 Pacote 4

5 Suco 2 2 Litros 8

Vamos supor que você deseje consultar a quantidade de produtos que são
fornecidos por cada fornecedor, porém somente aqueles que forneçam uma
quantidade de produtos menor ou igual a 2, então poderá usar a seguinte
consulta:
SELECT FornecedorID, COUNT(ProdutoID) FROM Produtos GROUP BY
FornecedorID HAVING COUNT(ProdutoID) <= 2;
O retorno dessa consulta será:

FornecedorID COUNT(ProdutoID)

2 2

Note que o fornecedor 1 não foi retornado na consulta, pois fornece 3 produtos.

condição com
GROUP BY coluna HAVING função
agregadora

Esquema 9 – Cláusula GROUP BY e HAVING.

Prof. Ramon Souza 27 de 76


www.exponencialconcursos.com.br
Curso: TI para Área Fiscal
Teoria e Questões comentadas
Prof. Ramon Souza

8- (FCC - 2018 - DPE-AM - Assistente Técnico de


Defensoria - Programador) Considere que exista uma tabela denominada
TabProcessos que possui os seguintes campos: NroProcesso (tipo varchar),
NroVara (tipo int), CPFAutor (tipo varchar). Para que seja feita uma consulta
que resulte no total de processos em cada uma das varas, o comando SQL
correto é
a) SELECT NroVara, COUNT (NroProcesso) FROM TabProcessos;
b) SELECT NroVara, COUNT (NroProcesso) FROM TabProcessos GROUP BY
NroVara;
c) SELECT SUM (NroProcesso) FROM TabProcessos GROUP BY NroVara;
d) SELECT COUNT (NroProcesso) FROM TabProcessos HAVING NroVara;
e) SELECT NroVara, SUM (NroProcesso) FROM TabProcessos GROUP BY
NroVara;
Resolução:
Vamos analisar cada item.
a) Incorreto: A consulta retorna os números das varas e a quantidade
de todas as varas. Não separa por vara.
b) Correto: SELECT NroVara, COUNT (NroProcesso) FROM TabProcessos
GROUP BY NroVara;
A questão pede uma consulta (SELECT) do número da vara (NroVara),
a quantidade de processos de cada vara (COUNT) da tabela (FROM)
TabProcessos, agrupada (GROUP BY) pelo número da vara.
A função COUNT() retorna o número de linhas que combinam com o critério
especificado.
A função GROUP BY() é frequentemente utilizada com funções (COUNT, MAX,
MIN, SUM, AVG) para agrupar o resultado por uma ou mais colunas.
c) Incorreto: A função SUM() retorna o total da soma dos valores de uma
coluna numérica.
d) Incorreto: A cláusula HAVING pode ser usada para definir uma condição
para um agrupamento com GROUP BY.
e) Incorreto: A função SUM() retorna o total da soma dos valores de uma
coluna numérica.
Gabarito: Letra B.

Prof. Ramon Souza 28 de 76


www.exponencialconcursos.com.br
Curso: TI para Área Fiscal
Teoria e Questões comentadas
Prof. Ramon Souza
2.5 Junções (joins)

Frequentemente, precisamos realizar consultas em mais de uma tabela.


Para permitir essas consultas são usadas as tabelas de junção, que
combinam duas ou mais tabelas baseando-se em colunas relacionadas.

As tabelas de junção são especificadas segundo a cláusula JOIN, que


podem ser dos seguintes tipos:

INNER JOIN
• Retorna somente os registros que possuem valores relacionados em ambas as tabelas,
isto é, as intersecções.

LEFT JOIN
• Retorna todos os registros da tabela da esquerda, e os registros relacionados da tabela
da direita.
• Preenche campos não relacionados na tabela da direita com NULL.

RIGHT JOIN
• Retorna todos os registros da tabela da direita, e os registros relacionados da tabela da
esquerda.
• Preenche campos não relacionados na tabela da esquerda com NULL

FULL OUTER JOIN


• Retorna todos os registros, independente de relação.
• Preenche campos não relacionados em qualquer das tabelas com NULL.

SELF JOIN
• União de uma tabela com ela mesma.

Esquema 10 – Tipos de JOIN.

A sintaxe básica para consultas com junções é:


SELECT colunas FROM tabela1 JOIN tabela2 ON tabela1.coluna =
tabela2.coluna;

Para o INNER JOIN, se as colunas em ambas as tabelas tiverem o mesmo


nome, podemos usar a cláusula USING:
SELECT colunas FROM tabela1 INNER JOIN tabela2 USING (coluna);

Prof. Ramon Souza 29 de 76


www.exponencialconcursos.com.br
Curso: TI para Área Fiscal
Teoria e Questões comentadas
Prof. Ramon Souza
INNER JOIN
A cláusula INNER JOIN (ou simplesmente JOIN) retorna somente os
registros que possuem valores relacionados em ambas as tabelas, isto é, as
intersecções.

EXEMPLO:
Dada as tabelas Pessoas e Veículos a seguir:

Vamos supor que você deseje identificar todas as pessoas que possuem veículos
e exibir essa relação em uma única tabela de junção. Para isso, poderá usar a
consulta a seguir:
SELECT * FROM PESSOAS INNER JOIN VEICULOS ON PESSOAS.CPF =
VEICULOS.CPF; OU
SELECT * FROM PESSOAS JOIN VEICULOS ON PESSOAS.CPF =
VEICULOS.CPF; OU
SELECT * FROM PESSOAS INNER JOIN VEICULOS USING(CPF); OU
SELECT * FROM PESSOAS JOIN VEICULOS USING(CPF);
O retorno dessa consulta será:

Note que somente foram retornados os dados referentes as pessoas que


possuem veículos, isto é, que possuem CPF nas duas tabelas.
Neste exemplo, é possível notar que somente Fernando possui um veículo
relacionado, que é o Carro de Placa SB-0001.

Prof. Ramon Souza 30 de 76


www.exponencialconcursos.com.br
Curso: TI para Área Fiscal
Teoria e Questões comentadas
Prof. Ramon Souza
LEFT JOIN
A cláusula LEFT JOIN retorna todos os registros da tabela da esquerda,
e os registros relacionados da tabela da direita. Caso não haja valores
relacionados na tabela da direita, os seus campos serão preenchidos com NULL.

EXEMPLO:
Dada as tabelas Pessoas e Veículos a seguir:

Vamos supor que você deseje identificar todas as pessoas e saber se elas
posuem ou não veículos. Caso elas possuam, você deseja identificar qual o
veículo que elas são proprietárias. Para isso, poderá usar a consulta a seguir:
SELECT * FROM PESSOAS LEFT JOIN VEICULOS ON PESSOAS.CPF =
VEICULOS.CPF;
O retorno dessa consulta será:

Note que foram retornadas todas as pessoas e, para as que possuem veículos,
as informações dos veículos foram informadas nas colunas da direita.
Para aquelas que não possuem veículos, os dados referentes a estes foram
preenchidos com NULL.
Neste exemplo, Fernando possui o veículo de Placa SB-0001, Guilherme não
possui nenhum veículo.

Prof. Ramon Souza 31 de 76


www.exponencialconcursos.com.br
Curso: TI para Área Fiscal
Teoria e Questões comentadas
Prof. Ramon Souza
RIGHT JOIN
A cláusula RIGHT JOIN retorna todos os registros da tabela da direita, e
os registros relacionados da tabela da esquerda. Caso não haja valores
relacionados na tabela da esquerda, os seus campos serão preenchidos com
NULL.

EXEMPLO:
Dada as tabelas Pessoas e Veículos a seguir:

Vamos supor que você deseje identificar todos os veículos e saber se eles
posuem ou não proprietários. Caso eles possuam, você deseja identificar qual o
proprietário deles. Para isso, poderá usar a consulta a seguir:
SELECT * FROM PESSOAS RIGHT JOIN VEICULOS ON PESSOAS.CPF =
VEICULOS.CPF;
O retorno dessa consulta será:

Note que foram retornados todos os veículos e, para as que possuem


proprietários, as informações destes foram informadas nas colunas da esquerda.
Para aquelas que não possuem proprietários, os dados referentes a estes foram
preenchidos com NULL.
Neste exemplo, o veículo de Placa SB-0001 está relacionado a Fernando, e
veículo de Placa SB-0002 não possui pessoa relacionada.

Prof. Ramon Souza 32 de 76


www.exponencialconcursos.com.br
Curso: TI para Área Fiscal
Teoria e Questões comentadas
Prof. Ramon Souza
FULL OUTER JOIN
A cláusula FULL OUTER JOIN retorna todos os registros, relacionando
aqueles que tiverem relação. Caso não haja valores relacionados na tabela da
esquerda ou da direita, os seus campos serão preenchidos com NULL.

EXEMPLO:
Dada as tabelas Pessoas e Veículos a seguir:

Vamos supor que você deseje identificar todos os proprietários e veículos e as


relações entre eles, caso haja. Para isso, poderá usar a consulta a seguir:
SELECT * FROM PESSOAS FULL OUTER JOIN VEICULOS ON PESSOAS.CPF =
VEICULOS.CPF;
O retorno dessa consulta será:

Note que foram retornados todas as pessoas e todos os veículos.


Quando há uma relação entre uma pessoa e um veículo, esta é indicada no
mesmo registro.
Quando não há relação, os valores são preenchidos com NULL.
Neste exemplo, Fernando possui o veículo de Placa SB-0001, Guilherme não
possui veículo, e o veículo de Placa SB-002 não possui proprietário.

Prof. Ramon Souza 33 de 76


www.exponencialconcursos.com.br
Curso: TI para Área Fiscal
Teoria e Questões comentadas
Prof. Ramon Souza
SEFL JOIN
A cláusula SELF JOIN é similar a um JOIN, contudo relaciona uma tabela
com ela mesma.

EXEMPLO:
Dada a tabela Pessoas a seguir:

Vamos supor que você deseje identificar as pessoas que foram indicadas por
outras. Para isso, poderá usar a consulta a seguir:
SELECT A.NOME, B.NOME AS INDICADO_POR FROM PESSOAS A JOIN
PESSOAS B ON A.INDICADO = B.CPF;
O retorno dessa consulta será:

Note que somente foram retornados os dados referentes as pessoas que foram
indicadas por alguém.
Neste exemplo, Guilherme foi indicado por Fernando.

Prof. Ramon Souza 34 de 76


www.exponencialconcursos.com.br
Curso: TI para Área Fiscal
Teoria e Questões comentadas
Prof. Ramon Souza

9- (FCC - 2015 - TRE-RR - Analista Judiciário - Análise


de Sistemas) Considere a instrução SQL a seguir:
SELECT Clientes.NomeCliente, Pedidos.PedidoID FROM Clientes
...I....
ON Clientes.ClienteID=Pedidos.ClienteID
ORDER BY Clientes.NomeCliente;
Esta instrução seleciona todas as linhas de ambas as tabelas, desde que haja
uma correspondência entre as colunas ClienteID. Se houver linhas na tabela
Clientes que não tem correspondentes na tabela Pedidos, esses clientes não
serão listados.
Para que a instrução dê o resultado descrito, a lacuna I deve ser preenchida
com
a) INNER JOIN Pedidos
b) LEFT JOIN
c) RIGHT OUTER JOIN
d) FULL OUTER JOIN
e) LEFT OUTER JOIN
Resolução:
A cláusula INNER JOIN (ou simplesmente JOIN) retorna somente os registros
que possuem valores relacionados em ambas as tabelas, isto é, as intersecções.

Gabarito: Letra A.

Prof. Ramon Souza 35 de 76


www.exponencialconcursos.com.br
Curso: TI para Área Fiscal
Teoria e Questões comentadas
Prof. Ramon Souza
3. A instrução DELETE
A instrução básica para deletar registros existentes de uma tabela é
a instrução DELETE.
A sintaxe básica de uma instrução DELETE é da seguinte forma:
DELETE FROM nome_da_tabela WHERE condição;
OU
DELETE * FROM nome_da_tabela WHERE condição;
Esse comando permite excluir os valores das colunas de uma tabela que
cumprem uma determinada condição.
Vale ressaltar que a condição após a cláusula WHERE pode utilizar os
mesmo operadores usados para o SELECT como =, <, <=, >, >=, <>,
BETWEEN, LIKE, IN, AND, OR e NOT.

É possível deletar todos os registros sem indicar nenhuma condição:


DELETE FROM nome_da_tabela;
OU
DELETE * FROM nome_da_tabela;

EXEMPLO:
Dada a tabela Clientes a seguir:

IDCliente Nome_Cliente Nome_Conhecido Endereco Cidade CEP Pais

1 Alfreds Futterkiste Maria Anders Obere Str. 57 Berlin 12209 Germany

2 Ana Trujillo Emparedados Ana Trujillo Avda. de la México 05021 Mexico


y helados Constitución 2222 D.F.

3 Antonio Moreno Taquería Antonio Moreno Mataderos 2312 México 05023 Mexico
D.F.

Vamos supor que você deseje excluir o cliente de nome “Alfred Futtekiste”. Para
isso, poderá usar o seguinte comando:
DELETE FROM Clientes WHERE Nome_Cliente='Alfreds Futterkiste';
Ao realizar uma nova consulta nessa tabela, o resultado será:

IDCliente Nome_Cliente Nome_Conhecido Endereco Cidade CEP Pais

2 Ana Trujillo Emparedados Ana Trujillo Avda. de la México 05021 Mexico


y helados Constitución 2222 D.F.

3 Antonio Moreno Taquería Antonio Moreno Mataderos 2312 México 05023 Mexico
D.F.

Prof. Ramon Souza 36 de 76


www.exponencialconcursos.com.br
Curso: TI para Área Fiscal
Teoria e Questões comentadas
Prof. Ramon Souza
A sintaxe básica do comando DELETE pode ser esquematizada a seguir:

DELETE
FROM WHERE
ou
• nome_tabela • condição (opcional)
DELETE *

Esquema 11 – Sintaxe básica do comando DELETE.

10- (FCC - 2018 - DPE-AM - Analista em Gestão


Especializado de Defensoria - Analista de Sistema) Para apagar todos os
registros da tabela copia_eleitores utiliza-se a instrução SQL
a) DELETE FROM copia_eleitores; ou TRUNCATE * FROM copia_eleitores;
b) DELETE RECORDS copia_eleitores; ou DROP RECORDS FROM
copia_eleitores;
c) DELETE * FROM copia_eleitores; ou DELETE RECORDS copia_eleitores;
d) DELETE FROM copia_eleitores; ou DELETE * FROM copia_eleitores;
e) DELETE RECORDS copia_eleitores; ou TRUNCATE TABLE copia_eleitores;
Resolução:
A sintaxe básica de uma instrução DELETE é da seguinte forma:
DELETE FROM nome_da_tabela WHERE condição;
OU
DELETE * FROM nome_da_tabela WHERE condição;

Contudo, é possível deletar todos os registros sem indicar nenhuma


condição:
DELETE FROM nome_da_tabela;
OU
DELETE * FROM nome_da_tabela;
Logo, para deletar todos os registros da tabela copia_eleitores:
DELETE FROM copia_eleitores;
OU
DELETE * FROM copia_eleitores;
Gabarito: Letra D.

Prof. Ramon Souza 37 de 76


www.exponencialconcursos.com.br
Curso: TI para Área Fiscal
Teoria e Questões comentadas
Prof. Ramon Souza
4. A instrução UPDATE
A instrução básica para atualizar os registros de uma tabela é a
instrução UPDATE.
A sintaxe básica de uma instrução UPDATE é da seguinte forma:
UPDATE nome_da_tabela SET coluna1 = valor1, coluna2 = valor2 ...
WHERE condição;
Esse comando permite atualizar os valores das colunas de uma tabela
que cumprem uma determinada condição.
Vale ressaltar que a condição após a cláusula WHERE pode utilizar os
mesmo operadores usados para o SELECT como =, <, <=, >, >=, <>,
BETWEEN, LIKE, IN, AND, OR e NOT.

Muito cuidado quando for atualizar uma tabela, caso não seja indicada
nenhuma condição, todo os registros da tabela serão atualizados.

EXEMPLO:
Dada a tabela Clientes a seguir:

IDCliente Nome_Cliente Nome_Conhecido Endereco Cidade CEP Pais

1 Alfreds Futterkiste Maria Anders Obere Str. 57 Berlin 12209 Germany

2 Ana Trujillo Emparedados Ana Trujillo Avda. de la México 05021 Mexico


y helados Constitución 2222 D.F.

3 Antonio Moreno Taquería Antonio Moreno Mataderos 2312 México 05023 Mexico
D.F.

Vamos supor que você deseje alterar o Nome_Conhecido e a cidade do cliente


de IDCliente = 1. Para isso, poderá usar o seguinte comando:
UPDATE Clientes SET Nome_Conhecido = 'Alfred Schmidt', Cidade= 'Frankfurt'
WHERE CustomerID = 1;
Ao realizar uma nova consulta nessa tabela, o resultado será:

IDCliente Nome_Cliente Nome_Conhecido Endereco Cidade CEP Pais

1 Alfreds Futterkiste Alfred Schmidt Obere Str. 57 Frankfurt 12209 Germany

2 Ana Trujillo Emparedados Ana Trujillo Avda. de la México 05021 Mexico


y helados Constitución 2222 D.F.

3 Antonio Moreno Taquería Antonio Moreno Mataderos 2312 México 05023 Mexico
D.F.

Caso tivéssemos esquecido de colocar a condição, todos os clientes teriam seu


Nome_Conhecido modificado para ‘Alfred Schmidt” e a Cidade modificada para
‘Frankfurt’.

Prof. Ramon Souza 38 de 76


www.exponencialconcursos.com.br
Curso: TI para Área Fiscal
Teoria e Questões comentadas
Prof. Ramon Souza
A sintaxe básica do comando UDPATE pode ser esquematizada a seguir:

UPDATE SET WHERE

• Indicação
das colunas e
• nome_tabela • condição
seus novos
valores.

Esquema 12 – Sintaxe básica do comando UPDATE.

11- (FCC - 2016 - AL-MS - Técnico de Informática) Para


responder à questão, considere o modelo mostrado na imagem abaixo, oriundo
de uma situação hipotética:

Para passar todos os filiados do PDT para o PMDB utiliza-se a instrução SQL:
a) UPDATE FROM Filiado SET siglaPartido='PMDB' WHERE siglaPartido='PDT';
b) ALTER TABLE Filiado COLUMN siglaPartido='PMDB' WHERE
siglaPartido='PDT';
c) ALTER RECORD Filiado SET siglaPartido='PMDB' WHERE siglaPartido='PDT';
d) UPDATE Filiado COLUMN siglaPartido='PMDB' WHERE siglaPartido='PDT';
e) UPDATE Filiado SET siglaPartido='PMDB' WHERE siglaPartido='PDT';

Prof. Ramon Souza 39 de 76


www.exponencialconcursos.com.br
Curso: TI para Área Fiscal
Teoria e Questões comentadas
Prof. Ramon Souza
Resolução:
A sintaxe básica de uma instrução UPDATE é da seguinte forma:
UPDATE nome_da_tabela SET coluna1 = valor1, coluna2 = valor2 ... WHERE
condição;
Logo, para alterar todos os filiados do PDT para o PMDB:
UPDATE Filiado SET siglaPartido='PMDB' WHERE siglaPartido='PDT';
Com esse comando, haverá uma busca pela condição, retornando todos os
Filiados cuja siglaPartido seja igual a ‘PDT’ e haverá a alteração desse valor para
‘PMDB’.
Gabarito: Letra E.

Prof. Ramon Souza 40 de 76


www.exponencialconcursos.com.br
Curso: TI para Área Fiscal
Teoria e Questões comentadas
Prof. Ramon Souza
5. A instrução INSERT
A instrução básica para inserir novos registros em uma tabela é a
instrução INSERT.
A sintaxe básica de uma instrução INSERT é da seguinte forma:
INSERT INTO nome_da_tabela (coluna1, coluna2, coluna3, ...) VALUES
(valor1, valor2, valor3, ...);
Esse comando permite inserir os valores indicados após VALUES nas
colunas indicadas.
Caso você esteja inserindo um registro completo, isto é, com todas as
colunas, você não precisa indicar quais as colunas, mas apenas inserir os dados
na mesma ordem das colunas da tabela. Assim, a sintaxe a seguir também é
válida:
INSERT INTO nome_da_tabela VALUES (valor1, valor2, valor3, ...);

EXEMPLO:
Dada a tabela Clientes a seguir:

IDCliente Nome_Cliente Nome_Conhecido Endereco Cidade CEP Pais

1 Alfreds Futterkiste Maria Anders Obere Str. 57 Berlin 12209 Germany

2 Ana Trujillo Emparedados Ana Trujillo Avda. de la México 05021 Mexico


y helados Constitución 2222 D.F.

3 Antonio Moreno Taquería Antonio Moreno Mataderos 2312 México 05023 Mexico
D.F.

Vamos supor que você inserir dois novos clientes. Para isso, poderá usar os
seguintes comandos:
INSERT INTO Clientes (IDCliente, Nome_Cliente, Pais) VALUES (4, ‘João
Aprovado dos Santos’, ‘Brazil’);
INSERT INTO Clientes VALUES (5, ‘Maria Concursada’, ‘Maria Antonieta’,
‘SGAN 911’, ‘Brasília’, 6000, ‘Brazil’);
Ao realizar uma nova consulta nessa tabela, o resultado será:

IDCliente Nome_Cliente Nome_Conhecido Endereco Cidade CEP Pais

1 Alfreds Futterkiste Alfred Schmidt Obere Str. 57 Frankfurt 12209 Germany

2 Ana Trujillo Emparedados Ana Trujillo Avda. de la México 05021 Mexico


y helados Constitución 2222 D.F.

3 Antonio Moreno Taquería Antonio Moreno Mataderos 2312 México 05023 Mexico
D.F.

4 João Aprovado NULL NULL NULL NULL Brazil

5 Maria Concursada Maria Antonieta SGAN 911 Brasília 6000 Brazil

Prof. Ramon Souza 41 de 76


www.exponencialconcursos.com.br
Curso: TI para Área Fiscal
Teoria e Questões comentadas
Prof. Ramon Souza
A sintaxe básica do comando INSERT pode ser esquematizada a seguir:

INSERT INTO VALUES

• (colunas)
• nome_tabela • (valores)
• Opcional.

Esquema 13 – Sintaxe básica do comando INSERT.

12- (FCC - 2016 - AL-MS - Técnico de Informática) Para


responder à questão, considere o modelo mostrado na imagem abaixo, oriundo
de uma situação hipotética:

Um Técnico em Informática, para inserir um registro em uma das tabelas após


sua criação, digitou, corretamente, a instrução:
a) INSERT INTO Partido VALUES ('PDT', 'Partido Desenvolvimentista dos
Trabalhadores', 'Brasília');
b) INSERT INTO Filiado (cpfFiliado, nomeFiliado, emailFiliado, siglaPartido)
VALUES (152.145.123-12, 'Marcos Moreira', 'moreira@gmail.com', 'PSDB');
c) INSERT INTO Filiado VALUES ('159.237.121-11', 'Angela Frota',
'angela@hotmail.com', 'PT');

Prof. Ramon Souza 42 de 76


www.exponencialconcursos.com.br
Curso: TI para Área Fiscal
Teoria e Questões comentadas
Prof. Ramon Souza
d) INSERT INTO Filiado (cpfFiliado, nomeFiliado, siglaPartido) VALUES
('152.145.123-12', 'Marcos Moreira', 'PSDB');
e) INSERT INTO Filiado (cpfFiliado, nomeFiliado, emailFiliado, siglaPartido)
VALUES (null, 'Marcos Silva', null, 'PT');
Resolução:
A sintaxe básica de uma instrução INSERT é da seguinte forma:
INSERT INTO nome_da_tabela (coluna1, coluna2, coluna3, ...) VALUES
(valor1, valor2, valor3, ...);
Vamos analisar cada um dos itens:
a) Incorreto: siglaPartido é chave e não deve ser repetida. Esse comando não
executa, pois tenta inserir um novo partido com sigla PDT.
b) Incorreto: o cpf é do tipo VARCHAR e, portanto, uma cadeia de caracteres,
logo deve ser colocado entre aspas. Funcionaria se fosse ‘152.145.123-12’.
c) Incorreto: não existe o partido PT na tabela, logo não é possível inserir um
filiado nesse partido.
d) Correto: INSERT INTO Filiado (cpfFiliado, nomeFiliado, siglaPartido) VALUES
('152.145.123-12', 'Marcos Moreira', 'PSDB');
e) Incorreto: o cpf não pode ser nulo pois é chave primária da tabela filiado.
Gabarito: Letra D.

Prof. Ramon Souza 43 de 76


www.exponencialconcursos.com.br
Curso: TI para Área Fiscal
Teoria e Questões comentadas
Prof. Ramon Souza
6. QUESTÕES COMENTADAS
SQL
13- (FCC - 2017 - TST - Técnico Judiciário – Programação) Para criar um
banco de dados relacional chamado Tribunal e excluir uma tabela chamada
Consulta, um Programador deverá escrever corretamente as expressões SQL
a) CREATE DATABASE Tribunal; e DELETE TABLE Consulta;
b) INSERT DATABASE Tribunal; e DELETE TABLE = Consulta;
c) CREATE DATABASE Tribunal; e DROP TABLE Consulta;
d) INSERT DATABASE Tribunal; e DROP TABLE Consulta;
e) INSERT DATABASE Tribunal; e DROP TABLE = Consulta;
Resolução:

SQL

DML DDL DCL DTL

DQL Definir VDL SDL Controlar o


Manipulação tabelas e Tratar as
acesso aos
de dados elementos transações
dados
associados

Específica
Somente o Específica para
SELECT para visões armazenamen
SELECT CREATE to GRANT COMMIT

INSERT ALTER REVOKE ROLLBACK

UPDATE DROP

DELETE

Vamos analisar cada item.


a) Incorreto: CREATE DATABASE Tribunal e DELETE TABLE Consulta;
b) Incorreto: INSERT DATABASE Tribunal; e DELETE TABLE = Consulta;
c) Correto: CREATE DATABASE Tribunal; e DROP TABLE Consulta;
d) Incorreto: INSERT DATABASE Tribunal; e DROP TABLE Consulta;
e) Incorreto: INSERT DATABASE Tribunal; e DROP TABLE = Consulta;
Gabarito: Letra C.

Prof. Ramon Souza 44 de 76


www.exponencialconcursos.com.br
Curso: TI para Área Fiscal
Teoria e Questões comentadas
Prof. Ramon Souza
14- (FCC - 2017 - TRF - 5ª REGIÃO - Analista Judiciário - Informática
Desenvolvimento) Para localizar os juízes cujos nomes começam pela letra p
e têm pelo menos 3 caracteres de comprimento (incluindo p) utiliza-se a
instrução SELECT * FROM juizes WHERE nome
a) LIKE 'p_%_%';
b) BEGINS WITH 'p' AND LENGTH>=3;
c) HAS 'p' AND LENGTH>=3;
d) LIKE 'p%3%*';
e) HAS'p%3%*'
Resolução:
O operador LIKE é usado em uma cláusula WHERE para procurar um padrão
especificado em uma coluna. Alguns exemplos de expressões com strings
usando o operador LIKE são mostrados na tabela abaixo.

Expressão Resultado

LIKE ‘A%’ Qualquer string que inicie com A.

LIKE ‘%A’ Qualquer string que termine com A.

LIKE ‘%A%’ Qualquer string que tenha A em qualquer posição.

String de dois caracteres que tenha a primeira letra A e o


LIKE ‘A_’
segundo caractere seja qualquer outro.

String de dois caracteres cujo primeiro caractere seja


LIKE ‘_A’
qualquer um e a última letra seja a letra A.

String de três caracteres cuja segunda letra seja A,


LIKE ‘_A_’
independentemente do primeiro ou do último caractere.

Qualquer string que tenha a letra A na penúltima posição


LIKE ‘%A_’
e a última seja qualquer outro caractere.

Qualquer string que tenha a letra A na segunda posição e


LIKE ‘_A%’
o primeiro caractere seja qualquer outro caractere.

LIKE ‘_ _ _’ Qualquer string com exatamente três caracteres.

LIKE ‘_ _ _%’ Qualquer string com pelo menos três caracteres.

Qualquer string que tenha o caractere “ em qualquer


LIKE ‘%”%’
posição.
O padrão do item a) 'p_%_%' visa retornar os nomes que iniciam com p,
seguido necessariamente de um caractere, de uma cadeia qualquer, de mais
um caractere obrigatório e termine com uma cadeia qualquer.
Gabarito: Letra A.

Prof. Ramon Souza 45 de 76


www.exponencialconcursos.com.br
Curso: TI para Área Fiscal
Teoria e Questões comentadas
Prof. Ramon Souza
15- (FCC - 2017 - TRE-SP - Analista Judiciário - Análise de Sistemas)
Em uma situação hipotética, ao ser designada para atender aos requisitos de
negócio de um usuário, uma Analista de Sistemas do TRE-SP escreveu
expressões e comandos para serem executados em um Banco de Dados
Relacional que visavam (1) criar uma tabela que contivesse dados de processos
partidários, (2) controlar a segurança e o acesso a ela e (3) manipular dados
nela. Desta forma ela, se valeu, correta e respectivamente, por exemplo, de
alguns elementos de expressões tais como:
a) CREATE, GRANT e ALTER. b) DROP, ALTER e UPDATE.
c) INSERT, INDEX e CREATE. d) INSERT, REVOKE e SELECT.
e) CREATE, REVOKE e INSERT.
Resolução:

SQL

DML DDL DCL DTL

DQL Definir VDL SDL Controlar o


Manipulação tabelas e Tratar as
acesso aos
de dados elementos transações
dados
associados

Específica
Somente o Específica para
SELECT para visões armazenamen
SELECT CREATE to GRANT COMMIT

INSERT ALTER REVOKE ROLLBACK

UPDATE DROP

DELETE

De acordo com as descrições temos que a questão pede um comando DDL para
(1), um comando DCL para (2) e um comando DML para (3).
a) Incorreto: CREATE (DDL), GRANT (DCL) e ALTER (DDL).
b) Incorreto: DROP (DDL), ALTER (DDL) e UPDATE (DML).
c) Incorreto: INSERT (DDL), INDEX (Não é comando) e CREATE (DDL).
d) Incorreto: INSERT (DDL), REVOKE (DCL) e SELECT (DQL).
e) Correto: CREATE (DDL), REVOKE (DCL) e INSERT (DML).
Gabarito: Letra E.

Prof. Ramon Souza 46 de 76


www.exponencialconcursos.com.br
Curso: TI para Área Fiscal
Teoria e Questões comentadas
Prof. Ramon Souza
16- (FCC - 2017 - TST - Técnico Judiciário – Programação) Um
Programador pretende executar uma instrução SQL que recupere todos os
dados da tabela produto cujos preços (preco) sejam maiores ou iguais R$
100,00 e menores ou iguais a R$ 1.000,00. A expressão para isso é SELECT *
FROM produto
a) WHEN preco GREATER 99 AND LESS 1000;
b) WHERE preco BETWEEN 100 AND 1000;
c) LIKE preco BETWEEN 100 AND 1000;
d) WHERE preco IN (100, 1000);
e) JOIN preco INNER (100, 1000);
Resolução:
Vamos analisar cada item.
a) Incorreto: WHEN preco GREATER 99 AND LESS 1000;
SQL não prevê as instruções GREATER e LESS, prevê os operadores >
(greater than/maior que), >= (greater than or equal/maior que ou igual), <
(less than/menor que), <= (less than ou equal/menor que ou igual).
b) Correto: WHERE preco BETWEEN 100 AND 1000;
O operador BETWEEN recupera os registros que estão em um determinado
intervalo. Os valores podem ser números, texto ou datas e tanto os valores de
início como o de fim são incluídos.
A sintaxe básica com esse operador é:
SELECT coluna1, coluna2, ... FROM nome_da_tabela WHERE coluna
BETWEEN valor1 AND valor2;
c) Incorreto: LIKE WHERE preco BETWEEN 100 AND 1000;
LIKE não é uma clausula para filtrar intervalos, é uma instrução para busca
parcial de string utilizada com a clausula WHERE.
d) Incorreto: WHERE preco IN (100, 1000);
O operador IN é utilizado para consultar uma tabela, filtrando o valor de um
campo a partir de uma lista de possibilidades, ou seja, ele verifica se o campo
tem um valor igual a um dos valores definidos.
e) Incorreto: JOIN preco INNER (100, 1000);
O INNER previsto no SQL é o INNER JOIN, seleciona registros que possuem
valores correspondentes nas duas tabelas.
Sua sintaxe é:
SELECT nome_coluna(s) FROM tabela1 INNER JOIN tabela2 ON
tabela1.nome_coluna = tabela2.nome_coluna;
Gabarito: Letra B.

Prof. Ramon Souza 47 de 76


www.exponencialconcursos.com.br
Curso: TI para Área Fiscal
Teoria e Questões comentadas
Prof. Ramon Souza
17- (FCC - 2017 - TRT - 24ª REGIÃO (MS) - Técnico Judiciário -
Tecnologia da Informação) Para obter o número de funcionários cujo
conteúdo do campo nome da tabela funcionario termina com a letra o deve-se
utilizar a instrução SQL SELECT COUNT(*) FROM funcionario WHERE
a) nome LIKE '*o';
b) nome LIKE '%o';
c) SUBSTR(nome,LEN(nome)-1)='o';
d) nome CONTAINS '%o';
e) SUBSTR(nome,0)='o';
Resolução:
Para busca parcial de string, o SELECT fornece o operador LIKE. Alguns
exemplos de expressões com strings usando o operador LIKE são mostrados na
tabela abaixo.

Expressão Resultado

LIKE ‘A%’ Qualquer string que inicie com A.

LIKE ‘%A’ Qualquer string que termine com A.

LIKE ‘%A%’ Qualquer string que tenha A em qualquer posição.

String de dois caracteres que tenha a primeira letra A e o


LIKE ‘A_’
segundo caractere seja qualquer outro.

String de dois caracteres cujo primeiro caractere seja


LIKE ‘_A’
qualquer um e a última letra seja a letra A.

String de três caracteres cuja segunda letra seja A,


LIKE ‘_A_’
independentemente do primeiro ou do último caractere.

Qualquer string que tenha a letra A na penúltima posição


LIKE ‘%A_’
e a última seja qualquer outro caractere.

Qualquer string que tenha a letra A na segunda posição e


LIKE ‘_A%’
o primeiro caractere seja qualquer outro caractere.

LIKE ‘_ _ _’ Qualquer string com exatamente três caracteres.

LIKE ‘_ _ _%’ Qualquer string com pelo menos três caracteres.

Qualquer string que tenha o caractere “ em qualquer


LIKE ‘%”%’
posição.
Assim, temos que SELECT COUNT(*) FROM funcionario WHERE nome LIKE
‘%o’ traz a quantidade de funcionarios com nome terminado com a letra o.
Gabarito: Letra B.

Prof. Ramon Souza 48 de 76


www.exponencialconcursos.com.br
Curso: TI para Área Fiscal
Teoria e Questões comentadas
Prof. Ramon Souza
18- (FCC - 2017 - TRT - 24ª REGIÃO (MS) - Técnico Judiciário -
Tecnologia da Informação) Em um banco de dados Oracle aberto e em
condições ideais há uma tabela chamada funcionario com os campos
idFuncionario (inteiro − primary key), nome (cadeia de caracteres) e salario
(real). Para exibir o nome e o salário de todos os funcionários cujo valor de
salário esteja fora do intervalo de 1000 a 12000 utiliza-se a instrução SQL
SELECT nome, salario FROM funcionario WHERE
a) salario<1000 AND salario>12000;
b) salario NOT BETWEEN 1000 OR 12000;
c) 1000>salario>12000;
d) salario NOT BETWEEN 1000 AND 12000;
e) salario BETWEEN 1000 AND 12000;
Resolução:
O operador BETWEEN recupera os registros que estão em um determinado
intervalo. Os valores podem ser números, texto ou datas e tanto os valores de
início como o de fim são incluídos.
A sintaxe básica com esse operador é:
SELECT coluna1, coluna2, ... FROM nome_da_tabela WHERE coluna
BETWEEN valor1 AND valor2;
Já operador NOT exibe os registros que não satisfazem uma condição e têm a
seguinte sintaxe:
SELECT coluna1, coluna2, ... FROM nome_da_tabela WHERE NOT condição;
Assim, na questão teríamos a seguinte consulta unindo as clásulusas BETWEEN
e NOT: SELECT nome, salario FROM funcionario WHERE salario NOT
BETWEEN 1000 AND 12000;
Gabarito: Letra D.

19- (FCC - 2017 - TRE-PR - Técnico Judiciário - Programação de


Sistemas) Em um banco de dados aberto e em condições ideais, uma tabela
processo possui um campo NumeroProcesso do tipo varchar2. Para selecionar
somente os registros cujo campo NumeroProcesso possua como segundo
caractere (da esquerda para a direita), o valor 2, utiliza-se a instrução SELECT
* FROM processo WHERE NumeroProcesso
a) CONTAINS(1, '2');
b) LIKE ' *2%';
c) CONTAINS LEFT(2, '2');
d) LIKE '_2%';

Prof. Ramon Souza 49 de 76


www.exponencialconcursos.com.br
Curso: TI para Área Fiscal
Teoria e Questões comentadas
Prof. Ramon Souza
e) CONTAINS '_2%'
Resolução:
Para busca parcial de string, o SELECT fornece o operador LIKE. Alguns
exemplos de expressões com strings usando o operador LIKE são mostrados na
tabela abaixo.

Expressão Resultado

LIKE ‘A%’ Qualquer string que inicie com A.

LIKE ‘%A’ Qualquer string que termine com A.

LIKE ‘%A%’ Qualquer string que tenha A em qualquer posição.

String de dois caracteres que tenha a primeira letra A e o


LIKE ‘A_’
segundo caractere seja qualquer outro.

String de dois caracteres cujo primeiro caractere seja


LIKE ‘_A’
qualquer um e a última letra seja a letra A.

String de três caracteres cuja segunda letra seja A,


LIKE ‘_A_’
independentemente do primeiro ou do último caractere.

Qualquer string que tenha a letra A na penúltima posição


LIKE ‘%A_’
e a última seja qualquer outro caractere.

Qualquer string que tenha a letra A na segunda posição e


LIKE ‘_A%’
o primeiro caractere seja qualquer outro caractere.

LIKE ‘_ _ _’ Qualquer string com exatamente três caracteres.

LIKE ‘_ _ _%’ Qualquer string com pelo menos três caracteres.

Qualquer string que tenha o caractere “ em qualquer


LIKE ‘%”%’
posição.
Assim, temos que SELECT * FROM processo WHERE NumeroProcesso LIKE
‘_2%’ traz todos os processos que tem ao menos dois caracteres e o segundo
número do campo NumeroProcesso é 2.
Gabarito: Letra D.

20- (FCC - 2017 - ARTESP - Agente de Fiscalização à Regulação de


Transporte - Tecnologia de Informação) Considere, por hipótese, que no
banco de dados da ARTESP exista uma tabela denominada TabPSAD com os
campos IdRodovia, Posto_Servico, Area_Descanso, Vagas_Estacionamento. Um
Agente de Fiscalização à Regulação de Transporte utilizou os comandos SQL
para fazer consultas aos dados desta tabela:
I. SELECT IdRodovia FROM TabPSAD WHERE Vagas_Estacionamento > 300;

Prof. Ramon Souza 50 de 76


www.exponencialconcursos.com.br
Curso: TI para Área Fiscal
Teoria e Questões comentadas
Prof. Ramon Souza
II. SELECT COUNT (DISTINCT IdRodovia) FROM TabPSAD;
III. SELECT IdRodovia, ADD (Vagas_Estacionamento) FROM TabPSAD GROUP
BY Area_Descanso;
Está correto o que consta em
a) II, apenas.
b) I e III, apenas.
c) III, apenas.
d) I e II, apenas.
e) I, II e III.
Resolução:
Vamos analisar cada item da questão.
I. Correto: SELECT IdRodovia FROM TabPSAD WHERE Vagas_Estacionamento
> 300; Seleciona o IdRodovia na tabela TabPSAD, das rodovias com mais de
300 vagas de estacionamento. A sintaxe do comando SELECT é: SELECT
nome_coluna(s) FROM nome_tabela WHERE condicao;
II. Correto: SELECT COUNT (DISTINCT IdRodovia) FROM TabPSAD; Seleciona
a quantidade de rodovias com IdRodovia distintos da tabela TabPSAD. A sintaxe
do SELECT com COUNT e DISTINCT é: SELECT nome_coluna(s)
COUNT(DISTINCT nome_coluna, [nome_coluna(s)]) FROM nome_tabela
WHERE condicao;
III. Incorreto: SELECT IdRodovia, ADD (Vagas_Estacionamento) FROM
TabPSAD GROUP BY Area_Descanso IdRodovia;
A instrução GROUP BY deve ser realizado sobre uma ou mais colunas
constantes no SELECT. O comando ADD é utilizado junto ao comando ALTER
TABLE e não SELECT.
Gabarito: Letra D.

21- (FCC - 2017 - DPE-RS - Analista - Banco de Dados) Seja a seguinte


tabela de um banco de dados relacional: Objeto (ID, Nome, Peso, Descrição).
A consulta SQL para obter o Nome e o Peso dos objetos com a restrição do Peso
estar entre os valores 2 e 18 é:
a) SELECT Nome AND Peso
OF Objeto
HAVING Peso IN (2; 18);
b) SELECT Nome, Peso
FROM Objeto

Prof. Ramon Souza 51 de 76


www.exponencialconcursos.com.br
Curso: TI para Área Fiscal
Teoria e Questões comentadas
Prof. Ramon Souza
WHERE Peso IS BETWEEN 2 TO 18;
c) SELECT Objeto (Nome, Peso)
HAVING Peso INSIDE (2; 18);
d) SELECT Objeto (Nome, Peso)
FOR Peso INSIDE (2;18);
e) SELECT Nome, Peso
FROM Objeto
WHERE Peso BETWEEN 2 AND 18;
Resolução:
O operador BETWEEN recupera os registros que estão em um determinado
intervalo. Os valores podem ser números, texto ou datas e tanto os valores de
início como o de fim são incluídos.
A sintaxe básica com esse operador é:
SELECT coluna1, coluna2, ... FROM nome_da_tabela WHERE coluna
BETWEEN valor1 AND valor2;
Seguindo o que a questão pede, temos a consulta: SELECT Nome, Peso FROM
Objeto WHERE Peso BETWEEN 2 AND 18;
Gabarito: Letra E.

22- (FCC - 2016 - Prefeitura de Teresina - PI - Analista Tecnológico -


Analista de Suporte Técnico) Considere a consulta em linguagem SQL
abaixo:
SELECT Nome
FROM T
WHERE Nome LIKE “A%S”
Um dos resultados para essa consulta é
a) avião, andes.
b) pastas, sacos.
c) astro, seca.
d) secos, abas.
e) aves, araras.
Resolução:
Para busca parcial de string, o SELECT fornece o operador LIKE. Alguns
exemplos de expressões com strings usando o operador LIKE são mostrados na
tabela abaixo.

Prof. Ramon Souza 52 de 76


www.exponencialconcursos.com.br
Curso: TI para Área Fiscal
Teoria e Questões comentadas
Prof. Ramon Souza

Expressão Resultado

LIKE ‘A%’ Qualquer string que inicie com A.

LIKE ‘%A’ Qualquer string que termine com A.

LIKE ‘%A%’ Qualquer string que tenha A em qualquer posição.

String de dois caracteres que tenha a primeira letra A e o


LIKE ‘A_’
segundo caractere seja qualquer outro.

String de dois caracteres cujo primeiro caractere seja


LIKE ‘_A’
qualquer um e a última letra seja a letra A.

String de três caracteres cuja segunda letra seja A,


LIKE ‘_A_’
independentemente do primeiro ou do último caractere.

Qualquer string que tenha a letra A na penúltima posição


LIKE ‘%A_’
e a última seja qualquer outro caractere.

Qualquer string que tenha a letra A na segunda posição e


LIKE ‘_A%’
o primeiro caractere seja qualquer outro caractere.

LIKE ‘_ _ _’ Qualquer string com exatamente três caracteres.

LIKE ‘_ _ _%’ Qualquer string com pelo menos três caracteres.

Qualquer string que tenha o caractere “ em qualquer


LIKE ‘%”%’
posição.
SELECT Nome
FROM T
WHERE Nome LIKE “A%S”
Assim temos que a consulta SELECT Nome FROM T WHERE Nome LIKE “A%S”
traz as strings que começam com a letra A e terminam com a letra S.
Vamos analisar cada item.
a) Incorreto: avião, andes.
b) Incorreto: pastas, sacos.
c) Incorreto: astro, seca.
d) Incorreto: secos, abas.
e) Correto: aves, araras.
Gabarito: Letra E.

Prof. Ramon Souza 53 de 76


www.exponencialconcursos.com.br
Curso: TI para Área Fiscal
Teoria e Questões comentadas
Prof. Ramon Souza
23- (FCC - 2016 - Prefeitura de Teresina - PI - Analista Tecnológico -
Analista de Suporte Técnico) Considere a seguinte tabela de um banco de
dados relacional:
Item (ID, Nome, Valor, Tipo)
A consulta em linguagem SQL para obter o Tipo e o valor médio dos itens,
considerando itens de mesmo tipo é
a) SELECT Tipo, Valor_Médio
FROM Item
ORDER BY Tipo
b) SELECT Tipo, SUM(Valor)
FROM Item
HAVING SAME Tipo
c) SELECT Tipo, AVG (Valor)
FROM Item
GROUP BY Tipo
d) SELECT Tipo, COUNT (Valor)
FROM Item
WHERE Tipo IN SET
e) SELECT Tipo, Média (Valor)
FROM Item
Resolução:
Vamos analisar cada item.
a) Incorreto: SELECT Tipo, Valor_Médio FROM Item ORDER BY Tipo. Não
existe uma coluna chamada Valor_Médio. ORDER BY é usado para
ordenar o resultado de forma ascendente ou descendente.
b) Incorreto: SELECT Tipo, SUM(Valor) FROM Item HAVING SAME Tipo. A
função SUM() retorna o total da soma dos valores de uma coluna
numérica. A função HAVING é utilizada em conjunto com a função
GROUP BY. No SQL não existe uma instrução SAME.
c) Correto: SELECT Tipo, AVG (Valor) FROM Item GROUP BY Tipo.
A função AVG() retorna a média de uma coluna numérica. A função AVG
é usada após a instrução SELECT. Sua sintaxe é: SELECT
AVG(nome_coluna) FROM nome_tabela WHERE condicao;
A função GROUP BY() é frequentemente utilizada com funções (OUNT,
MAX, MIN, SUM, AVG) para agrupar o resultado por uma ou mais
colunas.

Prof. Ramon Souza 54 de 76


www.exponencialconcursos.com.br
Curso: TI para Área Fiscal
Teoria e Questões comentadas
Prof. Ramon Souza
d) Incorreto: SELECT Tipo, COUNT (Valor) FROM Item WHERE Tipo IN SET.
Nesse caso não a necessidade de uma cláusula WHERE. Não existe o
comando IN SET.
A função COUNT() retorna o número de linhas que combinam com o
critério especificado.
e) Incorreto: SELECT Tipo, Média (Valor) FROM Item. Não existe o comando
Média.
Gabarito: Letra C.

24- (FCC - 2016 - TRT - 14ª Região (RO e AC) - Técnico Judiciário -
Tecnologia da Informação) Para selecionar na tabela Colaboradores de um
banco de dados relacional, aberto e em condições ideais, todos os registros cujo
conteúdo do campo nome não inicie pela palavra 'Mar' utiliza-se o comando
SELECT * FROM Colaboradores WHERE nome
a) NOT LIKE 'Mar%';
b) IS NOT 'Mar%';
c) <> 'Mar*';
d) NOT LIKE 'Mar*';
e) != 'Mar%';
Resolução:
Para busca parcial de string, o SELECT fornece o operador LIKE. Alguns
exemplos de expressões com strings usando o operador LIKE são mostrados na
tabela abaixo.

Expressão Resultado

LIKE ‘A%’ Qualquer string que inicie com A.

LIKE ‘%A’ Qualquer string que termine com A.

LIKE ‘%A%’ Qualquer string que tenha A em qualquer posição.

String de dois caracteres que tenha a primeira letra A e o


LIKE ‘A_’
segundo caractere seja qualquer outro.

String de dois caracteres cujo primeiro caractere seja


LIKE ‘_A’
qualquer um e a última letra seja a letra A.

String de três caracteres cuja segunda letra seja A,


LIKE ‘_A_’
independentemente do primeiro ou do último caractere.

Qualquer string que tenha a letra A na penúltima posição


LIKE ‘%A_’
e a última seja qualquer outro caractere.

Prof. Ramon Souza 55 de 76


www.exponencialconcursos.com.br
Curso: TI para Área Fiscal
Teoria e Questões comentadas
Prof. Ramon Souza

Qualquer string que tenha a letra A na segunda posição e


LIKE ‘_A%’
o primeiro caractere seja qualquer outro caractere.

LIKE ‘_ _ _’ Qualquer string com exatamente três caracteres.

LIKE ‘_ _ _%’ Qualquer string com pelo menos três caracteres.

Qualquer string que tenha o caractere “ em qualquer


LIKE ‘%”%’
posição.
Assim, temos que SELECT * FROM Colaboradores WHERE nome LIKE 'Mar%'
traz todos os colaboradores que começam com ‘Mar’.
Como a questão solicita os colaboradores que não iniciem com essa cadeia de
caracteres, então devemos usar a cláusula NOT e, portanto, a consulta a seguir:
SELECT * FROM Colaboradores WHERE nome NOT LIKE 'Mar%';
Gabarito: Letra A.

25- (FCC - 2015 - DPE-SP - Administrador de Banco de Dados) Considere


a seguinte consulta feita em SQL padrão:
SELECT Tipo
FROM Catálogo
WHERE Tipo IN (‘gde’, ‘médio’, ‘pequeno’)
Uma consulta SQL equivalente é:
a) SELECT Tipo
FROM Catálogo
WHERE Tipo = ‘gde’ AND Tipo = ‘médio’ AND Tipo = ‘pequeno’
b) SELECT Tipo
FROM Catálogo
GROPU BY Tipo
c) SELECT Tipo
FROM Catálogo
WHERE Tipo = ‘gde’ OR Tipo = ‘médio’ OR Tipo = ‘pequeno’
d) SELECT Tipo
FROM Catálogo
WHERE Tipo BETWEEN (‘pequeno’, ‘médio’, ‘gde’)
e) SELECT Tipo
FROM Catálogo
HAVING Tipo LIKE (‘gde’, ‘médio’, ‘pequeno’)

Prof. Ramon Souza 56 de 76


www.exponencialconcursos.com.br
Curso: TI para Área Fiscal
Teoria e Questões comentadas
Prof. Ramon Souza
Resolução:
O operador IN permite especificar múltiplos valores para uma condição,
isto é, a condição será testada com base na lista de valores indicada.
Basta que o registro satisfaza a qualquer uma das condições para ser retornado,
logo, equivale a uma operação com múltiplas cláusulas OR.
Gabarito: Letra C.

26- (FCC - 2015 - DPE-SP - Administrador de Banco de Dados) Considere


a seguinte consulta feita em SQL padrão:
SELECT Produto
FROM Mercadoria
WHERE Produto LIKE ('%er%')
Um possível resultado obtido a partir dessa consulta é:
a) torneira, persiana.
b) feira, celular.
c) registro, cerca.
d) prego, prendedor.
e) caderno, energia.
Resolução:
Para busca parcial de string, o SELECT fornece o operador LIKE. Alguns
exemplos de expressões com strings usando o operador LIKE são mostrados na
tabela abaixo.

Expressão Resultado

LIKE ‘A%’ Qualquer string que inicie com A.

LIKE ‘%A’ Qualquer string que termine com A.

LIKE ‘%A%’ Qualquer string que tenha A em qualquer posição.

String de dois caracteres que tenha a primeira letra A e o


LIKE ‘A_’
segundo caractere seja qualquer outro.

String de dois caracteres cujo primeiro caractere seja


LIKE ‘_A’
qualquer um e a última letra seja a letra A.

String de três caracteres cuja segunda letra seja A,


LIKE ‘_A_’
independentemente do primeiro ou do último caractere.

Qualquer string que tenha a letra A na penúltima posição


LIKE ‘%A_’
e a última seja qualquer outro caractere.

Prof. Ramon Souza 57 de 76


www.exponencialconcursos.com.br
Curso: TI para Área Fiscal
Teoria e Questões comentadas
Prof. Ramon Souza

Qualquer string que tenha a letra A na segunda posição e


LIKE ‘_A%’
o primeiro caractere seja qualquer outro caractere.

LIKE ‘_ _ _’ Qualquer string com exatamente três caracteres.

LIKE ‘_ _ _%’ Qualquer string com pelo menos três caracteres.

Qualquer string que tenha o caractere “ em qualquer


LIKE ‘%”%’
posição.
Assim temos que a consulta SELECT Produto FROM Mercadoria WHERE Produto
LIKE ('%er%') traz as strings que começam possuem ‘er’ em qualquer posição.
Vamos analisar cada item.
a) Incorreto: torneira, persiana.
b) Incorreto: feira, celular.
c) Incorreto: registro, cerca.
d) Incorreto: prego, prendedor.
e) Correto: caderno, energia.
Gabarito: Letra E.

Caderno de Questões Sobre o Tema


O caderno referente ao assunto desta aula pode ser acessado em Caderno de
Questões - SQL.

Prof. Ramon Souza 58 de 76


www.exponencialconcursos.com.br
Curso: TI para Área Fiscal
Teoria e Questões comentadas
Prof. Ramon Souza
7. RISCO EXPONENCIAL

Linguagem SQL e Subdivisões

SQL

DML DDL DCL DTL

DQL VDL SDL


Definir tabelas Controlar o
Manipulação de Tratar as
e elementos acesso aos
dados transações
associados dados

Específica para
Somente o Específica para
armazenament
SELECT visões
o
SELECT CREATE GRANT COMMIT

INSERT ALTER REVOKE ROLLBACK

UPDATE DROP

DELETE

Sintaxe básica do SELECT

SELECT FROM WHERE

• lista_de_atributos

• condição
• * retorna todos os
atributos. • nome_tabela
• Opcional, mas
geralmente usada.
• DISTINCT elimina
duplicidades.

Prof. Ramon Souza 59 de 76


www.exponencialconcursos.com.br
Curso: TI para Área Fiscal
Teoria e Questões comentadas
Prof. Ramon Souza

Condições na Cláusula WHERE

= igual

< menor

<= menor ou igual

Condições > maior

>= maior ou igual

<> diferente

BETWEEN registros em um intervalo

LIKE procurar padrão

IN possíveis valores

Exemplos de padrões para o operador LIKE

Expressão Resultado

LIKE ‘A%’ Qualquer string que inicie com A.

LIKE ‘%A’ Qualquer string que termine com A.

LIKE ‘%A%’ Qualquer string que tenha A em qualquer posição.

String de dois caracteres que tenha a primeira letra A e o


LIKE ‘A_’
segundo caractere seja qualquer outro.

String de dois caracteres cujo primeiro caractere seja


LIKE ‘_A’
qualquer um e a última letra seja a letra A.

String de três caracteres cuja segunda letra seja A,


LIKE ‘_A_’
independentemente do primeiro ou do último caractere.

Qualquer string que tenha a letra A na penúltima posição


LIKE ‘%A_’
e a última seja qualquer outro caractere.

Qualquer string que tenha a letra A na segunda posição e


LIKE ‘_A%’
o primeiro caractere seja qualquer outro caractere.

LIKE ‘_ _ _’ Qualquer string com exatamente três caracteres.

LIKE ‘_ _ _%’ Qualquer string com pelo menos três caracteres.

Qualquer string que tenha o caractere “ em qualquer


LIKE ‘%”%’
posição.

Prof. Ramon Souza 60 de 76


www.exponencialconcursos.com.br
Curso: TI para Área Fiscal
Teoria e Questões comentadas
Prof. Ramon Souza

Cláusulas para mais de uma condição ou negação de condição

• Registros em que todas as condições são verdadeiras.

AND
• SELECT coluna1, coluna2, ... FROM nome_da_tabela WHERE condição1
AND condição2 AND condição3 ...;

• Registros em que pelo menos uma das condições é verdadeira.

OR • SELECT coluna1, coluna2, ... FROM nome_da_tabela WHERE condição1 OR


condição2 OR condição3 ...;

• Registros que não satisfazem uma condição.

NOT • SELECT coluna1, coluna2, ... FROM nome_da_tabela WHERE NOT


condição;

Instrução SELECT

mais de
uma
condição
Lista de
SELECT FROM tabela WHERE condição ou
atributos
negação
de
condição

<

<=

> AND
coluna1, coluna
2, ...

FROM tabela WHERE >= OR


ou

*
SELECT <> NOT

OU
BETWEEN
SELECT
DISTINCT
coluna1, coluna
2, ... LIKE

FROM tabela
ou
IN
*

Prof. Ramon Souza 61 de 76


www.exponencialconcursos.com.br
Curso: TI para Área Fiscal
Teoria e Questões comentadas
Prof. Ramon Souza

Cláusula ORDER BY

Ordem
colunas
crescente
Ordem
ORDER BY colunas ASC
crescente
Ordem
colunas DESC
decrescente

Funções de Agregação

FUNÇÃO RETORNO
MIN Menor valor de uma coluna.
MAX Maior valor de uma coluna.
COUNT Número de linhas que atendem a um critério.
AVG Média dos valores de uma coluna numérica.
SUM Soma dos valores de uma coluna numérica.

Cláusula GROUP BY e HAVING

condição com
GROUP BY coluna HAVING função
agregadora

Prof. Ramon Souza 62 de 76


www.exponencialconcursos.com.br
Curso: TI para Área Fiscal
Teoria e Questões comentadas
Prof. Ramon Souza

Tipos de JOIN

INNER JOIN
• Retorna somente os registros que possuem valores relacionados em ambas as tabelas,
isto é, as intersecções.

LEFT JOIN
Direitos autorais reservados (Lei 9610/98). Proibida a reprodução, venda ou compartilhamento deste arquivo. Uso individual.

• Retorna todos os registros da tabela da esquerda, e os registros relacionados da tabela


da direita.
• Preenche campos não relacionados na tabela da direita com NULL.

RIGHT JOIN
• Retorna todos os registros da tabela da direita, e os registros relacionados da tabela da
esquerda.
• Preenche campos não relacionados na tabela da esquerda com NULL

FULL OUTER JOIN


Cópia registrada para LUAN SOUZA (CPF: 058.821.297-02)

• Retorna todos os registros, independente de relação.


• Preenche campos não relacionados em qualquer das tabelas com NULL.

SELF JOIN
• União de uma tabela com ela mesma.

Sintaxe básica do comando DELETE

DELETE
FROM WHERE
ou
• nome_tabela • condição (opcional)
DELETE *

Sintaxe básica do comando UPDATE

UPDATE SET WHERE

• Indicação
das colunas e
• nome_tabela • condição
seus novos
valores.

Prof. Ramon Souza 63 de 76


www.exponencialconcursos.com.br
Curso: TI para Área Fiscal
Teoria e Questões comentadas
Prof. Ramon Souza
8. LISTAS DE EXERCÍCIOS
Questões comentadas durante a aula.
1- (FCC - 2017 - TST - Técnico Judiciário – Programação) Um
Programador:
I. criou uma tabela e uma view em um banco de dados relacional.
II. alterou a estrutura da tabela.
III. incluiu registros na tabela.
Os comandos SQL utilizados nas operações realizadas em I, II e III enquadram-
se, correta e respectivamente, no âmbito da
a) DDL − DML − DDL.
b) DML − DML − DDL.
c) DML − DDL − DDL.
d) DDL − DML − DML.
e) DDL − DDL − DML.

2- (FCC - 2016 - TRT - 20ª REGIÃO (SE) - Técnico Judiciário -


Tecnologia da Informação) Considere que exista uma tabela denominada
com os campos e .
Um Técnico com especialidade em TI foi solicitado a apresentar todos os nomes
de advogados cadastrados sem repetição. Para isso o Técnico deve utilizar o
comando SQL

a)

b)

c)

d)

e)

3- (FCC - 2017 - TRE-PR - Técnico Judiciário - Programação de


Sistemas) Em um banco de dados aberto e em condições ideais, uma tabela
chamada processo possui os registros abaixo.
NumeroProcesso DataAbertura
1279678-05.2016.1.00.0001 2016-12-26
4598765-03.2017.1.90.0002 2017-01-15
6789764-02.2016.1.80.0003 2016-03-30

Prof. Ramon Souza 64 de 76


www.exponencialconcursos.com.br
Curso: TI para Área Fiscal
Teoria e Questões comentadas
Prof. Ramon Souza
9876534-05.2016.1.00.0000 2016-03-20
Ao ser digitado um comando SQL, foi exibido na tela.
NumeroProcesso DataAbertura
6789764-02.2016.1.80.0003 2016-03-30
9876534-05.2016.1.00.0000 2016-03-20
O comando digitado foi:
a) SELECT * FROM processo WHERE DataAbertura BETWEEN '2016-03-01' AND
'2016-03-30';
b) SELECT NumeroProcesso, DataAbertura FROM processo WHERE
DataAbertura BETWEEN ('2016-03- 01','2016-03-30');
c) SELECT * FROM processo WHERE DataAbertura>='2016-03-01' OR
DataAbertura<='2016-03-30';
d) SELECT NumeroProcesso, DataAbertura FROM processo WHERE
DataAbertura IN ('2016-03-20' AND '2016-03-30');
e) SELECT * FROM processo WHERE DataAbertura>'2016-03-20' AND
DataAbertura<'2016-03-30';

4- (FCC - 2018 - Prefeitura de São Luís - MA - Auditor Fiscal de


Tributos I - Tecnologia da Informação (TI)) Um Auditor está executando
operações em uma tabela chamada cidadao de um banco de dados aberto e em
condições ideais. Para exibir os dados de todas as pessoas que possuem na
segunda letra do campo nome a vogal a, deve-se utilizar a instrução SQL:
SELECT * FROM cidadao WHERE
a) nome = '*a';
b) nome LIKE '_a%';
c) nome CONTAINS('a',2);
d) nome LIKE '*a';
e) nome HAVE(2,'a');

5- (FCC - 2017 - DPE-RS - Técnico - Informática) Solicitou-se a um


Técnico selecionar em um banco de dados padrão SQL todos os registros da
tabela processo cujo conteúdo do campo cidade_origem não contenha os
valores Brasília ou Campinas. Para isso, utilizou a instrução SELECT * FROM
processo
a) WHEN cidade_origem NOT ('Brasília' OR 'Campinas');
b) WHERE cidade_origem NOT IN ('Brasília','Campinas');

Prof. Ramon Souza 65 de 76


www.exponencialconcursos.com.br
Curso: TI para Área Fiscal
Teoria e Questões comentadas
Prof. Ramon Souza
c) LIKE cidade_origem IS NOT ('Brasília','Campinas');
d) WHERE cidade_origem NOT IN ('Brasília' OR 'Campinas');
e) WHERE cidade_origem IS NOT ('Brasília';'Campinas');

6- (FCC - 2015 - TRT - 4ª REGIÃO (RS) - Técnico Judiciário -


Tecnologia da Informação) Considere que o Tribunal Regional do Trabalho
possua em seu Banco de Dados a tabela Processos descrita abaixo.
Nro_Processo Envolvido
1112222-12.2011.5.04.0000 Maria da Silva
3336666-36.2013.5.04.0000 Jose dos Santos
7779999-79.2015.5.04.0000 Antonio Alves
1234567-89.2012.5.04.0000 Jeronimo Souza
O comando SQL que traz todos os dados da tabela ordenados pela ordem
alfabética dos nomes dos envolvidos é:
a) SELECT *.* FROM Tabela_Processos ORDERED BY Envolvido;
b) SELECT * FROM Tabela_Processos ORDER BY Envolvido ASCENDING;
c) SELECT Nro_Processo AND Envolvido FROM Tabela_Processos ORDER BY
Envolvido ASC;
d) SELECT (Nro_Processo, Envolvido) FROM Processos ORDER BY
Nome_Envolvido;
e) SELECT * FROM Processos ORDER BY Envolvido ASC;

7- (FCC - 2017 - TRT - 11ª Região (AM e RR) - Técnico Judiciário -


Tecnologia da Informação) Considere que no TRT exista, em um banco de
dados, a tabela TRAB que possui como campos: nome, sexo, salario de vários
trabalhadores. Um Técnico foi solicitado a escrever um comando SQL para obter
a média salarial dos trabalhadores do sexo FEMININO. O comando correto é:
a) SELECT sexo, AVG(salario) as MediaSalarial FROM TRAB GROUP BY sexo;
b) SELECT AVG(salario) FROM TRAB WHERE sexo=’FEMININO’;
c) SELECT sexo, AVG(salario) FROM TRAB GROUP BY sexo="FEMININO";
d) SELECT * FROM TRAB WHERE sexo='FEMININO' as AVG(salario);
e) SELECT sexo="FEMININO" FROM TRAB WHERE AVG(salario);

Prof. Ramon Souza 66 de 76


www.exponencialconcursos.com.br
Curso: TI para Área Fiscal
Teoria e Questões comentadas
Prof. Ramon Souza
8- (FCC - 2018 - DPE-AM - Assistente Técnico de Defensoria -
Programador) Considere que exista uma tabela denominada TabProcessos que
possui os seguintes campos: NroProcesso (tipo varchar), NroVara (tipo int),
CPFAutor (tipo varchar). Para que seja feita uma consulta que resulte no total
de processos em cada uma das varas, o comando SQL correto é
a) SELECT NroVara, COUNT (NroProcesso) FROM TabProcessos;
b) SELECT NroVara, COUNT (NroProcesso) FROM TabProcessos GROUP BY
NroVara;
c) SELECT SUM (NroProcesso) FROM TabProcessos GROUP BY NroVara;
d) SELECT COUNT (NroProcesso) FROM TabProcessos HAVING NroVara;
e) SELECT NroVara, SUM (NroProcesso) FROM TabProcessos GROUP BY
NroVara;

9- (FCC - 2015 - TRE-RR - Analista Judiciário - Análise de Sistemas)


Considere a instrução SQL a seguir:
SELECT Clientes.NomeCliente, Pedidos.PedidoID FROM Clientes
...I....
ON Clientes.ClienteID=Pedidos.ClienteID
ORDER BY Clientes.NomeCliente;
Esta instrução seleciona todas as linhas de ambas as tabelas, desde que haja
uma correspondência entre as colunas ClienteID. Se houver linhas na tabela
Clientes que não tem correspondentes na tabela Pedidos, esses clientes não
serão listados.
Para que a instrução dê o resultado descrito, a lacuna I deve ser preenchida
com
a) INNER JOIN Pedidos
b) LEFT JOIN
c) RIGHT OUTER JOIN
d) FULL OUTER JOIN
e) LEFT OUTER JOIN

Prof. Ramon Souza 67 de 76


www.exponencialconcursos.com.br
Curso: TI para Área Fiscal
Teoria e Questões comentadas
Prof. Ramon Souza
10- (FCC - 2018 - DPE-AM - Analista em Gestão Especializado de
Defensoria - Analista de Sistema) Para apagar todos os registros da tabela
copia_eleitores utiliza-se a instrução SQL
a) DELETE FROM copia_eleitores; ou TRUNCATE * FROM copia_eleitores;
b) DELETE RECORDS copia_eleitores; ou DROP RECORDS FROM
copia_eleitores;
c) DELETE * FROM copia_eleitores; ou DELETE RECORDS copia_eleitores;
d) DELETE FROM copia_eleitores; ou DELETE * FROM copia_eleitores;
e) DELETE RECORDS copia_eleitores; ou TRUNCATE TABLE copia_eleitores;

11- (FCC - 2016 - AL-MS - Técnico de Informática) Para responder à


questão, considere o modelo mostrado na imagem abaixo, oriundo de uma
situação hipotética:

Para passar todos os filiados do PDT para o PMDB utiliza-se a instrução SQL:
a) UPDATE FROM Filiado SET siglaPartido='PMDB' WHERE siglaPartido='PDT';
b) ALTER TABLE Filiado COLUMN siglaPartido='PMDB' WHERE
siglaPartido='PDT';
c) ALTER RECORD Filiado SET siglaPartido='PMDB' WHERE siglaPartido='PDT';
d) UPDATE Filiado COLUMN siglaPartido='PMDB' WHERE siglaPartido='PDT';
e) UPDATE Filiado SET siglaPartido='PMDB' WHERE siglaPartido='PDT';

Prof. Ramon Souza 68 de 76


www.exponencialconcursos.com.br
Curso: TI para Área Fiscal
Teoria e Questões comentadas
Prof. Ramon Souza
12- (FCC - 2016 - AL-MS - Técnico de Informática) Para responder à
questão, considere o modelo mostrado na imagem abaixo, oriundo de uma
situação hipotética:

Um Técnico em Informática, para inserir um registro em uma das tabelas após


sua criação, digitou, corretamente, a instrução:
a) INSERT INTO Partido VALUES ('PDT', 'Partido Desenvolvimentista dos
Trabalhadores', 'Brasília');
b) INSERT INTO Filiado (cpfFiliado, nomeFiliado, emailFiliado, siglaPartido)
VALUES (152.145.123-12, 'Marcos Moreira', 'moreira@gmail.com', 'PSDB');
c) INSERT INTO Filiado VALUES ('159.237.121-11', 'Angela Frota',
'angela@hotmail.com', 'PT');
d) INSERT INTO Filiado (cpfFiliado, nomeFiliado, siglaPartido) VALUES
('152.145.123-12', 'Marcos Moreira', 'PSDB');
e) INSERT INTO Filiado (cpfFiliado, nomeFiliado, emailFiliado, siglaPartido)
VALUES (null, 'Marcos Silva', null, 'PT');

Prof. Ramon Souza 69 de 76


www.exponencialconcursos.com.br
Curso: TI para Área Fiscal
Teoria e Questões comentadas
Prof. Ramon Souza
SQL
13- (FCC - 2017 - TST - Técnico Judiciário – Programação) Para criar um
banco de dados relacional chamado Tribunal e excluir uma tabela chamada
Consulta, um Programador deverá escrever corretamente as expressões SQL
a) CREATE DATABASE Tribunal; e DELETE TABLE Consulta;
b) INSERT DATABASE Tribunal; e DELETE TABLE = Consulta;
c) CREATE DATABASE Tribunal; e DROP TABLE Consulta;
d) INSERT DATABASE Tribunal; e DROP TABLE Consulta;
e) INSERT DATABASE Tribunal; e DROP TABLE = Consulta;

14- (FCC - 2017 - TRF - 5ª REGIÃO - Analista Judiciário - Informática


Desenvolvimento) Para localizar os juízes cujos nomes começam pela letra p
e têm pelo menos 3 caracteres de comprimento (incluindo p) utiliza-se a
instrução SELECT * FROM juizes WHERE nome
a) LIKE 'p_%_%';
b) BEGINS WITH 'p' AND LENGTH>=3;
c) HAS 'p' AND LENGTH>=3;
d) LIKE 'p%3%*';
e) HAS'p%3%*'

15- (FCC - 2017 - TRE-SP - Analista Judiciário - Análise de Sistemas)


Em uma situação hipotética, ao ser designada para atender aos requisitos de
negócio de um usuário, uma Analista de Sistemas do TRE-SP escreveu
expressões e comandos para serem executados em um Banco de Dados
Relacional que visavam (1) criar uma tabela que contivesse dados de processos
partidários, (2) controlar a segurança e o acesso a ela e (3) manipular dados
nela. Desta forma ela, se valeu, correta e respectivamente, por exemplo, de
alguns elementos de expressões tais como:
a) CREATE, GRANT e ALTER. b) DROP, ALTER e UPDATE.
c) INSERT, INDEX e CREATE. d) INSERT, REVOKE e SELECT.
e) CREATE, REVOKE e INSERT.

16- (FCC - 2017 - TST - Técnico Judiciário – Programação) Um


Programador pretende executar uma instrução SQL que recupere todos os
dados da tabela produto cujos preços (preco) sejam maiores ou iguais R$
100,00 e menores ou iguais a R$ 1.000,00. A expressão para isso é SELECT *
FROM produto

Prof. Ramon Souza 70 de 76


www.exponencialconcursos.com.br
Curso: TI para Área Fiscal
Teoria e Questões comentadas
Prof. Ramon Souza
a) WHEN preco GREATER 99 AND LESS 1000;
b) WHERE preco BETWEEN 100 AND 1000;
c) LIKE preco BETWEEN 100 AND 1000;
d) WHERE preco IN (100, 1000);
e) JOIN preco INNER (100, 1000);

17- (FCC - 2017 - TRT - 24ª REGIÃO (MS) - Técnico Judiciário -


Tecnologia da Informação) Para obter o número de funcionários cujo
conteúdo do campo nome da tabela funcionario termina com a letra o deve-se
utilizar a instrução SQL SELECT COUNT(*) FROM funcionario WHERE
a) nome LIKE '*o';
b) nome LIKE '%o';
c) SUBSTR(nome,LEN(nome)-1)='o';
d) nome CONTAINS '%o';
e) SUBSTR(nome,0)='o';

18- (FCC - 2017 - TRT - 24ª REGIÃO (MS) - Técnico Judiciário -


Tecnologia da Informação) Em um banco de dados Oracle aberto e em
condições ideais há uma tabela chamada funcionario com os campos
idFuncionario (inteiro − primary key), nome (cadeia de caracteres) e salario
(real). Para exibir o nome e o salário de todos os funcionários cujo valor de
salário esteja fora do intervalo de 1000 a 12000 utiliza-se a instrução SQL
SELECT nome, salario FROM funcionario WHERE
a) salario<1000 AND salario>12000;
b) salario NOT BETWEEN 1000 OR 12000;
c) 1000>salario>12000;
d) salario NOT BETWEEN 1000 AND 12000;
e) salario BETWEEN 1000 AND 12000;

19- (FCC - 2017 - TRE-PR - Técnico Judiciário - Programação de


Sistemas) Em um banco de dados aberto e em condições ideais, uma tabela
processo possui um campo NumeroProcesso do tipo varchar2. Para selecionar
somente os registros cujo campo NumeroProcesso possua como segundo
caractere (da esquerda para a direita), o valor 2, utiliza-se a instrução SELECT
* FROM processo WHERE NumeroProcesso
a) CONTAINS(1, '2');
b) LIKE ' *2%';

Prof. Ramon Souza 71 de 76


www.exponencialconcursos.com.br
Curso: TI para Área Fiscal
Teoria e Questões comentadas
Prof. Ramon Souza
c) CONTAINS LEFT(2, '2');
d) LIKE '_2%';
e) CONTAINS '_2%'

20- (FCC - 2017 - ARTESP - Agente de Fiscalização à Regulação de


Transporte - Tecnologia de Informação) Considere, por hipótese, que no
banco de dados da ARTESP exista uma tabela denominada TabPSAD com os
campos IdRodovia, Posto_Servico, Area_Descanso, Vagas_Estacionamento. Um
Agente de Fiscalização à Regulação de Transporte utilizou os comandos SQL
para fazer consultas aos dados desta tabela:
I. SELECT IdRodovia FROM TabPSAD WHERE Vagas_Estacionamento > 300;
II. SELECT COUNT (DISTINCT IdRodovia) FROM TabPSAD;
III. SELECT IdRodovia, ADD (Vagas_Estacionamento) FROM TabPSAD GROUP
BY Area_Descanso;
Está correto o que consta em
a) II, apenas.
b) I e III, apenas.
c) III, apenas.
d) I e II, apenas.
e) I, II e III.

21- (FCC - 2017 - DPE-RS - Analista - Banco de Dados) Seja a seguinte


tabela de um banco de dados relacional: Objeto (ID, Nome, Peso, Descrição).
A consulta SQL para obter o Nome e o Peso dos objetos com a restrição do Peso
estar entre os valores 2 e 18 é:
a) SELECT Nome AND Peso
OF Objeto
HAVING Peso IN (2; 18);
b) SELECT Nome, Peso
FROM Objeto
WHERE Peso IS BETWEEN 2 TO 18;
c) SELECT Objeto (Nome, Peso)
HAVING Peso INSIDE (2; 18);
d) SELECT Objeto (Nome, Peso)
FOR Peso INSIDE (2;18);

Prof. Ramon Souza 72 de 76


www.exponencialconcursos.com.br
Curso: TI para Área Fiscal
Teoria e Questões comentadas
Prof. Ramon Souza
e) SELECT Nome, Peso
FROM Objeto
WHERE Peso BETWEEN 2 AND 18;

22- (FCC - 2016 - Prefeitura de Teresina - PI - Analista Tecnológico -


Analista de Suporte Técnico) Considere a consulta em linguagem SQL
abaixo:
SELECT Nome
FROM T
WHERE Nome LIKE “A%S”
Um dos resultados para essa consulta é
a) avião, andes.
b) pastas, sacos.
c) astro, seca.
d) secos, abas.
e) aves, araras.

23- (FCC - 2016 - Prefeitura de Teresina - PI - Analista Tecnológico -


Analista de Suporte Técnico) Considere a seguinte tabela de um banco de
dados relacional:
Item (ID, Nome, Valor, Tipo)
A consulta em linguagem SQL para obter o Tipo e o valor médio dos itens,
considerando itens de mesmo tipo é
a) SELECT Tipo, Valor_Médio
FROM Item
ORDER BY Tipo
b) SELECT Tipo, SUM(Valor)
FROM Item
HAVING SAME Tipo
c) SELECT Tipo, AVG (Valor)
FROM Item
GROUP BY Tipo
d) SELECT Tipo, COUNT (Valor)
FROM Item

Prof. Ramon Souza 73 de 76


www.exponencialconcursos.com.br
Curso: TI para Área Fiscal
Teoria e Questões comentadas
Prof. Ramon Souza
WHERE Tipo IN SET
e) SELECT Tipo, Média (Valor)
FROM Item

24- (FCC - 2016 - TRT - 14ª Região (RO e AC) - Técnico Judiciário -
Tecnologia da Informação) Para selecionar na tabela Colaboradores de um
banco de dados relacional, aberto e em condições ideais, todos os registros cujo
conteúdo do campo nome não inicie pela palavra 'Mar' utiliza-se o comando
SELECT * FROM Colaboradores WHERE nome
a) NOT LIKE 'Mar%';
b) IS NOT 'Mar%';
c) <> 'Mar*';
d) NOT LIKE 'Mar*';
e) != 'Mar%';

25- (FCC - 2015 - DPE-SP - Administrador de Banco de Dados) Considere


a seguinte consulta feita em SQL padrão:
SELECT Tipo
FROM Catálogo
WHERE Tipo IN (‘gde’, ‘médio’, ‘pequeno’)
Uma consulta SQL equivalente é:
a) SELECT Tipo
FROM Catálogo
WHERE Tipo = ‘gde’ AND Tipo = ‘médio’ AND Tipo = ‘pequeno’
b) SELECT Tipo
FROM Catálogo
GROPU BY Tipo
c) SELECT Tipo
FROM Catálogo
WHERE Tipo = ‘gde’ OR Tipo = ‘médio’ OR Tipo = ‘pequeno’
d) SELECT Tipo
FROM Catálogo
WHERE Tipo BETWEEN (‘pequeno’, ‘médio’, ‘gde’)
e) SELECT Tipo

Prof. Ramon Souza 74 de 76


www.exponencialconcursos.com.br
Curso: TI para Área Fiscal
Teoria e Questões comentadas
Prof. Ramon Souza
FROM Catálogo
HAVING Tipo LIKE (‘gde’, ‘médio’, ‘pequeno’)

26- (FCC - 2015 - DPE-SP - Administrador de Banco de Dados) Considere


a seguinte consulta feita em SQL padrão:
SELECT Produto
FROM Mercadoria
WHERE Produto LIKE ('%er%')
Um possível resultado obtido a partir dessa consulta é:
a) torneira, persiana.
b) feira, celular.
c) registro, cerca.
d) prego, prendedor.
e) caderno, energia.

Caderno de Questões Sobre o Tema


O caderno referente ao assunto desta aula pode ser acessado em Caderno de
Questões - SQL.

Prof. Ramon Souza 75 de 76


www.exponencialconcursos.com.br
Curso: TI para Área Fiscal
Teoria e Questões comentadas
Prof. Ramon Souza
9. GABARITO
1 E 11 E 21 E

2 D 12 D 22 E

3 A 13 C 23 C

4 B 14 A 24 A

5 B 15 E 25 C

6 E 16 B 26 E

7 B 17 B

8 B 18 D

9 A 19 D

10 D 20 D

10. REFERÊNCIAS
ELMASRI, Ramez; NAVATHE, Shamkant B. Sistema de Banco de Dados. 6ed.
São Paulo: Pearson Addison Wesley, 2011.
SOFTBLUE. Curso SQL Completo. Disponível em:
<http://www.softblue.com.br/site/curso/id/3/CURSO+DE+SQL+COMPLETO+B
ASICO+AO+AVANCADO+ON+LINE+BD03+GRATIS>. Acesso em: 22 out.
2018.
W3SCHOOLS. SQL Tutorial. Disponível em:
<https://www.w3schools.com/sql/>. Acesso em: 19 out. 2018.

Prof. Ramon Souza 76 de 76


www.exponencialconcursos.com.br

Você também pode gostar