Assinale a alternativa que contém o resultado do comando SQL...

Próximas questões
Com base no mesmo assunto
Q762268 Banco de Dados
considerar para sua resposta o banco de dados gerado pelos seguintes trechos de um script em SQL.

CREATE TABLE regioes (
 regiaoID CHAR(2) NOT NULL DEFAULT '',
 nomeRegiao VARCHAR(30) NOT NULL DEFAULT '',
 estadoRegiao VARCHAR(30) NOT NULL DEFAULT '',
 PRIMARY KEY (regiaoID)
);
CREATE TABLE vinicolas (
 vinicolaID INT UNSIGNED NOT NULL AUTO_INCREMENT,
 nomeVinicola CHAR(2) NOT NULL DEFAULT '',
 foneVincola INT UNSIGNED NOT NULL,
 regiaoID CHAR(2) NOT NULL DEFAULT '',
 PRIMARY KEY (vinicolaID),
 FOREIGN KEY (regiaoID) REFERENCES regioes (regiaoID)
);
CREATE TABLE vinhos (
 vinhoID INT UNSIGNED NOT NULL AUTO_INCREMENT,
 nomeVinho CHAR(2) NOT NULL DEFAULT '',
 tipoVinho VARCHAR(6) NOT NULL DEFAULT '',
 precoVinho DECIMAL(7,2) NOT NULL DEFAULT 99999.99,
 vinicolaID INT UNSIGNED NOT NULL,
 PRIMARY KEY (vinhoID),
 FOREIGN KEY (vinicolaID) REFERENCES vinicolas (vinicolaID)
)
INSERT INTO vinhos VALUES
 (10,'V1','tinto',100.00,1),
 (20,'V2','branco',200.00,1),
 (30,'V3','rose',300.00,1),
 (40,'V4','rose',350.00,2),
 (50,'V5','branco',250.00,2),
 (60,'V6','tinto',150.00,2),
 (70,'V7','tinto',397.00,3),
 (80,'V8','branco',333.00,3);
INSERT INTO vinicolas VALUES
 (1,'A1',1234,'R1'),
 (2,'A2',5234,'R1'),
 (3,'A3',6234,'R2'),
 (4,'A4',7234,'R2'),
 (5,'A5',8234,'R3');
INSERT INTO regioes VALUES
 ('R1','Vale S. Francico','Pernambuco'),
 ('R2','Zona da Mata','Pernambuco'),
 ('R3','Garibaldi', 'Rio Grande do Sul'),
 ('R4','Gramado','Rio Grande do Sul');

Assinale a alternativa que contém o resultado do comando SQL.

SELECT

nomeVinho, tipoVinho, precoVinho

FROM vinhos ORDER BY precoVinho LIMIT 2, 1;

Alternativas

Gabarito comentado

Confira o gabarito comentado por um dos nossos professores

Alternativa correta: C

Para resolver essa questão, é importante compreender o funcionamento das cláusulas ORDER BY e LIMIT no SQL. A cláusula ORDER BY é usada para ordenar os dados retornados por uma consulta em uma ordem específica, seja ascendente (ASC) ou descendente (DESC). Por padrão, se não especificado, a ordenação é ascendente. Já a cláusula LIMIT é utilizada para restringir o número de linhas retornadas em uma consulta.

O comando SELECT nomeVinho, tipoVinho, precoVinho FROM vinhos ORDER BY precoVinho LIMIT 2, 1; pede para retornar o nome, o tipo e o preço dos vinhos, ordenados pelo preço do vinho (do menor para o maior, pois não é especificado ASC ou DESC), e em seguida utiliza o LIMIT para restringir o resultado.

A parte LIMIT 2, 1 é interpretada da seguinte maneira: o primeiro número (2) indica a quantidade de linhas que serão puladas, enquanto o segundo número (1) indica a quantidade de linhas a serem retornadas após pular as primeiras 2. Em outras palavras, estamos pedindo a terceira linha mais barata de acordo com o preço do vinho.

Observando os valores inseridos na tabela vinhos, temos que os preços em ordem crescente são:

  • 100.00 (V1)
  • 150.00 (V6)
  • 200.00 (V2)
  • 250.00 (V5)
  • ...

Aplicando o LIMIT 2, 1, pulamos V1 e V6 e selecionamos V2, que é a terceira linha na ordem de preços ascendentes.

Assim, a linha retornada será:

+-----------+-----------+------------+
| nomeVinho | tipoVinho | precoVinho |
+-----------+-----------+------------+
| V2        | branco    | 200.00     |
+-----------+-----------+------------+

Portanto, a alternativa C está correta, pois apresenta o vinho "V2", de tipo "branco", com preço "200.00", que é o terceiro mais barato conforme especificado pela consulta SQL.

Clique para visualizar este gabarito

Visualize o gabarito desta questão clicando no botão abaixo

Comentários

Veja os comentários dos nossos alunos

Para a letra C estar correta não seria assim:

SELECT  nomeVinho, tipoVinho, precoVinho FROM vinhos ORDER BY precoVinho LIMIT 1, 1;

Começa a contar pelo 1 ou 0?

http://www.scriptcase.com.br/blog/limit-mysql/

Em ordem:

100.00

150.00

200.00

250.00

300.00

333.00

350.00

397.00

A ordenação dos registros de vINHOS, como especificado, e a exibição de UM registro a partir do SEGUNDO, na ordem; (Seria a mesma coisa que dizer, eu quero somente o TERCEIRO registro).

por exemplo, recuperar 4 registros A PARTIR do registro número 12

em mysql seria

Select * from Tabela Limit 12,4

Cuidado com essa história de "a partir".

Um OFFSET de 2 não começa no segundo, ele pula dois e começa do terceiro

Clique para visualizar este comentário

Visualize os comentários desta questão clicando no botão abaixo