/*
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', '[email protected]', 'senha123');
INSERT INTO USUARIO VALUES (2, 'Carlos Pereira', '[email protected]', 'seguro456');
INSERT INTO USUARIO VALUES (3, 'Mariana Costa', '[email protected]', 'confidencial789');
INSERT INTO USUARIO VALUES (4, 'João Almeida', '[email protected]', 'seguro999');
INSERT INTO USUARIO VALUES (5, 'Fernanda Lima', '[email protected]', 'senha789');

INSERT INTO USUARIO VALUES 
(6, 'Carlos Pereira', '[email protected]', 'seguro456'),
(7, 'Mariana Costa', '[email protected]', '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;















 
by

MySQL online editor

Write, Run & Share MySQL queries online using OneCompiler's MySQL online editor and compiler for free. It's one of the robust, feature-rich online editor and compiler for MySQL. Getting started with the OneCompiler's MySQL editor is really simple and pretty fast. The editor shows sample boilerplate code when you choose language as 'MySQL' and start writing queries to learn and test online without worrying about tedious process of installation.

About MySQL

MySQL is a open-source, free and very popular relational database management system which is developed, distributed and supported by Oracle corporation.

Key Features:

  • Open-source relational database management systems.
  • Reliable, very fast and easy to use database server.
  • Works on client-server model.
  • Highly Secure and Scalable
  • High Performance
  • High productivity as it uses stored procedures, triggers, views to write a highly productive code.
  • Supports large databases efficiently.
  • Supports many operating systems like Linux*,CentOS*, Solaris*,Ubuntu*,Windows*, MacOS*,FreeBSD* and others.

Syntax help

Commands

1. CREATE

CREATE TABLE table_name (
                column1 datatype,
                column2 datatype,
                ....);

Example

CREATE TABLE EMPLOYEE (
  empId INTEGER PRIMARY KEY,
  name TEXT NOT NULL,
  dept TEXT NOT NULL
);

2. ALTER

ALTER TABLE Table_name ADD column_name datatype;

Example

INSERT INTO EMPLOYEE VALUES (0001, 'Dave', 'Sales');

3. TRUNCATE

TRUNCATE table table_name;

4. DROP

DROP TABLE table_name;

5. RENAME

RENAME TABLE table_name1 to new_table_name1; 

6. COMMENT

Single-Line Comments:

 --Line1;

Multi-Line comments:

   /* Line1,
   Line2 */

DML Commands

1. INSERT

INSERT INTO table_name (column1, column2, column3, ...) VALUES (value1, value2, value3, ...);

Note: Column names are optional.

Example

INSERT INTO EMPLOYEE VALUES (0001, 'Ava', 'Sales');

2. SELECT

SELECT column1, column2, ...
FROM table_name
[where condition]; 

Example

SELECT * FROM EMPLOYEE where dept ='sales';

3. UPDATE

UPDATE table_name
SET column1 = value1, column2 = value2, ...
WHERE condition; 

Example

UPDATE EMPLOYEE SET dept = 'Sales' WHERE empId='0001'; 

4. DELETE

DELETE FROM table_name where condition;

Example

DELETE from EMPLOYEE where empId='0001'; 

Indexes

1. CREATE INDEX

  CREATE INDEX index_name on table_name(column_name);
  • To Create Unique index:
  CREATE UNIQUE INDEX index_name on table_name(column_name);

2. DROP INDEX

DROP INDEX index_name ON table_name;

Views

1. Create a View

Creating a View:
CREATE VIEW View_name AS 
Query;

2. How to call view

SELECT * FROM View_name;

3. Altering a View

ALTER View View_name AS 
Query;

4. Deleting a View

DROP VIEW View_name;

Triggers

1. Create a Trigger

CREATE TRIGGER trigger_name trigger_time trigger_event
    ON tbl_name FOR EACH ROW [trigger_order] trigger_body
/* where
trigger_time: { BEFORE | AFTER }
trigger_event: { INSERT | UPDATE | DELETE }
trigger_order: { FOLLOWS | PRECEDES } */

2. Drop a Trigger

DROP TRIGGER [IF EXISTS] trigger_name;

Stored Procedures

1. Create a Stored Procedure

CREATE PROCEDURE sp_name(p1 datatype)
BEGIN
/*Stored procedure code*/
END;

2. How to call Stored procedure

CALL sp_name;

3. How to delete stored procedure

DROP PROCEDURE sp_name;

Joins

1. INNER JOIN

SELECT * FROM TABLE1 INNER JOIN TABLE2 where condition;

2. LEFT JOIN

SELECT * FROM TABLE1 LEFT JOIN TABLE2 ON condition;

3. RIGHT JOIN

SELECT * FROM TABLE1 RIGHT JOIN TABLE2 ON condition;

4. CROSS JOIN

SELECT select_list from TABLE1 CROSS JOIN TABLE2;