Vamos criar um mini-curso introdutório que abrange os três tópicos: PHP, Python e SQL.
O
curso será dividido em três módulos, cada um focado em uma tecnologia, mas com a ideia de
que elas podem trabalhar juntas. Vamos manter o curso prático e objetivo.
Mini-Curso: Introdução a PHP, Python e SQL
Objetivo do Curso:
Fornecer uma base sólida em PHP, Python e SQL, mostrando como essas tecnologias podem
ser usadas para desenvolvimento web e manipulação de dados.
Público-alvo:
Iniciantes em programação ou pessoas que desejam conhecer o básico dessas três tecnologias.
Duração:
Cada módulo tem duração estimada de 4 horas, totalizando 12 horas.
Módulo 1: SQL (Structured Query Language)
Conteúdo:
1. Introdução a Bancos de Dados Relacionais
o O que é um banco de dados?
o Tabelas, linhas (registros) e colunas (campos).
o Chaves primárias e estrangeiras.
2. SQL Básico
o Criando um banco de dados e tabelas (CREATE DATABASE, CREATE TABLE).
o Inserindo dados (INSERT).
o Consultando dados (SELECT).
o Filtros (WHERE).
o Ordenação (ORDER BY).
o Atualizando dados (UPDATE).
o Excluindo dados (DELETE).
3. SQL Intermediário
o Junções (joins): INNER JOIN, LEFT JOIN.
o Agregações: COUNT, SUM, AVG, GROUP BY.
o Subconsultas.
4. Exercício Prático
o Criar um banco de dados para uma loja online (tabelas: clientes, pedidos,
produtos).
o Inserir registros.
o Consultas para obter informações como: total de pedidos por cliente, produtos
mais vendidos, etc.
Módulo 2: PHP (Hypertext Preprocessor)
Conteúdo:
1. Introdução ao PHP
o O que é PHP? (linguagem de script do lado do servidor)
o Configuração do ambiente (XAMPP, WAMP, ou servidor embutido do PHP).
o Sintaxe básica: <?php ... ?>, variáveis, tipos de dados, operadores.
2. Estruturas de Controle
o Condicionais: if, else, switch.
o Loops: for, while, foreach.
3. Funções e Arrays
o Definindo funções.
o Arrays indexados e associativos.
o Funções de array (como array_map, array_filter).
4. PHP e MySQL
o Conexão com banco de dados MySQL usando MySQLi ou PDO.
o Executando consultas SQL a partir do PHP.
o Prevenção de SQL injection.
5. Formulários HTML e PHP
o Processando dados de formulários ($_GET, $_POST).
o Validação de dados.
6. Exercício Prático
o Criar uma página de cadastro de clientes que insere dados no banco de dados.
o Criar uma página de listagem de clientes (dados do banco).
Módulo 3: Python
Conteúdo:
1. Introdução ao Python
o Por que Python? (simplicidade, versatilidade, aplicações em web, dados, IA,
etc.)
o Instalação e configuração.
o Sintaxe básica: variáveis, tipos de dados, operadores.
2. Estruturas de Controle e Funções
o Condicionais: if, elif, else.
o Loops: for, while.
o Definindo funções.
3. Estruturas de Dados em Python
o Listas, tuplas, dicionários, conjuntos.
o Compreensão de listas.
4. Python e Bancos de Dados
o Conexão com banco de dados usando sqlite3 ou mysql-connector-python.
o Executando consultas SQL a partir do Python.
5. Introdução a um Framework Web (Flask)
o Roteamento.
o Templates (Jinja2).
o Integração com banco de dados.
6. Exercício Prático
o Criar uma aplicação web simples com Flask que permita adicionar e listar
produtos (usando o banco de dados da loja online do módulo SQL).
Projeto Integrador:
Ao final dos três módulos, os alunos desenvolverão um sistema simples de gerenciamento de
tarefas (To-Do List) que envolve:
• Banco de dados SQL para armazenar as tarefas.
• Backend em PHP e também em Python (para comparar as abordagens).
• Frontend em HTML, CSS e JavaScript.
Recursos Adicionais:
• Material de apoio: slides, códigos-fonte dos exemplos.
• Links para documentação oficial de PHP, Python e SQL.
• Sugestões de próximos passos (frameworks, ORM, etc.).
Avaliação:
• Participação nos exercícios práticos.
• Projeto final.
Esse mini-curso pode ser adaptado para ser ministrado em um final de semana (sábado e
domingo) ou em três dias (um módulo por dia). A parte prática é essencial, então é importante
que os alunos tenham acesso a computadores com os softwares necessários instalados.
Vamos começar? Vou detalhar cada módulo com exemplos de código, se desejar.
Mini-Curso: Fundamentos de PHP, Python e SQL
Módulo 1: Introdução Geral (2 horas)
1.1 O que são essas tecnologias?
• PHP: Linguagem de script para desenvolvimento web do lado do servidor
• Python: Linguagem de programação versátil para web, dados, automação e IA
• SQL: Linguagem para gerenciamento e consulta de bancos de dados relacionais
1.2 Como elas se relacionam?
text
Front-end (HTML/CSS/JS) ←→ PHP/Python ←→ Banco de Dados (SQL)
Módulo 2: SQL - Banco de Dados (4 horas)
2.1 Conceitos Fundamentais
sql
-- Criar banco de dados
CREATE DATABASE curso;
-- Criar tabela
CREATE TABLE usuarios (
id INT PRIMARY KEY AUTO_INCREMENT,
nome VARCHAR(100) NOT NULL,
email VARCHAR(100) UNIQUE,
idade INT,
data_cadastro TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
CREATE TABLE pedidos (
id INT PRIMARY KEY AUTO_INCREMENT,
usuario_id INT,
produto VARCHAR(100),
valor DECIMAL(10,2),
FOREIGN KEY (usuario_id) REFERENCES usuarios(id)
);
2.2 Operações CRUD
sql
-- INSERT (Criar)
INSERT INTO usuarios (nome, email, idade)
VALUES ('Maria', 'maria@[Link]', 25);
-- SELECT (Ler)
SELECT * FROM usuarios;
SELECT nome, email FROM usuarios WHERE idade > 18;
SELECT * FROM usuarios ORDER BY nome DESC;
-- UPDATE (Atualizar)
UPDATE usuarios SET idade = 26 WHERE email = 'maria@[Link]';
-- DELETE (Excluir)
DELETE FROM usuarios WHERE id = 5;
2.3 Consultas Avançadas
sql
-- JOIN entre tabelas
SELECT [Link], [Link], [Link]
FROM usuarios u
JOIN pedidos p ON [Link] = p.usuario_id;
-- Agregações
SELECT
COUNT(*) as total_usuarios,
AVG(idade) as media_idade,
MAX(idade) as maior_idade
FROM usuarios;
-- GROUP BY
SELECT idade, COUNT(*) as quantidade
FROM usuarios
GROUP BY idade
HAVING COUNT(*) > 1;
Módulo 3: PHP - Desenvolvimento Web (6 horas)
3.1 Sintaxe Básica
php
<?php
// Variáveis e tipos
$nome = "João";
$idade = 30;
$salario = 2500.50;
$ativo = true;
// Arrays
$frutas = array("Maçã", "Banana", "Laranja");
$pessoa = [
"nome" => "Maria",
"idade" => 25,
"cidade" => "São Paulo"
];
// Estruturas de controle
if ($idade >= 18) {
echo "Maior de idade";
} else {
echo "Menor de idade";
// Loops
for ($i = 1; $i <= 10; $i++) {
echo $i . "<br>";
foreach ($frutas as $fruta) {
echo $fruta . "<br>";
?>
3.2 PHP com Banco de Dados
php
<?php
// Conexão com MySQL
$host = "localhost";
$user = "root";
$pass = "";
$dbname = "curso";
$conn = new mysqli($host, $user, $pass, $dbname);
// Verificar conexão
if ($conn->connect_error) {
die("Falha na conexão: " . $conn->connect_error);
}
// Inserir dados
$sql = "INSERT INTO usuarios (nome, email, idade)
VALUES ('Carlos', 'carlos@[Link]', 30)";
$conn->query($sql);
// Consultar dados
$sql = "SELECT * FROM usuarios";
$result = $conn->query($sql);
while($row = $result->fetch_assoc()) {
echo "Nome: " . $row['nome'] . " - Email: " . $row['email'] . "<br>";
// Fechar conexão
$conn->close();
?>
3.3 PHP com Formulários
php
<!-- [Link] -->
<form action="[Link]" method="POST">
<input type="text" name="nome" placeholder="Nome">
<input type="email" name="email" placeholder="Email">
<input type="number" name="idade" placeholder="Idade">
<button type="submit">Enviar</button>
</form>
<!-- [Link] -->
<?php
if ($_SERVER["REQUEST_METHOD"] == "POST") {
$nome = $_POST['nome'];
$email = $_POST['email'];
$idade = $_POST['idade'];
// Validar e processar dados
if (!empty($nome) && !empty($email)) {
// Conectar ao banco e inserir
echo "Dados recebidos com sucesso!";
?>
Módulo 4: Python - Programação Versátil (6 horas)
4.1 Fundamentos do Python
python
# Variáveis e tipos
nome = "Ana"
idade = 25
salario = 3500.50
ativo = True
# Listas e dicionários
frutas = ["Maçã", "Banana", "Laranja"]
pessoa = {
"nome": "Carlos",
"idade": 30,
"cidade": "Rio de Janeiro"
# Estruturas de controle
if idade >= 18:
print("Maior de idade")
else:
print("Menor de idade")
# Loops
for i in range(1, 11):
print(i)
for fruta in frutas:
print(fruta)
# Funções
def calcular_media(notas):
return sum(notas) / len(notas)
media = calcular_media([7.5, 8.0, 9.0])
print(f"Média: {media}")
4.2 Python com Banco de Dados
python
import [Link]
import sqlite3
# Conexão com MySQL
def conectar_mysql():
conexao = [Link](
host="localhost",
user="root",
password="",
database="curso"
return conexao
# Conexão com SQLite
def conectar_sqlite():
conexao = [Link]('[Link]')
return conexao
# Exemplo de CRUD com SQLite
conexao = conectar_sqlite()
cursor = [Link]()
# Criar tabela
[Link]('''
CREATE TABLE IF NOT EXISTS produtos (
id INTEGER PRIMARY KEY AUTOINCREMENT,
nome TEXT NOT NULL,
preco REAL,
estoque INTEGER
''')
# Inserir dados
[Link]("INSERT INTO produtos (nome, preco, estoque) VALUES (?, ?, ?)",
("Notebook", 3500.00, 10))
# Consultar dados
[Link]("SELECT * FROM produtos")
produtos = [Link]()
for produto in produtos:
print(f"ID: {produto[0]}, Nome: {produto[1]}, Preço: R${produto[2]}")
[Link]()
[Link]()
4.3 Python para Web (Flask)
python
from flask import Flask, render_template, request, jsonify
import [Link]
app = Flask(__name__)
@[Link]('/')
def index():
return render_template('[Link]')
@[Link]('/usuarios', methods=['GET'])
def get_usuarios():
conexao = [Link](
host="localhost",
user="root",
password="",
database="curso"
cursor = [Link](dictionary=True)
[Link]("SELECT * FROM usuarios")
usuarios = [Link]()
[Link]()
return jsonify(usuarios)
@[Link]('/usuario', methods=['POST'])
def add_usuario():
dados = [Link]
conexao = [Link](
host="localhost",
user="root",
password="",
database="curso"
cursor = [Link]()
sql = "INSERT INTO usuarios (nome, email, idade) VALUES (%s, %s, %s)"
valores = (dados['nome'], dados['email'], dados['idade'])
[Link](sql, valores)
[Link]()
[Link]()
return jsonify({"mensagem": "Usuário adicionado com sucesso!"})
if __name__ == '__main__':
[Link](debug=True)
Módulo 5: Integração das Tecnologias (4 horas)
5.1 Sistema Completo de Cadastro
php
<!-- sistema_php/[Link] -->
<?php
// Conexão com banco
$conn = new mysqli("localhost", "root", "", "curso");
// API simples em PHP
header('Content-Type: application/json');
if ($_SERVER['REQUEST_METHOD'] == 'GET') {
$result = $conn->query("SELECT * FROM usuarios");
$usuarios = [];
while($row = $result->fetch_assoc()) {
$usuarios[] = $row;
echo json_encode($usuarios);
}
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
$data = json_decode(file_get_contents('php://input'), true);
$stmt = $conn->prepare("INSERT INTO usuarios (nome, email, idade) VALUES (?, ?, ?)");
$stmt->bind_param("ssi", $data['nome'], $data['email'], $data['idade']);
$stmt->execute();
echo json_encode(["success" => true]);
?>
python
# sistema_python/[Link]
import requests
import [Link]
class SistemaCadastro:
def __init__(self):
[Link] = [Link](
host="localhost",
user="root",
password="",
database="curso"
def importar_dados_php(self):
"""Consumir API PHP e importar dados para Python"""
resposta = [Link]('[Link]
if resposta.status_code == 200:
dados = [Link]()
# Processar dados com Python
for usuario in dados:
print(f"Processando: {usuario['nome']}")
# Análise ou processamento adicional
return dados
return None
def exportar_para_php(self, dados):
"""Enviar dados do Python para PHP"""
resposta = [Link](
'[Link]
json=dados
return [Link]()
def analise_avancada(self):
"""Exemplo: Análise de dados com Python"""
cursor = [Link](dictionary=True)
[Link]("""
SELECT
idade,
COUNT(*) as total,
AVG(idade) as media
FROM usuarios
GROUP BY idade
ORDER BY total DESC
""")
resultado = [Link]()
# Gerar relatório
for linha in resultado:
print(f"Idade {linha['idade']}: {linha['total']} pessoas")
return resultado
Projeto Final: Sistema de Gestão
Objetivo: Criar um sistema completo usando:
1. MySQL: Banco de dados para clientes e produtos
2. PHP: Backend principal e interface administrativa
3. Python: Scripts de análise de dados e relatórios
Estrutura do Projeto:
text
sistema_gestao/
├── database/
│ └── [Link]
├── backend_php/
│ ├── api/
│ ├── admin/
│ └── config/
├── scripts_python/
│ ├── [Link]
│ ├── [Link]
│ └── [Link]
└── frontend/
├── [Link]
└── css/
Recursos para Aprendizado
Livros Recomendados:
1. "PHP and MySQL Web Development" - Luke Welling
2. "Python Crash Course" - Eric Matthes
3. "SQL Cookbook" - Anthony Molinaro
Cursos Online:
• FreeCodeCamp
• W3Schools
• MDN Web Docs
Prática:
1. Crie um blog com PHP + MySQL
2. Desenvolva uma API REST com Python (Flask/FastAPI)
3. Otimize consultas SQL complexas
4. Implemente autenticação e autorização
Dicas Finais
1. Comece com SQL: Entenda bem os dados antes de programar
2. PHP para Web: Ideal para sistemas web tradicionais
3. Python para Tudo: Desde scripts simples até machine learning
4. Integre Gradativamente: Comece separado, depois integre
5. Versionamento: Use Git desde o início
6. Segurança: Sempre valide entradas e use prepared statements
7. Performance: Otimize consultas e use cache quando possível
Exercícios Práticos
Nível Iniciante:
1. Crie um sistema de cadastro de usuários
2. Implemente login com sessões em PHP
3. Gere um relatório em Python com dados do MySQL
Nível Intermediário:
1. Desenvolva uma API RESTful com PHP e Python
2. Crie um dashboard com gráficos baseados em dados SQL
3. Implemente fila de processamento com Python
Nível Avançado:
1. Sistema de e-commerce completo
2. Microserviços com PHP e Python comunicando
3. Análise preditiva com dados históricos
Duração Total Estimada: 22 horas (teoria + prática)
Este mini-curso fornece uma base sólida para começar com essas três tecnologias
fundamentais no desenvolvimento web e análise de dados. Pratique regularmente e construa
projetos reais para consolidar o conhecimento!