Analise os dois formatos de comandos do MYSQL 5.7 a seguir. ...
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.
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