/* Os tipos de dados em bancos de dados ajudam a definir que tipo de informação será armazenada nas tabelas e garantem eficiência e precisão nas operações. Aqui está uma explicação detalhada dos principais tipos de dados usados em sistemas de banco de dados: 1. Tipos de Dados Numéricos Usados para armazenar valores numéricos que podem ser inteiros, decimais ou reais. -INTEGER ou INT: Armazena números inteiros sem casas decimais (ex.: 1, 42, -100). -SMALLINT: Similar a INTEGER, mas com valores menores, ideal para economizar espaço. -BIGINT: Para armazenar números inteiros muito grandes. -DECIMAL ou NUMERIC: Permite armazenar números com casas decimais precisas (ex.: 10.45, 300.99). Você pode definir a quantidade de dígitos (ex.: DECIMAL(5,2) onde 5 é o total de dígitos e 2 é o número após o ponto decimal). -FLOAT ou DOUBLE: Armazena números reais aproximados com casas decimais, usado quando precisão não é prioridade (ex.: 3.14159). ---------------------------------------------------------------------------------------------------------------------------- 2. Tipos de Dados de Texto Armazenam strings, como palavras ou frases. -CHAR(n): Armazena uma cadeia de caracteres de tamanho fixo. Por exemplo, CHAR(5) sempre ocupa 5 caracteres, mesmo que a string seja menor. -VARCHAR(n): Armazena cadeias de caracteres de tamanho variável (ex.: VARCHAR(100) armazena até 100 caracteres, sem ocupar espaço adicional para strings menores). -TEXT: Usado para armazenar textos longos como descrições ou artigos (ex.: comentários, biografias). ---------------------------------------------------------------------------------------------------------------------------- 3. Tipos de Dados de Data e Hora Usados para armazenar informações sobre datas, horas ou ambos. -DATE: Armazena apenas a data no formato YYYY-MM-DD (ex.: 2025-04-14). -TIME: Armazena apenas o horário no formato HH:MM:SS (ex.: 10:17:45). -DATETIME: Combina data e hora no formato YYYY-MM-DD HH:MM:SS (ex.: 2025-04-14 10:17:45). -TIMESTAMP: Similar ao DATETIME, mas com suporte a fusos horários. Muito usado para registrar eventos. -YEAR: Armazena apenas o ano no formato YYYY (ex.: 2025). ---------------------------------------------------------------------------------------------------------------------------- 4. Tipos de Dados Booleanos Representam valores verdadeiros ou falsos. -BOOLEAN ou BOOL: Armazena valores lógicos como TRUE ou FALSE. ---------------------------------------------------------------------------------------------------------------------------- 5. Tipos de Dados Binários Usados para armazenar dados em formato binário, como arquivos ou imagens. -BLOB: Armazena objetos binários grandes (Binary Large Object), usado para guardar arquivos como imagens, vídeos ou PDFs. ---------------------------------------------------------------------------------------------------------------------------- 6. Tipos Especiais Tipos específicos para necessidades particulares. -ENUM: Permite criar uma lista fixa de valores possíveis para uma coluna (ex.: ENUM('ativo', 'inativo')). -SET: Similar ao ENUM, mas permite que a coluna armazene vários valores ao mesmo tempo (ex.: SET('math', 'science', 'history')). -JSON: Usado para armazenar dados no formato JSON, ideal para aplicações modernas. ---------------------------------------------------------------------------------------------------------------------------- Exemplos Práticos -Escolhendo o Tipo Certo: Se você precisa armazenar nomes de usuários, use VARCHAR(50). Para a data de cadastro, escolha DATE. -Otimizando Dados: Utilize INTEGER para IDs e DECIMAL para valores monetários. TEXT é uma boa escolha para descrições longas. ---------------------------------------------------------------------------------------------------------------------------- */ -- Criação da tabela USUARIO para armazenar informações sobre os usuários da rede social. CREATE TABLE USUARIO ( id INT PRIMARY KEY, -- Identificador único de cada usuário. nome TEXT NOT NULL, -- Nome do usuário. email TEXT, -- Email único do usuário. senha TEXT NOT NULL -- Senha do usuário. ); -- Criação da tabela POSTAGEM para armazenar informações sobre as postagens feitas pelos usuários. CREATE TABLE POSTAGEM ( id INTEGER PRIMARY KEY, -- Identificador único de cada postagem. id_usuario INTEGER NOT NULL, -- ID do usuário que fez a postagem. conteudo TEXT NOT NULL, -- Conteúdo da postagem. data_postagem DATE NOT NULL -- Data da postagem. ); INSERT INTO USUARIO VALUES (1, 'Ana Silva', 'ana@gmail.com', 'senha123'); INSERT INTO USUARIO VALUES (2, 'Carlos Pereira', 'carlos@gmail.com', 'seguro456'); INSERT INTO USUARIO VALUES (3, 'Mariana Costa', 'mariana@gmail.com', 'confidencial789'); INSERT INTO USUARIO VALUES (4, 'João Almeida', 'joao@gmail.com', 'seguro999'); INSERT INTO USUARIO VALUES (5, 'Fernanda Lima', 'fernanda@gmail.com', 'senha789'); INSERT INTO USUARIO VALUES (6, 'Carlos Pereira', 'carlos@gmail.com', 'seguro456'), (7, 'Mariana Costa', 'mariana@gmail.com', 'confidencial789'); INSERT INTO POSTAGEM VALUES (1, 1, 'Adoro programação!', '2025-04-01'); INSERT INTO POSTAGEM VALUES (2, 2, 'SQL é muito útil!', '2025-04-02'); INSERT INTO POSTAGEM VALUES (3, 3, 'Hoje aprendi sobre tabelas!', '2025-04-03'); INSERT INTO POSTAGEM VALUES (4, 4, 'Acabei de criar meu perfil na rede!', '2025-04-15'); INSERT INTO POSTAGEM VALUES (5, 5, 'Explorando novas funcionalidades.', '2025-04-16'); -- Adicionar uma coluna de número de telefone na tabela USUARIO ALTER TABLE USUARIO ADD telefone TEXT; -- Adicionar uma coluna para indicar curtidas na tabela POSTAGEM ALTER TABLE POSTAGEM ADD curtidas INTEGER DEFAULT 0; -- Renomear a coluna 'senha' da tabela USUARIO para 'password' ALTER TABLE USUARIO RENAME COLUMN senha TO password; -- Renomear a coluna 'conteudo' da tabela POSTAGEM para 'mensagem' ALTER TABLE POSTAGEM RENAME COLUMN conteudo TO mensagem; -- Atualizar o número de telefone de Carlos na tabela USUARIO UPDATE USUARIO SET telefone = '(11) 98765-4321' WHERE id = 2; -- Atualizar o número de curtidas em uma postagem específica UPDATE POSTAGEM SET curtidas = 5 WHERE id = 1; -- Remover a coluna 'telefone' da tabela USUARIO ALTER TABLE USUARIO DROP COLUMN telefone; -- Remover a coluna 'curtidas' da tabela POSTAGEM ALTER TABLE POSTAGEM DROP COLUMN curtidas; -- Alterar o tipo de dado da coluna 'email' na tabela USUARIO para aumentar o tamanho do campo ALTER TABLE USUARIO MODIFY email VARCHAR(255); SELECT * FROM USUARIO; SELECT * FROM POSTAGEM;