############################################ ##########Codigo para hospede############### ############################################ create table Hospede ( DataNasc date, CodCPFHosp varchar2(11) NOT NULL, Nome Varchar2(30) NOT NULL, Sexo char(1), DDD1 number(3,0), Tel1 number (8,0), DDD2 number(3,0), Tel2 number(8,0), Primary Key (CodCPFHosp)); ############################################ #########Codigo para Reserva################ ############################################ create table Reserva( DatEnt date NOT NULL, DatSai date NOT NULL, CodCPFHosp varchar2(11) NOT NULL, CodNumQuarto number(5,0) NOT NULL, Foreign Key (CodCPFHosp) References Hospede, Foreign Key (CodNumQuarto) References Quarto ); ################################################## #############Codigo Subordinado################### ################################################## create table Subordinado ( CodCPFSUb varchar2(11) NOT NULL, Nome varchar2(30) NOT NULL, Sexo char(1), DDD1 number(3,0), Tel1 number (8,0), DDD2 number(3,0), Tel2 number(8,0), Cargo varchar2(20) NOT NULL, NumCartTrab varchar2(11) NOT NULL, DataAdm date NOT NULL, Salario number (5,0) NOT NULL, Logradouro varchar2(30), Cidade varchar2(20), Bairro varchar2(10), Complemento varchar2(20), CodCPFGer varchar2(11), Primary Key (CodCPFSub), Unique (NumCartTrab), Foreign Key (CodCPFGer) References Gerente); #################################################### ################Código Gerente###################### #################################################### create table Gerente ( CodCPFGer varchar2(11) NOT NULL, Nome varchar2(30) NOT NULL, Sexo char(1), DDD1 number(3,0), Tel1 number (8,0), DDD2 number(3,0), Tel2 number(8,0), NumCartTrab varchar2 (11) NOT NULL, DataAdm date NOT NULL, Salario number (5,0) NOT NULL, Logradouro varchar2(30), Cidade varchar2(20), Bairro varchar2(10), Complemento varchar2(20), Primary key (CodCPFGer), Unique (NumCartTrab)); #################################################### ##############Código Quarto######################### #################################################### create table Quarto ( CodNumQuarto number(5,0) NOT NULL, Tipo varchar2(20) NOT NULL, Capacidade number(5,0) NOT NULL, Primary Key (CodNumQuarto)); #################################################### ##################Código ValorDiaria################ #################################################### create table ValorDiaria ( Capacidade number (5,0) NOT NULL, Tipo Varchar2(20) NOT NULL, Valor number (5,0)); ##################################################### ###########Código Servico############################ ##################################################### create table Servico ( CodIDServ number(5,0) NOT NULL, Tipo varchar2(20) NOT NULL, Preco number (5,0), CodCPFGer varchar2(11) NOT NULL, Primary Key (CodIDServ), Foreign Key (CodCPFGer) references Gerente); ###################################################### ###########Código Solicita############################ ###################################################### create table Solicita ( CodIDServ number(5,0) NOT NULL, CodCPFHosp varchar2(11) NOT NULL, foreign key (CodIDServ) references Servico, foreign Key (CodCPFHosp) references Hospede); ###################################################### ###########Código para Quantidade de quartos totais### ###################################################### select max(CodNumQuarto) from quarto ###################################################### ###########Código para Procurar um hospede############ ###################################################### select * from hospede where nome like 'Nome%'; ###################################################### ##############Código para Procurar o menor salário#### ###################################################### select min (salario) from ((select salario from subordinado) union (select salario from gerente)); ###################################################### ##############Código para Procurar o maior salário#### ###################################################### select max (salario) from ((select salario from subordinado) union (select salario from gerente)); ###################################################### #########Código para Quantidade de funcionários####### ###################################################### select count(*) as Quantidade_Funcionarios from ((select codcpfsub from subordinado) union (select codcpfger from gerente)); ####################################################################### ####Codigo para funcionarios com salário maior q determinado valor##### ####################################################################### select nome from ((select nome, salario from subordinado) union (select nome, salario from gerente)) where salario > determine o valor!; ####################################################################### ########Quantidade de Gerentes######################################### ####################################################################### select count(*) as Quantidade_Gerentes from gerente; ####################################################################### ###########Código para Soma dos salario (folha de pagamento)########### ####################################################################### select sum (salario) as Total_Salarios from ((select codcpfsub, salario from subordinado) union (select codcpfger, salario from gerente)); ####################################################################### ################Codigo para média dos salarios######################### ####################################################################### select avg (salario) as Media_Salarios from ((select codcpfsub, salario from subordinado) union (select codcpfger, salario from gerente)); ####################################################################### ################Codigo para quartos ocupados########################### ####################################################################### select CodNumQuarto from reserva where (datent between '10/10/2008' and '11/11/2008' or datsai between '10/10/2008' and '11/11/2008'); ###################################################### ##########Código para Quartos livres (relação)######## ###################################################### select CodNumQuarto from reserva where (datent not between '10/10/2008' and '11/11/2008' and datsai not between '10/10/2008' and '11/11/2008'); ###################################################### ##########Capacidade de quartos e reservas############ ###################################################### select a.capacidade from quarto a, reserva b where a.codnumquarto = b.codnumquarto; ##################################################### #########Left outer join############################# ##################################################### select h.nome, r.codnumquarto from hospede h left outer join reserva r on h.codcpfhosp = r.codcpfhosp; ##################################################### #########Right Outer Join############################ ##################################################### select h.nome, r.codnumquarto from hospede h right outer join reserva r on h.codcpfhosp = r.codcpfhosp; ##################################################### #########Full Outer Join############################# ##################################################### select h.nome, r.codnumquarto from hospede h full outer join reserva r on h.codcpfhosp = r.codcpfhosp; ##################################################### #########Intersect################################### ##################################################### select codnumquarto from quarto intersect (select codnumquarto from reserva); ##################################################### #########Minus####################################### ##################################################### select capacidade from quarto minus (select max(capacidade) from quarto); ##################################################### #########IN####################################### ##################################################### select nome , tel1 from hospede where tel1 in ('37625481','34566786'); ##################################################### #########NOT IN####################################### ##################################################### select nome , tel1 from hospede where tel1 not in ('37625481','34566786'); ##################################################### #########GROUP BY####################################### ##################################################### select cargo,max(salario) from subordinado group by cargo; ##################################################### #########ORDER BY####################################### ##################################################### select cargo, salario from subordinado order by salario; ##################################################### #########NOT LIKE####################################### ##################################################### select * from hospede where nome not like 'Nome%'; ##################################################### #########NOT NULL####################################### ##################################################### select nome, tel2 from hospede where tel2 is not null; ##################################################### #########NULL####################################### ##################################################### select nome, tel2 from hospede where tel2 is null; ##################################################### #########SOME####################################### ##################################################### select a.nome, a.salario from subordinado a where a.salario > SOME ( select salario from gerente); ##################################################### #########ANY####################################### ##################################################### select a.nome, a.salario from subordinado a where a.salario > ANY ( select salario from gerente); ##################################################### #########EXISTS####################################### ##################################################### select nome from hospede where exists ( select tel2 from hospede a where a.nome like 'Camila%'); ##################################################### #########NOT EXISTS####################################### ##################################################### select nome from hospede where not exists ( select tel2 from hospede a where a.nome like 'Camila'); ##################################################### #########HAVING####################################### ##################################################### select cargo,max(salario) from subordinado group by cargo having max(salario) > 600; GRANT grant all privileges on quarto to public; Revoke revoke all privileges on quarto from public; Operadores select valor-10 as Diarias_Com_Desconto from ValorDiaria; FOR (colocar mais um na tabela) Não esquecer que tabela teste_1: create table teste_1 (valor number(10,0)); create sequence novoValor increment by 1; declare cursor apontador is select * from quarto; begin for apont in apontador loop insert into teste_1 values(novoValor.nextval); end loop; end; / ---------------trigger----------------- CREATE OR REPLACE TRIGGER salario_update BEFORE UPDATE ON gerente FOR EACH ROW BEGIN IF( :old.salario > :new.salario) THEN DBMS_OUTPUT.PUT_LINE('Voce nao pode diminuir o salario do funcionario'); END IF; END; --------------update-------------------- update gerente set salario = 1000 where codcpfger = 00000000010; --------------function, variavel, ALL, consulta aninhada, DISTINCT, alias--- CREATE OR REPLACE FUNCTION maior_salario_gerente RETURN NUMBER IS maior gerente.salario%TYPE; BEGIN SELECT G.salario into maior FROM gerente G WHERE G.salario > ALL ( SELECT DISTINCT salario FROM gerente H WHERE G.salario <> H.salario); RETURN maior; END; ----uso da function, alias?-- select nome, salario as maior_salario from gerente where salario = maior_salario_gerente; ---------------procedure, while--------- CREATE OR REPLACE PROCEDURE criarQuartos(inicio NUMBER, numQuartos NUMBER) IS contador NUMBER; BEGIN contador := 0; IF(numQuartos > 0) THEN WHILE (contador < numQuartos) LOOP INSERT INTO quarto VALUES((inicio + contador),'simples','3'); DBMS_OUTPUT.PUT_LINE('voce inseriu um novo quarto numero: ' || (inicio + contador)); contador := contador + 1; END LOOP; END IF; commit; END; ----- uso do procedure ----- execute criarQuartos(200,2); -------------registro, cursor, loop--------------------------- CREATE OR REPLACE PROCEDURE listarPreco IS CURSOR quartoCursor IS SELECT Q.codnumquarto as numero, V.valor as valor from quarto Q, valordiaria V WHERE Q.tipo = V.tipo AND Q.capacidade = V.capacidade; quartoReg quartoCursor%ROWTYPE; BEGIN OPEN quartoCursor; LOOP FETCH quartoCursor INTO quartoReg; EXIT WHEN quartoCursor%NOTFOUND; DBMS_OUTPUT.PUT_LINE( quartoReg.numero || ' ' || quartoReg.valor); END LOOP; CLOSE quartoCursor; END; ----------------------------------GOTO--------------------------------- declare cont number(10,0); begin select max(capacidade) into cont from quarto; if cont = 5 then goto quarto_media; elsif cont >5 then goto quarto_otimo; else goto quarto_min; end if; <> dbms_output.put_line ('Maior quarto é:' || cont); dbms_output.put_line ('Instalações médias...'); goto fim; <> dbms_output.put_line ('Maior quarto é:' || cont); dbms_output.put_line ('Instalações Ótimas! Continue assim!'); goto fim; <> dbms_output.put_line ('Maior quarto é:' || cont); dbms_output.put_line ('Instalações mínimas! MELHORE!'); <> dbms_output.put_line ('Agora Acabou...'); end; _------------------------Exception--------------------------- declare int quarto.capacidade%type; begin select max(capacidade)/0 into int from quarto; exception when zero_divide then dbms_output.put_line('nao pode dividir por zero!'); end;