1
resposta

[Projeto] 'Mão na massa: gerenciamento escolar com banco de dados relacional'

SQL SERVER E SSMS

USE DESAFIOS
GO

--- *** CRIANDO TABELAS *** ---
CREATE TABLE Alunos_MNM_gerenciamento_escolar_08 (
    ID_Aluno INT PRIMARY KEY,
    Nome_Aluno VARCHAR(255),
    Data_Nascimento DATE,
    Genero VARCHAR(50),
    Endereco VARCHAR(255),
    Telefone_Contato VARCHAR(20),
    Email VARCHAR(255)
);

CREATE TABLE Professores_MNM_gerenciamento_escolar_08 (
    ID_Professor INT PRIMARY KEY,
    Nome_Professor VARCHAR(255),
    Data_Nascimento DATE,
    Genero VARCHAR(50),
    Telefone_Contato VARCHAR(20),
    Email VARCHAR(255)
);

CREATE TABLE Disciplinas_MNM_gerenciamento_escolar_08 (
    ID_Disciplina INT PRIMARY KEY,
    Nome_Disciplina VARCHAR(255),
    Descricao TEXT,
    Carga_Horaria INT,
    ID_Professor INT,
    FOREIGN KEY (ID_Professor) REFERENCES Professores_MNM_gerenciamento_escolar_08(ID_Professor)
);

CREATE TABLE Notas_MNM_gerenciamento_escolar_08 (
    ID_Nota INT PRIMARY KEY,
    ID_Aluno INT,
    ID_Disciplina INT,
    Nota DECIMAL(5, 2),
    Data_Avaliacao DATE,
    FOREIGN KEY (ID_Aluno) REFERENCES Alunos_MNM_gerenciamento_escolar_08(ID_Aluno),
    FOREIGN KEY (ID_Disciplina) REFERENCES Disciplinas_MNM_gerenciamento_escolar_08(ID_Disciplina)
);

CREATE TABLE Turmas_MNM_gerenciamento_escolar_08 (
    ID_Turma INT PRIMARY KEY,
    Nome_Turma VARCHAR(255),
    Ano_Letivo INT,
    ID_Professor_Orientador INT,
    FOREIGN KEY (ID_Professor_Orientador) REFERENCES Professores_MNM_gerenciamento_escolar_08(ID_Professor)
);

CREATE TABLE Turma_Alunos_MNM_gerenciamento_escolar_08 (
    ID_Turma INT,
    ID_Aluno INT,
    PRIMARY KEY (ID_Turma, ID_Aluno),
    FOREIGN KEY (ID_Turma) REFERENCES Turmas_MNM_gerenciamento_escolar_08(ID_Turma),
    FOREIGN KEY (ID_Aluno) REFERENCES Alunos_MNM_gerenciamento_escolar_08(ID_Aluno)
);

CREATE TABLE Turma_Disciplinas_MNM_gerenciamento_escolar_08 (
    ID_Turma INT,
    ID_Disciplina INT,
    PRIMARY KEY (ID_Turma, ID_Disciplina),
    FOREIGN KEY (ID_Turma) REFERENCES Turmas_MNM_gerenciamento_escolar_08(ID_Turma),
    FOREIGN KEY (ID_Disciplina) REFERENCES Disciplinas_MNM_gerenciamento_escolar_08(ID_Disciplina)
);

--- **** INSERINDO DADOS NAS TABELAS **** ---

BULK INSERT tabelas
    FROM 'caminho do arquivo'
    WITH (
        FORMAT = 'csv',
        FIRSTROW = 2,
        FIELDTERMINATOR = ';',
        ROWTERMINATOR = '\n'
    );

--- *** CONSULTA 1 *** ---
      
SELECT 
    Disciplinas_MNM_gerenciamento_escolar_08.Nome_Disciplina as 'Disciplina', 
    AVG(Nota) as 'Média dos Alunos'
FROM Notas_MNM_gerenciamento_escolar_08
LEFT JOIN Disciplinas_MNM_gerenciamento_escolar_08
    ON Notas_MNM_gerenciamento_escolar_08.ID_Disciplina = Disciplinas_MNM_gerenciamento_escolar_08.ID_Disciplina
GROUP BY Disciplinas_MNM_gerenciamento_escolar_08.Nome_Disciplina
HAVING Disciplinas_MNM_gerenciamento_escolar_08.Nome_Disciplina = 'Historia';
--Disciplina	Média dos Alunos
--Historia	    3.603000

--- *** CONSULTA 2 *** ---
SELECT *
FROM Alunos_MNM_gerenciamento_escolar_08
WHERE UPPER(LEFT(Nome_Aluno, 1)) = 'A';
--ID_Aluno	Nome_Aluno	Data_Nascimento	Genero	Endereco	Telefone_Contato	Email
--4	Ana Lima	2005-02-04	Feminino	Rua da Escola, 56	(11) 8765-4321	ana@email.com

--- *** CONSULTA 3 *** ---
SELECT Nome_Aluno, month(Data_Nascimento) as 'Mês'
FROM Alunos_MNM_gerenciamento_escolar_08
WHERE month(Data_Nascimento) = 2;
--Nome_Aluno	Mês
--Ana Lima	2
--Carolina Oliveira	2
1 resposta
--- *** CONSULTA 4 *** ---
SELECT 
    Nome_Aluno, 
    YEAR(Data_Nascimento) as 'Ano de Nascimento',
    YEAR(CURRENT_TIMESTAMP) - YEAR(Data_Nascimento) as 'Idade'
FROM Alunos_MNM_gerenciamento_escolar_08
--Nome_Aluno	Ano de Nascimento	Idade
--Joao Silva	2005	20
--Maria Santos	2006	19
--Pedro Soares	2004	21
--Ana Lima	2005	20
--Mariana Fernandes	2005	20
--Lucas Costa	2003	22
--Isabela Santos	2006	19
--Gustavo Pereira	2004	21
--Carolina Oliveira	2005	20
--Daniel Silva	2003	22
--Larissa Souza	2004	21
--Bruno Costa	2005	20
--Camila Rodrigues	2006	19
--Rafael Fernandes	2004	21
--Leticia Oliveira	2005	20
--Fernanda Lima	2004	21
--Vinicius Santos	2003	22
--Juliana Pereira	2006	19

--- *** CONSULTA 5 *** ---
SELECT 
    Alunos_MNM_gerenciamento_escolar_08.Nome_Aluno as 'ALUNO',
    Notas_MNM_gerenciamento_escolar_08.Nota AS 'NOTA',
    CASE
        WHEN Notas_MNM_gerenciamento_escolar_08.Nota >= 6 THEN 'APROVADO'
        ELSE 'REPROVADO'
    END AS 'SITUAÇÃO'
FROM Notas_MNM_gerenciamento_escolar_08
LEFT JOIN Alunos_MNM_gerenciamento_escolar_08
    ON Notas_MNM_gerenciamento_escolar_08.ID_Aluno = Alunos_MNM_gerenciamento_escolar_08.ID_Aluno
ORDER BY Notas_MNM_gerenciamento_escolar_08.Nota;

--ALUNO	NOTA	SITUAÇÃO
--[...]
--Lucas Costa	4.43	REPROVADO
--Lucas Costa	4.79	REPROVADO
--Daniel Silva	5.81	REPROVADO
--Maria Santos	5.82	REPROVADO
--Pedro Soares	5.95	REPROVADO
--Mariana Fernandes	6.18	APROVADO
--Joao Silva	6.19	APROVADO
--Lucas Costa	6.63	APROVADO
--Joao Silva	6.82	APROVADO
--Ana Lima	6.98	APROVADO
--[...]