1
resposta

[Dúvida] DESAFIO 2: Inserindo dados nas tabelas

Oi pessoal, espero que estejam bem!

Consegui rodar os dados nas tabelas, porém fiquei na dúvida sobre a informação da coluna "ID_Produto". No vídeo, a professora Bia colocou os IDs entre aspas, e na tabela para download os números não possuem as aspas... Entendi que quando algo está entre aspas a informação é um texto. Tem algum problema esse ID não se comportar como texto? Tem problema se eu começo indicando que o ID é em texto e os demais IDs não estiverem em texto?

*Exemplo da video aula (com aspas no nº do ID):*

( ' 2 ' ,'João Santos', 'joao.santos@provedor.com', 'Rua dos Pinheiros, 25'), ( ' 3 ' ,'Maria', 'maria@provedor.com', 'Rua Rebolças, 300'),

*Dados da tabela disponível para download (sem aspas no nº do ID):*

(5, 'Patrícia Lima', 'patricia.lima@email.com', 'Rua das Flores, 123'), (6, 'Rodrigo Almeida', 'rodrigo.almeida@email.com', 'Avenida Central, 456'),

1 resposta

Boa noite, Natalia! Tudo bem com você?

Ótima observação. Em SQL, quando colocamos um valor entre aspas simples, ele é tratado como texto (ou string). Isso significa que o valor é interpretado como uma sequência de caracteres, e não como um número.

Porém, no SQLite, a definição de tipos de dados é mais flexível em comparação com outros sistemas de gerenciamento de banco de dados. Quando definimos uma coluna como INT, o SQLite permite inserir valores de outros tipos, como strings, que podem ser convertidos para um inteiro. Ou seja, ao inserir o valor '2' (uma string) na coluna ID_Cliente, o SQLite converte automaticamente essa string para um inteiro. Isso não gera um erro porque o SQLite faz uma coerção de tipo de forma automática.

A boa notícia é que podemos verificar os tipos dos dados inseridos em uma tabela usando a função typeof, exemplo:

SELECT 
    ID_Cliente,
    typeof(ID_Cliente) AS Tipo_ID_Cliente,
    Nome_Cliente,
    typeof(Nome_Cliente) AS Tipo_Nome_Cliente,
    Informacoes_de_Contato,
    typeof(Informacoes_de_Contato) AS Tipo_Informacoes_de_Contato,
    Endereço_Cliente,
    typeof(Endereço_Cliente) AS Tipo_Endereço_Cliente
FROM 
    tabelaclientes;

Resultado:

Imagem que mostra a execução do comando typeof com o tipo int mesmo inserindo strings no ID

Veja que mesmo após a inserção com aspas no ID, o sistema fez a conversão automática para o tipo inteiro. O recomendável é sempre inserimos os dados conforme o tipo definido na criação da tabela, para evitar inconsistências ou problemas ao realizar consultas. Nesse caso, o ideal seria inserir em formato de inteiro, sem aspas, uma vez que na criação definimos a coluna da seguinte forma: ID_Cliente INT.

Espero ter ajudado. Conte com o apoio do Fórum na sua jornada. Fico à disposição. Abraços e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado