Upload
dalila-aragao-sequeira
View
216
Download
0
Embed Size (px)
Citation preview
Fundamentos de Banco de Dados
Prof. André Cypriano M. [email protected]
LINGUAGEM SQL – STRUCTURED QUERY
LANGUAGE
INTRODUÇÃO À LINGUAGEM SQL
A SQL engloba vários tipos de comandos:Comandos de manipulação de dados (DML - Data
Manipulation Language) São comandos que nos permitem consultar, incluir, excluir ou alterar dados de tabelas.
Comandos de definição de dados (DDL - Data Definition Language) São comandos que nos permitem manipular a estrutura do banco de dados, criando cada uma de suas tabelas com seus atributos, chaves etc.
INTRODUÇÃO À LINGUAGEM SQL
Nesta parte iremos ver os Comandos de Definição de Dados, chamados de DDL - Data Definition Language (por exemplo: Create, Alter e Drop)
São comandos que nos permitem manipular a estrutura do banco de dados, criando cada uma de suas tabelas com seus atributos, chaves primárias e estrangeiras etc.
Em seguida, veremos outros comandos de manipulação de dados (DML), como o insert, update e delete
DEFINIÇÃO DE DADOS
O conjunto de relações (tabelas) de um BD precisa ser especificado ao sistema por meio de uma linguagem de definição de dados - DDL.
A SQL DDL permite a especificação não apenas de um conjunto de relações, mas também de informações sobre cada relação, incluindo:Esquema para cada relação (seus atributos);Domínio de valores associados a cada atributo;Conjunto de índices a ser mantido para cada relação;Restrições de integridade;Definição de chaves primárias e chaves estrangeiras etc.
CRIANDO E APAGANDO BANCO DE DADOS
Um banco de dados em SQL é definido usando o comando create database:
create database <nome>; onde <nome> é o nome do banco de dados
Exemplo:create database myDatabase;
Para apagar um banco de dados use o comando:drop database <nome>;
CRIANDO RELAÇÕES EM BANCO DE DADOS Uma relação SQL é definida usando o comando create
table:create table R (
A1 D1 [N1] [d1], A2 D2 [N2] [d2], ..., An Dn [Nn] [dn],<regras de integridade1>,...,<regras de integridadek>
);
CRIANDO RELAÇÕES EM BANCO DE DADOS R é o nome da relação Cada Ai é o nome de um atributo em R Di é o tipo dos atributos Ai, [Ni] indica que o atributo deve ser obrigatoriamente
preenchido ou não.Por padrão, Ni recebe o valor NULL.
[di] indica que o atributo possui algum valor padrão ou não.Por padrão, os atributos não possuem valor padrão.
CRIANDO RELAÇÕES EM BANCO DE DADOS Exemplo:
create table Time (numCadastro INTEGER NOT NULL,nome VARCHAR(30) NOT NULL,cidade VARCHAR(50) default ‘Vitória’,situacao INTEGER NOT NULL
);
R
Ai
Didi
Ni
CRIANDO RELAÇÕES EM BANCO DE DADOS As Regras de Integridade permitidas englobam:
Chaves primárias
Chaves estrangeiras
CHAVES PRIMÁRIAS
Toda tabela deve ter uma chave primária que pode ser simples ou composta.Simples usa apenas um atributo.Composta usa dois ou mais atributos.
O objetivo da chave primária é identificar unicamente entidades dentro de um conjunto de entidades.A chave primária nunca se repetirá. Ela é única.
Para criar uma chave primária basta usar a palavra chave primary key e entre parênteses colocar o nome dos campos que compõem a chave[constraint [identificado]] primary key (A1, A2, ...., AJ)
CHAVES PRIMÁRIAS
Criando uma tabela com chave primária:
create table NOME_TABELA (atrib1 <tipo> not null,atrib2 <tipo> not null,....,atribX <tipo>, primary key (atrib1, atrib2, ...)
);
CHAVES PRIMÁRIAS
Exemplos :create table cliente(
id integer not nullauto_increment,
nome varchar(45) not null,cpf varchar(20) not null,endereco varchar(100) not null,primary key (id)
);
CHAVES PRIMÁRIAS
create table agencia(
numAgencia integer not null,nome varchar(45) not null,endereco varchar(100) not null,fundos decimal(10,2) not null,constraint pk_agencia primary key (numAgencia)
);create table correntista(
idCliente integer not null,numAgencia integer not null,numConta integer not null,primary key (idCliente, numAgencia, numConta)
);
CHAVES ESTRANGEIRAS
O conceito de chave estrangeira se refere ao tipo de relacionamento entre as tabelas de dados do BD.
Uma chave estrangeira (foreign key) é a chave formada através de um relacionamento com a chave primária de outra tabela.A chave estrangeira é um campo que aponta para a chave
primária de outra tabela.
Ela define um relacionamento entre as tabelas e pode ocorrer repetidas vezes.A chave estrangeira pode repetir em uma tabela.
CHAVES ESTRANGEIRAS
Caso a chave primária seja composta na origem, a chave estrangeira também será.
A finalidade da chave estrangeira é garantir a integridade dos dados referenciais.Apenas serão permitidos valores que aparecem ou que
supostamente vão aparecer na Base de Dados.
CHAVES ESTRANGEIRAS
Exemplo
O relacionamento entre AGENCIA e CONTA é feita via atributo numAgenciaEm AGENCIA é a chave primária, logo seu valor é únicoEm CONTA é uma chave estrangeira, portanto seu valor
pode aparecer diversas vezes
Tabela AGENCIA Tabela CONTA- numAgencia (PK)- nome- endereco- fundos
- numeroConta- numAgencia (FK)- saldo
CHAVES ESTRANGEIRAS
Para se definir uma chave estrangeira deve usar a seguinte sintaxe:
[constraint [identificador]] foreign key (atrib1, atrib2, ...) references nome_tabela [(atribX, atribY, ...)] [on delete opção] [on update opção]
ou seja, deve-se referenciar os campos da tabela corrente (atrib1, atrib2, ...) com os atributos a que estão relacionados na tabela nome_tabela (atribX, atribY, ...)
Se os atributos da tabela corrente forem iguais aos atributos da tabela referenciada, pode-se omitir os nomes desses atributos.
CHAVES ESTRANGEIRAS
Exemplo
create table agencia ( numAgencia integer not null, nome varchar(45) not null, endereco varchar(100) not null, fundos decimal(10,2) not null, primary key (numAgencia));
create table conta ( numConta integer not null, numAgencia integer not null, saldo decimal(10,2) not null , primary key (numConta, numAgencia), foreign key (numAgencia)
references agencia(numAgencia));
CHAVES ESTRANGEIRAS
Algumas ações podem estar associadas a chaves estrangeiras
Essas ações ocorrem quando se atualiza ou se remove um valor que é chave PRIMÁRIA na tabela referenciada pela chave estrangeira.
CHAVES ESTRANGEIRAS
ON UPDATE:A cláusula ON UPDATE indica que quando uma atualização
é executada sobre uma linha na tabela referenciada, uma das seguintes ações será executada:○ NO ACTION (RESTRICT)
A atualização de uma chave primária pode ser abortada caso um registro em uma tabela referenciada tenha um valor mais antigo.
Este parâmetro é o default quando esta cláusula não recebe nenhum parâmetro.
Exemplo:Tentar atualizar o código de um cliente quando esse cliente já
possui um pedido.Um erro é gerado!
CHAVES ESTRANGEIRAS
ON UPDATE:○ CASCADE (Em Cascata)
Quando o campo da chave primária é atualizado, registros na tabela referenciada são atualizados em cascata.
Exemplo:Tentar atualizar o código de um cliente quando esse cliente já
possui um pedido.Nenhum erro é gerado, pois o código do cliente também será
atualizado na tabela PEDIDO.
CHAVES ESTRANGEIRAS
ON DELETE:Esta cláusula indica que quando uma exclusão é executada
sobre uma linha na tabela referenciada, uma das seguintes ações será executada:○ NO ACTION (RESTRICT)
Quando um campo de chave primária está para ser deletado, a exclusão será abortada caso o valor de um registro na tabela referenciada seja mais velho.
Este parâmetro é o default quando esta cláusula não recebe nenhum parâmetro.
Exemplo:Tentar excluir um cliente que possui um pedidoUm erro será gerado!
CHAVES ESTRANGEIRAS
ON DELETE:○ CASCADE
Quando um registro com a chave primária é excluído, todos os registros relacionados com aquela chave são excluídos.
○ SET NULLQuando um registro com a chave primária é excluído, os respectivos
campos na tabela relacionada recebem NULL.○ SET DEFAULT
Quando um registro com a chave primária é excluído, os campos respectivos da tabela relacionada recebem o valor DEFAULT.
CHAVES ESTRANGEIRAS
Exemplo:
create table conta ( numConta integer not null, numAgencia integer not null, saldo decimal(10,2) not null , primary key (numConta, numAgencia), foreign key (numAgencia) references agencia(numAgencia)
on update cascadeon delete set null
);
ALTERANDO RELAÇÕES
O comando alter table é usado para alterar a estrutura de uma relação existente.
Ele permite que o usuário faça a inclusão, exclusão de atributos e alteração de restrições nos atributos em uma tabela.
A forma geral para o comando alter table é a seguinte:
alter table <tabela> <add, drop column, alter column> <coluna>
[<tipo_coluna>];
onde add, adiciona uma coluna; drop, remove uma coluna; e alter, modifica algo em uma tabela.
ALTERANDO RELAÇÕES
Exemplos:create table agencia (
nome_agencia varchar(20) not null,cidade_aencia varchar(20) default '',fundo integer(10),primary key (nome_agencia)
); Inserindo nova coluna chamada cep como char(9);
alter table agencia add cep char(9); Inserindo uma coluna chamada num como um valor inteiro
e com zero como valor padrão;alter table agencia add num decimal default 0;
ALTERANDO RELAÇÕES
Exemplos:
nome_agencia varchar(20)
cidade_agencia varchar(20)
fundos double
cep char(9) num int
Redwood Palo Alto 2100000 <null> 0
Perryridge Horseneck 1700000 <null> 0
Mianus Horseneck 400000 <null> 0
Round Hill Horseneck 8000000 <null> 0
Pownal Bennington 300000 <null> 0
North Town Rye 3700000 <null> 0
Brighton Brooklyn 7100000 <null> 0
Down Brooklyn 9000000 <null> 0
ALTERANDO RELAÇÕES
Exemplos: create table agencia (
nome_agencia varchar(20) not null,cidade_aencia varchar(20) default '',fundo integer(10),cep char(9),num integer default 0, primary key (nome_agencia)
); Excluindo a coluna CEP
alter table agencia drop column cep; Excluindo a coluna fundos
alter table agencia drop column fundos;
ALTERANDO RELAÇÕES
Exemplos:
nome_agencia varchar(20)
cidade_agencia varchar(20)
num int
Redwood Palo Alto 0
Perryridge Horseneck 0
Mianus Horseneck 0
Round Hill Horseneck 0
Pownal Bennington 0
North Town Rye 0
Brighton Brooklyn 0
Down Brooklyn 0
ALTERANDO RELAÇÕES
Alterando restrições numa tabela. Exemplos:
alter table agencia alter column cod set not null;alter table agencia alter column cod set default 0;
É possível inserir uma chave estrangeira numa tabela depois de criada usando o comando:
alter table tabela add foreign key (campo) references tabela(campo);
APAGANDO RELAÇÕES
Para apagar uma tabela do banco de dados use o comando:
drop table <nome>; onde <nome> é o nome da tabela.
O comando drop table remove todas as informações da relação no banco de dados.
Exemplo: Para eliminar uma tabela chamada EMPREGADO, fazemos:
drop table EMPREGADO;
APAGANDO RELAÇÕES
OBSERVAÇÃO:Existem casos em que a chave primária da tabela que se
está apagando é utilizada como chave estrangeira ou como chave primária composta em diversas tabelas que devem ser devidamente corrigidas.
Este processo não é assim tão simples pois, a exclusão da tabela EMPREGADO implica na alteração do projeto físico de diversas tabelas.
Isto acaba implicando na construção de uma nova base de dados.
CRIANDO ÍNDICES
Um índice pode ser criado em uma tabela para encontrar dados mais rápido e eficiente, sem a necessidade de percorrer toda a tabela.
Os índices não podem ser visualizados pelos usuários. Observação: Atualizar uma tabela com índice leva mais
tempo do que atualizar uma tabela sem índice.Portanto, apenas crie índices em colunas (e tabelas) que
serão usadas mais para consultas do que inserção/exclusão.
CRIANDO ÍNDICES
Para criar um índice:
create index nomeIndice on nomeTabela (nomeColuna)
Para apagar um índice*:
alter table nomeTabela drop index nomeIndice
* Sintaxe usada no MySQL.
BIBLIOGRAFIA
SILBERSCHATZ, Abraham; KORTH, Henry F.; SUDARSHAN, S.. Sistema de banco de dados. 3 ed. São Paulo: Pearson Makron Books, 2005, Cap. 4