CONTEÚDOS do MÓDULO 3 - Definir estrutura de uma base de Dados com SQL - DDL
- Manipular os dados em SQL- DML
- Consultas em SQL envolvendo várias tabelas
DEFINIÇÃO
BASE DE DADOS RELACIONAL
Uma Base de Dados Relacional é um tipo de base de dados que organiza a informação em tabelas relacionadas entre si.
Esse modelo foi proposto por Edgar F. Codd em 1970 e é hoje o modelo mais utilizado em sistemas de gestão de dados (SGBD).
Exemplos de Sistemas de Gestão de Bases de Dados Relacionais
Alguns sistemas populares:
Todos utilizam a linguagem SQL usada principalmente para manipular os dados guardados nas tabelas.
EXEMPLO de uma BD no SGBD MariaDB (improved of MySQL/)
ESTRUTURA de uma Base de Dados
Nome da Base de Dados: "comprarcarros"
constituída pelas 3 tabelas:
Visualização dos dados nas tabelas
Tabela Fornecedores
DEFINIÇÃO LINGUAGEM SQL (Structured Query Language)
1️⃣ DDL ( Data Definition Language ) - definição de estrutura
2️⃣ DML (Data Manipulation Language) - manipulação de dados
DCL (Data Control Language) - controlo de acesso
TCL (Transaction Control Language) - controlo de transações

1️⃣DDL ( Data Definition Language )
definição da estrutura de base de dados
Comandos | Função |
CREATE | Criar bases de dados ou tabelas |
ALTER | Alterar uma tabela |
DROP | Apagar uma tabela ou a base de dados |
TRUNCATE RENAME | Esvazia a tabela (apaga todos os dados) Renomeia a tabela |
👉 É
o conjunto de comandos usados para criar, alterar e apagar a estrutura da base de
dados (tabelas, colunas, etc.).
EXEMPLO comando DDL
2️⃣DML (Data Manipulation Language)
manipulação de dados
Comandos | Função |
SELECT
INSERT | Selecionar dados Inserir dados |
UPDATE
| Atualizar dados |
DELETE | Apagar dados |
| |
👉 É usado para manipular os dados dentro das tabelas, ou seja, trabalhar com os registos.
Exemplos
SQL não é case sensitive ou seja, não distingue letras maiúsculas de minúsculas na maioria dos comandos.
📘 Tipos de dados em SQL
Os tipos de dados definem que tipo de dados que pode ser armazenada numa coluna/campo de uma tabela.
|
Categoria
|
Tipo de dado
|
Descrição
|
Exemplo
|
|
Numérico
|
INT
|
Número inteiro
|
10
|
|
BIGINT
|
Inteiro muito grande
|
1000000
|
|
DECIMAL(p,s)
DECIMAL (4,2)
|
Número com precisão decimal
p (precision) → número total de dígitos
s (scale) → número de casas
decimais
|
10.50
|
|
FLOAT
|
Número com casas decimais aproximadas
|
3.1415…
|
|
Texto
|
CHAR(n)
CHAR (1)
|
Nº caracteres de tamanho fixo
|
"F",
“M”
|
|
VARCHAR(n)
VARCHAR(20)
|
Texto de tamanho variável
|
"Maria"
|
|
TEXT
|
Texto longo
|
descrição grande
|
|
Data/Hora
|
DATE
|
Guarda apenas data
|
2026-03-16
|
|
TIME
|
Guarda hora
|
14:30:00
|
|
DATETIME
|
Guarda data e hora
|
2026-03-16 14:30:00
|
|
TIMESTAMP
|
Data e hora automática
|
2026-03-16 14:30:00
|
|
Lógico
|
BOOLEAN
|
Verdadeiro ou falso
|
TRUE
|
|
Binário
|
BLOB
|
Guarda ficheiros ou imagens
|
Imagem
|
|
Tipo
|
Descrição
|
BYTE
|
INTERVALO
|
EXEMPLO
|
|
TINYINT
|
inteiro muito pequeno
|
1 byte
|
-128 a 127
|
-125
|
|
SMALLINT
|
inteiro pequeno
|
2 bytes
|
-32 768 a 32 767
|
32000
|
|
INT
|
inteiro
|
4 bytes
|
-2 147 483
648 a 2 147 483 647
|
2 000 000
|
|
BIGINT
|
inteiro grande
|
8 bytes
|
±9.22 × 10¹⁸
|
3 999 999 000
|
|
|
|
|
|
|
📊 Diferença entre DECIMAL e FLOAT
| Tipo | Característica | Uso principal |
|---|
| DECIMAL | Valores exatos | 💰Valores financeiros € (preços, salários) e Classificações |
| FLOAT | Valores aproximados | 🔬Cálculos científicos ou estatísticos (arredondamentos) |
📊Métodos guardar imagens
| BLOB | foto Blob guarda a imagem dentro da base de dados |
| PATH | foto VARCHAR(255) mais rápido e mais usado em aplicações |
✔ Guarda o caminho onde fica guardada a imagem - exemplo "
/fotos/alunos/joao_silva.jpg"
EXEMPLO em SQL
CREATE TABLE Alunos (
nprocesso INT PRIMARY KEY,
nome VARCHAR(100),
sexo CHAR(1),
data_nascimento DATE,
email VARCHAR(255),
telefone CHAR(9),
peso FLOAT,
mediacurso DECIMAL(4,2),
foto BLOB,
ativo BOOLEAN,
data_matricula DATETIME,
observacoes TEXT
);
1️⃣Principais Comandos SQL DDL
1.1 CREATE - Criar DB e Tabelas
✔Criar uma base de dados
Sintaxe Exemplo
|
CREATE DATABASE nome_da_DB;
|
CREATE DATABASE Loja;
|
✔Usar uma base de dados
USE Loja;
✔Criar uma tabela
|
Sintaxe Exemplo | |
CREATE
TABLE nome_da_tabela (
campo1
tipo de dados
restrições,
campo2 tipo de dados restrições,
campo3 tipo de dados restrições
);
1.2. ALTER - Adicionar/ Modificar / Apagar Coluna da tabela O comando ALTER TABLE em SQL é usado para alterar a estrutura de uma tabela: adicionar, modificar ou apagar colunas/campos. Sintaxe básica
Adicionar campo - ADD ou ADD COLUMN
|
Sintaxe
|
Exemplo
|
ALTER TABLE nome_da_tabela ADD COLUMN campo tipo de dados;
|
ALTER TABLE Clientes ADD COLUMN DataNascimento DATE ;
|
|
|
Modificar tipo de dados 🚨
Sintaxe | Exemplo |
ALTER TABLE nome_da_tabela MODIFY campo tipo de dados; | ALTER TABLE Clientes MODIFY email VARCHAR(255) |
Renomear uma coluna - RENAME COLUMN ou CHANGE
Sintaxe SQL Server/ PostgreSQL | Exemplo |
ALTER TABLE nome_da_tabela RENAME COLUMN campo TO novocampo ; | ALTER TABLE Clientes RENAME COLUMN DataNascimento TO DataNasc; |
Sintaxe MariaDB e MySQL | Exemplo |
ALTER TABLE nome_da_tabela CHANGE campo novocampo Tipo de dado; | ALTER TABLE Clientes CHANGE DataNascimento DataNasc DATE; |
Remover coluna - DROP ou DROP COLUMN
Sintaxe | Exemplo |
ALTER TABLE nome_da_tabela DROP COLUMN nome_coluna; | ALTER TABLE Clientes DROP COLUMN DataNasc ; |
1.3. DROP - Remover tabela ou Base de dados
Sintaxe | Exemplo |
DROP TABLE nome_tabela; | DROP TABLE Clientes; |
Remover Base de Dados
Sintaxe | Exemplo |
DROP DATABASE nome_BD; | DROP DATABASE Loja; |
1.4. TRUNCATE - Esvazia a tabela (apagar todos os dados)
Sintaxe | Exemplo |
TRUNCATE TABLE nome_tabela; | TRUNCATE TABLE Clientes;
|
1.5. RENAME - renomear nome tabela
Sintaxe | Exemplo |
RENAME TABLE nome_antigo TO nome_novo; | RENAME TABLE Clientes TO Clients;
|
📊 Tipos de restrições (constraints)
mais usadas e SQL
Em SQL, as restrições são usadas para garantir a integridade e validade dos dados numa tabela.
|
Restrição
|
Função
|
Exemplo
|
|
PRIMARY KEY
|
Identifica registo único
|
id INT PRIMARY KEY
|
|
NOT NULL
|
Campo obrigatório (não vazio)
|
nome VARCHAR(40) NOT NULL
|
|
UNIQUE
|
Não permite duplicados
|
email VARCHAR(150) UNIQUE
|
|
FOREIGN KEY
|
Liga tabelas
|
FOREIGN KEY (CodClientFK)
REFERENCES Clientes (CodClient)
|
|
DEFAULT
|
Valor automático
|
ativo BOOLEAN DEFAULT TRUE
|
|
AUTO_INCREMENT
|
Incremento automático
|
id INT PRIMARY KEY AUTO-INCREMENT
|
EXEMPLO
CREATE
TABLE Alunos (
nprocesso
INT PRIMARY KEY AUTO_INCREMENT,
nome VARCHAR(100) NOT NULL ,
email VARCHAR(150) UNIQUE,
repetente
BOOLEAN DEFAULT FALSE,
FOREIGN KEY
(codCursoFK )
REFERENCES Cursos
(CodCurso)
);
ATENÇÃO
FOREIGN KEY (campoFK) REFERENCES NomeTabela (campoPK) );
Download e instalação do Xampp
- Apache servidor web ( hospedar websites )
- MariaDB /MySQL - SGBG
- suporte as linguagens PHP e Perl
- phpMyAdmin ferramenta usada para fazer a Gestão de Base de Dados através do Browser
FERRAMENTA phpMyAdmin
-O phpMyAdmin é a plataforma mais popular para a gestão de base de dados MariaDB
-MARIADB - SGDB open source dos criadores do MySQL (by
Oracle Corporation)
-O phpMyAdmin é uma ferramenta gratuita, open source, escrita em PHP, e que permite fazer a gestão de Bases de Dados guardadas no SGBD MariaDB /MySQL através de um Browser.
- É instalado com o XAMPP
Através de uma interface bastante intuitivo e organizado, o phpMyAdmin permite a qualquer utilizador fazer um gestão simplificada do MariaDB e das respectivas bases de dados.
Através do PhpMyAdmin, podemos:- controlar todas as bases de dados existentes como se existisse uma só;- criar e eliminar bases de dados;- criar, eliminar e alterar tabelas e campos de tabelas;- listar a informação existente, bem como executar qualquer comando SQL.Para além destas funcionalidades, permite igualmente exportar toda a informação de uma base de dados para vários formatos (SQL, XML, etc) para, por exemplo, realizar uma cópia de segurança de toda a informação existente na base de dados.
INICIAR o XAMPP
ABRIR o BROWSER
Escrever no URL: localhost/phpmyadmin/
Entrar com conta Utilizador: root (
sem password)
TRABALHAR em SQL
👉 CRIAR UMA TABELA de CADA VEZ
ATENÇÃO
Order_Items(IdOrderFK, IdProductFK, Quantity)