Banco de dados - Aula 1 SQL

36
1

Transcript of Banco de dados - Aula 1 SQL

Page 1: Banco de dados - Aula 1 SQL

1

Page 2: Banco de dados - Aula 1 SQL

2

Page 3: Banco de dados - Aula 1 SQL

• Linguagem padrão para os bancos de dados relacionais;

– Presente praticamente em todos os SGBD´s Relacionais;

– Fácil migração de um SGBD para outro que usa este mesmo modelo;

– Uma das grandes responsáveis pela grande aceitação dos SGBDR´s.

Introdução

3

Page 4: Banco de dados - Aula 1 SQL

• O núcleo da linguagem SQL é dividido em várias partes;

– DDL;

• Criação, alteração e remoção de tabelas e índices;

– DML;

• Inserção, consulta, alteração e modificação de tuplas;

– Manipulação de dados embutida;

• Acesso ao BD através de linguagens de programação;

– Definição de visões;

• Definição de visões a partir das tabelas criadas;

Introdução

4

Page 5: Banco de dados - Aula 1 SQL

5

Page 6: Banco de dados - Aula 1 SQL

SQL

• Tipos de Linguagem

• DDL: Data Definition Language – Linguagem de definição de dados;

• Criação, alteração e remoção de estruturas;

• A nível de Tabela:

• CREATE

• ALTER

• DROP

6

Page 7: Banco de dados - Aula 1 SQL

SQL

• Tipos de Linguagem

• DML: Data Manipulation Language – Linguagem de Manipulação de Dados

• Inserção, alteração e remoção de dados;

• A nível de Tupla:

• INSERT

• UPDATE

• DELETE

7

Page 8: Banco de dados - Aula 1 SQL

SQL

• Tipos de Linguagem

• DML: Data Manipulation Language – Linguagem de Manipulação de Dados;

• SELECT

• Ordenação de dados;

• Agrupamento de dados;

• Funções aritméticas;

• Filtros de seleção;

8

Page 9: Banco de dados - Aula 1 SQL

• Tipos Numéricos:

– INT ou INTEGER;

• Números inteiros;

– SMALLINT;

• Números inteiros pequenos;

– REAL;

• Números reais com precisão simples;

Tipos de dados SQL

9

Page 10: Banco de dados - Aula 1 SQL

• Tipos Numéricos: – DOUBLE PRECISION;

• Número real com precisão dupla;

– FLOAT(n);

• Ponto flutuante com precisão definida pelo usuário;

– NUMERIC (p,d);

• Ponto flutuante onde p é a precisão (total de dígitos decimais) e d é a escala (número de casas depois do ponto);

Tipos de dados SQL

10

Page 11: Banco de dados - Aula 1 SQL

• Cadeias de caracteres: – CHAR(n) ou CHARACTER(N);

• Cadeia de caracteres de tamanho fixo; • Caracteres brancos são adicionados à direita caso o

número de caracteres não seja preenchido;

– VARCHAR(n);

• Cadeia de caracteres com tamanho variável, onde n é o comprimento máximo da cadeia;

– CHARACTER LARGE OBJECT (CLOB);

• Usado para armazenar strings grandes, como textos e documentos;

Tipos de dados SQL

11

Page 12: Banco de dados - Aula 1 SQL

• Cadeias de bits: – BIT(n);

• Conjunto de bits de tamanho fixo;

– BIT VARYING(n);

• Conjunto de bits de tamanho variável, onde n é o tamanho máximo;

– BINARY LARGE OBJECT (BLOB); • Grandes quantidades de bits, usado para armazenar

vídeos, fotos, mapas, etc;

Tipos de dados SQL

12

Page 13: Banco de dados - Aula 1 SQL

• Tipos Booleanos: – BOOLEAN:

• Valores booleanos;

• EM SQL, ele pode assumir os valores true, false ou unknow;

• Data e Hora: – DATE:

• Especifica uma data com o formato YYYY-MM-DD;

– TIME:

• Especifica uma hora com o formato HH:MM:SS;

Tipos de dados SQL

13

Page 14: Banco de dados - Aula 1 SQL

DDL

• SQL define três comandos para a definição de dados:

• CREATE (criação);

• ALTER (alteração);

• DROP (exclusão);

14

Page 15: Banco de dados - Aula 1 SQL

DDL

• Criando uma nova tabela:

• Usamos o comando CREATE TABLE;

• Definimos um nome para a tabela;

• Definimos depois a lista de atributos, cada qual com seu respectivo tipo;

• Por fim, definimos as restrições;

• Chave primária, chave estrangeira, etc;

15

Page 16: Banco de dados - Aula 1 SQL

DDL

• Criando uma nova tabela:

• A definição de um atributo tem a seguinte sintaxe:

• Nome tipo [NOT NULL] [UNIQUE] [DEFAULT valor]

• Onde:

• Nome: corresponde ao nome do atributo;

• Tipo: corresponde ao tipo de dado deste atributo (Tipo SQL);

• NOT NULL: restrição que indica que o valor do atributo não pode ser nulo;

16

Page 17: Banco de dados - Aula 1 SQL

DDL

• Criando uma nova tabela:

• A definição de um atributo tem a seguinte sintaxe:

• Nome tipo [NOT NULL] [UNIQUE] [DEFAULT valor]

• Onde: • [UNIQUE]: restrição que indica que o valor do atributo é

único; • Usada para chaves secundárias;

• [DEFAULT]: usado para definir um valor inicial para o atributo caso o valor não seja informado;

17

Page 18: Banco de dados - Aula 1 SQL

DDL

• Criando uma nova tabela:

• Podemos especificar as seguintes restrições:

• Chave Primária:

• PRIMARY KEY (atributos_chaves);

• Chave Estrangeira:

• FOREIGN KEY (atributo) REFERENCES tabela_base(atributo);

• Restrição de integridade:

• CHECK (condição);

18

Page 19: Banco de dados - Aula 1 SQL

Exercício 1) Criar uma tabela para cada esquema de

relação: Fornecedor (Codigo, Nome, Cidade); Peça (CodPeca, CodFornecedor, Nome, Descricao); Venda (CodForn, CodPeca, Quantidade, Data);

Exercícios - DDL

19

Page 20: Banco de dados - Aula 1 SQL

• Criando a tabela Fornecedor:

CREATE TABLE Fornecedor(

Codigo INT,

Nome VARCHAR(20) NOT NULL,

Cidade VARCHAR(20) NOT NULL,

PRIMARY KEY (Codigo)

)

Exercícios - DDL

20

Page 21: Banco de dados - Aula 1 SQL

• Criando a tabela Peça: CREATE TABLE Peca(

CodFornecedor INT, CodPeca INT, Nome VARCHAR(20) NOT NULL, Descricao VARCHAR(50), FOREIGN KEY (CodFornecedor) REFERENCES Fornecedor(Codigo), PRIMARY KEY(CodPeca) )

Exercícios - DDL

21

Page 22: Banco de dados - Aula 1 SQL

Exercícios - DDL

• Criando a tabela Venda: CREATE TABLE Venda(

CodForn INT, CodPeca INT, Quantidade INT DEFAULT 1, Data DATE, PRIMARY KEY (CodForn,CodPeca), FOREIGN KEY (CodForn) REFERENCES

Fornecedor(Codigo), FOREIGN KEY (CodPeca) REFERENCES

Peca(CodPeca) )

22

Page 23: Banco de dados - Aula 1 SQL

DDL

• Definindo chaves estrangeiras:

– Como já vimos, usamos a restrição “FOREIGN KEY” para a definição de uma chave estrangeira;

• Uma restrição de integridade referencial é gerada;

– Podemos especificar o que o SGBD deve fazer para manter a integridade referencial dos dados:

• Numa atualização (através da restrição ON UPDATE);

• Numa exclusão (através da restrição ON DELETE);

23

Page 24: Banco de dados - Aula 1 SQL

DDL

• Definindo chaves estrangeiras:

– Para cada uma destas restrições, temos quatro valores possíveis;

• RESTRICT:

–A atualização ou remoção é rejeitada;

• CASCADE:

– A atualização ou exclusão é propagada para as tuplas relacionadas;

24

Page 25: Banco de dados - Aula 1 SQL

DDL

• Definindo chaves estrangeiras:

– Para cada uma destas restrições, temos quatro valores possíveis;

• SET NULL: – As tuplas relacionadas com a tupla a ser atualizada

ou removida tem o valor do atributo chave estrangeira correspondente alterado para Null;

• SET DEFAULT: – As tuplas relacionadas com a tupla a ser atualizada

ou removida tem o valor do atributo chave estrangeira correspondente alterado para um valor default;

25

Page 26: Banco de dados - Aula 1 SQL

DDL

• Definindo chaves estrangeiras:

– Vamos recriar uma das tabelas de nosso exemplo:

CREATE TABLE Peca(

CodFornecedor INT,

CodPeca INT,

Descricao VARCHAR(50),

PRIMARY KEY(CodPeca),

FOREIGN KEY (CodFornecedor) REFERENCES Fornecedor(Codigo) ON DELETE RESTRICT ON UPDATE CASCADE

)

26

Page 27: Banco de dados - Aula 1 SQL

DDL

• Nomeando as restrições:

– Podemos nomear cada restrição definida em uma tabela;

– Isto permite remover uma determinada restrição depois que a tabela é criada;

– Fazemos isso usando a palavra “CONSTRAINT” antes da restrição, seguido do nome dado para a mesma;

27

Page 28: Banco de dados - Aula 1 SQL

DDL

• Nomeando as restrições:

CREATE TABLE Peca(

CodFornecedor INT,

CodPeca INT,

Descricao VARCHAR(50),

PRIMARY KEY(CodPeca),

CONSTRAINT REFERENCIA

FOREIGN KEY (CodFornecedor) REFERENCES Fornecedor(Codigo) ON DELETE RESTRICT ON UPDATE CASCADE

)

28

Page 29: Banco de dados - Aula 1 SQL

DDL

• Alterando uma Tabela:

– Podemos alterar uma tabela usando o comando ALTER TABLE;

– Ao alterar uma tabela, podemos:

• Adicionar ou eliminar uma coluna;

• Alterar a definição de uma coluna;

• Adicionar ou eliminar restrições;

29

Page 30: Banco de dados - Aula 1 SQL

DDL

• Alterando uma Tabela: – Adicionando ou removendo colunas:

• Podemos adicionar uma coluna através da cláusula ADD:

• Se a tabela já foi povoada, todas as tuplas recebem um valor nulo para o novo atributo; –A restrição NOT NULL não pode ser aplicada

neste tipo de atributo; • Exemplo:

ALTER TABLE Empregado ADD Cpf VARCHAR(15);

30

Page 31: Banco de dados - Aula 1 SQL

DDL

• Alterando uma Tabela: – Adicionando ou removendo colunas:

• Podemos remover uma coluna através da cláusula DROP;

• Podemos usar as opções CASCADE ou RESTRICT para tratar as restrições e visões que referenciam o atributo a ser excluído;

• Exemplo:

ALTER TABLE Empregado DROP Salario CASCADE;

31

Page 32: Banco de dados - Aula 1 SQL

DDL

• Alterando uma Tabela:

– Alterando a definição de uma coluna:

• Podemos alterar a definição de uma tabela usando as cláusulas ALTER e SET;

• Exemplo:

ALTER TABLE Venda ALTER Quantidade SET DEFAULT=2;

32

Page 33: Banco de dados - Aula 1 SQL

DDL

• Alterando uma Tabela:

– Adicionando e removendo restrições:

• Podemos adicionar uma restrição através da cláusula ADD CONSTRAINT;

• Exemplo:

ALTER TABLE Venda ADD CONSTRAINT QuantPositiva CHECK (Quantidade>=0)

33

Page 34: Banco de dados - Aula 1 SQL

DDL

• Alterando uma Tabela:

– Adicionando e removendo restrições:

• Podemos remover uma restrição através da cláusula DROP CONSTRAINT;

• Para ser removida, uma restrição deve ter sido nomeada;

• Exemplo:

ALTER TABLE Peca DROP CONSTRAINT Referencia;

34

Page 35: Banco de dados - Aula 1 SQL

DDL

• Removendo uma Tabela:

– Podemos remover uma tabela através do operador DROP;

– Podemos usar as opções CASCADE ou RESTRICT para tratar as tabelas e visões que referenciam a tabela a ser excluída;

– Exemplo:

DROP TABLE Venda CASCADE; (A tabela e suas referencias são apagadas)

DROP TABLE Venda RESTRICT (Apenas tabelas sem visões dependentes ou restrições são apagadas)

35

Page 36: Banco de dados - Aula 1 SQL

DDL

• Removendo uma Tabela:

– Exemplo:

DROP TABLE Venda CASCADE;

Onde a tabela e suas referencias são apagadas

DROP TABLE Venda RESTRICT;

Onde apenas tabelas sem visões dependentes ou restrições são apagadas.

36