Prova de Banco de Dados

Criando o banco de dados

create database bdescola

Criando as Tabelas

Criando a tabela tb_aluno

create table tb_aluno( 
codigo_aluno integer primary key, 
nome_aluno varchar(60) not null, 
ano_nasc int, 
email varchar(60), 
sexo varchar not null 
)  

Criando a tabela tb_curso

create table tb_curso( 
codigo_curso integer primary key, 
nome_curso varchar(60) not null 
) 

Criando a tabela tb_matricula

create table tb_matricula( 
codigo_curso integer references tb_curso (codigo_curso), 
codigo_aluno integer references tb_aluno (codigo_aluno) 
) 

alter table  
add constraint fk_codigo_curso foreign  key (codigo_curso) references tb_curso(codigo_curso) 
add constraint fk_codigo_aluno foreign  key (codigo_aluno) references tb_aluno(codigo_aluno) 

Inserindo os dados nas tabelas

Tabela tb_aluno

insert into tb_aluno (codigo_aluno, nome_aluno, ano_nasc, email, sexo) 
    values (1,'Josiel Jardim',1974,'josiel@provaSQL.com.br','M');

insert into tb_aluno (codigo_aluno, nome_aluno, ano_nasc, email, sexo) 
    values (2,'Ana Maria',1980,'ana@provaSQL.com.br','F');

insert into tb_aluno (codigo_aluno, nome_aluno, ano_nasc, email, sexo) 
    values (3,'João Pedro',1979,'joao@provaSQL.com.br','M');

Tabela tb_curso

insert into tb_curso (codigo_curso, nome_curso)
    values (1,'Medicina');

insert into tb_curso (codigo_curso, nome_curso)
    values (2,'Arquitetura');

insert into tb_curso (codigo_curso, nome_curso)
    values (3,'Filosofia');

insert into tb_curso (codigo_curso, nome_curso)
    values (4, 'Informatica');

insert into tb_curso (codigo_curso, nome_curso)
   values (5,'Jornalismo');

Tabela tb_matricula

insert into tb_matricula (codigo_curso, codigo_aluno)  
    values (1,1);

insert into tb_matricula (codigo_curso, codigo_aluno)  
    values (1,2);

insert into tb_matricula (codigo_curso, codigo_aluno)  
    values (2,3);

insert into tb_matricula (codigo_curso, codigo_aluno)  
    values (5,3);

Resolução da Prova Prática

1ª Questão

Faça um comando SQL para matricular o aluno "Pedro César" no curso de informática.Os dados devem ser inseridos na tabela TB_MATRÍCULA.
select * from tb_aluno
insert into tb_aluno(codigo_aluno, nome_aluno, ano_nasc, email, sexo)
values ('4', 'Pedro César', '1995-06-04', 'pedro@provaSQL.com.br', 'M')
select * from tb_matricula
insert into tb_matricula(codigo_curso, codigo_aluno)
values ('4', '4')

Resultado

2ª Questão

Escreva um comando SQL que retorne os nomes dos alunos e do(s) cursos em que estão matriculados.Os dados devem estar ordenados pelo nome do curso.
select tb_aluno.nome_aluno, tb_curso.nome_curso
from tb_aluno
inner join tb_matricula
on tb_aluno.codigo_aluno = tb_matricula.codigo_aluno
inner join tb_curso
on tb_curso.codigo_curso = tb_matricula.codigo_curso

Resultado

3ª Questão

Crie um comando SQL que retorne o e-mail de todos os alunos maiores de idade.
select email
from tb_aluno where 2022 - ano_nasc >= 18

Resultado

4ª Questão

Desenvolva um comando SQL que mostre o total de alunos.v
select count(codigo_aluno)
from tb_aluno

Resultado

5ª Questão

Escreva um comando SQL para listar o total de alunos matriculados em cada curso.
select tb_curso.nome_curso,
codigo_curso + codigo_aluno as numero_alunos
from tb_curso
inner join tb_aluno
on tb_aluno.codigo_aluno = tb_curso.codigo_curso

Resultado

6ª Questão

Desenvolva um comando SQL que retorna o nome de todos os alunos maiores que 18 anos.
select nome_aluno
from tb_aluno where 2022 - ano_nasc >= 18

Resultado

7ª Questão

Faça um comando SQL que retorna o nome de todas as mulheres.
select nome_aluno, sexo
from tb_aluno where sexo = 'F'

Resultado

8ª Questão

Faça um comando SQL que retorna o nome de todas as mulheres matriculadas no curso de Medicina.
select tb_aluno.nome_aluno as mulheres_em_medicina
from tb_aluno
inner join tb_matricula
on tb_matricula.codigo_aluno = tb_aluno.codigo_aluno
and tb_matricula.codigo_curso = 1
and tb_aluno.sexo = 'F'

Resultado

9ª Questão

Faça um comando SQL que retorna os nomes dos cursos ordenados por ordem alfabética.
select nome_curso
from tb_curo order by nome_curso asc

Resultado

10ª Questão

Crie o enunciado de uma consulta SQL que utiliza "junção" (com resposta). Selecione o nome e o curso dos alunos de sexo feminino que estão matriculados no curso de medicina.
select nome_aluno, tb_curso.nome_curso as nome_curso from tb_aluno
inner join tb_curso on tb_curso.nome_curso = 'MEDICINA'
where sexo = 'F'

Resultado

Resolução das questões teóricas

1ª Questão: Defina: SQL

SQL é uma linguagem padrão para trabalhar com bancos de dados relacionais. Ela é uma linguagem declarativa e que não necessita de profundos conhecimentos de programação para que alguém possa começar a escrever queries, as consultas e pedidps, que trazem resultados de acordo com o que você está buscando. SQL significa Standard Query Language, literalmente a linguagem padrão para realizar queries.

A linguagem SQL é utilizada de maneira relativamente parecida entre os principais bancos de dados relacionais do mercado: Oracle, MySQL, MariaDB, PostgreSQL, Microsoft SQL Server, entre muitos outros. Cada um tem suas características, sendo o MySQL e o PostgreSQL extremamente populares por possuírem versões gratuitas e de código aberto.

2ª Questão: Faça um relacionamento cronológico sobre SQL

Década de 60

Os computadores se tornam parte efetiva do custo das empresas juntamente com o crescimento da capacidade de armazenamento. Foram desenvolvidos dois principais modelos de dados: modelo em rede (CODASYL - Comitee for Data Systems Language) e o modelo hierárquico (IMS – Information Management System). O acesso ao BD é feito através de operações de ponteiros de baixo nível que unem (link) os registros. Detalhes de armazenamento dependiam do tipo de informação a ser armazenada, desta forma, a adição de um campo extra necessitava de uma reescrita dos fundamentos de acesso/modificação do esquema. Os usuários precisavam conhecer a estrutura física do BD para poder realizar uma consulta.

Década de 70

Muitas discussões a respeito do valor da competição entre os sistemas enquanto a teoria de banco de dados conduz ao objetivo final de projeto de pesquisa. Dois principais protótipos de sistema relacional foram desenvolvidos entre 1974 e 1977 e demonstram um ótimo exemplo de como a teoria conduz a boas práticas.

Década de 80

A Linguagem Estruturada de Consulta – SQL (Structured Query Language) se torna um padrão mundial. A IBM transforma o DB2 como carro chefe da empresa em produtos para BD. Os modelos em rede e hierárquico passam a ficar em segundo plano praticamente sem desenvolvimentos utilizando seus conceitos, porém vários sistemas legados continuam em uso. O desenvolvimento do IBM PC desperta muitas empresas e produtos de BD como: RIM, RBASE 5000, PARADOX, OS/2 Database Manager, Dbase III e IV (mais tarde transformado em FoxBase e mais tarde ainda como Visual FoxPro), Watcom SQL, entre outros.

Década de 90

Tem início uma leve crise econômica nas indústrias e algumas empresas sobrevivem oferecendo alguns produtos a custos muito elevados. O modelo cliente-servidor (client-server) passa a ser uma regra para futuras decisões de negócio e vemos o desenvolvimento de ferramentas de produtividade como Excel/Access (Microsoft) e ODBC, também é marcado como o início dos protótipos de Object Database Management Systems (ODBMS). É quando vemos a explosão da Internet./WWW e uma louca corrida para prover acesso remoto a sistemas de computadores com dados legados. Percebe-se um crescimento exponencial na tecnologia Web/BD. Aumentam o uso de soluções de código aberto (open source) através de gcc, cgi, Apache, MySQL, etc.

Século 21

Vemos a decadência da indústria da Internet de uma maneira geral, mas sólidos crescimentos em aplicações para BD continuam. Aparecem mais aplicações que interagem com PDAs (Personal Digital Assistant), transações em PDVs, consolidação de vendas, etc. Três companhias predominam no amplo mercado de BD: IBM (que comprou a Informix), Microsoft e Oracle.

3ª Questão: Liste as principais características do SQL

Sintaxe dos comandos o mais próximo possível da lingua natural inglesa;
Não procedimental: indica-se a informação que se pretende obter sem qualquer preocupação em "como se vai obter". O utilizador não se preocupa com o método de acesso aos dados que fica a cargo do SGBD;
Trabalha com conjuntos de registos e não com um registo de cada vez. Não existem comandos como "Next record" ou "Previus record";
É utilizada tanto pelos utilizadores normais como pelo DBA (Database Administrator);

4ª Questão: Descreva a sintaxe do comando SQL: SELECT. Quais cláusulas são obrigatórias e quais são?

O comando SELECT é usado para extrair os dados das tabelas de um banco de dados. Ele pode extrair dados de uma ou mais tabelas ao mesmo tempo, executando desde consultas simples até comandos mais complexos, fazendo buscas, junções, filtros comparativos, ordenações e diversos outros itens.

5ª Questão: Qual a importância da linguagem SQL no desenvolvimento de softwares atualmente? Justifique.

O SQL Server, criado pela Microsoft, é muito conhecido e utilizado no mercado. A linguagem usada nessa ferramenta é o T-SQL, e oferece recursos avançados e diferenciados para facilitar a atualização de dados e o armazenamento das informações de forma segura e confiável. O SQL Server atua com sistemas integrados de criptografia, permitindo que a visualização ou alteração das informações sejam feitas apenas pelas pessoas responsáveis, o que garante ainda mais segurança e tranquilidade para os usuários e empresários. É uma alternativa comumente utilizada em lojas online, instituições governamentais, bancos e fábricas dos mais diversos portes.