Banco de dados
Revisão
• Vimos na aula passada como criar diagramas e
modelos utilizando a ferramenta BrModelo.
(1,1)
Cliente
CPF
Nome
deposita
Data
(1,1)
Conta
Saldo
Valor
Código
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 (
Crie esta tabela no
nome varchar(255),
banco de dados
rg int,
com seu nome!
uf char(2),
nascimento date,
tefefone char(8),
sex varchar(255)
);
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>;
Realize as modificações abaixo e veja como a tabela
ficou!
• 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);
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 - Regras
CREATE 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 UNIQUE
ou
UNIQUE (cpf)
• Os atributos podem ser nulos.
É definido desta forma apenas na criação da
tabela!
SQL - Regras
CREATE 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 - Regras
CREATE 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 - Regras
CREATE 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
Remover a tabela compra!
Criar a tabela pedido!
CREATE TABLE PEDIDO(
cod_pedido int NOT NULL PRIMARY KEY,
cod_cliente int,
FOREIGN KEY (cod_cliente) REFERENCES cliente
(codigo)
ON DELETE SET NULL
ON UPDATE CASCADE
);
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;
Download

ALTER TABLE - Max Miller