LMD

=Linguagens de Manipulação de Dados=

[|slides Álgebra Relacional]

[|slides SQL]


 * Grupo 3 - 5 de outubro **

Consultas sobre Banco e Clínica usando Álgebra Relacional // Banco branch (branch-name, branch-city, assets) // //customer (customer-name, customer-street, customer-////only)// //account (account-number, branch-name, balance) // //loan (loan-number, branch-name, amount) // //depositor (customer-name, account-number) // //borrower (customer-name, loan-number) // p  Consultas Determinar todos os empréstimos superiores a $1200 p Encontrar os números dos empréstimos de montante superior a $1200 p Listar os nomes de todos os clientes que têm um empréstimo, uma conta, ou ambas as coisas p <span style="font-family: Verdana,Geneva,sans-serif; font-size: 12pt;"> Encontrar os clientes que têm um empréstimo e uma conta no banco Determinar todos os clientes que têm um empréstimo na agência de Perryridge <span style="color: #666600; font-family: Verdana,Geneva,sans-serif; font-size: 12pt; left: -3.65%; position: absolute; top: 0.3em;">p <span style="font-family: Verdana,Geneva,sans-serif; font-size: 12pt;">Listar os nomes dos clientes que possuem um empréstimo na agência de Perryridge mas que não tem nenhuma conta no banco Determinar todos os clientes que têm um empréstimo na agência de Perryridge <span style="color: #666600; font-family: Verdana,Geneva,sans-serif; font-size: 12pt; left: -4.09%; position: absolute; top: 0.55em;">p <span style="font-family: Verdana,Geneva,sans-serif; font-size: 12pt;">Determinar o saldo mais elevado entre todas as contas

//Clínica médicos(////__nEmpr__////,nomeM,especialidade)// //pacientes(////__nBI__////,nomeP,telefone,morada,idade)// //fármacos(////__codF__////,nomeF)// //consultas(////__nConsulta__////,data,nBI,nEmpr)// //receitas(////__codF,nConsulta__////,quantidade)//

Consultas Quais os pacientes com mais de 50 anos de idade? <span style="color: #666600; font-family: Verdana,Geneva,sans-serif; font-size: 12pt; left: -3.61%; position: absolute; top: 0.3em;">p <span style="font-family: Verdana,Geneva,sans-serif; font-size: 12pt;">Quais os nomes dos pacientes com mais de 50 anos de idade? <span style="color: #666600; font-family: Verdana,Geneva,sans-serif; font-size: 12pt; left: -3.77%; position: absolute; top: 0.3em;">p <span style="font-family: Verdana,Geneva,sans-serif; font-size: 11.16pt;">Quais os fármacos que já foram receitados em consultas da clínica? <span style="color: #666600; font-family: Verdana,Geneva,sans-serif; font-size: 12pt; left: -4.21%; position: absolute; top: 0.3em;">p <span style="font-family: Verdana,Geneva,sans-serif; font-size: 12pt;">Quais os fármacos que nunca foram receitados? <span style="color: #666600; font-family: Verdana,Geneva,sans-serif; font-size: 12pt; left: -4.21%; position: absolute; top: 0.3em;">p <span style="font-family: Verdana,Geneva,sans-serif; font-size: 12pt;">Qual a idade do paciente mais velho? <span style="color: #666600; font-family: Verdana,Geneva,sans-serif; font-size: 12pt; left: -4.21%; position: absolute; top: 0.3em;">p <span style="font-family: Verdana,Geneva,sans-serif; font-size: 12pt;">E quais os (nomes dos) pacientes com essa idade?

**Respostas:**


<span style="font-family: 'Times New Roman',Times,serif; font-size: 14pt;">**Grupo 7 - 5 de outubro ** <span style="font-family: Verdana,Geneva,sans-serif; font-size: 12pt;"> <span style="font-family: Verdana,Geneva,sans-serif; font-size: 12pt;"> Consultas sobre Banco e Clínica usando SQL

CREATE TABLE branch ( branch-name var-char(80), branch-city varchar(8), assets integer );

CREATE TABLE customer ( customer-name varchar(255), customer-street varchar(255), customer-only integer );

CREATE TABLE account ( account-number integer, branch-name varchar(80), balance integer );

CREATE TABLE loan ( loan-number integer, branch-name varchar(80), amount integer );

CREATE TABLE depositor ( customer-name varchar(255), account-number integer );

CREATE TABLE borrower ( customer-name varchar(255), loan-number integer ); code /* Determinar todos os emprestimos superiores a $1200 */ SELECT * FROM loan WHERE amount > 1200;

/*Encontrar os números dos empréstimos de montante superior a $1200*/ SELECT loan-number FROM loan WHERE amount > 1200;

/*Listar os nomes de todos os clientes que tem um emprestimo, uma conta, ou ambas as coisas*/ SELECT depositor.customer-name, borrower.customer-name FROM depositor, borrower;

/*Encontrar os clientes que tem um empréstimo e uma conta no banco.*/ SELECT depositor.customer-name FROM depositor, borrower WHERE depositor.customer-name = borrower.customer-name;

/*Determinar todos os clientes que têm um empréstimo na agência de Perryridge.*/ SELECT borrower.customer-name FROM loan, borrower WHERE loan.branch-name = 'Perryridge' AND loan.loan-number = borrower.loan-number;

/*Listar os nomes dos clientes que possuem um empréstimo na agência de Perryridge mas que não tem nenhuma conta no banco.*/ SELECT depositor.customer-name FROM depositor, account WHERE depositor.account-number = account.account-number AND account.branch-name <> 'Perryridge' AND depositor.customer-name IN   (SELECT borrower.customer-name    FROM loan, borrower    WHERE loan.branch-name = 'Perryridge' AND loan.loan-number = borrower.loan-number);

/*Determinar o saldo mais elevado entre todas as contas*/ SELECT MAX(balance) FROM account;

code

Clínica:
Criação das tabelas: CREATE TABLE medicos ( nEmpr integer NOT NULL, nomeM character varying NOT NULL, especialidade character varying NOT NULL, CONSTRAINT "medicos_pkey" PRIMARY KEY (nEmpr) );

CREATE TABLE pacientes ( nBI integer NOT NULL, nomeP character varying NOT NULL, telefone serial NOT NULL, morada character varying NOT NULL, idade integer NOT NULL, CONSTRAINT "pacientes_pkey" PRIMARY KEY (nBI) );

CREATE TABLE farmacos ( codF serial NOT NULL, nomeF character varying NOT NULL, CONSTRAINT "farmacos_pkey" PRIMARY KEY (codF) );

CREATE TABLE consultas ( nConsulta integer NOT NULL, data character varying NOT NULL, nBI integer NOT NULL, nEmpr integer NOT NULL, CONSTRAINT "consultas_pkey" PRIMARY KEY (nConsulta) ); CREATE TABLE receitas ( codF serial NOT NULL, nConsulta integer NOT NULL, quantidade integer NOT NULL, CONSTRAINT "receitas_pkey" PRIMARY KEY (codF, nConsulta) ); code /*Quais os pacientes com mais de 50 anos de idade?*/ SELECT * FROM pacientes WHERE idade > 50;

/*Quais os nomes dos pacientes com mais de 50 anos de idade?*/ SELECT nomeP FROM pacientes WHERE idade > 50;

/*Quais os fármacos que já foram receitados em consultas da clínica?*/ SELECT nomeF FROM fármacos WHERE codF IN (Select codF From receitas);

/*Quais os fármacos que nunca foram receitados?*/ SELECT * FROM fármacos WHERE codF NOT IN (Select codF From receitas);

/*Qual a idade do paciente mais velho?*/ SELECT MAX(idade) FROM pacientes;

/*E quais os (nomes dos) pacientes com essa idade?*/ SELECT nomeP FROM pacientes WHERE idade = (SELECT MAX(idade) FROM pacientes); code