BANCOS DE DADOS
PROFESSOR RAFAEL SILVA
OBJETIVOS DA DISCIPLINA
• Apresentar os principais conceitos de bancos de
dados
• Compreender a importância da utilização de
bancos de dados
• Ensinar técnicas para projetos e modelagem de
bancos de dados
• Apresentar a linguagem SQL
• Apresentar o SGBD MySql, permitindo a criação e
manipulação de bancos de dados
INTRODUÇÃO
• O que é banco de dados?
• Existem vários conceitos para o que chamamos de bancos
de dados, mas todos remetem à mesma ideia: Uma coleção
compartilhada de dados, inter-relacionados, projetados para
atender as necessidades dos múltiplos tipos de usuários.
• Dado x informação:
• Dado: valor “solto” na natureza, cujo significado depende
do contexto.
• Ex: -1, 3.14, 853, prata
• Informação: É um valor para determinado objetivo,
acrescenta conhecimento ao fato analisado. Pode ser
extraída de um banco de dados
• Ex: “A temperatura na cidade X foi de -1 grau”, “Meu
carro é prata”, “3.14 é o valor de pi”
IMPORTÂNCIA DOS BDS
• O mundo hoje é totalmente informatizado
• Pessoas e empresas são cada vez mais
dependentes da informática
• Tudo gira em torno de dados (vendas, operações
bancárias, gerenciamento de empresas, escolas
e/ou órgãos públicos, etc.)
• Os bancos de dados permitem o armazenamento
destas informações, considerando aspectos
fundamentais como segurança, rapidez no acesso
e confiabilidade.
VANTAGENS DE UM BD
• Controle de redundância
• Compartilhamento entre múltiplos usuários
• Restrição de acesso aos dados
• Diferentes tipos de interface para diferentes
usuários
• Representação dos dados com um nível grande de
complexidade
• Garante a restrição de integridade (manter dados
íntegros)
• Mecanismos de backup e recuperação de dados
• Flexibilidade na mudança das estruturas de dados
SISTEMAS DE BANCOS DE DADOS
• Envolvem quatro elementos:
• Dados : são os elementos essenciais (afinal de
contas, o banco de dados é um repositório)
• Hardware: composto por volumes de
armazenamento (discos), processadores de HD e
memória (dar suporte à execução dos SGBDs)
• Software: programas usados para criar e
gerenciar os bancos de dados; também entram
os utilitários, ferramentas de desenvolvimento,
geradores de relatórios, etc
• Usuários: pessoas que usarão os bancos de
dados
TIPOS DE USUÁRIOS
• Programadores: criam programas para acessar os
bancos de dados
• Usuários finais: acessam os bancos de dados
interativamente
• Profissionais: usuários com conhecimentos
específicos sobre bancos de dados. Podem ser:
• Administrador de dados: responsável pelos
dados, decidem o que deve ser armazenado
• DBA: Responsável pela implementação das
decisões do administrador; cria os bancos de
dados e implementa controles necessários
SGBDS
• Sigla para Sistemas Gerenciadores de Bancos de
Dados. São softwares que tem como objetivos
permitir a criação e manutenção de banco de
dados, além da manipulação dos dados
armazenados.
• Alguns SGBDs:
•
•
•
•
•
Access,
SQLServer
Oracle
MySQL
PostGre
LINGUAGEM SQL
• Linguagem padronizada para manipulação de
bancos de dados, usadas nos SGBDs
• Dividida em:
• DDL - Linguagem de Definição de Dados
• DML - Linguagem de Manipulação de Dados
• DCL - Linguagem de Controle de Dados
• DTL - Linguagem de Transação de Dados
• DQL - Linguagem de Consulta de Dados
ABSTRAÇÃO DE DADOS
• Nível de visões do usuário ou externo: descreve
partes do banco de dados, de acordo com as
necessidades de cada usuário, individualmente.
• Nível conceitual ou lógico: descreve quais dados
estão armazenados e seus relacionamentos. Neste
nível, o banco de dados é descrito através de
estruturas relativamente simples, que podem
envolver estruturas complexas no nível físico.
• Nível físico: nível mais baixo de abstração.
Descreve como os dados estão realmente
armazenados, englobando estruturas complexas
de baixo nível.
INSTÂNCIAS E ESQUEMAS
• Instância: Os dados atuais armazenados no Banco
de Dados em um momento particular. Também
chamado estado do banco de dados.
• Esquema: Descrição da estrutura de um Banco de
Dados. Pode ser textual ou gráfico. Conhecido
também como o projeto geral do banco de dados.
INDEPENDÊNCIA DE DADOS
• Capacidade de modificar os esquemas de um
banco de dados sem afetar um esquema de nível
superior. Existem dois níveis de independência:
• Física: capacidade de modificar o esquema físico sem que
haja qualquer necessidade de reescrever alguma
aplicação. Usada para promover melhorias no
desempenho.
• Lógica: capacidade de modificar o esquema lógico sem
que haja qualquer necessidade de reescrever alguma
aplicação. Necessárias quando uma estrutura lógica é
alterada (ex: inserção de novas moedas num sistema)
MODELO DE DADOS
• Conceituais (Alto Nível)
•
•
•
Entidade-Relacionamento
Objeto-Relacional (BDII)
Orientado a Objeto (BDII)
• Implementação (Lógicos)
•
•
•
Relacional
Rede (BD mais antigos)
Hierárquico (BD mais antigos)
• Físicos
MODELO ENTIDADERELACIONAMENTO
• Modelo proposto por Peter Chen, baseado na
percepção do mundo real.
• Formado por um conjunto de objetos básicos
denominados entidades e nos relacionamentos
entre tais objetos.
• Tal modelo permite especificar a estrutura lógica
do banco de dados.
MODELO ENTIDADERELACIONAMENTO
• O Diagrama Entidade-Relacionamento (DER)
permite representar graficamente a estrutura lógica
de um banco de dados.
• De um modo geral, para nos auxiliar na
elaboração de um DER, podemos dizer que os
substantivos de uma frase são as entidades e os
verbos são os relacionamentos entre as entidades.
MODELO ENTIDADERELACIONAMENTO
MODELO ENTIDADERELACIONAMENTO
• Entidade: Podemos definir uma entidade como
sendo um objeto do mundo real, com significado
próprio e identificação distinta. Pode ser pessoa,
animal, conta bancária, produto, veículo, etc. –
depende do contexto.
• Entidade fraca: Entidade cuja existência depende
obrigatoriamente de outra entidade. Por exemplo,
em um clube, não existe dependente sem um
sócio. Assim, a entidade dependente é fraca.
MODELO ENTIDADERELACIONAMENTO
• Atributo: Toda entidade é descrita sob a forma de
atributos. É simplesmente um item que ajuda a
descrever entidade. Por exemplo, uma entidade
chamada ALUNO pode ter os seguintes atributos:
matrícula, nome, data de nascimento, nota.
• Atributo chave: Chave primária é um atributo de uma
entidade, cuja função principal é identificar uma
instância unicamente; deve ser um valor não nulo que
não se repete dentre as instâncias de uma mesma
entidade. Por exemplo, para a entidade ALUNO, a
matrícula seria a chave primária, já que não podemos
ter dois ou mais alunos com a mesma matrícula.
MODELO ENTIDADERELACIONAMENTO
Outros tipos de chaves:
• Superchave: Conjunto de um ou mais atributos que,
tomado coletivamente, permite-nos identificar unicamente
uma instância de entidade.
• Chaves candidatas: Chaves com unicidade em uma
instância: Ex: CPF, RG, título eleitoral. Todos os atributos que
conseguem identificar uma instância.
• Chave secundária: Chave sem unicidade em uma
instância. Ex: idade, sexo, endereço.
MODELO ENTIDADERELACIONAMENTO
• Atributo multivalorado: Atributo que pode ocorrer
diversas vezes para uma mesma instância de
entidade. Como exemplo, para a entidade ALUNO,
podemos ter mais de um email.
• Atributo composto: Atributo que pode ser
desmembrado em outros atributos. Como exemplo, o
atributo telefone da entidade ALUNO (formado por
DDD + número do telefone).
• Atributo derivado: atributo cujo valor é calculado a
partir do valor de outro atributo. Ex: o atributo idade
de entidade ALUNO é derivado, já que pode ser
obtido a partir do valor do atributo data de
nascimento.
MODELO ENTIDADERELACIONAMENTO
• Relacionamento: Termo usado para representar a
associação entre entidades.
• Deve ser identificado por um verbo.
• Os relacionamentos possuem cardinalidade,
identificação de quantas ocorrências de uma
entidade têm correspondência na entidade
relacionada.
CARDINALIDADE
Tipos de cardinalidade:
• 1:1 (um para um) – cada ocorrência de uma entidade está
relacionada a apenas uma ocorrência da outra entidade.
• 1:N (um para muitos) - cada ocorrência de uma entidade
está relacionada a várias ocorrências da outra entidade.
• N:N (muitos para muitos) - cada ocorrência de uma
entidade está relacionada a várias ocorrências da outra
entidade e vice-versa. Este tipo de relacionamento dá
origem a outra entidade.
EXEMPLOS
Relacionamento 1:1
Um coordenador cuida de apenas uma disciplina e cada
disciplina é de responsabilidade de apenas um coordenador
EXEMPLOS
Relacionamento 1:N
Um curso pode ter vários alunos, mas cada aluno só pode
estar matriculado em um curso
EXEMPLOS
Relacionamento N:N
Um aluno faz cursa várias disciplinas e cada disciplina pode
ter vários alunos
Obs: Este tipo de entidade tem representação diferente e é
conhecido como ENTIDADE ASSOCIATIVA
EXEMPLO
O relacionamento CURSA descrito a seguir será
transformado em entidade associativa.
Cursa
Aluno
RA
Disciplinas
Código
Nome
Nota
Nome
AUTO RELACIONAMENTOS
Tipo de situação onde uma instância de uma
entidade tem relação com outra instância da
mesma entidade.
É fundamental saber o papel de cada instância da
entidade.
AUTO RELACIONAMENTOS
Funcionário
1
Casado
Marido
Funcionário
1
Esposa
Casado
1
Funcionário
GENERALIZAÇÃO/ESPECIALIZAÇÃO
• Em algumas situações, uma entidade pode conter
instâncias com atributos diferentes.
• Neste caso, é possível visualizar uma herança de
propriedades
• Para situações como essa, usamos os conceitos de
generalização e especialização
EXEMPLO
Código
CPF
P. Física
Cliente
Nome
P. Jurídica
CNPJ
EXEMPLO
• Neste caso, a entidade CLIENTE é de um nível
superior ou genérico (GENERALIZAÇÃO).
• As entidades PESSOA FÍSICA e PESSOA JURÍDICA
são entidades de nível inferior (ESPECIALIZAÇÃO)
• Os atributos descritos na entidade CLIENTE são
comuns às entidades PESSOA FÍSICA e PESSOA
JURÍDICA
EXEMPLO – DER (CONSULTÓRIO)
Um médico trata de pacientes. Do médico deseja-se
saber CRM, nome e suas especializações.
O paciente é tratado por vários médicos. Do
paciente necessitamos saber o nome, endereço e
idade. O médico pede exames para o paciente.
Para cada pedido de exame está associado um
único tipo de exame. Tal pedido se faz com uma
justificativa.
CRM
Nome
Nome
Código
Médico
M
Trata
N
Endereço
Paciente
M
N
Idade
Especializações
Pede
Exames
Justificativa
Data Pedido
1
Código
Tipo Exame
Nome
Data Nasc.
EXEMPLO - DER (PIZZARIA)
Um cliente faz pedidos. Cada pedido possui diversos
itens de pedido. Cada pedido é entregue por um
motoboy. Cada item corresponde a um produto.
Cód. Motoboy
Motoboy
Nome
Cód. Cliente
Entrega
Nome
Data Pedido
Cód. Pedido
1
Cliente
N
Faz
Pedido
1
Endereço
Telefone
Possui
Produto
1
Cód. Item
Corresponde
Valor
N
Cód. Produto
Descrição
N
Item
Quantidade
EXEMPLO – DER(EMPRESA)
Um funcionário trabalha para um departamento.
Cada funcionário possui diversos dependentes.
Um departamento controla diversos projetos, sendo
que um projeto só é controlado por um único
departamento.
Diversos funcionários participam por um certo
número de horas em um projeto.
Código
Nome
Nome
Funcionário
CPF
N
Código
Trabalha
para
1
Departamento
N
1
1
Qtd. Horas
Controla
Possui
Participa
Data Início
Código
N
N
Nome
M
Projeto
Dependente
Data Término
Nome
Código
EXERCÍCIOS
Elabore o DER considerando as seguintes regras de
negócio de uma Construtora :
- Uma obra possui vários Engenheiros mas um Engenheiro
só pode trabalhar em apenas uma obra até a sua
conclusão.
- Um obra utiliza vários materiais e um material pode ser
utilizado em várias obras.
- Em uma obra trabalham vários pedreiros e um pedreiro
pode ser escalado para trabalhar em várias obras
EXERCÍCIOS
• Elabore o DER considerando as seguintes regras de
negócio de uma Escola :
- Uma classe possui vários alunos mas um aluno só
pode estudar em apenas uma classe
- Um professor pode lecionar várias matérias e uma
matéria pode ser lecionada por vários professores
- Uma classe possui apenas um professor
responsável mas um professor pode ser responsável
por várias classes
EXERCÍCIOS
• Elabore o DER considerando as seguintes regras de
negócio de uma Clínica médica :
- Um médico atende vários pacientes e um paciente
pode ser atendido por vários médicos.
- Podem existir vários médicos de uma
especialidade médica mas cada médico trabalha
com apenas uma especialidade
- Um médico pode ser credenciado em vários
convênios e um convênio pode ter vários médicos
da clínica credenciados.
EXERCÍCIOS
• Elabore um DER para uma biblioteca, considerando
as seguintes regras de negócio:
- Uma editora publica vários livros e um livro
pertence apenas uma editora.
- Um escritor pode escrever vários livros e um livro
por vários escritores
- Uma editora possui vários escritores filiados e um
escritor durante sua vida Profissional pode ter se
filiado a várias editoras
EXERCÍCIOS
• Elabore o DER considerando as seguintes regras de
negócio
- Em um turno estudam vários alunos e um aluno só
estuda em um turno.
- Em um turno trabalham vários professores e um
professor pode trabalhar em vários turnos.
- Cada turno tem uma coordenadora, que pode
coordenar mais de um turno
EXERCÍCIOS
• Elabore um DER para uma empresa, considerando
as seguintes regras de negócio:
- Um gerente coordena vários departamentos e um
departamento só tem um gerente.
- Em um departamento trabalham vários funcionários
e um funcionário trabalha só em um departamento.
- Um dependente só pode ser relacionado a um
funcionário, mas um funcionário pode ter vários
dependentes
EXERCÍCIOS
Elabore o DER considerando as seguintes regras de
negócio:
- Um departamento pode requisitar vários materiais.
E um material pode ser requisitado por vários
departamentos.
- Um fornecedor pode fornecer vários materiais, e
um material pode ser fornecido por diversos
fornecedores.
- Um representante pode representar vários
fornecedores e um fornecedor pode ser
representado por vários representantes.
EXERCÍCIOS
Elabore o DER considerando as seguintes regras de
negócio
- Um professor de educação física pode ter formação
para várias modalidades esportivas. E uma modalidade
esportiva pode ser ensinada por vários professores.
- Uma modalidade esportiva pode ser oferecida em
vários turnos. E um turno pode ter várias modalidades.
- Um turno pode ter várias turmas, mas cada turma
pertence apenas a um turno.
- Um professor leciona para várias turmas e uma turma
tem vários professores
EXERCÍCIOS
• Elabore o DER considerando as seguintes regras de
negócio
- Um professor pode lecionar em várias classes e em
uma classe podem lecionar vários professores.
- Um aluno pode frequentar várias classes e uma
classe é frequentada por vários alunos.
- Um professor é habilitado para várias disciplinas e
uma disciplina tem vários professores habilitados.
- Um aluno é pontuado em várias disciplinas e cada
disciplina pontua vários alunos
MODELO RELACIONAL
• Criado por Edgar Codd (1970)
• É um modelo intermediário entre os modelos
conceitual e físico.
• O modelo relacional é um esquema lógico bem
próximo ao físico, também dependente do SGBD
escolhido.
• Deve ser criado conforme as definições do modelo
conceitual
• A maioria dos SGBDs atuais são relacionais
MODELO RELACIONAL
• Principais características de uma relação(tabela)
• As tuplas são armazenadas na ordem em que estas forem
sendo inseridas no BD
• A ordem dos valores em uma tupla segue a ordem dos
atributos na definição de um esquema
• O valor de cada atributo é atômico(único), não pode ser
composto
MODELO RELACIONAL
CodCliente
Cliente
Nome
Telefone
Entidade: Atributos
Cliente
CodCli
Nome
Telefone
1
José
(31)5555-0000
2
Maria
(31)5555-0001
3
João
(31)5555-0002
MODELO RELACIONAL
• Relacionamentos N:N darão origem a uma nova
tabela com 2 relacionamentos 1:N;
• Deve-se propagar o atributo identificador (chave
primária) para a tabela na qual a cardinalidade do
relacionamento seja N (chave estrangeira);
• Atributos multivalorados em geral dão origem a
uma nova entidade/tabela (fraca).
MODELO RELACIONAL
Alguns conceitos
• TABELAS ou RELAÇÕES: Principal construção usada para
representação de dados; estrutura composta de linhas e
colunas usada para armazenamento
• COLUNAS ou ATRIBUTOS: Correspondem aos itens que
deverão ser armazenados (campos)
• LINHA ou TUPLAS: conjunto de campos/atributos; conjunto
de valores que representa uma ocorrência de uma
entidade
• DOMÍNIO: conjunto ou formato de dados que podem
aparecer nas colunas
EXEMPLO
EXEMPLO
MODELO FÍSICO
• Modelo implementado no computador, através de
um SGBD
• Será o responsável pelo armazenamento dos
dados
• Deve seguir o que foi projetado nos modelos
anteriores
• Pode ter pequenas variações de um SGBD para
outro
• Operações serão executadas através da
linguagem SQL
EXEMPLO
Criar um banco de dados para uma escola de
Informática, que oferece vários cursos. Deseja-se
armazenar dados dos cursos (código, nome e carga
horária), professores (código, nome, número da
carteira de trabalho e email), alunos (matrícula,
nome, telefone para contato, data de nascimento,
sexo). O aluno, em cada curso, terá uma nota,
correspondente à avaliação final, sendo necessário
tirar 60 pontos ou mais para ser aprovado.
EXEMPLO
Regras de negócio:
• Um professor pode lecionar vários cursos e cada curso é
lecionado por apenas um professor
• Um aluno pode fazer vários cursos e cada curso pode ter
vários alunos
EXEMPLO - DER
LINGUAGEM SQL
COMANDOS DDL
• Usados para criar bancos de dados e tabelas, além de
alteração na estrutura das tabelas (acrescentar um campo,
mudar as características de um campo, excluir um campo)
• Não trabalham com dados
• Principais instruções:
• CREATE
• ALTER
• DROP
LINGUAGEM SQL - DDL
• Criação de um banco de dados
create database nome do banco;
• Criação de uma tabela
create table nome da tabela (descrição dos
campos);
• Na descrição dos campos, especificamos o nome
do campo, tipo de dado, tamanho(se necessário)
e restrições
LINGUAGEM SQL - DDL
Algumas restrições:
• primary key: define o campo como chave primária
• not null: define que o campo deverá ser de preenchimento
obrigatório
• auto_increment: define que o campo será
autoincrementado (autonumeração)
TIPOS DE DADOS
Numéricos Inteiros
•
•
•
•
Tinyint
Smallint
Int
Bigint
• Numéricos Decimais
• Float
• Double
• Decimal
TIPOS DE DADOS
Data e hora
• Date
data no formato ano-mês-dia
• Datetime
combinação de data e hora (aa-mm-dd hh:mm:ss)
• Timestamp
combinação de data e hora com formato variado
• Time
hora no formato hh:mm:ss
• Year
armazena um ano
TIPOS DE DADOS
Caracter
• Char(n)
Conjunto de caracteres com tamanho fixo(n)
• Varchar(n)
Conjunto de caracteres de tamanho variável
EXEMPLO
CREATE DATABASE ESCOLA;
USE ESCOLA;
CREATE TABLE Aluno (
IDAluno Int PRIMARY KEY not null auto_increment,
NomeAluno Varchar(60) not null,
Sexo Char not null,
DataNascimento Date,
Telefone Varchar(15));
EXEMPLO
CREATE TABLE Professor (
IDProfessor Int PRIMARY KEY not null auto_increment,
NomeProfessor Varchar(60) not null,
CTPS Varchar(6) not null,
Email Varchar(200));
CREATE TABLE Curso (
IDCurso Int PRIMARY KEY not null auto_increment,
NomeCurso Varchar(30) not null,
Horas Int not null,
IDProfessor Int not null,
FOREIGN KEY(IDProfessor) REFERENCES Professor
(IDProfessor));
EXEMPLO
CREATE TABLE Estuda (
IDEstuda Int PRIMARY KEY not null auto_increment,
IDCurso Int not null,
IDAluno Int not null,
NotaAlunoCurso Double not null,
FOREIGN KEY(IDCurso) REFERENCES Curso (IDCurso),
FOREIGN KEY(IDAluno) REFERENCES Aluno (IDAluno));
LINGUAGEM SQL - DDL
• Exclusão de um banco de dados
drop database nome do banco;
• Exclusão de uma tabela
drop table nome da tabela;
Exemplos:
drop database Escola;
drop table Aluno;
drop table Professor;
LINGUAGEM SQL - DDL
Alteração das colunas de uma tabela
• Acrescentar um campo
alter table nome da tabela
add campo/especificações;
• Remover um campo
alter table nome da tabela
drop campo;
• Alterar um campo
alter table nome da tabela
change campo novas especificações;
EXEMPLO
• Adicionar um campo chamado Celular à tabela
Professor:
alter table Professor add Celular varchar(15);
• Adicionar um campo chamado RG à tabela Aluno:
alter table Professor add RG varchar(10);
• Adicionar um campo chamado NumDependentes
à tabela Professor:
alter table Professor add NumDependentes tinyint not null;
EXEMPLO
• Alterar o tamanho do campo Email para 150 caracteres:
alter table Professor change Email Email varchar(150);
• Alterar o nome do campo Telefone na tabela Aluno
para TelefoneAluno
alter table Aluno change Telefone TelefoneAluno varchar(15);
EXEMPLO
• Remover da tabela Professor o campo Email:
alter table Professor drop Email;
• Remover da tabela Aluno o campo
DataNascimento:
alter table Aluno drop DataNascimento;
LINGUAGEM SQL – DML
• Inserção de dados em uma tabela
insert into nome da tabela values(lista de valores);
Obs.:
• Os valores devem estar separados por vírgulas e
devem respeitar a ordem dos campos na tabela.
• Quando um campo for auto_increment, seu valor
deve ser substituído pela sentença null
EXEMPLO
• Inserir dados na tabela ALUNO
insert into ALUNO values (null,”DANIELA DIAS”,”F”,”1989-0411”,”(31)32224411”);
insert into ALUNO values (null,”JULIANO DO
CARMO”,”M”,”1989-11-03”,”(31)33339987”);
insert into ALUNO values (null,”ISABEL MENDES”,”F”,”1990-0103”,”(31)37412200”);
insert into ALUNO values (null,”CARLOS PEIXOTO”,”M”,”198810-01”,”(31)33347411”);
EXEMPLO
Inserir dados na tabela PROFESSOR
insert into PROFESSOR values
(null,”ALEXANDRE”,”123456”,”[email protected]”);
insert into PROFESSOR values
(null,”MARIA”,”111111”,”[email protected]”);
insert into PROFESSOR values
(null,”EDUARDO”,”123456”,”[email protected]”);
insert into PROFESSOR values
(null,”LUCIANA”,”938826”,”[email protected]”);
EXEMPLO
Inserir dados na tabela CURSO
insert into CURSO values (null,”VB.NET”,60,1);
insert into CURSO values (null,”PHP”,120,3);
insert into CURSO values (null,”JAVA”,80,4);
insert into CURSO values (null,”SQL”,40,1);
insert into CURSO values (null,”LÓGICA”,60,2);
EXEMPLO
Inserir dados na tabela ESTUDA
insert into ESTUDA values (null,3,1,70);
insert into ESTUDA values (null,3,2,75);
insert into ESTUDA values (null,1,4,90);
insert into ESTUDA values (null,1,2,55);
insert into ESTUDA values (null,2,3,50);
LINGUAGEM SQL – DML
Exclusão de dados em uma tabela
delete from nome da tabela where condição;
Obs.:
• A condição dever ser representada por uma
expressão lógica que consiga localizar o registro a ser
excluído
• Caso a condição localize mais de um registro, eles
serão excluídos.
• A condição é opcional. Se não for especificada,
serão excluídos TODOS os registros da tabela.
EXEMPLO
• Excluir o aluno cuja matrícula seja 7
delete from ALUNO where IDAluno=7;
• Excluir o professor de nome “ALEXANDRE”
delete from PROFESSOR where NomeProfessor =
“ALEXANDRE”;
• Excluir os cursos que tenham carga horária inferior
a 30
delete from CURSO where HORAS<30;
EXEMPLO
• Excluir todos os alunos cadastrados
delete from ALUNO;
• Excluir todos os cursos com mais de 60 horas
ministrados pelo professor com código 1
delete from CURSO where Horas>60 And IDProfessor = 1;
• Excluir todos os cursos que tenham a palavra
“CLIPPER” em qualquer lugar do nome
delete from CURSO where NomeCurso like “%CLIPPER%”;
LINGUAGEM SQL - DQL
• Parte da linguagem SQL destinada a executar
operações de consultas (recuperação) de
registros, ou seja, permite visualizar o conteúdo
parcial ou total de tabelas.
• Representada pela instrução SELECT.
• Como o formato desta instrução é muito extenso,
vamos apresentando suas sentenças aos poucos.
LINGUAGEM SQL - DQL
• select campos from nome da tabela;
• Neste formato, podemos visualizar alguns ou todos
os campos de todos os registros de uma tabela.
• No lugar de campos, descrevemos o nome da
cada campo que deve aparecer na listagem,
separados por vírgulas.
• Caso queira que todos os campos apareçam na
listagem, use o caracter *
EXEMPLO
• Visualizar código e nome de todos os alunos
cadastrados
select IDAluno, NomeAluno from ALUNO;
• Visualizar código, nome e carga horária de todos
os cursos cadastrados
select IDCurso, NomeCurso, Horas from CURSO;
• Visualizar nome e email de todos os professores
cadastrados
select NomeProfessor, Email from PROFESSOR;
EXEMPLO
• Visualizar todos os campos dos alunos cadastrados
select * from ALUNO;
• Visualizar todos os campos dos cursos cadastrados
select * from CURSO;
• Visualizar todos os campos dos professores
cadastrados
select * from PROFESSOR;
LINGUAGEM SQL - DQL
A sentença WHERE
• Vem após a especificação do nome da tabela
• Permite criar uma ou mais condições, que serão usadas
para selecionar os registros retornados pela consulta
• Aceita os operadores lógicos AND, OR, NOT
EXEMPLO
• Visualizar todos os campos dos alunos do sexo feminino
(F)cadastrados
select * from ALUNO where SEXO = “F”;
• Visualizar todos os campos dos cursos que tenham
carga horário igual ou superior a 80 horas
select * from CURSO where HORAS >= 80;
• Visualizar todos os campos dos cursos lecionados pelo
professor de código 2 que tenham até 40 horas
select * from CURSO where IDPROFESSOR = 2 and HORAS <=40;
LINGUAGEM SQL - DQL
• A sentença ORDER BY
• Numa consulta, os registros são apresentados conforme
ordem de armazenamento na tabela
• Através da sentença ORDER BY, é possível definir novos
campos e forma de ordenação(crescente/decrescente)
• Deve ser colocada após a sentença WHERE
• Podem ser definidos quantos campos o usuário quiser.
Caso haja coincidência de valores no primeiro campo, a
ordenação será feita pelo segundo. Isso vale para os
demais campos citados.
• Para ordenação decrescente, deve ser usada a sentença
DESC
EXEMPLO
• Visualizar todos os campos dos alunos do sexo feminino
(F)cadastrados
select * from ALUNO where SEXO = “F” order by NOMEALUNO;
• Visualizar todos os campos dos cursos que tenham
carga horário igual ou superior a 80 horas
select * from CURSO where HORAS >= 80 order by NOMECURSO;
• Visualizar todos os campos dos cursos lecionados pelo
professor de código 2 que tenham até 40 horas
select * from CURSO where IDPROFESSOR = 2 and HORAS <=40
order by NOMECURSO desc;
LINGUAGEM SQL - DDL
• Operadores IN, LIKE e BETWEEN
• São usados nas comparações definidas na sentença
WHERE.
• IN : Testa se o valor do campo está contido numa
lista de valores pré-estabelecidos. Pode substituir
uma sequência de condições, com o mesmo
campo, que utilize o operador OR.
• BETWEEN: Testa se o valor do campo está no
intervalo definido
• LIKE: faz comparação aproximada, localizando
parte de uma sequência de caracteres em um
campo.
EXEMPLOS
• Listar todos os dados dos cursos que tenham carga
horária de 40, 60 ou 80 horas
select * from CURSOS where HORAS in (40,60,80);
• Listar todos os dados dos cursos que tenham a
palavra “PROGRAMAÇÃO” no nome
select * from CURSOS where NOMECURSO like
“%PROGRAMAÇÃO%”;
• Listar todos os dados dos cursos que tenham carga
horária entre 50 e 90 horas
select * from CURSOS where HORAS between 50 and 90;
LINGUAGEM SQL - DQL
• Funções de agregação
• São funções da linguagem que servem para agrupar
informações, agregando numa única linha o conteúdo de
vários registros
• Principais funções de agregação:
•
•
•
•
•
COUNT
MIN
MAX
SUM
AVG
LINGUAGEM SQL - DQL
• COUNT
• Retorna a quantidade de registros existentes
• MIN
• Retorna o menor valor de um campo em um grupo de
registros
• MAX
• Retorna o maior valor de um campo em um grupo de registros
• SUM
• Retorna a soma dos valores de um campo em um grupo de
registros
• AVG
• Retorna a média dos valores de um campo em um grupo de
registros
EXEMPLOS
• Contar o número de cursos
select count(*) from curso;
• Contar o número de cursos que tem número de
horas igual ou superior a 80
select count(*) from curso where horas>=80;
• Retornar a menor quantidade de horas,
considerando todos os cursos
select min(horas) from curso;
• Retornar a menor quantidade de horas,
considerando todos os cursos com número de
horas acima de 50
select min(horas) from curso where horas > 50;
EXEMPLOS
• Retornar a maior quantidade de horas,
considerando todos os cursos
select max(horas) from curso;
• Retornar a nota média dos alunos que estão
matriculados no curso 1
select avg(NotaAlunoCurso) from estuda where idcurso=1;
• Retornar a soma das notas do aluno de matrícula 1:
select sum(NotaAlunoCurso) from estuda where idaluno = 1;
GROUP BY
• Esta cláusula serve para agrupar os registros, a partir do
campo especificado. Assim, o resultado de uma
consulta é dado em função destes grupos. Com os
grupos formados é possível aplicar outras funções de
agregação (sum, count, max, etc)
EXEMPLO
• Mostrar a quantidade de alunos, por sexo
select sexo, count(*) from aluno group by sexo;
• Mostrar a nota média dos alunos, por curso
select idcurso, avg(notaalunocurso) from estuda group by
idcurso;
• Mostrar a quantidade de alunos, por curso
select idcurso, count(*) from estuda group by idcurso;
HAVING
• Funciona como uma sentença WHERE, mas é
aplicada ao grupo de registros selecionado pela
sentença GROUP BY
• Permite especificar uma ou mais condições que serão
analisadas após o agrupamento dos registros pelo
GROUP BY. Só serão selecionados os grupos que
atenderem às condições estabelecidas.
• IMPORTANTE: Quando usamos a cláusula HAVING, a
seleção não é feita registro a registro, mas sim grupo a
grupo.
EXEMPLO
• Mostrar a quantidade de alunos por sexo, apenas quando
essa quantidade for superior a 5
select idcurso, count(*) from estuda group by idcurso having
count(*) > 5
• Mostrar a nota média dos alunos, por curso, somente quando
esta média for igual ou superior a 70
select idcurso, avg(notaalunocurso) from estuda group by idcurso
having avg(notaalunocurso) >=70;
• Mostrar a quantidade de alunos, por curso, considerando
apenas os cursos com 6 ou mais alunos
select sexo, count(*) from aluno group by sexo having count(*) > 6;
SUBCONSULTAS
• Consiste em uma instrução SELECT adicionada
dentro de outra instrução SELECT
• A segunda instrução é executada e retorna um
valor, que servirá de entrada para a primeira
consulta
• Assim, numa subconsulta, temos dois “momentos”:
no primeiro, a consulta mais interna é executada e
retorna um ou mais valores; no segundo, é
executada a consulta principal, retornando os
registros que atendam às condições que utilizam os
valores retornados na primeira consulta
SUBCONSULTAS
• Uma subconsulta é utilizada quando não se sabe
os valores a serem usados na criação das
condições
• Devemos observar a compatibilidade entre o
campo usado na comparação e o valor retornado
• Uma subconsulta pode retornar mais de um valor;
neste caso, na comparação da consulta principal,
devemos usar o operador IN
EXEMPLOS
• Listar código e nome dos cursos que são
lecionados pelo mesmo professor que leciona o
curso “PHP”
select idcurso, nomecurso from curso where idprofessor = (select
idprofessor from curso where nomecurso = "PHP");
• Listar nome e carga horária dos cursos que tem
carga horária igual ou superior ao curso “JAVA”
select nomecurso, horas from curso where horas > (select
horas from curso where nomecurso = "JAVA");
EXEMPLOS
• Listar código de aluno e código de curso dos
alunos matriculados no(s) mesmo(s) curso(s) que o
aluno de matricula 1
select idaluno, idcurso from estuda where idcurso in (select idcurso
from estuda where idaluno = 1);
Download

Slides com a Matéria