Buscar

Aula_SQL_Parte_1

Prévia do material em texto

Fundamentos de Banco de 
Dados: 
SQL
Profa.: Luana Dantas Chagas
 
PostgreSQL
● O PostgreSQL é um SBGD para banco de dados 
relacionais.
● Ele foi desenvolvido na Universidade de Berkeley, 
Califórnia.
● E foi derivado de outro projeto, o Ingres, com o 
desenvolvimento liderado por Michael Stonebraker.
 
PostgreSQL
● O PostgreSQL surgiu em 1995.
● E trata-se de um projeto open source coordenado pelo 
PostgreSQL Global Development Group.
● Estes são desenvolvedores voluntários, espalhados ao 
redor do mundo. 
 
SGBD
● Equipe do PostgreSQL (2006):
 
PostgreSQL
● O projeto é sustentando por doações de usuários e, 
principalmente, patrocínios de empresas.
● O postgreSQL é utilizado em grandes cases de uso 
público no Brasil: 
● Caixa Econômica Federal; 
● Ministério da Saúde (Datasus);
● Serpro;
● Banco do Brasil;
● Metrô de São Paulo;
● Projeto SIVAM (Sistema de Vigilância da Amazônia).
 
SGBD
● O PostgreSQL pode ser obtido através do endereço:
http://www.postgresql.org/
http://www.postgresql.org/
 
PostgreSQL
● Para gerenciar os dados no PostgreSQL utilizamos o 
pgAdmin. 
● Este trata-se de uma ferramenta gráfica para 
administrar o SGBD.
● E, em geral, já é instalada junto com o PostgreSQL.
 
PostgreSQL
● O pgAdmin também pode ser baixado no endereço:
http://www.pgadmin.org/index.php
http://www.pgadmin.org/index.php
 
PostgreSQL
● Ao iniciar o pgAdmin vemos a seguinte interface:
 
PostgreSQL
● O primeiro passo é, então, se conectar ao servidor. 
● Isso acontece porque todo SGBD é, na verdade, um 
servidor de banco de dados.
● No caso, esse servidor trabalha em uma arquitetura 
cliente-servidor.
 
PostgreSQL
● O servidor manipula o armazenamento dos dados.
● O cliente executa a interface com o usuário.
 
PostgreSQL
● É possível que o cliente e o servidor estejam na mesma 
máquina.
● Por padrão, o postgreSQL é configurado para receber 
apenas conexões locais (localhost).
● Atendendo essa situação de servidor e cliente na 
mesma máquina.
 
PostgreSQL
● Para que o postgreSQL receba conexões de outras 
máquinas, é preciso alterar as configurações.
● E fornecer o endereço IP no qual o servidor está 
instalado.
● Além da porta de acesso ao mesmo.
 
PostgreSQL
● Para se conectar ao servidor basta realizar um duplo 
clique sobre o nome do mesmo.
● Nesse momento é solicitada a senha criada durante a 
instalação do postgreSQL: ufersa.
 
PostgreSQL
● Após a conexão ao servidor, é exibida uma árvore 
com as seguintes opções:
● Databases: todos os bancos 
de dados criados no 
servidor.
● Tablespace: qual pasta será 
utilizada para armazenar os 
dados.
● Group roles e login roles: 
define grupos e usuários do 
banco, e o controle de 
acesso.
 
PostgreSQL
● Para criar um banco de dados:
● Clicamos com o botão direito em Databases
● Escolhemos as opções Create e Database. 
 
PostgreSQL
● Um diálogo será exibido. No campo Database, 
escrevemos o nome do banco. Ex.: AulaBD.
 
PostgreSQL
● Ao clicar em “Save”, a base de dados criada passa a 
ser exibida na árvore do servidor.
● Para se conectar ao banco criado, basta clicar sobre 
o nome do mesmo.
 
PostgreSQL
● Para criar tabelas utilizando SQL necessitamos clicar 
na seguinte opção:
● No Query Tool, as consultas SQL são escritas e 
executadas.
● Os resultados são exibidos no Data Output.
 
PostgreSQL
● Editor de consultas (Query Tool):
 
PostgreSQL – Create table
● Para criar uma tabela, digite a consulta no espaço 
destinado para queries e execute. 
create table Aluno (
id_aluno varchar(5),
nome varchar(40),
matricula int,
primary key(id_aluno)
)
 
PostgreSQL – Create table
● Observação!
-Os nomes de tabelas devem iniciar com letra (inclusive 
com diacrítico – ç, á, é...) ou caractere sublinhado.
-Os demais caracteres podem ser letras, sublinhado, 
números ou cifrão.
-O nome de uma tabela pode ser uma palavra reservada, 
contanto que se utilize aspas.
Ex.: 
create table ''create table'' (
coluna int
)
 
PostgreSQL – Insert into
● Para inserir valores na tabela utilizamos o comando 
insert:
insert into Aluno values 
('A01', 'Paula Lopes', 12014)
 
PostgreSQL – Select
● Para ver os valores inseridos na tabela utilizamos o 
comando select:
select * from Aluno
 
PostgreSQL – Insert into
● Para inserir diversos valores de uma só vez na tabela.
● Para tal, cada linha de valor deve estar entre 
parênteses…
● … E separadas por vírgula.
insert into Aluno values 
('A02','Mara de Fátima',22014),
('A04','Paulo Linhares',42014),
('A03','Mário Faria',32014)
 
PostgreSQL – Alter table
● Suponha que precisamos de uma nova coluna na tabela.
● Vamos adicionar a coluna faltas, que será do tipo 
smallint. 
● Para tal, faremos:
alter table Aluno add column faltas smallint
 
PostgreSQL 
● Consultando os dados da tabela, vemos que a nova 
coluna está vazia.
select * from Aluno
 
PostgreSQL - Update
● Para inserir valores na nova coluna, utilizamos a cláusula 
update.
● Combinamos o update com a cláusula where para 
determinar qual linha irá receber o valor. No caso:
update Aluno set faltas = 2 where id_aluno='A01'
 
Exercício
● Suponha que um cliente solicitou um banco para guardar 
informações sobre seus funcionários.
● O cliente necessita saber o código do funcionário, o 
nome do mesmo e o setor em que este trabalha (vendas, 
atendimento ou suporte).
● Crie uma tabela para atender esse cliente e insira pelo 
menos 6 registros na mesma.
● Adicione a coluna Salário.
● Faça com que o salário dos funcionários do setor de 
vendas seja 1 290.70, o do setor de atendimento seja 1 
350.25 e do setor de suporte 1 102.66.
 
Exercício - Resolução
create table Funcionario (
id_f varchar(5),
nome varchar(40),
setor varchar(30),
primary key(id_f)
)
insert into Funcionario values 
('F01','Maria Paula','Vendas'),
(...)
alter table Funcionario add column salario real
update Funcionario set salario = 1290.70 where setor='Vendas'
update Funcionario set salario = 1350.25 where 
setor='Atendimento'
(...)
 
PostgreSQL - Delete
● Para excluir uma linha da tabela fazemos:
delete from Aluno 
where id_aluno='A01'
● No caso, a linha que tiver o atributo id_aluno com o valor 
A01 será excluída.
 
PostgreSQL - Drop
● Já para excluir uma coluna da tabela fazemos:
alter table Aluno 
drop column faltas
● No caso, a coluna faltas da tabela Aluno será excluída.
 
PostgreSQL - Delete
● Para excluir todas as tuplas, fazemos: 
delete from Aluno
● Perceba que ao fazermos um select na tabela não há 
dados:
select * from Aluno
 
PostgreSQL - Drop
● Já para excluir a tabela, utilizamos o seguinte comando:
drop table Aluno
● Perceba que ao fazermos um select na tabela o SGBD 
retornará erro:
select * from Aluno
 
PostgreSQL - Select
● A cláusula select permite selecionar todas as tuplas...
● Ou somente os registros de determinados atributos.
● Por exemplo, para retornar os nomes dos alunos da 
tabela Aluno faríamos:
select nome from Aluno
 
PostgreSQL - Select
● Combinada com a cláusula where, podemos determinar 
condições.
● Que devem ser atendidas pelos dados que serão 
retornados.
● Para determinar as restrições utilizamos operadores: 
● Igual (=);
● Maior que (>);
● Menor que (<);
● Maior ou igual (>=);
● Menor ou igual (<=);
● Entre outros.
 
PostgreSQL - Select
● Vamos inserir uma nova tabela no banco de dados.
● Essa tabela é sobre os produtos de um estabelecimento 
comercial.
● E deve conter:
● Um identificador único para o produto;
● O nome do produto;
● O setor que este é armazenado;
● O preço.
 
PostgreSQL - Select
● Para criarmos essa tabela, fazemos:
create table Produto (
id_produto varchar(5),
nome varchar(40),
setor varchar(30),
preço real,
primary key(id_produto)
)
 
PostgreSQL - Select
● Precisamos inserir valores na tabela. Para tal, faremos:
insert into Produto values 
('P01', 'Maçã', 'Frutas', 5.9),
('P02', 'Banana', 'Frutas', 2.49),
('P03', 'Laranja','Frutas', 3.55),
('P04', 'Sabão em pó', 'Limpeza', 4.87),
('P05', 'Desinfetante', 'Limpeza', 3.25),
('P06', 'Vassoura', 'Limpeza', 12.99)
 
PostgreSQL - Select
● Mais valores:
insert into Produto values 
('P07', 'Pão', 'Padaria', 4.98),
('P08', 'Pastel', 'Padaria', 2.50),
('P09', 'Bolo', 'Padaria', 2.50),
('P010', 'Arroz', 'Cereais', 2.99),
('P011', 'Feijão', 'Cereais', 7.34),
('P012', 'Milho', 'Cereais', 1.29)
 
PostgreSQL - Select
● Utilizando where, podemos determinar diversas 
restrições.
● Por exemplo, podemos solicitar somente tuplas com 
produtos cujo preço seja maior que 5 reais. Para tal:
select * from Produto 
where preço>5
 
PostgreSQL - Select
● Para retornar somente os nomes dos produtos cujo o 
preço é maior que 5 reais fazemos:
select nome from Produto where preço>5
● Se queremos retornar o nome e o preço, basta separar os 
atributos por vírgula:
select nome, preço from Produto where preço>5
 
PostgreSQL - Select
● No caso, a ordem dos atributos na consulta é a ordem 
dos atributos no resultado:
select nome, preço from Produto where preço>5
select preço, nome from Produto where preço>5
 
PostgreSQL - Select
● Podemos também consultar os nomes dos produtos cujo 
preço seja menor que 3 reais. 
● Para tal, utilizamos o <.
select nome from Produto where preço < 3
 
PostgreSQL - Select
● Para retornar somente os nomes do produtos do setor de 
limpeza utilizamos o =.
select nome from Produto where setor='Limpeza'
● Repare que nesse caso o banco distingue maiúscula de 
minúscula, ou seja, limpeza ≠ Limpeza!
 
PostgreSQL - Select
● Para retornar os nomes dos produtos que são do setor 
de padaria e custam menos que 3 reais utilizamos o and.
select nome from Produto
where setor='Padaria' and preço<3
 
PostgreSQL - Select
● Para retornar os nomes e preços dos produtos que são 
do setor de cereais ou de frutas utilizamos o or.
select nome, preço from Produto 
where setor='Padaria' or setor='Frutas' 
 
PostgreSQL - Select
● Para retornar os nomes e os setores dos produtos que 
não estão no setor de limpeza utilizamos o !=.
select nome, setor from Produto 
where setor!='Limpeza'
 
PostgreSQL - Exercício
● Crie uma tabela, denominada Aluno, que tenha os 
seguintes atributos:
● id_aluno: conjunto de caracteres que identifica os 
alunos unicamente.
● Nome: conjunto de caracteres.
● Curso: conjunto de caracteres (BSI ou LCI). 
● Disciplina: conjunto de caracteres.
● Media: número real.
● Faltas: número inteiro.
● Insira pelo menos 10 registros na tabela.
 
PostgreSQL - Exercício
● Utilizando a tabela Aluno:
a) Selecione as tuplas em que o curso é BSI.
b) Selecione as disciplinas que teve alunos aprovados.
c) Selecione as faltas dos alunos reprovados.
d) Selecione o nome e as médias dos alunos do BSI.
e) Selecione os nomes dos alunos determinando o nome 
da disciplina.
f) Selecione os nomes dos alunos que tiveram nota maior 
que 7 e nenhuma falta.
 
PostgreSQL - Select
● Para retornar os nomes dos produtos que começam com 
a letra 'p' utilizamos o operador like.
select nome from Produto 
where nome like 'P%'
● A porcentagem indica qualquer caractere.
 
PostgreSQL - Select
● Vale ressaltar que nesse caso há distinção entre letra 
maiúscula e minúscula.
 
PostgreSQL - Select
● Para ignorar o case sensitive, podemos utilizar funções 
como a upper.
● Ela trata os dados passados por parâmetro como se 
estivessem escritos em maiúsculo.
● Por exemplo, vamos buscar os nomes dos produtos que 
começam com a letra m:
select * from Produto 
where upper(nome) 
like upper('m%') 
 
PostgreSQL - Select
● Alternativamente, pode-se utilizar a função lower para 
converter as letras para minúsculas.
● Existe ainda o operador ILIKE, que ignora o case 
sensitive.
 
PostgreSQL - Select
● Para retornar os nomes que possuam em alguma parte 
da palavra a sequência 'an', utilizamos dois sinais de %.
● No caso,
select nome from Produto where nome like '%an%'
 
PostgreSQL - Select
● O operador like ainda pode ser combinado com o _ para 
indicar a posição do caractere.
● Por exemplo, para retornar os nomes dos produtos cujo 
segundo caractere é 'a' fazemos:
select nome from Produto 
where nome like '_a%'
 
PostgreSQL - Select
● Suponha que queremos retornar os nomes dos produtos 
dos setores 'Frutas' e 'Cereais'. 
● Para tal, podemos utilizar o operador or.
select nome from Produto 
where setor='Frutas' 
or setor = 'Cereais'
 
PostgreSQL - Select
● Outra forma de realizar a mesma consulta é utilizando o 
operador in:
select nome from Produto where 
setor in ('Frutas', 'Cereais')
● No caso, vão ser buscados todos os nomes cujo atributo 
setor esteja dentro da lista passada ao operador in.
 
PostgreSQL - Exercício
● Utilizando a tabela Aluno que você criou no exercício 
anterior, determine uma consulta SQL que
● Retorne o nome de todos os alunos que começam com 
a letra 'A'.
● Retorne os nomes e as notas de todos os alunos que 
tiraram nota entre 9 e 10.
● Retorne os nomes dos alunos que têm até a 18 faltas.
● Retorne o nome das disciplinas que terminam com 's'.
● Retorne os nomes e as notas de todos os alunos que 
tiraram nota entre 1 e 3.
● Retorne os nomes dos alunos cuja segunda letra é a.
 
PostgreSQL - Select
● Existem ainda operadores que realizam operações 
aritméticas agregando valores. 
● São eles: sum, avg, min, max e count.
● Por exemplo, para retornar o maior preço da tabela 
Produto, fazemos:
select max(preço) from Produto 
 
PostgreSQL - Select
● Já para selecionar o menor preço dos produtos da tabela 
utilizamos o operador min.
● No caso, 
select min(preço) from Produto 
 
PostgreSQL - Select
● Para retornar o total dos valores de todos os produtos 
utilizamos o operador sum.
● No caso, 
select sum(preço) from Produto 
 
PostgreSQL - Select
● Para selecionar a média dos preços dos produtos da 
tabela utilizamos o operador avg.
● No caso, 
select avg(preço) from Produto 
 
PostgreSQL - Select
● Veja que no retorno do avg o número possui muitas 
casas decimais. 
● É possível utilizar uma função para arredondar o número 
retornado.
● Trata-se da função round().
● Esta recebe dois parâmetros:
● O número a ser arredondado;
● A quantidade de casas decimais.
 
PostgreSQL - Select
● A função round, no entanto, só funciona com números 
do tipo numeric.
● Como o atributo preço foi declarado como real, 
precisamos convertê-lo para numeric.
● Para tal, utilizamos o símbolo :: (dois pontos seguidos).
● No caso, avg(preço)::numeric.
 
PostgreSQL - Select
● Assim temos:
select round( avg(preço)::numeric, 2 ) from Produto 
1º parâmetro:
Número a ser convertido
2º parâmetro:
Quantidade de casas decimais
 
PostgreSQL - Select
● Para contar quantos produtos a tabela tem, considerando 
duplicações, utilizamos o operador count.
● No caso, 
select count(id_produto) from Produto 
 
PostgreSQL - Select
● Para contar quantos tuplas tem na tabela, sem passar o 
nome do atributo que deve ser contado utilizamos o *.
● No caso, 
select count(*) from Produto 
 
PostgreSQL - Select
● Para contar quantos nomes de produtos diferentes tem 
na tabela precisamos combinar o count com o distinct.
● Por exemplo, vamos inserir na tabela os seguintes 
valores:
('P13','Maçã','Frutas',3.3)
● Nesse caso, teremos dois produtos com o mesmo nome. 
 
PostgreSQL - Select
● Para que os nomes sejam contados distintamente, ou 
seja, que nomes iguais sejam desconsiderados, fazemos:
select count (distinct nome) from Produto
● Nesse caso, a consulta retornará 12, embora tenha 13 
registros.
 
PostgreSQL - Select
● Uma outra forma de utilizar o count é combiná-lo com o 
group by. 
● Nesse caso, o operador irá fazer a contagem dos 
atributos…
● ... agrupando-os de acordo com um dos atributos.
● Por exemplo, é possível contabilizar quantos produtos 
tem em cada setor.
 
PostgreSQL - Select
● Para tal, utiliza-se ogroup by.
● No caso,
select setor, count(id_produto) from Produto 
group by setor 
 
PostgreSQL - Select
● Podemos também modificar a forma como exibimos o 
retorno da consulta.
● E determinar como os dados devem ser ordenados.
● Para tal, utilizamos o order by. 
● Por exemplo, podemos querer retornar os nomes e 
preços dos produtos em ordem alfabética.
 
PostgreSQL - Select
● Para tal, fazemos:
select nome, preço from Produto 
order by nome
 
PostgreSQL - Select
● Para o retorno em ordem decrescente, utilizamos o desc.
select nome, preço from Produto 
order by nome desc
 
PostgreSQL - Exercício
● Utilizando mais uma vez a tabela Aluno criada 
anteriormente, determine uma consulta SQL que
● Retorne a maior nota da turma.
● Retorne a menor nota da turma.
● Retorne a quantidade de aluno.
● Retorne a quantidade de aluno de cada curso.
● Retorne a média de faltas dos alunos.
● Retorne a maior quantidade de faltas dos alunos.
● Retorne o total de faltas por curso.
● Retorne o total de faltas por disciplina.
 
Contato:
luana.dantas@ufersa.edu.br
	Slide 1
	Slide 2
	Slide 3
	Slide 4
	Slide 5
	Slide 6
	Slide 7
	Slide 8
	Slide 10
	Slide 11
	Slide 12
	Slide 13
	Slide 14
	Slide 15
	Slide 16
	Slide 17
	Slide 18
	Slide 19
	Slide 22
	Slide 23
	Slide 24
	Slide 25
	Slide 26
	Slide 27
	Slide 28
	Slide 29
	Slide 30
	Slide 31
	Slide 32
	Slide 33
	Slide 34
	Slide 35
	Slide 36
	Slide 37
	Slide 38
	Slide 39
	Slide 40
	Slide 41
	Slide 42
	Slide 43
	Slide 44
	Slide 45
	Slide 46
	Slide 47
	Slide 48
	Slide 49
	Slide 50
	Slide 51
	Slide 52
	Slide 53
	Slide 54
	Slide 55
	Slide 56
	Slide 57
	Slide 58
	Slide 59
	Slide 60
	Slide 61
	Slide 62
	Slide 63
	Slide 64
	Slide 65
	Slide 66
	Slide 67
	Slide 68
	Slide 69
	Slide 70
	Slide 71
	Slide 72
	Slide 73
	Slide 74
	Slide 75
	Slide 76
	Slide 77
	Slide 78
	Slide 79
	Slide 80

Continue navegando