banco de dados. revisão vimos na aula passada como criar diagramas e modelos utilizando a...
TRANSCRIPT
Banco de dados
Revisão• Vimos na aula passada como criar diagramas e
modelos utilizando a ferramenta BrModelo.
Cliente deposita Conta
DataCódigo
Saldo
(1,1) (1,1)
ValorCPF
Nome
SQL• SQL é a linguagem padrão para se lidar com bancos de dados
relacionais, e é aceita por quase todos os produtos existentes no mercado.
SQL - Domínio• char(n): Cadeia de caracteres de tamanho fixo.• varchar(n): Cadeia de caracteres de tamanho
variável com comprimento máximo especificado.• int: Inteiro• smallint: Inteiro pequeno (ocupa metade do
espaço do int).• numeric(p, d): Número de ponto fixo, com
definição da precisão e número de casas decimais.
SQL - Domínio• Real: Números de ponto flutuante.• float(n): Número de ponto flutuante com
precisão de no mínimo n dígitos.• Date: Datas, contendo ano, mês e dia.• Time: Hora do dia, em horas, minutos e segundos.
SQL – Criar BD• Comando utilizado para criar um determinado
banco de dados no SGBD:• Sintaxe:
create database nome_do_db;• Exemplo:
create database teste;
Criem um banco de dados com seu nome!
SQL – Remover o BD• Comando utilizado para remover determinado BD
existente no SGBD:• Sintaxe:
drop database nome_do_banco;
Remova o BD com seu nome!
Liste os bancos existentes!
SQL – Remover o BD• Crie novamente o banco de dados com seu
nome!• Liste os bancos existentes!
SQL – Utilizar BD• Como em determinado SGBD podem existir
diversos bancos, de diferentes características, com diferentes relações, etc.• É necessário selecionar o banco de dados que se
deseja trabalhar, ou seja, é necessário se “conectar” ao banco desejado.
SQL – Utilizar BD• Comando utilizado para se “conectar” a um
determinado banco de dados existente no SGBD:• Sintaxe:
use nome_do_db;• Exemplo:
use teste;
Se conecte ao banco criado com seu nome!
SQL – Listar as tabelas do BD• Comando utilizado para listar as tabelas
existentes em um determinado banco de dados do SGBD:• Sintaxe quando está conectado a um BD:
show tables;• Sintaxe quando não está conectado a um BD:
show tables from nome_do_BD;
SQL – Criação de tabela• Uma relação é definida usando comando CREATE TABLE.• Sintaxe:
CREATE TABLE <relação> (<atributo> <domínio><regra do atributo>,..., <atributo> <domínio><regra do atributo>, <regras da tabela>);
CREATE TABLE CLIENTE (nome varchar(255), rg int,
uf char(2),nascimento date, tefefone char(8),sex varchar(255)
);
Crie esta tabela no banco de dados com seu nome!
SQL – Descrição de tabela• Sintaxe:
describe nome_tabela;• Exemplo:
describe cliente;
SQL – Alteração de tabela• Sintaxe:
ALTER TABLE <relação> ADD <atributo> <definição>;ALTER TABLE <relação> CHANGE <atributo_antigo> <novo_atributo> <definição>ALTER TABLE <relação> DROP <atributo>;
• Exemplo: ALTER TABLE cliente ADD codigo int FIRST;ALTER TABLE cliente ADD cpf int;ALTER TABLE cliente DROP rg;ALTER TABLE cliente DROP uf;ALTER TABLE cliente CHANGE sex sexo char(1);
Realize as modificações abaixo e veja como a tabela ficou!
SQL – Remoção de tabela• Uma relação é apagada através do comando
DROP TABLE• Sintaxe:
DROP TABLE <relação>;• Exemplo:
DROP TABLE CLIENTE;
SQL – Regras para criação de tabelas• Podemos colocar restrições de integridade nas
relações criadas:• Assegurar que alterações feitas no banco de dados não
resultem em perda da consistência dos dados.• Utilizaremos as seguintes regras de integridade:• Restrição de nulo;• Restrição de integridade de entidade;• Restrições de chave;• Restrição de integridade referencial.
SQL - Regras• Restrição de nulo• Pode ser especificado se valor nulo pode ou não ser
permitido.• No SQL, devemos colocar NOT NULL após o tipo do
atributo.• Exemplo:
CREATE TABLE CLIENTE (codigo int NOT NULL, ....
);
SQL - Regras• Restrição de integridade de entidade• Nenhum valor de chave primária pode ser nulo.
• Restrições de chave• Por definição, todos os elementos de um conjunto são
distintos;• Conseqüentemente, todas as tuplas em uma relação
devem também serem distintas;• Isto significa que não deve existir duas tuplas com a
mesma combinação de valores para todos os atributos.
SQL - Regras• Quando definimos uma chave primária já
garantimos que só haverá tuplas distintas na relação:• Logo garantimos a restrição de chave ao definirmos
uma chave primária.• No SQL, definimos chave primária da seguinte
forma:codigo int NOT NULL PRIMARY KEY
É definido desta forma apenas na criação da tabela!
SQL - RegrasCREATE TABLE CLIENTE (
codigo int NOT NULL PRIMARY KEY,nome varchar(255), cpf int,
nascimento date, tefefone char(8),sexo char(1)
);
SQL - Regras• Para chave primária normalmente utilizamos um
parâmetro de auto incremento.
CREATE TABLE alunos (id_alu INT NOT NULL AUTO_INCREMENT,nome_alu VARCHAR( 100 ) NOT NULL,idade_alu INT NOT NULL,data_alu DATE NOT NULL,sexo CHAR(1) NOT NULL,PRIMARY KEY ( id_alu )
)
SQL - Regras• Para colocar um atributo como chave primária de
uma tabela já existente utiliza-se o comando Alter table.
• Sintaxe:ALTER TABLE tabela ADD PRIMARY KEY(atributo);
Insira uma chave primária na tabela cliente
SQL - Regras• Para remover a chave primária de uma relação
utiliza-se o comando Alter table.• Sintaxe:
ALTER TABLE tabela DROP PRIMARY KEY;
Remova a chave primária na tabela cliente
Insira novamente a chave primária na tabela cliente
SQL - Regras• Chave candidata• UNIQUE
cpf int NOT NULL UNIQUEouUNIQUE (cpf)• Os atributos podem ser nulos.
É definido desta forma apenas na criação da tabela!
SQL - RegrasCREATE TABLE CLIENTE (
codigo int NOT NULL PRIMARY KEY,nome varchar(255), cpf int NOT NULL UNIQUE,
nascimento date, tefefone char(8),sexo char(1)
);
SQL - RegrasCREATE TABLE CLIENTE (
codigo int NOT NULL PRIMARY KEY,nome varchar(255), cpf int NOT NULL,
nascimento date, tefefone char(8),sexo char(1),UNIQUE (cpf)
);
SQL - Exemplo
CREATE TABLE CLIENTE (codigo int NOT NULL PRIMARY KEY, nome varchar(30) NOT NULL, cpf int UNIQUE,nascimento date default ’0000-00-00’, tefefone char(8) default null,sexo char(1)
);
SQL - Regras• Restrição de integridade referencial:• é especificada entre duas relações e é usada para
manter a consistência entre tuplas das duas relações;• Informalmente, a restrição de integridade referencial
diz que uma tupla da relação (R1), que refere-se a outra relação (R2), deve referir-se a uma tupla existente em R2 (chave estrangeira).
SQL - Regras• Restrição de integridade referencial• No SQL, definimos chave estrangeira da seguinte
forma:• Sintaxe:FOREIGN KEY (atributo) REFERENCES
tabela(atributo)
É definido desta forma apenas na criação da tabela!
SQL - RegrasCREATE TABLE COMPRA(
codigo int NOT NULL PRIMARY KEY, cod_cliente int, data date, FOREIGN KEY (cod_cliente) REFERENCES cliente(codigo)
);
Crie esta relação!Visualize a descrição desta relação!
SQL - Regras• ON DELETE• RESTRICT:• Exclusão de T1 falha se existem linhas em T2 combinando
(padrão do SQL).
• CASCADE:• Exclusão de T1 exclusão de todas as linhas de T2 que
combinam.
• SET NULL:• Exclusão de T1 colocar nulo nos atributos da chave
estrangeira de cada tupla de T2 que combina.
• SET DEFAULT:• Exclusão de T1 colocar valores default nos atributos da
chave estrangeira de cada tupla de T2 que combina.
SQL - Regras• ON UPDATE• RESTRICT:• Alteração de T1 falha se existem linhas em T2 combinando
(padrão do SQL).
• CASCADE:• Alteração de T1 linhas que combinam em T2 também serão
atualizadas.
• SET NULL:• Alteração de T1 colocar nulo nos atributos da chave
estrangeira de cada tupla de T2 que combina.
• SET DEFAULT:• Alteração de T1 colocar valores default nos atributos da
chave estrangeira de cada tupla de T2 que combina.
SQL - Regras
CREATE TABLE PEDIDO(cod_pedido int NOT NULL PRIMARY KEY,cod_cliente int,FOREIGN KEY (cod_cliente) REFERENCES cliente (codigo)ON DELETE SET NULLON UPDATE CASCADE
);
Remover a tabela compra!Criar a tabela pedido!
SQL - Regras• Para alterar as restrições impostas a uma tabela devemos
fazer o seguinte comando:• Sintaxe:
ALTER TABLE <tabela> ADD (<regra>);• Exemplo:
ALTER TABLE cliente ADD PRIMARY KEY(cpf);
SQL - Regras• Caso já sido definido o mesmo tipo de restrições que
queremos inserir na tabela, então devemos remover primeiro essas restrições• Sintaxe:
ALTER TABLE <tabela> DROP <regra>;• Exemplo:
ALTER TABLE cliente DROP PRIMARY KEY;
SQL - Regras• Para alterar as restrições impostas a uma coluna
devemos fazer o seguinte comando:• Sintaxe:
Alter table <tabela> MODIFY <nome_da_coluna> <tipo> <regra>• Exemplo:
ALTER TABLE cliente MODIFY cpf int NOT NULL UNIQUE;