Disciplina: Banco de Dados
Professor: José Antônio
José Antônio - CEFET-RN 24/07/2013 1
Criando um banco de dados
Incluindo, atualizando e excluindo linhas
nas tabelas
Pesquisa básica em tabelas
Cálculos e funções usuais
Pesquisa em múltiplas tabelas
Subconsultas
Pesquisa avançada
José Antônio - CEFET-RN 24/07/2013
2
Definição de dados
Criação de tabelas
Integridade referencial – Constraints
Alteração de estrutura de tabela
Excluindo uma tabela
Criação de índices
Laboratório
José Antônio - CEFET-RN 24/07/2013
3
Incluindo dados em tabelas
Atualizando dados em tabelas
Excluindo dados de tabelas
Controle básico de transações
laboratório
José Antônio - CEFET-RN 24/07/2013
4
Ordenando o resultado
Filtrando linhas
laboratório
José Antônio - CEFET-RN 24/07/2013
5
Cálculo e Funções
Cálculos
Numéricos
Alfanuméricos
Manipulação de datas
Funções de grupo
Conversão de tipo
Agrupando resultado
laboratório
José Antônio - CEFET-RN 24/07/2013
6
Subconsultas
Subquery de uma linha
Utilizando subquery em cláusula
HAVING
EXISTS
Subquery de múltiplas linhas
Subquery na cláusula FROM
laboratório
José Antônio - CEFET-RN 24/07/2013
7
Pesquisa avançada
UNION
UNION ALL
EXCEPT/DISTINCT/MINUS
INSERTED
Expressões CASE
CASE compacto
Expressões COALESCE
Laboratório
José Antônio - CEFET-RN 24/07/2013
8
Introdução
Em junho de 1970, E. F. Codd, membro do
Laboratório de Pesquisa da IBM em San Jose, na
Califórnia, publicou um trabalho intitulado “ A
Relacional Model of Data for Large Shared Data
banks” (Um Modelo Relacional de dados para
Grandes bancos de Dados Compartilhados), no
jornal Association of Computer Machinery. Nesse
trabalho, Codd estabeleceu princípios sobre
gerência de banco de dados, denominando-os com
o termo relacional. Essa foi a base utilizada na
criação de uma linguagem-padrão para manipular
informações em Banco de dados Relacionais. E
essa linguagem é a SQL.
José Antônio - CEFET-RN 24/07/2013
9
Desde o início da utilização dos computadores, sabemos que um
sistema é feito para aceitar entrada de dados, realizar
processamento e gerar saída das informações processadas. Com
o tempo, verificou-se a necessidade de armazenar as informações
geradas pelos programas de computadores. O armazenamento e a
recuperação das informações passaram a desempenhar um papel
fundamental na informática.
José Antônio - CEFET-RN 24/07/2013
10
Histórico
Inicialmente chamada de SEQUEL (Structured
English Language), a linguagem SQL foi concebida
e desenvolvida pela IBM, utilizando os conceitos de
Codd (1974). Em 1977 passou é ser chamada de
SQL. Em 1979, a Relational Software Inc., hoje
Oracle Corporation, lançou a primeira versão
comercial da linguagem SQL.
José Antônio - CEFET-RN 24/07/2013
11
Histórico – continuação
A SQL pode ser considerada um padrão para
manipulação de dados em banco de dados. Duas
entidades:
ANSI (American National Standards Institute)
ISO (International Standards Organization)
SQL – 86 (ANSI)
SQL – 89 – modificações significativas (BD
atuais)
SQL – 92
SQL – 99 – SQL3 (BD objeto-relacional)
José Antônio - CEFET-RN 24/07/2013
12
O que é SQL?
SQL é um conjunto de comandos de manipulação de
banco de dados utilizados para criar e manter a
estrutura desse banco de dados, além de incluir,
excluir, modificar e pesquisar informações nas
tabelas dele. Ela não é uma linguagem de
programação autônoma. Quando desenvolvemos
aplicações para banco de dados, é necessário
utilizar uma linguagem de programação tradicional
(C, Java, Pascal, COBOL, Vusual Basic, Delphi,
etc.) e embutir comandos SQL para manipular os
dados.
José Antônio - CEFET-RN 24/07/2013
13
SQL
A linguagem SQL é dividida nos seguintes
componentes:
Data Definition Language(DDL): permite a criação,
alteração e exclusão de componentes (objetos) do
banco de dados.
CREATE – ALTER – DROP
Data Manipulation Language(DML): permite a
manipulação dos dados armazenados no banco de
dados.
INSERT – DELETE – UPDATE
José Antônio - CEFET-RN 24/07/2013
14
SQL
A linguagem SQL é dividida nos seguintes
componentes:
Data Query Language(DQL): permite extrair dados
do banco de dados.
SELECT
Data Control Language(DCL): provê a segurança
interna do banco de dados.
CREATE USER – ALTER USER
GRANT – REVOKE
CREATE SCHEMA
José Antônio - CEFET-RN 24/07/2013
15
Para iniciar o trabalho de criação do banco
de dados, deve-se inicialmente
transformar o modelo lógico (DER), no
modelo físico que será implementado.
O processo consiste em simplesmente
atribuir tipos de dados e tamanho para
cada um dos atributos que foram
identificados.
José Antônio - CEFET-RN 24/07/2013
16
Antes de criar as tabelas no nosso banco
de dados, temos que definir quais são as
características de cada um dos campos.
As características que o SQL exige são o
tipo e o tamanho de cada campo.
José Antônio - CEFET-RN 24/07/2013
17
Tipo de dado Descrição
INTEGER OU INT Número positivo ou negativo inteiro.
SMALLINT Mesma função do INT, mas ocupa a metade do espaço.
NUMERIC Número positivo ou negativo. Deve-se informar o tamanho
do campo e casas decimais.
DECIMAL Semelhante a NUMERIC, em alguns casos tem maior
precisão em casas decimais.
REAL Número de ponto flutuante de simples
precisão(Exponencial).
DOUBLE PRECISION Número de ponto flutuante de dupla precisão.
FLOAT Número de ponto flutuante em que você define o nível de
precisão (número de dígitos significativos).
BIT Armazenamento de um número fixo de bits.
José Antônio - CEFET-RN 24/07/2013
18
Tipo de dados
Tipo de dado Descrição
BIT VARYING Igual a BIT, permitindo armazenar valores maiores.
Normalmente utilizado para armazenar imagens.
DATE Permite armazenar datas.
TIME Permite armazenar horários.
TIMESTAMP Permite armazenar uma combinação de data e hora.
CHAR Permite armazenar cadeia de caracteres. Tamanho
informado será fixo.
VARCHAR Permite armazenar cadeia de caracteres, mas de tamanho
variável.
INTERNAL Intervalo de data ou hora.
José Antônio - CEFET-RN 24/07/2013
19
Criando Tabelas
Tabelas são as estruturas mais
importantes de um banco de dados.
Nas tabelas estará o conteúdo que
representa cada objeto do mundo
real. No padrão SQL as tabelas em
três categorias:
Tabelas permanentes;
Tabelas temporárias globais;
Tabelas temporárias locais.
José Antônio - CEFET-RN 24/07/2013
20
Criando Tabelas
CREATE TABLE – Sintaxe básica
CREATE TABLE nome_tabela (
coluna1 tipo_De_Dado constraint,
coluna2 tipo_De_Dado constraint,
...
colunan tipo_De_dado constraint,
constraint_de_tabela )
José Antônio - CEFET-RN 24/07/2013
21
Criando Tabelas
Exemplo:
Create table Cliente (
Clienteid int not null,
Nome varchar(50) not null,
Endereco varchar(50) not null,
Cidade varchar(25) not null,
Estado char(2) not null,
primary key (Clienteid) )
José Antônio - CEFET-RN 24/07/2013
22
Constraint mais comuns
Chave primaria (Primary key)
Chave estrangeira (Foreign Key)
Default
Not null
Unique
Check
José Antônio - CEFET-RN 24/07/2013
23
Constraint mais comuns
Chave primaria (Primary key)
Digamos que haja uma tabela de cliente cuja
chave primária seja o campo Clienteid. A
criação da chave primária ficaria assim:
...
Primary key (Clienteid)
...
José Antônio - CEFET-RN 24/07/2013
24
Constraint mais comuns
Chave estrangeira (Foreign key)
FOREIGN KEY nome_Chave (lista de colunas)
REFERENCES nome_tabela (lista de colunas)
ON UPDATE ação
ON DELETE ação
ONDE
Ação – CASCADE – NO ACTION
José Antônio - CEFET-RN 24/07/2013
25
Constraint mais comuns
Chave estrangeira (Foreign key)
Como exemplo, vamos fazer referência á tabela
de Clientes quando estamos criando a tabela
de pedidos.
FOREIGN KEY pedido_cliente_fk ( clienteid )
REFRENCES Cliente ( clienteid )
ON UPDATE CASCADE
ON DELETE CASCADE
José Antônio - CEFET-RN 24/07/2013
26
Constraint mais comuns
DEFAULT
Serve para atribuir um conteúdo-padrão a uma
coluna da tabela, sempre que for incluída uma
nova linha na tabela.
...
Quantidade INT default 1,
...
José Antônio - CEFET-RN 24/07/2013
27
Constraint mais comuns
NOT NULL
Indica que o conteúdo de uma coluna não pode
ser Nulo.
...
Nome_Cliente varchar(50) not null,
...
José Antônio - CEFET-RN 24/07/2013
28
Constraint mais comuns
UNIQUE
Indica que não pode haver repetição no conteúdo
da coluna. Isso é diferente do conceito de
chave primária.
...
CPF numeric(11) UNIQUE,
...
José Antônio - CEFET-RN 24/07/2013
29
Constraint mais comuns
CHECK
Um domínio é uma expressão de valores
possíveis para o conteúdo de uma coluna.
Podemos, ao criarmos uma coluna, especificar
quais os valores que poderão ser utilizados
para preencher a coluna.
...
Sexo char(1) CHECK ( UPPER(sexo) = ‘M’ OR
UPPER(Sexo) = ‘F’ ),
...
José Antônio - CEFET-RN 24/07/2013
30
Constraint mais comuns
ASSERTIVAS
Uma assertiva é utilizada para estabelecer
restrição no banco de dados com base em
dados de uma ou mais tabelas. Por exemplo,
você pode estabelecer que a tabela CD sempre
tenha pelo menos uma linha.
CREATE ASSERTION há_CD
check (EXISTS select codigo_cd from CD )
José Antônio - CEFET-RN 24/07/2013
31
Alterar estrutura de tabela
Para alterar a estrutura de uma tabela, utilizamos
o comando ALTER TABLE.
Adicionar novas colunas;
Acrescentar novas constraints;
Modificar colunas;
Excluir elementos;
Trocar o nome do elemento;
José Antônio - CEFET-RN 24/07/2013
32
Alterar estrutura de tabela
Adicionar novas colunas:
ALTER TABLE nome_tabela
ADD nome_coluna tipo_de_dado constraint,
nome_coluna tipo_de_dado constraint,
...,
nome_coluna tipo_de_dado constraint,
José Antônio - CEFET-RN 24/07/2013
33
Alterar estrutura de tabela
Adicionar novas colunas:
Exemplo:
ALTER TABLE Cliente
ADD email varchar(80) UNIQUE
José Antônio - CEFET-RN 24/07/2013
34
Alterar estrutura de tabela
Adicionar novas constraints:
ALTER TABLE nome_tabela
ADD constraint
Exemplo:
ALTER TABLE Cliente
ADD primary key ( clienteid )
José Antônio - CEFET-RN 24/07/2013
35
Alterar estrutura de tabela
modificando colunas:
ALTER TABLE nome_tabela
MODIFY nome_coluna tipo_de_dados constraint
Exemplo:
ALTER TABLE Cliente
MODIFY email varchar(100) not null
José Antônio - CEFET-RN 24/07/2013
36
Alterar estrutura de tabela
Excluindo elementos:
ALTER TABLE tabela
DELETE/DROP elemento
José Antônio - CEFET-RN 24/07/2013
37
Alterar estrutura de tabela
Excluindo elementos:
Exemplos(SQL Server):
ALTER TABLE Cliente
DROP Column email
ALTER TABLE Cliente
DROP Constraint pk_cliente
José Antônio - CEFET-RN 24/07/2013
38
Laboratório
Usando o Query Analyzer do SQL Server, crie o banco de dados Cadastro_CD, com a
seguintes estrutura de tabelas:
Gravadora CD Faixa
Codigo_gravadora int codigo_cd int codigo_cd int
Nome_gravadora varchar(60) codigo_grvadora int codigo_musica int
Endereco varchar(60) nome varchar(60) numero_faixa int
Telefone varchar(10) preco_venda decimal(14,2)
Contato varchar(20) data_lancamento datetime
URL varchar(80) cd_indicado int
José Antônio - CEFET-RN 24/07/2013
39
Laboratório
Usando o Query Analyzer do SQL Server, crie o banco de dados Cadastro_CD, com a
seguintes estrutura de tabelas e crie o diagrama do slide seguinte com o Enterprise
Manager:
CD_Categoria Muscica Musica_autor
Codigo_categoria int codigo_musica int codigo_musica int
Menor_preco decimal(14,2) nome_musica varchar(60) codigo_autor int
Maior_preco decimal(14,2) duracao decimal(6,2)
cd_indicado int
Autor
Codigo_autor int
Nome_autor varchar(60)
José Antônio - CEFET-RN 24/07/2013
40
Laboratório
José Antônio - CEFET-RN 24/07/2013
41