Download - Banco de dados II - create
Banco de Dados II
Professor Wagner Gadêa Lorenz
São Vicente do Sul, 27 de Agosto de 2013
1
DDL
DDL (Data Definition Language) ou Linguagem de Definição de
Dados:
disponibiliza comandos para a definição e criação do esquema de base
de dados;
comandos para criação, exclusão e alteração de objetos na base de
dados (exemplo de objetos: tabelas, visões, índice, procedimentos
armazenados, etc.) ;
comandos que especificam direitos de acesso; e comandos que
permitem criar restrições de integridade (triggers).
2
História do PostgreSQL
O PostgreSQL (conhecido anteriormente como Postgres95)
derivou do projeto POSTGRES da universidade de Berkley, cuja
última versão foi a 4.2.
O POSTGRES foi originalmente patrocinado pelo DARPA
(Agência de Projetos de Pesquisa Avançada para Defesa), ARO
(Departamento de Pesquisa Militar), NSF (Fundação Científica
Nacional) e ESL Inc.
A implementação do projeto POSTGRES iniciou em 1986, já em
87 tornou-se operacional.3
História do PostgreSQL
A primeira versão lançada para o público externo foi em 1989.
Devido a uma crítica feita ao seu sistema de regras, o
POSTGRES teve essa parte re-implementada e lançada em uma
segunda versão em 1990.
Em 1991 foi lançada a versão 3, com melhorias no executor de
consultas e algumas partes do código foram re-escritas.
As versões subsequentes, até o Postgres95, foram focadas em
confiabilidade e portabilidade.
4
PostgreSQL hoje
A equipe do projeto cresceu e se espalhou pelo mundo.
O Grupo Global de Desenvolvimento do PostgreSQL tem
membros nos Estados Unidos, Canadá, Japão, Russia, vários
países da Europa e alguns outros.
Esse grupo é formado essencialmente por empresas
especializadas em PostgreSQL, empresas usuárias do sistema,
além dos pesquisadores acadêmicos e programadores
independentes.
5
PostgreSQL hoje
Além da programação, essa comunidade é responsável pela
documentação, tradução, criação de ferramentas de
modelagem e gerenciamento, e elaboração de extensões e
acessórios.
6
PostgreSQL hoje
Pela riqueza de recursos e conformidade com os padrões, ele é
um SGBD muito adequado para o estudo universitário do
modelo relacional, além de ser uma ótima opção para
empresas implementarem soluções de alta confiabilidade sem
altos custos de licenciamento.
É um programa distribuído sob a licença BSD, o que torna o seu
código fonte disponível e o seu uso livre para aplicações
comerciais ou não.
http://www.postgresql.org/7
Comandos DDL
A primeira ação que devemos fazer é selecionar o SGBD que
será utilizado para criar a base de dados e suas respectivas
tabelas.
Utilizaremos o PostgreSQL.
8
Criação de Base de Dados e Esquema
Vamos inicialmente criar a nossa base de dados. Para isso
usamos o comando CREATE.
Sintaxe:
CREATE DATABASE nome da base de dados;
Comando:
CREATE DATABASE exercicios;
9
Criação de Base de Dados e Esquema
Também podemos excluir uma base de dados. Para isso
usamos o comando DROP.
Sintaxe:
DROP DATABASE nome da base de dados;
Comando:
DROP DATABASE exercícios;
Obs: O comando deve ser executado com cuidado, já que irá
eliminar também todas as tabelas existentes na base.
10
Criação de Tabelas e Definição de Constrains
Com a base de dados criada, é necessário criarmos as tabelas
para essa base de dados.
• CREATE TABLE
– Cria uma nova tabela na base de dados, especificando
nome, atributos e restrições.
• ALTER TABLE
– Altera definições de uma tabela.
• DROP TABLE
– Remove uma tabela, quando suas definições não são mais
necessárias.
11
Criação de Tabelas e Definição de Constrains
CREATE TABLE
– Colunas são especificadas primeiro, sob a forma:
<nomeCol> <domínio> <restrição>
– Depois Chaves, integridade referencial e restrições de integridade
Sintaxe:
CREATE TABLE <nome_da_tabela>
( <nome_da_col1> <tipo_da_col1> NOT NULL,
<nome_da_col2> <tipo_da_col2> NOT NULL,
...
PRIMARY KEY <lista_de_nomes_de_col>,
FOREIGN KEY <nomes_de_col>
REFERENCES <nome_tab_ref>(<nome_da_col_ref>)
);
12
Criação de Tabelas e Definição de Constrains
Comando:
CREATE TABLE filmes (
cod char(5) NOT NULL,
titulo varchar(40) NOT NULL,
distribuidora integer NOT NULL,
data_prod date,
tempo int,
PRIMARY KEY (cod)
);
13
Criação de Tabelas e Definição de Constrains
Comando:
CREATE TABLE distribuidora (
cod_dist integer NOT NULL,
nome varchar(80) NOT NULL,
PRIMARY KEY (cod_dist)
);
14
Criação de Tabelas e Definição de Constrains
DROP TABLE
Para excluir uma tabela, utiliza-se o comando DROP. Quando você exclui
uma tabela, você exclui todos os dados que foram armazenados nela.
Sintaxe:
DROP TABLE nome_da_tabela ;
Comando:
DROP TABLE filmes;
15
Criação de Tabelas e Definição de Constrains
ALTER TABLE
O comando nos permite alterar a estrutura de uma tabela. Com ele
podemos adicionar atributos, excluir atributos, alterar o tipo ou tamanho
do atributo, adicionar e excluir constrains.
Sintaxe - Adicionar atributo:
ALTER TABLE <nome_da_tabela>
ADD <nome_da_col1> <tipo_da_col1> ;
Comando - Adicionar atributo
ALTER TABLE filmes
ADD sinopse varchar(200);
16
Criação de Tabelas e Definição de Constrains
Sintaxe - Excluir atributo:
ALTER TABLE <nome_da_tabela>
DROP <nome_da_col1>;
Comando - Excluir atributo
ALTER TABLE filmes
DROP sinopse;
17
Criação de Tabelas e Definição de Constrains
Sintaxe - Adiciona uma chave primária:
ALTER TABLE <nome_da_tabela>
ADD PRIMARY KEY <nome_da_col1>;
Comando - Adicionar atributo
ALTER TABLE filmes
ADD PRIMARY KEY (cod);
18
Prática
19
Prática – Criar Tabelas
Exemplo Modelo Relacional
AUTOR ( COD_AUTOR, NOME, NASCIMENTO)
LIVRO (TITULO, COD_AUTOR, COD_EDITORA,
VALOR REAL, PUBLICACAO, VOLUME)
Cod_Autor referencia AUTOR
Cod_Editora referencia EDITORA
EDITORA( COD_EDITORA, RAZAO, CGC, ENDERECO, CIDADE )
20
Prática – Criar Tabelas
AUTOR ( COD_AUTOR, NOME, NASCIMENTO)
CREATE TABLE Autor(
Cod_Autor integer NOT NULL,
Nome char(30) NOT NULL,
Nascimento date NULL,
PRIMARY KEY (Cod_Autor)
);
21
Prática – Criar Tabelas
EDITORA( COD_EDITORA, RAZAO, CGC, ENDERECO, CIDADE )
CREATE TABLE Editora(
Cod_Editora integer NOT NULL,
Razao char(40) NOT NULL,
CGC char (14) NOT NULL unique,
Endereco char(40) NOT NULL,
Cidade char(25) NOT NULL,
PRIMARY KEY (Cod_Editora)
);
22
Prática – Criar Tabelas
LIVRO (TITULO, COD_AUTOR, COD_EDITORA, VALOR REAL, PUBLICACAO, VOLUME)
Cod_Autor referencia AUTOR
Cod_Editora referencia EDITORA
CREATE TABLE Livro(
Titulo char(30) NOT NULL,
Cod_Autor integer NOT NULL,
Cod_Editora integer NOT NULL,
ValorReal real NOT NULL,
Publicacao date NOT NULL,
Volume integer,
PRIMARY KEY (Titulo, Cod_Autor),
FOREIGN KEY (Cod_Autor) REFERENCES AUTOR,
FOREIGN KEY (Cod_Editora) REFERENCES EDITORA
); 23
Prática – Criar Tabelas
DROP TABLE Editora
OBS : não exclui se tiverem livros referenciando uma editora.
Cláusula ON DELETE CASCADE
24
Prática – Criar Tabelas
LIVRO (TITULO, COD_AUTOR, COD_EDITORA, VALOR REAL, PUBLICACAO, VOLUME)
Cod_Autor referencia AUTOR
Cod_Editora referencia EDITORA
CREATE TABLE Livro(
Titulo char(30) NOT NULL,
Cod_Autor integer NOT NULL,
Cod_Editora integer NOT NULL,
ValorReal real NOT NULL,
Publicacao date NOT NULL,
Volume integer,
PRIMARY KEY (Titulo, Cod_Autor),
FOREIGN KEY (Cod_Autor) REFERENCES AUTOR,
FOREIGN KEY (Cod_Editora) REFERENCES EDITORA ON DELETE CASCADE );
25
Comando INSERT
Comando INSERT é usado em banco de dados, quando
queremos inserir dados na base. Podemos especificar uma
linha a ser inserida ou escrever uma consulta cujo resultado é
um conjunto de linha a inserir.
26
Comando INSERT
Sintaxe:
INSERT INTO nome_da_tabela (atributo_1,...,atributo_n)
VALUES (valor_1,..., valor_n);
Comando:
INSERT INTO autor (Cod_Autor, nome, nascimento)
VALUES (1,’fulano’, ‘02/02/1985’);
....
INSERT INTO Editora (Cod_Editora, Razao,CGC,Endereco,Cidade)
VALUES (1, 'Editora 1', '323344HJ', 'Av. Rio Branco', 'Santa Maria');
.....
27
Comando INSERT
INSERT INTO Livro (Titulo,Cod_Autor,Cod_Editora,ValorReal,Publicacao,Volume)
VALUES ('TITULO 1',1,1,'35.00','22-03-2011','1');
...
Efetuar INSERT para a nossas tabelas Filmes e Distribuidora.
INSERT INTO distribuidora (cod_dist,nome)
VALUES (1,'distribuidora1');
...
INSERT INTO filmes (cod,titulo,distribuidora,data_prod,tempo)
VALUES (1,'filme1',1,'23/08/2011',120);
...28
Comando SELECT
Depois que inserimos dados em uma tabela, podemos começar a
fazer a consulta nessa tabela. A estrutura básica de uma consulta em
SQL consiste em três comandos: SELECT, FROM E WHERE.
O comando SELECT é usado para selecionar os atributos desejados
no resultado de uma consulta.
O comando FROM define quais tabelas serão usadas na consulta.
O comando WHERE descreve a condição da consulta e não é
obrigatório.
29
Comando SELECT
Sintaxe:
select lista_atributos
from tabela
[where condição]
30
Comando SELECT
Consultar tabela
SELECT * FROM filmes;
SELECT * FROM distribuidora;
SELECT cod,titulo,distribuidora,data_prod,tempo FROM filmes;
31
Comando UPDATE
O comando UPDATE modifica valores inseridos dentro de uma tabela
Sintaxe:
UPDATE nome da tabela
SET nome do atributo1 = novo valor [{, nome do atributo_n = novo valor};]
[WHERE condição;]
Comando:
UPDATE filmes
SET titulo = ‘Titulo foi trocado'
WHERE cod =‘1';
32
Comando DELETE
Sintaxe:
DELETE FROM nome_da_tabela [;]
[WHERE condição]
O comando WHERE permite aplicar uma condição que seleciona quais linhas da tabela serão excluídas.
Excluir o Filme com titulo ‘filme2’.
Comando:
DELETE FROM filmes WHERE titulo=‘filme2’;
33
Comando DELETE
Quando você utiliza o DELETE sem a condição WHERE, todos os
registros da tabela serão excluídos.
Comando:
DELETE FROM filmes;
34
Ordenação de Resultados
O comando ORDER BY, como o próprio nome diz, é utilizado
para ordenar o resultado de uma consulta. Ele não altera a
ordem dos dados da tabela física, somente o resultado da
consulta aparece ordenado.
35
Ordenação de Resultados
Sintaxe:
select lista_atributos
from lista_tabelas
[where condição]
[order by nome_atributo 1 [desc] {[,
nome_atributo n [desc]]} ]
Comando:
select * from filmes order by tempo;
select * from filmes order by tempo desc;
select * from filmes order by cod asc, tempo desc; 36
Ordenação de Resultados
É possível limitar a quantidade de valores ordenados a
retornar.
select * from filmes order by tempo LIMIT 2;
37
Comando SELECT
• Facilidades para projeção de informações
– Não há eliminação de duplicatas no Select
• tabela ≡ coleção
– retorno de valores calculados
• uso de operadores aritméticos (+,-,*,/)
– invocação de funções de agregação
• COUNT (contador de ocorrências [de um atributo])
• MAX / MIN (valores máximo / mínimo de um atributo)
• SUM (somador de valores de um atributo)
• AVG (média de valores de um atributo)38
Comando SELECT
• Função COUNT - Exemplos
– informar o total de filmes cadastrados.
select count (*) from filmes;
– total de filmes com mais de 120 min de duração.
select count (*) from filmes where tempo> 120;
39
Cláusula WHERE
• Facilidades para seleção de dados
– busca por padrões
• cláusula [NOT] LIKE
– teste de existência de valores nulos
• cláusula IS [NOT] NULL
– busca por intervalos de valores
• cláusula [NOT] BETWEEN valor1 AND valor2
– teste de pertinência elemento-conjunto
• cláusula [NOT] IN
40
Cláusula WHERE
• Busca por padrões
where atributo like ´padrão´
% : casa com qq cadeia de caracteres
´_´ : casa com um único caractere
[a-f] : casa com qq caractere entre
´a´ e ´f´ (SQL-Server)
• Exemplos
– buscar cod e nome dos filmes com inicial ‘f’
select cod, titulo from filmes where titulo like 'f%'
41
Prática
• Utilizar o arquivo “Banco de dados tennis” disponível no Moodle da disciplina.
• Efetuar operações de SELECT utilizando condições WHERE.
• Lista de Exercícios.
42