You are on page 1of 16

UNIVERSIDADE ESTADUAL DO RIO DE JANEIRO

INSTIRUIÇÃO DA ZONA OESTE FCEE –


FACULDADE
DE CIÊNCIAS EXATAS E ENGENHARIAS

FELIPE MAGALHÃES MENDES


MATRICULA: 2013332020

BANCO DE DADOS 3
CARLOS AUGUSTO SICSÚ
INTRODUÇÃO
Este trabalho tem como intuito principal, a fixação do conteúdo de criação de funções em
SQL, com a criação de tabelas para reforçar o conhecimento já adquiridos em matérias
anteriores e praticar com dinâmica os tópicos abordados em aula.
Trabalho valendo 2.0 pontos para AV1
Criando as tabelas
Create table curso (
idCurso numeric(3) not null,
nomeCurso varchar(15),
primary key(idCurso)
);

insert into curso values (10, 'História');


insert into curso values (20, 'Geografia');
insert into curso values (30, 'Filosofia');
insert into curso values (40, 'Sociologia');
insert into curso values (50, 'Matemática');

Create table alunos (


matriculaAlunos numeric(7) not null,
nomeAlunos varchar(15),
idCurso numeric(3),
primary key (matriculaAlunos),
foreign key (idCurso) references curso(idCurso)
);

insert into alunos values (123456, 'Lucas', 10);


insert into alunos values (654321, 'Marcelly', 10);
insert into alunos values (132564, 'Luisa', 20);
insert into alunos values (132546, 'Marcos', 20);
insert into alunos values (132654, 'Davi', 30);
insert into alunos values (132645, 'Melyssa', 30);
insert into alunos values (126543, 'Larissa', 40);
insert into alunos values (126534, 'Lucas', 40);
insert into alunos values (154632, 'Samuel', 50);
insert into alunos values (154623, 'Laura', 50);

Create table disciplina (


idDisciplina numeric(3) NOT NULL,
nomeDisciplina varchar(25),
ementaDisciplina varchar(4000),
idCurso numeric(3),
PRIMARY KEY (idDisciplina),
FOREIGN KEY (idCurso) references curso(idCurso)
);

insert into disciplina values (1,'Colonização', ' A Colonização foi o período em que o governo
português instalou parte do seu reino no Brasil. ', 10);
insert into disciplina values (2,'Climas do Brasil', ' Identifica-se seis tipos de climas no Brasil,
sob a influência de diversos fatores climáticos, dentre os quais se destacam latitude, massas
de ar e maritimidade. ', 20);
insert into disciplina values (3,'Filosofia política', ' Filosofia política é uma vertente da
filosofia cujo objetivo é estudar as questões a respeito da convivência entre o ser humano e as
relações de poder. ', 30);
insert into disciplina values (4,'Pensamentos modernos', ' pensamento moderno põe o homem
numa situação cujo limite é marcado pela relação bipolar entre uma coisa que pensa e uma
coisa palpável, que se mensura, que se observa e que possui extensão. ', 40);
insert into disciplina values (5,'Cálculo', ' analisar, qualitativamente ou quantitavamente,
variações que ocorrem em fenômenos que abrigam uma ou mais componentes de natureza
essencialmente física. ', 50);

Create table matriculado (


notaAluno numeric(3) not null,
idCurso numeric(3),
idDisciplina numeric(3),
matriculaAlunos numeric(7),
foreign key (idCurso) references curso(idCurso),
foreign key (idDisciplina) references disciplina(idDisciplina),
foreign key (matriculaAlunos) references alunos(matriculaAlunos)
);

insert into matriculado values (10, 10, 1, 123456);


insert into matriculado values (9, 10, 1, 654321);
insert into matriculado values (4, 20, 2, 132564);
insert into matriculado values (8, 20, 2, 132546);
insert into matriculado values (9, 30, 3, 132654);
insert into matriculado values (10, 30, 3, 132645);
insert into matriculado values (2, 40, 4, 126543);
insert into matriculado values (8, 40, 4, 126534);
insert into matriculado values (2, 50, 5, 154632);
insert into matriculado values (1, 50, 5, 154623);

Create table alunos_turma (


idTurma numeric(3) not null,
matriculaAlunos numeric(7),
idDisciplina numeric(3),
constraint id_turma unique (idTurma),
foreign key (matriculaAlunos) references alunos(matriculaAlunos),
foreign key (idDisciplina) references disciplina(idDisciplina)
);

insert into alunos_turma (idTurma) values (111);


insert into alunos_turma (idTurma) values (222);
insert into alunos_turma (idTurma) values (333);
insert into alunos_turma (idTurma) values (444);
insert into alunos_turma (idTurma) values (555);

01)
create or replace function TamanhoString(f_texto in varchar) -- Criando a função
return numeric
is
v_tamanho numeric; -- criando a variável que vai retornar o tamanho.
Begin
v_tamanho := length(f_texto); -- colocando o tamanho do texto na variável
return v_tamanho; -- pedindo pra retornar
End;
Begin
dbms_output.put_line(TamanhoString('O cachorro comeu o chinelo'));
End;

Resultado:
Statement processed.
26

02)
Create or replace function ConverteParaMaiusculo(f_texto in varchar) -- Criando a função
return varchar
is
v_maiusculo varchar(3000); -- Criando a variável que retorna
Begin
v_maiusculo := upper(f_texto); -- Colocando na variável
return v_maiusculo; -- Retornando a variável com as infos que pedem
End;
Begin
dbms_output.put_line(ConverteParaMaiusculo('O cachorro comeu o chinelo'));
End;

RESULTADO:
Statement processed.
O CACHORRO COMEU O CHINELO
03)
create or replace function data_form(f_dia in numeric, f_mes in numeric, f_ano in numeric)
return varchar
is
v_data_char varchar (50);
v_mes_extenso varchar (200);

Begin
Select to_char(to_date(f_mes,'MM'),'Mounth')
into v_mes_extenso
from dual;
v_data_char :='dia' || to_char (f_dia) || 'de' || v_mes_extenso || 'de' || to_char (f_ano);
return v_data_char;
End;
BEGIN
DBMS_OUTPUT.PUT_LINE(data_form(12,03,2008));
END;

Resultado:
Statement processed.
dia 12 de March de 2008

04)

create or replace function vel_rede(t_velocidade in numeric)


return varchar
is
v_padrao varchar(50);
Begin
v_padrao := case t_velocidade
when 10 then 'Ethernet ( 10 base T)'
when 100 then 'Fast Ethernet (100 base T)'
when 1000 then 'Giga Ethernet (1000 base T)'
else 'Padrão Inexistente'
End;
return v_padrao;
End;

Begin
dbms_output.put_line(vel_rede(2000));
End;

Resultado:
Statement processed.
Padrão Inexistente

05)
create or replace function conversor(f_minutos in numeric)
return numeric
is
v_hora numeric;
Begin
v_hora := trunc (f_minutos / 60);
return v_hora;
End;
Begin
dbms_output.put_line(conversor(150) || ' hora(s)');
End;

Resultado:
Statement processed.
2 hora(s)

06)
Create or replace function numero_salario(f_salario in numeric)
return numeric
is
v_qtd_salario numeric;
v_salario_minimo numeric := 1320;

Begin
v_qtd_salario := trunc(f_salario / v_salario_minimo);
return v_qtd_salario;
End;

Begin
dbms_output.put_line(numero_salario(10000)||' salários');
End;

Resultado:
Statement processed.
7 salários

07)
create or replace function num_disciplinas(f_idCurso in numeric)

return numeric

is

v_numero_disciplinas numeric;

Begin

select count(idDisciplina) into v_numero_disciplinas

from disciplina

where idCurso = f_idCurso;


return v_numero_disciplinas;

End;

Begin

dbms_output.put_line (num_disciplinas(50));

End;

Resultado:
Statement processed.
1

08)
create or replace function num_alunos(f_nomeCurso in numeric)
return numeric
is
v_numero_alunos numeric;

Begin
select count(matriculaAlunos) into v_numero_alunos
from alunos
where idCurso in (select idCurso from curso where nomeCurso = f_nomeCurso);
return v_numero_alunos;
End;

Begin
dbms_output.put_line (num_alunos('História'));
End;

Resultado:
Statement processed.
2

09)
create or replace function numeros_alunos(f_idCurso in numeric, f_idDisciplina in numeric)
return numeric
is
v_informacao numeric := 0;
Begin
select count(distinct matriculaAlunos) into v_informacao
from matriculado
where idCurso = f_idCurso and idDisciplina = f_idDisciplina;
return v_informacao;
END;

Begin
DBMS_OUTPUT.PUT_LINE(numeros_alunos(20,2));
End;

Resultado:
Statement processed.
2
10)
Create or replace function numeros_alunos(f_matriculaAluno in numeric, f_idCurso in
numeric, f_idDisciplina in numeric)
return numeric
is
v_informacao numeric := 0;
Begin
select count(distinct matriculaAlunos) into v_informacao
from matriculado
where matriculaAlunos = f_matriculaAluno and idCurso = f_idCurso and idDisciplina =
f_idDisciplina;
return v_informacao;
End;

Begin
DBMS_OUTPUT.PUT_LINE(numeros_alunos(123456,10,1));
End;

Resultado:
Statement processed.
1
11)
create or replace function nome_alunos(f_nomeDisciplina in varchar, f_nomeAluno in
varchar)
return varchar
is
v_nome varchar(20);
Begin
select nomeAlunos into v_nome
from alunos
where idCurso in (select idCurso from disciplina where nomeDisciplina =
f_nomeDisciplina and nomeAlunos <> f_nomeAluno);
return v_nome;
end;

Begin
DBMS_OUTPUT.PUT_LINE(nome_alunos('Climas do Brasil', 'Luisa'));
End;

Resultado:
Statement processed.
Marcos
CONCLUSÃO
Utilizei esse traabalho pra estudar pra prova e me deu muita noção de SQL,
tive bastante dificuldades na criação de funções mas com ajuda de alguns
colegas consegui desenvolver o trabalho.
BIBLIOGRAFIA
usei esse site para verificar as sintaxes e como escrever melhor o código ->
https://www.tutorialspoint.com/sql/sql-syntax.htm

Material de aula (Slides)

You might also like