1
resposta

Mão na massa

CREATE TABLE tabelaalunos
(ID_alunos INT PRIMARY KEY,          
  nome_aluno VARCHAR(100) NOT NULL,    
  data_nascimento DATE NOT NULL,       
  genero VARCHAR(20),                 
  endereco VARCHAR(200),               
  telefone VARCHAR(15),                
  email VARCHAR(100) UNIQUE           
);

CREATE TABLE tabelaprofessores
(id_professor INT PRIMARY KEY,
 nome_professor VARCHAR(100) not NULL,
 data_nascimento DATE NOT NULL,
  genero VARCHAR(20),
  telefone VARCHAR(15),
  email VARCHAR(100) UNIQUE
 );
 
 CREATE TABLE tabeladisciplinas
 (  id_disciplina INT PRIMARY KEY,
  nome_disciplina VARCHAR(100) NOT NULL,
  descricao TEXT,
  carga_horaria INT,
  id_professor INT,
  FOREIGN key (id_professor) REFERENCES tabelaprofessores(id_professor)
  );
  
  CREATE TABLE tabelaturmas
  (id_turma INT PRIMARY KEY,
   nome_turma VARCHAR(100) not NULL,
   ano_letivo INT NOT NULL,
   id_professor_orientador INT,
   FOREIGN key (id_professor_orientador) REFERENCES tabelaprofessores(id_professor)
   );

  CREATE TABLE tabela_turmas_disciplinas
  (id_turma INT,
   id_disciplina INT,
   PRIMARY KEY (id_turma, id_disciplina),
   FOREIGN KEY (id_turma) REFERENCES tabelaturmas(id_turma),
   FOREIGN KEY (id_disciplina) REFERENCES tabeladisciplinas(id_disciplina)
   );
   
   CREATE TABLE tabela_turmas_alunos 
   (id_turma INT,
    id_aluno INT,
    PRIMARY key (id_turma, id_aluno),
    FOREIGN key (id_turma) REFERENCES tabelaturmas(id_turma),
    FOREIGN key (id_aluno) REFERENCES tabelaalunos(id_aluno)
    );
    
    CREATE TABLE tabelanotas
    (id_nota INT PRIMARY KEY,
     id_aluno INT,
     id_disciplina INT,
     valor_da_nota NUMERIC(5,2),
     data_da_avaliacao DATE,
     FOREIGN key (id_aluno) REFERENCES tabelaalunos(id_aluno),
     FOREIGN key (id_disciplina) REFERENCES tabeladisciplinas(id_disciplina)
     );
   
   INSERT into tabelaalunos
    VALUES
    ('1', 'João Silva',	'005-03-15', 'Masculino'	, 'Rua das Flores, 123', '(11) 9876-5432', 'joao@email.com'),
    ('2', 'Maria Santos', '2006-06-20', 'Feminino', 'Avenida Principal, 456', '(11) 8765-4321',	'maria@email.com'),
    ('3','Pedro Soares', '2004-01-10' , 'Masculino', 'Rua Central, 789',	'(11) 7654-3210','pedro@email.com');

   
   INSERT into tabelaprofessores
    VALUES
    ('1', 'Ana Oliveira', '1980-05-25', 	'Feminino',	'(11) 1234-5678',	'ana@email.com'),
    ('2', 'Carlos Ferreira', '1975-09-12', 'Masculino', '(11) 2345-6789',	'carlos@email.com'),
    ('3', 'Mariana Santos',	'1982-03-15',	 'Feminino', '(11) 3456-7890',	'mariana@email.com');

    INSERT INTO tabeladisciplinas
    values 
    ('1','Matemática', 'Estudo de conceitos matemáticos avançados',	'60',	'1'),
    ('2','História', 'História mundial e local',	'45',	'2'),
    ('3','Física', 'Princípios fundamentais da física',	'60',	'1');
    
    INSERT INTO tabelaturmas
    VALUES
    ('1',	'Turma A',	'2023',	'1'),
    ('2',	'Turma B',	'2023',	'2'),
    ('3',	'Turma C',	'2023',	'3');

    INSERT INTO tabela_turmas_disciplinas
    VALUES
    ('1',	'1'),
    ('2',	'2'),
    ('3',	'3');

    INSERT into tabela_turmas_alunos
    VALUES
     ('1',	'1'),
     ('2',	'2'),
     ('3',	'3');
 
   INSERT INTO tabelanotas
   values 
   ('2',	'1',	'1',	6.19,	'07/07/2023'),
   ('3',	'1',	'2',	7.18,	'07/07/2023'),
   ('4',	'1',	'3',	7.47,	'07/07/2023');
   
   SELECT * from //nome da tabela
   SELECT * from tabelaalunos ORDER by nome_aluno;
   SELECT nome_disciplina,carga_horaria FROM tabeladisciplinas WHERE carga_horaria > 40;
   SELECT * from tabelanotas WHERE valor_da_nota BETWEEN 6 and 8;
1 resposta

E aí, Adriel! Tudo bem?

Parabéns! Mantenha o ritmo nos exercícios.

Percebi que você praticou o uso de relacionamentos entre tabelas com FOREIGN KEY, elaborou muito bem uma PRIMARY KEY composta e ainda entendeu a relevância de consultas com ORDER BY e BETWEEN para organizar e filtrar os dados de forma eficiente.

Uma sugestão para evoluir ainda mais é usar JOIN entre tabelas com o objetivo de cruzar informações de forma mais rica. Veja só:

SELECT a.nome_aluno, d.nome_disciplina, n.valor_da_nota
FROM tabelanotas n
JOIN tabelaalunos a ON n.id_aluno = a.id_aluno
JOIN tabeladisciplinas d ON n.id_disciplina = d.id_disciplina;

Resultado: Exibe o nome do aluno, a disciplina e a nota correspondente.

Essa abordagem ajuda a construir relatórios mais completos e contextualizados.

Fico à disposição! E se precisar, conte sempre com o apoio do fórum.

Abraço e bons estudos!

AluraConte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!