bancos de dados – sql – parte 1 ceça. ceça moraes 2 conteúdo introdução histórico...

35
Bancos de Dados – SQL – parte 1 Ceça

Upload: internet

Post on 17-Apr-2015

109 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: Bancos de Dados – SQL – parte 1 Ceça. Ceça Moraes 2 Conteúdo Introdução Histórico Componentes DDL – Criando tabelas

Bancos de Dados – SQL – parte 1

Ceça

Page 2: Bancos de Dados – SQL – parte 1 Ceça. Ceça Moraes 2 Conteúdo Introdução Histórico Componentes DDL – Criando tabelas

Ceça Moraes 2

Conteúdo

• Introdução• Histórico• Componentes• DDL– Criando tabelas

Page 3: Bancos de Dados – SQL – parte 1 Ceça. Ceça Moraes 2 Conteúdo Introdução Histórico Componentes DDL – Criando tabelas

Ceça Moraes 3

Introdução

• Linguagem padrão completa de consulta e manipulação de dados em BDs relacionais

• Largamente implementada no mercado

• Desenvolvida pela IBM– Início da década de 70– Implementada pela primeira vez em

um protótipo (Sistema R)– Reimplementada depois em muitos

produtos da IBM e outros fornecedores

Page 4: Bancos de Dados – SQL – parte 1 Ceça. Ceça Moraes 2 Conteúdo Introdução Histórico Componentes DDL – Criando tabelas

Ceça Moraes 4

Componentes

• Uma DDL para definição do esquema da base de dados

• Uma DML para programação de consultas e transações que inserem,removem e alteram linhas de tabelas

• SQL pode ser embutida em linguagens de programação de 3ª geração (COBOL, C, Java…) estendendo-as para a manipulação de banco de dados

• Um padrão para comunicação cliente/servidor (ODBC - open database connectivity)

Page 5: Bancos de Dados – SQL – parte 1 Ceça. Ceça Moraes 2 Conteúdo Introdução Histórico Componentes DDL – Criando tabelas

Ceça Moraes 5

DDL – Definição de Estrutura

• SQL oferece três instruções para definição do esquema do banco de dados:

• Create Table– Define a estrutura de uma tabela, suas

restrições de integridade e cria a tabela vazia (sem linhas)

• Drop Table– elimina a tabela da base de dados

• Alter Table– permite modificar a definição de uma tabela

Page 6: Bancos de Dados – SQL – parte 1 Ceça. Ceça Moraes 2 Conteúdo Introdução Histórico Componentes DDL – Criando tabelas

Ceça Moraes 6

Criando TabelasDomínios

• Um domínio é uma coleção de valores válidos;

• O padrão-SQL2 aceita diversos tipos de restrições de domínio:– Char/Varchar– Integer– Smallint– Numeric– Real, double precision– Float– Date– Time– Datetime– Null/Not null

Page 7: Bancos de Dados – SQL – parte 1 Ceça. Ceça Moraes 2 Conteúdo Introdução Histórico Componentes DDL – Criando tabelas

Ceça Moraes 7

Criando TabelasCREATE TABLE

• O comando CREATE TABLE cria tabelas e obedece a seguinte forma:

CREATE TABLE <tabela> (<descrição das colunas>), (<descrição das chaves>);

Page 8: Bancos de Dados – SQL – parte 1 Ceça. Ceça Moraes 2 Conteúdo Introdução Histórico Componentes DDL – Criando tabelas

Ceça Moraes 8

Exemplo

Fornecedor

cod nomestatus

cidade cgc

Peca

cod nome

cor

cidadepeso

cod

Embarque

qtd data

N N

Page 9: Bancos de Dados – SQL – parte 1 Ceça. Ceça Moraes 2 Conteúdo Introdução Histórico Componentes DDL – Criando tabelas

Ceça Moraes 9

Criando TabelasCREATE TABLE Peca

CREATE TABLE Peca

(CodPeca CHAR(4) NOT NULL,

NomePeca CHAR(50) NOT NULL,

CorPeca CHAR(10) NULL,

PesoPeca INTEGER NULL,

CidadePeca CHAR(40) NULL,

PRIMARY KEY (CodPeca))

ENGINE = INNODB MYSQL

Page 10: Bancos de Dados – SQL – parte 1 Ceça. Ceça Moraes 2 Conteúdo Introdução Histórico Componentes DDL – Criando tabelas

Ceça Moraes 10

Criando TabelasCREATE TABLE Fornecedor

CREATE TABLE Fornecedor

(CodFornec CHAR(4) NOT NULL,

NomeFornec CHAR(50) NOT NULL,

StatusFornec INTEGER ,

CidadeFornec CHAR(40),

CGC CHAR(14) NULL Unique,

PRIMARY KEY (CodFornec))

ENGINE = INNODB MYSQL

Page 11: Bancos de Dados – SQL – parte 1 Ceça. Ceça Moraes 2 Conteúdo Introdução Histórico Componentes DDL – Criando tabelas

11

Criando TabelasCREATE TABLE Embarque

CREATE TABLE Embarque(CodPeca CHAR(4) NOT NULL,CodFornec CHAR(4) NOT NULL,QtdeEmbarc INTEGER NOT NULL,PRIMARY KEY (CodPeca,CodFornec),FOREIGN KEY (CodPeca) REFERENCES Peca (CodPeca),

FOREIGN KEY (CodFornec) REFERENCES Fornecedor (CodFornec))

ENGINE = INNODBMYSQ

L

Page 12: Bancos de Dados – SQL – parte 1 Ceça. Ceça Moraes 2 Conteúdo Introdução Histórico Componentes DDL – Criando tabelas

Ceça Moraes 12

Observações

• A cláusula REFERENCES estabelece a restrição de integridade referencial entre as tabelas

• Só podemos incluir essas restrições se as tabelas referenciadas já existirem

• Podemos criar tabelas sem a cláusula REFERENCES e depois utilizar o comando ALTER TABLE para realizar a restrição

Page 13: Bancos de Dados – SQL – parte 1 Ceça. Ceça Moraes 2 Conteúdo Introdução Histórico Componentes DDL – Criando tabelas

Ceça Moraes 13

Chaves

• Especificação de chaves:– primária (PRIMARY KEY)– estrangeira (FOREIGN KEY)– alternativa (Unique)

• Praticamente todos SGBDS comerciais incluem a definição de chaves

Page 14: Bancos de Dados – SQL – parte 1 Ceça. Ceça Moraes 2 Conteúdo Introdução Histórico Componentes DDL – Criando tabelas

Ceça Moraes 14

Integridade ReferencialDeleção

• Caso nada seja especificado na definição da chave estrangeira...– Uma linha que contenha uma chave

primária referenciada como chave estrangeira não pode ser excluída (regra RESTRICT)

• Pode ser definida a propagação da exclusão da linha para as linhas que a referenciam

Page 15: Bancos de Dados – SQL – parte 1 Ceça. Ceça Moraes 2 Conteúdo Introdução Histórico Componentes DDL – Criando tabelas

15

Integridade ReferencialCláusula ON DELETE

CREATE TABLE Embarque

(CodPeca CHAR(4) NOT NULL,

CodFornec CHAR(4) NOT NULL,

QtdeEmbarc INTEGER NOT NULL,

PRIMARY KEY (CodPeca,CodFornec),

FOREIGN KEY (CodPeca) REFERENCES Peca (CodPeca)

ON DELETE CASCADE,

FOREIGN KEY (CodFornec) REFERENCES Fornecedor (CodFornec)

ON DELETE CASCADE)

Page 16: Bancos de Dados – SQL – parte 1 Ceça. Ceça Moraes 2 Conteúdo Introdução Histórico Componentes DDL – Criando tabelas

Ceça Moraes 16

Integridade ReferencialCláusula ON DELETE

• Sintaxe completaFOREIGN KEY ... REFERENCES ...

ON DELETE {CASCADE|SET NULL|RESTRICT}

• SET NULL– Especifica que as chaves estrangeiras que

referenciam a linha excluída devem ser tornadas vazias

Page 17: Bancos de Dados – SQL – parte 1 Ceça. Ceça Moraes 2 Conteúdo Introdução Histórico Componentes DDL – Criando tabelas

Ceça Moraes 17

Integridade ReferencialCláusula ON DELETE

• RESTRICT (default)– Especifica que uma linha não pode

ser excluída caso existam chaves estrangeiras que a referenciem

• CASCADE– Propaga a exclusão da chave primária

para as linhas que a referenciam como estrangeira

Page 18: Bancos de Dados – SQL – parte 1 Ceça. Ceça Moraes 2 Conteúdo Introdução Histórico Componentes DDL – Criando tabelas

Ceça Moraes 18

Integridade ReferencialCláusula ON UPDATE

• Sintaxe completaFOREIGN KEY ... REFERENCES ...ON UPDATE {CASCADE|SET NULL|RESTRICT}

• CASCADE– Alteração da chave primária é propagada

para as chaves estrangeiras que a referenciam

• SET NULL– Chaves estrangeiras que referenciam a linha

alterada devem ser tornadas vazias

• RESTRICT– uma chave primária não pode ser alterada,

caso existam chaves estrangeiras que a referenciem

Page 19: Bancos de Dados – SQL – parte 1 Ceça. Ceça Moraes 2 Conteúdo Introdução Histórico Componentes DDL – Criando tabelas

Ceça Moraes 19

Removendo TabelasDROP TABLE

• Para eliminar completamente uma tabela (vazia ou não) da base de dados, usa-se a instrução:– DROP TABLE Embarque

• o SQL/2 inclui cláusulas RESTRICT e CASCADE (obrigatória) que informam se a exclusão deve ser propagada ou não para objetos definidos com base na tabela (visões)

• Exemplo– DROP TABLE Embarque RESTRICT– Exclui a tabela somente se não existirem

visões definidas com base na tabela

Page 20: Bancos de Dados – SQL – parte 1 Ceça. Ceça Moraes 2 Conteúdo Introdução Histórico Componentes DDL – Criando tabelas

Ceça Moraes 20

Modificando TabelasALTER TABLE

• A instrução ALTER TABLE serve para modificar a estrutura original da tabela.

• Nem todas modificações são permitidas• Primeiros SGBDs e SQL/1 somente

permitiam adicionar colunas• Exemplo: adicionar colunas a tabelas– ALTER TABLE Embarque ADD DataEmbarq DATE

– Para cada linha existente será criada uma instância de DataEmbarq vazia

Page 21: Bancos de Dados – SQL – parte 1 Ceça. Ceça Moraes 2 Conteúdo Introdução Histórico Componentes DDL – Criando tabelas

Ceça Moraes 21

ObservaçõesALTER TABLE

• A instrução adiciona uma nova coluna com o valor vazio para todas linhas

• Os valores para as diversas linhas devem ser adicionadas através de instruções da DML (UPDATE)

• Não pode ser especificada a cláusula NOT NULL já que a coluna é criada com o valor vazio

Page 22: Bancos de Dados – SQL – parte 1 Ceça. Ceça Moraes 2 Conteúdo Introdução Histórico Componentes DDL – Criando tabelas

Ceça Moraes 22

Modificações de Chaves ALTER TABLE

• ALTER TABLE permite incluir ou excluir restrições de chave– ALTER TABLE Representante DROP PRIMARY KEY

• Para excluir uma chave estrangeira é necessário que ela tenha recebido um nome quando de sua definição– ALTER TABLE Representante ADD FOREIGN KEY (CodFilial) REFERENCES Filial (CodFilial)

– ALTER TABLE Representantes DROP FOREIGN KEY (CodFilial) REFERENCES Filial (CodFilial)

Page 23: Bancos de Dados – SQL – parte 1 Ceça. Ceça Moraes 2 Conteúdo Introdução Histórico Componentes DDL – Criando tabelas

Ceça Moraes 23

Observações• ALTER TABLE com definição de chaves

permite separar a DDL• em duas seções– Primeira seção contém apenas os CREATE

TABLE com a estrutura da base de dados– Segunda seção contém as restrições de chave

através de instruções ALTER TABLE• Sintaxe para chaves vista até aqui está

saindo de uso• A tendência em SQL/2 é tratar de forma

uniforme todas restrições de integridade (chave primária, chave única, chave estrangeira, …)– São chamados de CONSTRAINT

Page 24: Bancos de Dados – SQL – parte 1 Ceça. Ceça Moraes 2 Conteúdo Introdução Histórico Componentes DDL – Criando tabelas

Ceça Moraes 24

Restrições de Integridade CONSTRAINT

CREATE TABLE Embarque(CodFornec CHAR(4) not null, CodPeca CHAR(4) not null, Quant INTEGER not null, DataEmbarq DATE, CONSTRAINT PK_EMBARQ PRIMARY KEY(CodFornec,CodPeca))

Page 25: Bancos de Dados – SQL – parte 1 Ceça. Ceça Moraes 2 Conteúdo Introdução Histórico Componentes DDL – Criando tabelas

Ceça Moraes 25

Restrições de Integridade CONSTRAINT

ALTER TABLE Embarque

ADD CONSTRAINT FK_EMBARQ_RELATION_PECA

FOREIGN KEY (CodPeca)

REFERENCES Peca (CodPeca)

Page 26: Bancos de Dados – SQL – parte 1 Ceça. Ceça Moraes 2 Conteúdo Introdução Histórico Componentes DDL – Criando tabelas

Ceça Moraes 26

Restrições de Integridade CONSTRAINT

ALTER TABLE Embarque

ADD CONSTRAINT FK_EMBARQ_RELATION_FORNECEDOR

FOREIGN KEY (CodFornec)

REFERENCES Fornecedor (CodFornec)

Page 27: Bancos de Dados – SQL – parte 1 Ceça. Ceça Moraes 2 Conteúdo Introdução Histórico Componentes DDL – Criando tabelas

Ceça Moraes 27

Referências

• Date– Capítulo 4

• Rob & Coronel– Capítulos 7 e 8

Page 28: Bancos de Dados – SQL – parte 1 Ceça. Ceça Moraes 2 Conteúdo Introdução Histórico Componentes DDL – Criando tabelas

Ceça Moraes 28

Exercício

• Instalar o BR Office

• Executar os comandos SQL dos slides a seguir em um banco de dados MS Access ou BR Office

Page 29: Bancos de Dados – SQL – parte 1 Ceça. Ceça Moraes 2 Conteúdo Introdução Histórico Componentes DDL – Criando tabelas

Ceça Moraes 29

Exercício

1. Criação da tabela Peca:CREATE TABLE Peca(CodPeca CHAR(4) NOT NULL,NomePeca CHAR(50) NOT NULL,CorPeca CHAR(10) NULL,PesoPeca INTEGER NULL,CidadePeca CHAR(40) NULL,PRIMARY KEY (CodPeca))

Page 30: Bancos de Dados – SQL – parte 1 Ceça. Ceça Moraes 2 Conteúdo Introdução Histórico Componentes DDL – Criando tabelas

Ceça Moraes 30

Exercício

2. Criação da tabela Fornecedor:CREATE TABLE Fornecedor(CodFornec CHAR(4) NOT NULL,NomeFornec CHAR(50) NOT NULL,StatusFornec INTEGER ,CidadeFornec CHAR(40),CGC CHAR(14) NULL

Unique,PRIMARY KEY (CodFornec))

Page 31: Bancos de Dados – SQL – parte 1 Ceça. Ceça Moraes 2 Conteúdo Introdução Histórico Componentes DDL – Criando tabelas

Ceça Moraes 31

Exercício

3. Criação da tabela Embarque:CREATE TABLE Embarque

(CodPeca CHAR(4) NOT NULL,

CodFornec CHAR(4) NOT NULL,

QtdeEmbarc INTEGER NOT NULL,

PRIMARY KEY (CodPeca,CodFornec),

FOREIGN KEY (CodPeca) REFERENCES Peca (CodPeca),

FOREIGN KEY (CodFornec) REFERENCES Fornecedor (CodFornec))

Page 32: Bancos de Dados – SQL – parte 1 Ceça. Ceça Moraes 2 Conteúdo Introdução Histórico Componentes DDL – Criando tabelas

Ceça Moraes 32

Exercício

4. Alteração da tabela Embarque:– ALTER TABLE Embarque ADD

DataEmbarq DATE

5. Remoção da tabela Embarque:– DROP TABLE Embarque

Page 33: Bancos de Dados – SQL – parte 1 Ceça. Ceça Moraes 2 Conteúdo Introdução Histórico Componentes DDL – Criando tabelas

Ceça Moraes 33

Exercício

6. Criação da tabela Embarque (CONSTRAINT):

CREATE TABLE Embarque

(CodFornec CHAR(4) not null,

CodPeca CHAR(4) not null,

Quant INTEGER not null,

DataEmbarq DATE,

CONSTRAINT PK_EMBARQ PRIMARY KEY

(CodFornec,CodPeca))

Page 34: Bancos de Dados – SQL – parte 1 Ceça. Ceça Moraes 2 Conteúdo Introdução Histórico Componentes DDL – Criando tabelas

Ceça Moraes 34

Exercício

7. Criação do relacionamento Embarque-Peca (CONSTRAINT):

ALTER TABLE Embarque

ADD CONSTRAINT FK_EMBARQ_RELATION_PECA

FOREIGN KEY (CodPeca)

REFERENCES Peca (CodPeca)

Page 35: Bancos de Dados – SQL – parte 1 Ceça. Ceça Moraes 2 Conteúdo Introdução Histórico Componentes DDL – Criando tabelas

Ceça Moraes 35

Exercício

8. Criação do relacionamento Embarque-Fornecedor (CONSTRAINT):

ALTER TABLE Embarque

ADD CONSTRAINT FK_EMBARQ_RELATION_FORNECEDOR

FOREIGN KEY (CodFornec)

REFERENCES Fornecedor (CodFornec)