Analise os dois formatos de comandos do MYSQL 5.7 a seguir. ...

Próximas questões
Com base no mesmo assunto
Q1069969 Banco de Dados

Analise os dois formatos de comandos do MYSQL 5.7 a seguir.


I. CREATE TABLE X LIKE Y;

II. CREATE TABLE X SELECT * FROM Y;


Assinale a opção que apresenta a descrição correta do efeito desses formatos de comandos no MYSQL 5.7.

Alternativas

Gabarito comentado

Confira o gabarito comentado por um dos nossos professores

Alternativa correta: C - No primeiro formato a instância de Y não é copiada.

Para resolver essa questão, é essencial entender o funcionamento de dois comandos do MySQL que são utilizados para criar novas tabelas baseadas em tabelas existentes. Vamos esclarecer o que cada um dos comandos realiza:

  • CREATE TABLE X LIKE Y; Este comando cria uma nova tabela X com a mesma estrutura da tabela Y, incluindo definições de colunas, tipos de dados, e índices. Porém, ele não copia os dados (instâncias) da tabela original Y para a nova tabela X.
  • CREATE TABLE X SELECT * FROM Y; Este comando cria uma nova tabela X e imediatamente a preenche com os dados obtidos a partir da execução do comando SELECT fornecido. Neste caso, a estrutura da tabela X é determinada pelo resultado do SELECT. Ele copia os dados, mas pode não copiar exatamente a mesma estrutura de índices e restrições que a tabela original Y possui, dependendo do resultado do SELECT.

Com base nessas informações, podemos verificar as alternativas:

  • A - Incorreta. A primeira parte está correta ao dizer que X é uma cópia de Y em relação à estrutura e índices no primeiro formato, mas no segundo formato os dados são copiados e a estrutura de índices pode ser diferente.
  • B - Incorreta. Y não precisa ser necessariamente uma view; pode ser uma tabela.
  • C - Correta. Como já explicado, esse comando cria uma tabela nova com a mesma estrutura, mas sem copiar os dados da tabela original Y.
  • D - Incorreta. O segundo formato pode referenciar mais de uma tabela se o SELECT incluir JOIN ou subconsultas que envolvam mais tabelas.
  • E - Incorreta. No segundo formato, os dados resultantes do comando SELECT são de fato copiados para a nova tabela X.

Portanto, a alternativa correta é a C, pois apenas a estrutura da tabela original é copiada no primeiro formato de comando, sem incluir as instâncias (dados) da tabela Y.

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

O comando CREATE TABLE X LIKE Y; serve para criar uma tabela vazia (X) com base na definição de outra tabela (Y).

Gabarito C

Alternativa correta: C.

.

.

O comando CREATE TABLE X LIKE Y cria uma tabela copiando as informações DDL da outra tabela. Ou seja, os dados e índices não são copiados, apenas a estrutura.

.

Update 09/09/2020: conforme apontado pelo colega Leandro Henrique, o CREATE TABLE...LIKE também copia os índices da tabela em que se baseia. O meu comentário original estava errado nesse sentido. Obrigado pela correção.

(fonte: https://dev.mysql.com/doc/refman/5.7/en/create-table-like.html)

Resumindo:

O primeiro SQL cria uma tabela apenas com a estrutura da tabela original (DDL) sem dados ou índices. Já o segundo clona totalmente, incluindo registros.

Qualquer erro me avisem por favor.

#Avante Guerreiros.

Clique para visualizar este comentário

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