O documento descreve conceitos fundamentais de bancos de dados, incluindo instâncias, esquemas, independência de dados, modelos de dados, modelo entidade-relacionamento e a linguagem SQL.
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.
2.
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)
3.
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
4.
MODELO ENTIDADE-
RELACIONAMENTO
• Modeloproposto 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.
5.
MODELO ENTIDADE-
RELACIONAMENTO
• ODiagrama 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.
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
8.
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
9.
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)
• Foreign key – define o campo como chave estrangeira
10.
TIPOS DE DADOS
NuméricosInteiros
• Tinyint ( pequeno de -128 a 127)
• Smallint ( pequeno -32768 a 32768 )
• Int ( normal – de –8388608 a 8388607 )
• Bigint
• Numéricos Decimais
• Float
• Double
• Decimal
11.
TIPOS DE DADOS
Datae 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
12.
TIPOS DE DADOS
Caracter
•Char(n)
Conjunto de caracteres com tamanho fixo(n)
• Varchar(n)
Conjunto de caracteres de tamanho variável
13.
EXEMPLO
CREATE DATABASE ESCOLA;
USEESCOLA;
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));
14.
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));
15.
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));
16.
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;
17.
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;
18.
EXEMPLO
• Adicionar umcampo chamado Celular à tabela
Professor:
alter table Professor add Celular varchar(15);
• Adicionar um campo chamado RG à tabela Aluno:
alter table ALuno add RG varchar(10);
• Adicionar um campo chamado NumDependentes à
tabela Professor:
alter table Professor add NumDependentes tinyint not null;
19.
EXEMPLO
• Alterar otamanho 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);
20.
EXEMPLO
• Remover databela Professor o campo Email:
alter table Professor drop Email;
• Remover da tabela Aluno o campo DataNascimento:
alter table Aluno drop DataNascimento;
21.
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
22.
EXEMPLO
• Inserir dadosna tabela ALUNO
insert into ALUNO values (null,”DANIELA DIAS”,”F”,”1989-04-
11”,”(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-01-
03”,”(31)37412200”);
insert into ALUNO values (null,”CARLOS PEIXOTO”,”M”,”1988-10-
01”,”(31)33347411”);
23.
EXEMPLO
Inserir dados natabela PROFESSOR
insert into PROFESSOR values
(null,”ALEXANDRE”,”123456”,”alexandre@yahoo.com.br”);
insert into PROFESSOR values
(null,”MARIA”,”111111”,”maria@terra.com.br”);
insert into PROFESSOR values
(null,”EDUARDO”,”123456”,”eduardo@ig.com.br”);
insert into PROFESSOR values
(null,”LUCIANA”,”938826”,”luciana@gmail.com”);
24.
EXEMPLO
Inserir dados natabela 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);
25.
EXEMPLO
Inserir dados natabela 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);
26.
LINGUAGEM SQL –DML
• Alteração de dados em uma tabela
UPDATE tabela SET coluna = novo_valor_armazenado
• WHERE coluna = valor_filtro;
• ‘
27.
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.
28.
EXEMPLO
• Excluir oaluno 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;
29.
EXEMPLO
• Excluir todosos 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%”;
30.
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.
31.
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 *
32.
EXEMPLO
• Visualizar códigoe 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;
33.
EXEMPLO
• Visualizar todosos 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;
34.
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
35.
EXEMPLO
• Visualizar todosos 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;
36.
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
37.
EXEMPLO
• Visualizar todosos 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;
38.
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.
39.
EXEMPLOS
• Listar todosos 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;
40.
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
41.
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
42.
EXEMPLOS
• Contar onú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;
43.
EXEMPLOS
• Retornar amaior 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;
44.
GROUP BY
• Estaclá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)
45.
EXEMPLO
• Mostrar aquantidade 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;
46.
HAVING
• Funciona comouma 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.
47.
EXEMPLO
• Mostrar aquantidade 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;
48.
SUBCONSULTAS
• Consiste emuma 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
49.
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
50.
EXEMPLOS
• Listar códigoe 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");
51.
EXEMPLOS
• Listar códigode 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);