Escolar Documentos
Profissional Documentos
Cultura Documentos
DE BANCO DE DADOS
RELACIONAL
Charles Emerson Machado
Charles.emerson.machado@gmail.com
1
INFORMAÇÃO - É o valor que este campo representa para as atividades da
empresa. Ex. Resposta a uma consulta. Qual os nomes do clientes localizados
no Rio de Janeiro?
2
O que é um banco de dados?
3
Bancos de Dados começaram a ser utilizados por volta
dos anos 60 e em 70 E.F. Codd da IBM publicou o artigo
“Um Modelo Relacional de Dados para Grandes Bancos
de Dados Compartilhados” estabelecendo princípios sobre
gerência de banco de dados, surgindo então a linguagem
SQL (Structured Query Language ou Linguagem de
Consulta Estruturada) inicialmente chamada de SEQUEL
(Structured English Query Language).
4
Década de 70
• Ingres: Desenvolvido pela UCB. Que no final das contas serviu como base
para Ingres Corp., Sybase, MS SQL Server, Britton-Lee, Wang PACE. Este
sistema utilizava QUEL como linguagem de consulta;
• System R: Desenvolvido pela IBM San Jose e serviu de base para o IBM
SQL/DS, IBM DB2, Oracle, todas os BD da HP, Tandem's Non-Stop SQL. Este
sistema utilizava SEQUEL como linguagem de consulta.
5
1976
O Dr. Peter Chen (visite bit.csc.lsu.edu/~chen/chen.html
propõe o modelo Entidade-Relacionamento (ER) para projetos
de banco de dados dando uma nova e importante percepção
dos conceitos de modelos de dados. Assim como as linguagens
de alto nível, a modelagem ER possibilita ao projetista
concentrar-se apenas na utilização dos dados, sem se
preocupar com estrutura lógica de tabelas.
6
VANTAGENS DO BANCO DE DADOS
7
2 - ELIMINAÇÃO DE INCONSISTÊNCIAS - Através do armazenamento da
informação em um único local com acesso descentralizado e, sendo
compartilhada à vários sistemas, os usuários estarão utilizando uma
informação confiável. A inconsistência ocorre quando um mesmo campo
tem valores diferentes em sistemas diferentes. Exemplo, o estado civil de
uma pessoa é solteiro em um sistema e casado em outro. Isto ocorre
porque esta pessoa atualizou o campo em um sistema e não o atualizou
em outro. Quando o dado é armazenado em um único local e
compartilhado pelos sistemas, este problema não ocorre.
8
3 - COMPARTILHAMENTO DOS DADOS - Permite a utilização
simultânea e segura de um dado, por mais de uma aplicação ou usuário,
independente da operação que esteja sendo realizada. Deve ser
observada apenas o processo de atualização concorrente, para não gerar
erros de processamento (atualizar simultaneamente o mesmo campo do
mesmo registro). Os aplicativos são por natureza multiusuário.
9
4 - RESTRIÇÕES DE SEGURANÇA - Define para cada usuário o nível de
acesso a ele concedido (leitura, leitura e gravação ou sem acesso) ao
arquivo e/ou campo. Este recurso impede que pessoas não autorizadas
utilizem ou atualizem um determinado arquivo ou campo.
10
5 - PADRONIZAÇÃO DOS DADOS - Permite que os campos armazenados
na base de dados sejam padronizados segundo um determinado formato
de armazenamento (padronização de tabela, conteúdo de campos, etc) e
ao nome de variáveis seguindo critérios padrões pré-estabelecido pela
empresa. Ex. Para o campo "Sexo" somente será permitido
armazenamento dos conteúdos "M" ou "F".
11
6 - MANUTENÇÃO DE INTEGRIDADE - Exige que o conteúdo dos dados
armazenadas no Banco de Dados possuam valores coerentes ao objetivo
do campo, não permitindo que valores absurdos sejam cadastrados.
Exemplo: Um funcionário que faça no mês 500 horas extras, ou um aluno
que tenha nascido no ano de 1860.
12
7 - EVITAR NECESSIDADES CONFLITANTES - Representa a capacidade
que o administrador de Banco de Dados deve ter para solucionar
"prioridades sempre altas" de todos os sistemas, tendo ele que avaliar a
real necessidade de cada sistema para a empresa para priorizar a sua
implantação.
13
8 - INDEPENDÊNCIA DOS DADOS - Representa a forma física de
armazenamento dos dados no Banco de Dados e a recuperação das
informações pelos programas de aplicação. Esta recuperação deverá ser
totalmente independente da maneira com que os dados estão fisicamente
armazenados. Quando um programa retira ou inclui dados o SGBD
compacta-os para que haja um menor consumo de espaço no disco. Este
conhecimento do formato de armazenamento do campo é totalmente
transparente para o usuário.
14
Modelos de Bancos de Dados
15
Um modelo de dados é uma estrutura de referência para organizar dados,
todo SGBD deve suportar um modelo que permita uma representação dos
dados de uma realidade.
O esquema conceitual de uma aplicação é o resultado da adequação dos
requisitos de dados desta aplicação ao modelo de dados do SGBD. Todo
modelo de dados deve suportar, no mínimo, a especificação de entidades
e relacionamentos.
16
Modelo Hierárquico
17
Modelo de Redes
18
Modelo Relacional
19
No mercado existem outros tipos de sistemas, porém há um pré - domínio
dos SGBDs relacionais, principalmente fora das plataformas de grande
porte, nestes ambientes estão gradativamente substituindo o SGBD de
outras abordagens (Hierárquica, Rede, por exemplo).
Banco de Dados Relacional é um grupo de dados percebido pelos
usuários como um conjunto de tabelas. [DATE, 2000]
A terminologia “relação” foi utilizada na estrutura original devido ao fato de
que os sistemas relacionais baseiam – se num conjunto fundamental de
idéias teóricas conhecidas como modelo relacional. Essa terminologia é a
mais comum na área acadêmica.
A terminologia “ tabela” é mais comum na prática e nos produtos
comerciais.
Uma “relação” é vista como uma “tabela”, onde as colunas indicam os
campos e as linhas as ocorrências (valores). Relacionamentos entre
relações são estabelecidos por igualdade de valor de campos.
20
O que é um Banco de dados Relacional?
21
Índice:
O índice serve para prover um acesso mais rápido a linhas das tabelas.
O funcionamento de um índice é muito simples. É mais ou menos como
um índice ao final de um livro, os principais assuntos estão no índice em
ordem alfabética. Localiza-se ali o assunto, verifica-se o número da página
em que é tratado e vai diretamente a essa página, sem precisar buscá-lo
sequencialmente nas páginas. Isso também acontece com o índice de uma
tabela.
22
Chave Candidata:
Como normalmente uma entidade apresenta mais de um atributo, existe a
possibilidade de que alguns deles preencham os requisitos indispensáveis
para se tornarem a chave primária da entidade.
23
Características da chave primária:
24
Chave Composta:
Se um atributo, isoladamente, não consegue individualizar uma ocorrência,
um conjunto de atributos deve ser utilizado com esta finalidade.
25
A seguir um resumo sobre os objetos de um banco de dados:
26
Views -> Uma View ajuda a encapsular uma consulta em uma entidade
relacional e facilita a visão de um dado de uma ou mais tabelas em um
banco de dados.
27
Funções -> Uma função e um pedaço de código que opera como uma
única unidade lógica. Uma função pode retornar tanto uma tabela quanto
um valor escalar. Qualquer código que deve executar a lógica
incorporada em uma função pode chamar a função, em vez de repetir a
função lógica.
28
Gatilho (Trigger) -> Um gatilho e uma stored procedure (procedimento
armazenado) que e executada quando um dado em uma tabela especifica
e modificado. Você pode criar triggers para impor integridade referencial
entre os dados relacionados logicamente em diferentes tabelas.
29
1979 – A Relational Software (Oracle) concebe o SQL, em seguida ANSI
(America National Standards Institute) e ISO (International Standards
Organization) iniciam o processo de padronização da linguagem.
30
SQL
Criada em meados dos anos 70, firmou-se como a linguagem padrão para
os bancos de dados relacionais por ser de fácil utilização, não requerendo
profundos conhecimentos técnicos de seus usuários.
É constituída de um conjunto de instruções que possuem a capacidade de
manipular dados, definirem estruturas de dados e especificar restrições de
segurança e integridade.
Não é uma linguagem autônoma, é uma “sublinguagem” que depende de
outras para desenvolvimento de aplicações.
31
COMPONENTES DA SQL
32
DML (Data Manipulation Language) – Linguagem de Manipulação de
Dados
A DML permite que os acessos e as manipulações sejam realizados de
forma mais simples dentro do modelo de dados utilizado. Exemplos:
INSERT
UPDATE
DELETE
SELECT
33
DCL (Data Control Language) – Linguagem de Controle de Dados
Refere-se ao conjunto de instruções que permitem a implementação de
determinados níveis de acesso e privilégios, garantindo a segurança do
banco de dados. Exemplos:
GRANT
REVOKE
34
Em 1988 a Microsoft lançou sua primeira versão do SQL Server.
Ela foi desenvolvida para a plataforma OS/2 juntamente com a Microsoft e
a Sybase.
Durante os anos 90 a Microsoft iniciou o desenvolvimento de uma versão
para a plataforma NT. Enquanto o SQL Server estava sendo desenvolvido
a Microsoft decidiu que ele deveria ser uma camada encapsulada sobre o
sistema operacional NT.
35
Em 1992 a Microsoft assumiu a responsabilidade maior sobre o futuro do
SQL Server para o NT.
Em 1993 o Windows NT 3.1 e o SQL Server 4.2 para NT foram lançados. A
filosofia da Microsoft em combinar um banco de alta performance com uma
interface fácil de usar mostrou-se um sucesso. Microsoft rapidamente
tornou-se o segundo mais popular vendedor de softwares de bancos de
dados relacionais.
36
Em 1994 a Microsoft e a Sybase formalmente encerraram sua parceria.
Em 1995 a Microsoft lançou a versão 6.0 do SQL Server. Esse lançamento
foi uma das maiores rescritas da tecnologia SQL Server. A versão 6.0
aumentou a performance substancialmente provendo mecanismos internos
de replicação e administração centralizada.
37
Em 1996 a Microsoft lançou a versão 6.5 do SQL Server. Essa versão
trouxe melhoras significativas para a tecnologia e disponibilizou diversas
novas funcionalidades.
Em 1997 a Microsoft lançou a versão Enterprise do SQL 6.5.
Em 1998 a Microsoft lançou a versão 7 do SQL Server o qual foi
completamente rescrito.
38
Em 2000 a Microsoft lançou o SQL Server 2000. O SQL Server 2000 é o
lançamento mais importante do SQL Server até o momento. Essa versão
foi construída sobre o framework do SQL Server 7.0. De acordo com o time
de desenvolvimento do SQL Server essas mudanças foram desenvolvidas
para tornar essa tecnologia mais nova pelos próximos 10 anos.
2003 - O SQL Server 2000 ganha a sua versão em 64-bit podendo
acessar maiores quantidades de memória. Infelizmente o time teve de
escolher e optou por lançar o SQL Server 2000 apenas para o Itanium.
39
2005 - É lançado o SQL Server 2005 (com o codinome Yukon) com grande
integração a plataforma .NET. O SQL Server dá mais um passo em direção
às grandes plataformas corporativas. A Microsoft exibe alguns grandes
casos de sucesso (como a Xerox que consegue realizar até 7.000.000 de
transações diárias utilizando o SQL Server 2005 e a Bovespa que é a
bolsa de valores do Brasil).
2007 - A Microsoft divulga em uma feira mundial de Business Intelligence o
lançamento do SQL Server 2008 previsto para
40
2008. O principal slogan é "ir um pouco além do relacional". Novas
funcionalidades como tipos de dados geográficos, controle de carga por
usuário, etc estão previstas...
41
PostgreSQL é um sistema gerenciador de banco de dados objeto
relacional (SGBDOR), desenvolvido como projeto de código aberto.
42
Características
43
• Gatilhos
• Visões
• Linguagem Procedural em várias linguagens (PL/pgSQL, PL/Python,
PL/Java, PL/Perl) para Procedimentos armazenados
• Indexação por texto
• Estrutura para guardar dados Georeferenciados PostGIS
44
O PostgreSQL é um dos resultados de uma ampla evolução que se
iniciou com o projeto Ingres, desenvolvido na Universidade de Berkeley,
Califórnia. O líder do projeto, Michael Stonebraker, um dos pioneiros dos
bancos de dados relacionais, deixou a universidade em 1982 para
comercializar o Ingres, porém retornou a ela logo em seguida. Após seu
retorno a Berkeley, em 1985, Stonebraker começou um projeto pós-
Ingres com o objetivo de resolver problemas com o modelo de banco de
dados relacional. O principal problema era a incapacidade do modelo
relacional compreender “tipos” (atualmente, chamados de objetos), ou
seja, combinações de dados simples que formam uma única unidade.
45
O projeto resultante, chamado Postgres, era orientado a introduzir a
menor quantidade possível de funcionalidades para completar o suporte a
tipos. Estas funcionalidades incluíam a habilidade de definir tipos, mas
também a habilidade de descrever relações - as quais até este momento
eram amplamente utilizadas, mas completamente mantidas pelo usuário.
No Postgres, o banco de dados "compreendia" as relações e podia obter
informações de tabelas relacionadas utilizando regras.
46
A Oracle foi fundada em agosto de 1977, inicialmente foi chamada de
Software Development Labs (SDL), uma empresa de consultoria que
contava com Bob Miner (presidente), Ed Oates e Bruce Scott (engenheiros
de software) no seu primeiro projeto. Larry Ellison, um dos grandes nomes
da Oracle, trabalhava na empresa para a qual a SDL prestava a
consultoria. Este Bruce Scott, é o Scott de ‘scott/tiger’ (Tiger era o nome
do gato da sua filha), usado até hoje nos schemas de exemplo do sistema
gerenciador de banco de dados (RDBMS) desenvolvido pela empresa.
47
Antes de formar a Oracle, Bob Miner foi gerente de Larry Ellison em um
projeto da CIA, apelidado de “Oracle”. Ed Oates e Bruce Scott fizeram
90% do trabalho de dois anos (desse projeto de consultoria), no primeiro
ano, de modo que tiveram o ano seguinte para trabalhar no Oracle. Ed
Oates terminou os outros 10% no ano seguinte, enquanto Bob e Scott
começaram a escrever o banco de dados Oracle. Quando concluíram o
trabalho decidiram entăo, que queriam ser uma empresa de produto, em
vez de uma empresa de consultoria. Mas Larry năo estava interessado
nisso. Ele estava acompanhando o que a IBM estava fazendo e descobriu
um trabalho sobre o System/R baseado no trabalho de 1970 de Codd
sobre bancos de dados relacionais.
48
Ele descrevia a linguagem SQL, que na época era chamada SEQUEL/2.
Larry levou o trabalho a Bob e Scott e perguntou se eles poderiam montar
isso. Acharam que seria muito fácil e assim começaram. Scott tinha 24
anos na época, Bob era 15 anos mais velho e Larry era 10 anos mais
velho que Sccott. Scott deixou a Oracle em 1982, depois de
aproximadamente cinco anos e meio trabalhando lá. Quando saiu, eles
tinham terminado a versăo 3 do banco de dados. Cerca de metade do
código era dele e metade de Bob. Parte do código do analisador no banco
de dados atual ainda pode ser de Scott. Bruce Scott falou de um dia que
marcou a sua vida: a conferęncia dos primeiros usuários do Oracle. Essa
foi uma conferęncia de clientes que organizaram. Aconteceu em 1982, e
reuniu entre de 25 e 50 pessoas. Foi assim que isso começou a pegar.
Fabricante: Oracle Corporation
49
Linha do tempo do RDBMS Oracle
1977 – Larry Ellison, Bob Miner, Ed Oates e Bruce Scott formam a SDL.
Larry e Bob foram parceiros em um projeto da CIA apelidado de “Oracle”.
Bob e Bruce começam a trabalhar no banco de dados. 1978 – A CIA é o
primeiro cliente, embora o produto ainda năo tenha sido lançado
comercialmente. A SDL muda seu nome para Relational Software Inc.
(RSI).
1979 – A RSI lança sua primeira versăo comercial, a versăo 2 do banco
de dados escrito em linguagem Assembler. Năo foi lançada uma versăo
1 por medo de as pessoas năo comprarem uma primeira versăo de
software. A primeira versăo comercial do software é vendida ŕ Base da
Força Aérea americana. Esse é o primeiro RDBMS comercial no
mercado.
50
1981 – A primeira ferramenta, Interactive Application Facility (IAF), que é
um predecessor da futura ferramenta SQL*Forms do Oracle, é criada.
1982 – A RSI muda seu nome para Oracle Systems Corporation (OSC) e
depois simplifica o nome para Oracle Corporation.
1983 – A versăo 3, escrita em linguagem C (que a torna portável) é
lançada. Bob Miner escreve a metade, enquanto também dá suporte ŕ V2
baseada em Assembler, e Bruce Scott escreve a outra metade. É o
primeiro RDBMS de 32 bits.
1984 – A versăo 4 é lançada. Primeiro banco de dados com coeręncia de
leitura. Oracle portado para o Personal Computer (PC).
1985 – Versőes 5 e 5.1 săo lançadas, primeiro banco de dados de servidor
paralelo no VMS/VAX.
51
1986 – O Oracle Client/Server é introduzido; primeiro banco de dados
cliente/servidor.
1987 – Oracle é a maior empresa de DBMS. Iniciado o grupo Oracle
Applications. Primeiro banco de dados SMP (multiprocessamento
simétrico) introduzido. Implementada a primeira aplicaçăo cliente/servidor
em produçăo executando o Oracle.
1988 – Lançado o Oracle V6. Primeiro bloqueio em nível de linha. Primeiro
backup de banco de dados a quente (on-line). Introduçăo da linguagem
procedural de consulta da Oracle - PL/SQL.
1992 – Lançado o Oracle V7.
1993 – Introduzidas ferramentas GUI de desenvolvimento cliente/servidor
do Oracle. Oracle Applications passou para cliente/servidor.
52
1994 – Bob Miner morre de câncer.
1995 – Primeiro banco de dados de 64 bits.
1996 – Lançado o Oracle7.3.
1997 – O Oracle 8 é apresentado. O Oracle Application Server é
apresentado, assim como aplicaçőes para a Web. Oracle é o primeiro
banco de dados para Web. Ferramentas Oracle BI, como Discoverer, săo
introduzidas para data warehousing. Ferramentas possuem suporte nativo
para Java.
53
1998 – Primeiro grande RDBMS (Oracle 8) portado para o Linux. Oracle é
o primeiro banco de dados com suporte para Java.
1999 – Lançado o Oracle 8i. Integra Java/XML nas ferramentas de
desenvolvimento. Oracle é o primeiro banco de dados com suporte nativo
para XML.
2000 – Lançado o Oracle9i Application Server, tornando-se o primeiro
banco de dados com cache na camada intermediária. Lançado o E-
Business Suite, banco de dados sem fio com OracleMobile, Oracle9i
Application Server Wireless e Internet File System (IFS).
54
2001 – Lançado o Oracle9i (9.1). Oracle é o primeiro banco de dados com
Real Application Clusters (RAC).
2002 – Lançado o Oracle9i Release 2 (9.2).
2003 – Lançado o Oracle 10g – banco de preparado para o Grid
Computing.
2007 – Previsăo de lançamento do Oracle 11g.
55
A Sybase, uma empresa do SAP, cria a tecnologia que proporciona a
empresa sem fio para os clientes e parceiros através do fornecimento de
infraestrutura corporativa e móvel e soluções de software de
desenvolvimento e integração. Os dados mais importantes do mundo nas
áreas de comércio, finanças, governo, saúde e defesa são executados nos
produtos Sybase. Veja a seguir uma breve cronologia das principais
conquistas no decorrer de duas décadas como empresa líder em
tecnologia.
56
1984 A Sybase foi fundada por Mark Hoffman e Bob Epstein na residência
do Sr. Epstein, em Berkeley, Califórnia.
1988 A Sybase é a primeira no mercado a disponibilizar um banco de
dados relacional cliente/servidor, fornecendo ao Projeto Genoma Humano
(Human Genome Project) as licenças para a primeira geração de bancos
de dados relacionais cliente/servidor.
1990 A Sybase é a primeira a oferecer a tecnologia aberta de replicação.
57
1994 A Sybase é considerada líder em tecnologia aberta de middleware.
1995 A Sybase é líder em ferramentas de desenvolvimento
cliente/servidor com o PowerBuilder.
1998 A Sybase iAnywhere distribui mais de 5 milhões de licenças do SQL
Anywhere.
1999 A Sybase é líder de mercado em mercados de capitais, oferecendo
uma suíte de aplicativos destinados a serviços bancários e de corretagem
on-line.
58
Maio de 2000
59
O MySQL foi criado na Suécia por dois suecos e um finlandês: David
Axmark, Allan Larsson e Michael "Monty" Widenius, que têm trabalhado
juntos desde a década de 1980. Hoje seu desenvolvimento e manutenção
empregam aproximadamente 400 profissionais no mundo inteiro, e mais de
mil contribuem testando o software, integrando-o a outros produtos, e
escrevendo a respeito dele.
60
No dia 16 de Janeiro de 2008, a MySQL AB, desenvolvedora do MySQL foi
adquirida pela Sun Microsystems, por US$ 1 bilhão, um preço jamais visto
no setor de licenças livres. No dia 20 de Abril de 2009 a Oracle compra a
Sun Microsystems e todos o seus produtos, incluindo o MySQL. Após
investigações da Comissão Europeia sobre a aquisição para evitar
formação de monopólios no mercado a compra foi autorizada e hoje a Sun
faz parte da Oracle.
61
Características
62
• Contempla a utilização de vários Storage Engines como MyISAM,
InnoDB, Falcon, BDB, Archive, Federated, CSV, Solid…
• Suporta controle transacional;
• Suporta Triggers;
• Suporta Cursors (Non-Scrollable e Non-Updatable);
• Suporta Stored Procedures e Functions;
• Replicação facilmente configurável;
• Interfaces gráficas (MySQL Toolkit) de fácil utilização cedidos pela
MySQL Inc.
63
SISTEMA DE GERENCIAMENTO
DE BANCO DE DADOS
RELACIONAL
Charles Emerson Machado
Charles.emerson.machado@gmail.com
64
Falhas no entendimento de um sistema ocorrem devido a falhas
nos seus eventos.
– A história do desenvolvimento de um sistema de balanço.
Programa
funcionando
Especificação
de testes
66
Modelos de Dados
67
Os modelos de dados são classificados em conceituais,
lógicos e físicos de acordo com os conceitos que utilizam para
representar os dados.
Modelos Conceituais
68
MODELO ENTIDADE RELACIONAMENTO
Relacionamento
69
Diagrama Entidade-Relacionamento
A estrutura lógica geral de um banco de dados pode ser expressa
graficamente por um Diagrama Entidade-Relacionamento.
70
Entidades e Conjuntos-Entidade
71
Atributos (campos)
72
Atributo Multivalorado: uma única entidade tem diversos valores para
este atributo (seu nome é sempre representado no plural)
Ex.: Dependentes
73
Relacionamentos
74
Modelo Conceitual
75
Modelos Lógicos
76
Modelo Lógico
77
Modelos Físicos
78
/*==============================================================
*/
/* DBMS name: MySQL 5.0 */
/* Created on: 19/9/2011 00:49:19 */
/*==============================================================
*/
79
/*=======================================================*/
/* Table: BAIRRO */
/*=======================================================*/
create table BAIRRO
(
BAI_CODIGO int not null,
BAI_NOME varchar(20) not null,
primary key (BAI_CODIGO)
);
80
/*===============================================*/
/* Table: FUNCIONARIO */
/*===============================================*/
create table FUNCIONARIO
(
FUN_CODIGO int not null,
BAI_CODIGO int not null,
FUN_NUMERO varchar(10),
FUN_COMPLEMENTO varchar(10),
FUN_CEP char(9),
FUN_CPF char(11),
FUN_RG varchar(18),
primary key (FUN_CODIGO)
);
81
/*======================================================*/
/* Table: PESSOA */
/*======================================================*/
create table PESSOA
(
PES_CODIGO int not null,
BAI_CODIGO int not null,
PES_NUMERO varchar(10),
PES_COMPLEMENTO varchar(10),
PES_CEP char(9),
PES_CPF char(11),
PES_RG varchar(18),
PES_FONERES char(16),
primary key (PES_CODIGO)
);
82
alter table FUNCIONARIO add constraint
FK_BAIRRO_DO_FUNCIONARIO foreign key (BAI_CODIGO)
references BAIRRO (BAI_CODIGO) on delete restrict on update
restrict;
83
Exercício - Modelagem
Pretende-se criar uma base de dados que permita gerir uma parte da
informação de uma clinica de saúde.
Fundamentalmente a base de dados deverá guardar a informação
relativa aos doentes que frequentam a clínica (nome, morada, telefone
e numero de beneficiário) e dos médicos que lá trabalham (nome,
morada, contacto e especialidade).
Para além disso o sistema deverá registar as marcações de consultas
de cada paciente para um determinado médico sabendo que esse
médico só pratica uma determinada especialidade.
84
MySQL Query Browser
85
86
Procedimentos
87
Os arquivos que compõem o banco de dados ficam
armazenados na sub pasta DATA.
88
Lista de arquivos criados para um banco de dados para a
ENGENHARIA DE ARMAZENAMENTO MYISAM.
89
TIPO DE DADOS
90
Espaço de armazenamento
Ex: Usar tipo INT para campo de usuário ativo ( 1 – ativo , 0 – inativo) -
Desperdício de espaço.
91
O TIPO NUMÉRICO
92
DECIMAL[(tamanho[,decimal])] – Utiliza-se este tipo de dado quando houver a
necessidade de fazer uso de valores com ponto flutuante. O parâmetro tamanho
é opcional e permite estabelecer o tamanho máximo do valor a ser exibido,
podendo ser um valor máximo 255. Se omitido, o tamanho assumido é 10. O
parâmetro opcional decimal permite estabelecer o tamanho máximo de casas
decimais a ser exibido, podendo, ser um valor máximo de 30;
93
FLOAT – Utiliza-se este tipo de dado quando houver a necessidade de fazer uso
de valores com ponto flutuante com sete dígitos de precisão decimais. Este tipo
permite trabalhar com valores na faixa de 3,4 * 10-38 até 3,4 * 1038 ;
94
O TIPO TEMPORAL
95
DATE:
Uma data. A faixa suportada é entre '1000-01-01' e '9999-12-31'.
Formato 'AAAA-MM-DD‘
TIME:
Uma hora. A faixa é entre '-838:59:59' e '838:59:59'. Formato 'HH:MM:SS‘
DATETIME:
Um combinação de hora e data. A faixa suportada é entre '1000-01-01
00:00:00' e '9999-12-31 23:59:59'.
YEAR[(2|4)]:
Um ano no formato de 2 ou 4 digitos (padrão são 4 digitos)
96
TIMESTAMP:
Similiar ao datetime com algumas particularidades.
Formato: 'AAAA-MM-DD HH:MM:SS'.
97
O TIPO LITERAL
98
VARCHAR(tamanho) – Utiliza-se este tipo de dado quando houver a
necessidade de fazer uso de seqüências de caracteres de tamanho variável que
estejam limitadas até 255 caracteres de comprimento. A diferença entre este tipo
e o CHAR é que neste caso, os espaços em branco excedentes do lado direito da
seqüência de caracteres não utilizados são automaticamente desprezados. O
parâmetro tamanho determina o valor máximo em caracteres que pode conter a
seqüência .
99
SISTEMA DE GERENCIAMENTO
DE BANCO DE DADOS
RELACIONAL
Charles Emerson Machado
Charles.emerson.machado@gmail.com
100
ESTRUTURAS DE ARQUIVOS
ARQUIVO SEQÜENCIAL
102
Arquivo B Arquivo T Arquivo A
# Num Nome Idade # Num Nome Idade # Num Nome Idade
0 1000 ADEMAR 25 0 1070 ANGELA 25 0 1000 ADEMAR 25
1 1050 AFONSO 27 1 1120 CLAUDIA 27 1 1050 AFONSO 27
2 1075 CARLOS 28 2 1280 IARA 28 2 1070 ANGELA 25
3 1100 CESAR 30 3 1310 LUIS 30 3 1075 CARLOS 28
4 1150 DARCI 23 4 1420 SONIA 23 4 1100 CESAR 30
5 1180 EBER 22 5 1120 CLAUDIA 27
6 1250 ENIO 27 6 1150 DARCI 23
7 1270 FLAVIO 28 7 1180 EBER 22
8 1300 IVAN 30 8 1250 ENIO 27
9 1325 MIGUEL 34 9 1270 FLAVIO 28
10 1340 MARIA 35 10 1280 IARA 28
11 1360 RAMON 32 11 1300 IVAN 30
12 1400 SANDRA 29 12 1310 LUIS 30
13 1450 TATIANA 30 13 1325 MIGUEL 34
14 1340 MARIA 35
15 1360 RAMON 32
16 1400 SANDRA 29
17 1420 SONIA 23
18 1450 TATIANA 30
103
ARQUIVO INDEXADO
104
Índice Arquivo
Num End. # Num Nome Idade Salário
ADEMAR 1 0 2010 WILSON 26 1000
AFONSO 13 1 1000 ADEMAR 32 250
ANGELA 2 2 1070 ANGELA 28 300
CARLOS 16 3 1200 CLAUDIA 25 750
CESAR 22 4 1300 DIOGO 24 400
CLAUDIA 3 5 1400 EDISON 22 1500
CRISTIE 10 6 1510 FLAVIO 30 250
DARCI 19 7 1590 HELENA 26 300
DIOGO 4 8 1650 IVAN 32 750
ELBER 14 9 1730 MIGUEL 28 400
EDISON 5 10 1250 CRISTIE 25 1500
EDMUNDO 17 11 1520 GENARO 24 750
ENIO 23 12 1740 RAMON 22 400
FLAVIO 6 13 1050 AFONSO 30 1500
GENARO 11 14 1310 ELBER 26 250
GERSON 20 15 1605 IARA 32 300
HELENA 7 16 1075 CARLOS 28 750
IARA 15 17 1430 EDMUNDO 26 400
IVAN 8 18 1700 LUIS 32 1500
LUIS 18 19 1275 DARCI 26 750
MARIA 24 20 1530 GERSON 26 400
MIGUEL 9 21 1745 SANDRA 32 400
RAMON 12 22 1100 CESAR 28 1500
SANDRA 21 23 1470 ENIO 25 750
SONIA 25 24 1710 MARIA 24 400
TATIANA 26 25 1800 SONIA 22 750
WILSON 0 26 1905 TATIANA 30 400
105
ABSTRAÇÃO DE DADOS
106
NÍVEL FÍSICO: É o nível mais baixo de abstração, no qual se descreve
como os dados são armazenados. Estruturas complexas, de baixo nível,
são descritas em detalhe.
107
INDEPENDÊNCIA DE DADOS
108
FASES DO PROJETO DE BD
109
CONSTRUIR O MODELO FÍSICO
IMPLEMENTAR O BD
110
MODELAGEM DE DADOS
CONCEITOS
111
REQUISITOS PARA MODELAGEM DE DADOS
112
SISTEMA DE GERENCIAMENTO
DE BANCO DE DADOS
RELACIONAL
Charles Emerson Machado
Charles.emerson.machado@gmail.com
113
Após conectar ao banco de dados, execute os comandos abaixo para:
114
COMANDOS DDL
DEFINIÇÃO DE DADOS
115
NOMES DE BANCO DE DADOS, TABELA, INDICE, COLUNA E
ALIAS
116
DROP DATABASE
117
O comando DROP DATABASE remove do diretório de banco de dados
dado todos os arquivos com a seguinte extensão:
118
CREATE TABLE
Ou
119
Onde:
nome-tabela - Representa o nome da tabela que será criada.
Definição_create
120
ALTER TABLE
121
especificação_alter:
ADD [COLUMN]
| ADD INDEX [nome_indice] (index_nome_col,...)
| ADD [CONSTRAINT [symbol]] PRIMARY KEY (index_col_name,...)
| ADD [CONSTRAINT [symbol]] FOREIGN KEY [index_name]
(index_col_name,...)
122
[definição_referência]
123
RENAME TABLE
124
DROP TABLE
125
COMANDOS DML
INSERT
126
nome_tabela é a tabela na qual as linhas serão inseridas. A lista
de nome das colunas ou a cláusula SET indica para quais colunas
a instrução especifica valor:
127
UPDATE
UPDATE nome_tabela
SET nome_coluna1=expr1 [, nome_coluna2=expr2 ...]
[WHERE definição_where]
128
DELETE
129
DQL
Sintaxe SELECT
Por exemplo:
mysql> SELECT 1 + 1;
-> 2
Uma expressão SELECT pode utilizar um alias usando AS nome_alias. O
alias é usado como o nome da coluna da expressão e pode ser usado com
cláusulas ORDER BY ou HAVING.
130
A cláusula FROM table_references indica a tabela de onde os registros
serão retornados. Se você indicar mais de uma tabela, você estará
realizando uma join.
Na cláusula WHERE, você pode usar qualquer uma das funções
suportadas pelo MySQL.
As otimizações WHERE são colocadas aqui na parte da SELECT porque
normalmente elas são usadas com SELECT, mas as mesmas otimizações
aplicam-se para WHERE em instruções DELETE e UPDATE.
131
Se você utiliza GROUP BY, os registros de saída serão ordenados de
acordo com o GROUP BY como se você tivesse um ORDER BY sobre
todos os campos no GROUP BY. O MySQL tem expandido a cláusula
GROUP BY para que você também possa especificar ASC e DESC depois
das colunas chamadas na cláusula
132
SELECT [DISTINCT]
expressão_select,... AS alias
[FROM tabelas_ref AS alias
[WHERE definição_where]
[GROUP BY {inteiro_sem_sinal | nome_col | formula} [ASC | DESC], ...
[HAVING where_definition]
[ORDER BY {inteiro_sem_sinal | nome_coluna | formula} [ASC | DESC], ...]
133
OPERADORES DE COMPARAÇÃO
= Igual
> Maior
< Menor
>= Maior ou igual
<= Menor ou igual
<> ou != Diferente ou não igual
LIKE Parecido – O símbolo de % é usado para não considerar
determinadas partes da pesquisa no atributo.
134
OPERADORES AND E OR
Operador AND
E = somente retornará os dados quando as condições forem todas
satisfeitas
Operador OR
OU = retorna dados assim que qualquer das condições for satisfeita
135
OPERADORES DE AGREGAÇÃO
136
OPERADORES IN, BETWEEN, NOT IN E NOT BETWEEN
137
OPERADOR HAVING
138
OPERADOR DISTINCT
139
DESCRIBE – SHOW COLUMNS FROM
140
MySQL INNODB - Introdução e principais características
141
A arquitetura interna do MySQL é provida de duas camadas principais, a
primeira camada, que é a camada de parser e otimização de consultas
SQL e a segunda que é onde estão conectadas as Engenharias de
Armazenamento de forma modular. Assim como o INNODB, existem outras
Engenharias como MyISAM, FEDERATED, MERGE, MEMORY, BDB,
ARCHIVE, CSV, EXAMPLES, BLACKHOLE e a novidade do MySQL 6.0, a
FALCON, cada qual com suas características próprias. A Figura 01 ilustra
as camadas citadas e outros componentes participantes
142
143
As Engenharias de Armazenamento funcionam como plugins, que são,
mediante a alguma configuração, adicionados ao servidor MySQL que
apresenta uma estrutura 100% modular. São estas engenharias que
gerenciam diretamente os arquivos no disco. Cada tabela que é criada
utilizando a Engenharia de Armazenamento INNODB, armazena no
diretório do banco de dados, sob o diretório de dados (datadir), um arquivo
.frm, este por sua vez armazena a estrutura da tabela. Os dados e os
índices ficam localizados em um tablespace sobre o datadir. O INNODB
tem um tablespace padrão de nome ibdata que é utilizado para
armazenar índices e dados de todas as tabelas de todos os bancos de
dados contidos em um servidor MySQL. Podemos também, configurar
tablespaces em locais personalizados do filesystem ou utilizar um
tablespace para cada tabela criada.
144
Principais Características do INNODB
145
SISTEMA DE GERENCIAMENTO
DE BANCO DE DADOS
RELACIONAL
Charles Emerson Machado
Charles.emerson.machado@gmail.com
146
Revisão com exercícios dos comandos da 4º Aula
147
SISTEMA DE GERENCIAMENTO
DE BANCO DE DADOS
RELACIONAL
Charles Emerson Machado
Charles.emerson.machado@gmail.com
148
PROJETO DE BANCO DE DADOS: CLINICA MÉDICA
Competências: Analisar e aplicar o resultado da modelagem
de dados; Habilidades: Implementar as estruturas modeladas usando
banco de dados; Bases Tecnológicas: Administração de banco de
dados; Ambientes/ferramentas de gerenciamento de bancos de dados.
SITUAÇÃO
Pretende-se criar uma base de dados que permita gerir uma parte da informação
de uma clinica de saúde.
Fundamentalmente a base de dados deverá guardar a informação relativa aos
doentes que frequentam a clínica (nome, morada, telefone e numero de
beneficiário) e dos médicos que lá trabalham (nome,morada,contacto e
especialidade).
Para além disso o sistema deverá registar as marcações de consultas de cada
paciente para um determinado médico sabendo que esse médico só pratica uma
determinada especialidade.
149
MODELO DE NEGÓCIO: CLINICA MÉDICA
150
Os pacientes consultados na clinica são identificados pelo nome (campo
“índice” obrigatório para todos os registros), endereço, telefone (com DDD)
e CPF, (campo índice não repetido composto por 11 dígitos numéricos
obrigatórios – ATENÇÃO pode existir pacientes sem CPF). Um paciente
“deve” ser consultado por um ou mais médicos.
As especialidades registram apenas a especialidade (Clinica Geral,
Pediatria, Ortopedia, etc. Dado obrigatório para cada registro de
especialidade e que não pode ser repetido), atendida na clinica. Um
médico “deve” ter uma e somente uma especialidade. Enquanto uma
especialidade “pode” ser relacionada a um ou mais médicos.
151
Um paciente “pode” ser um e somente um paciente privado, isto é, possui convênio
médico com algum plano de saúde. Os pacientes privados são registrados pelo
nome do plano (Golden Cross, Unimed, etc. campo indexado e que permite
repetição), pelo Número do Contrato (dado indexado alfanumérico obrigatório que
pode ser repetido, de 8 dígitos obrigatórios), e se o paciente é Titular do plano de
saúde (sim ou não). Um paciente privado “deve” ser um e somente um paciente na
clínica.
OBS: Campos com mais de sete caracteres não serão usados como chave
primária. Campos “criados” como identificadores únicos (chave primária) serão
controlados automaticamente pelo sistema, campos nativos NÃO serão
preenchidos automaticamente.
152
153
154
155
MODELO ENTIDADE - RELACIONAMENTO
156
ENTIDADES E CONJUNTO DE ENTIDADES
157
Exemplo: suponha uma empresa onde trabalham vários empregados. João
da Silva e Carla Gomes são empregados dessa empresa. São entidades o
conjunto de todos os empregados da empresa, formando um conjunto de
entidades Chamado Empregado.
Representação gráfica :
158
REPRESENTAÇÃO GRÁFICA NO DER
O atributo pode ser representado por uma elipse com seu nome dentro
desta. A elipse deve estar ligada ao conjunto de entidades a qual pertence
o atributo através de uma linha simples. Os atributos simples e os
monovalorados são representados por uma elipse simples. Os atributos
multivalorados são representados por uma elipse dupla e os derivados por
uma elipse pontilhada.
Voltando ao exemplo da empresa, quais informações sobre os empregados
são importantes para os nossos propósitos? Informações como número de
matrícula, nome, endereço, salário, sexo, data de nascimento, etc.
159
CHAVES DO CONJUNTO DE ENTIDADES
160
Representação gráfica no DER
Os atributos que formam a chave primária têm seu nome sublinhado. No exemplo
da empresa cada empregado pode ser identificado unicamente pelo seu número de
matrícula, pois não existem dois empregado com o mesmo número. Assim, o
atributo número de matrícula pode se tornar a chave primária da entidade
Empregado.
161
RELACIONAMENTO E CONJUNTO DE RELACIONAMENTOS
162
Representação gráfica no DER
163
Atributos dos Conjuntos de Relacionamentos
164
165
Propriedades de Relacionamentos
166
A cardinalidade de um conjunto de relacionamentos expressa o número de
entidades de um conjunto de entidades E1 que podem estar associadas a
uma entidade do outro conjunto de entidades E2, através daquele conjunto
de relacionamentos R.
167
um para um (1:1): uma entidade de E1 pode estar associada no máximo
a uma entidade de E2 através de R; e uma entidade de E2 pode estar
associada a no máximo uma entidade de E1, através de R.
168
um para muitos (1:N): uma entidade de E1 pode estar associada a várias
entidades E2; e uma entidade de E2 pode estar associada no máximo uma
entidade de E1.
Ex. Um vendedor atende muitos clientes. Porém, cada cliente tem um
vendedor específico.
169
muitos para um (N:1): uma entidade de E1 pode estar associada a no
máximo uma entidade de E2; e uma entidade de E2 pode estar associada
a várias entidades de E1.
170
muitos para muitos (N:N) : uma entidade de E1 pode estar associada a
várias entidades de E2; e uma entidade de E2 pode estar associada a
várias entidades de E1.
171
172
CHAVES DAS RELAÇÕES
Uma chave primária (Primary Key - PK) de uma relação é uma chave
candidata escolhida como a principal forma de identificação das tuplas. As
demais candidatas são chaves secundárias.
173
SISTEMA DE GERENCIAMENTO
DE BANCO DE DADOS
RELACIONAL
Charles Emerson Machado
Charles.emerson.machado@gmail.com
174
EXERCÍCIOS SOBRE CRIAÇÃO DE TABELAS E SELECT
175
SISTEMA DE GERENCIAMENTO
DE BANCO DE DADOS
RELACIONAL
Charles Emerson Machado
Charles.emerson.machado@gmail.com
176
REVISÃO DE CONCEITOS
CHAVE PRIMÁRIA
177
CHAVE PRIMÁRIA
Simplificando, quando a chave primária é simples, ou seja, é formada por
um único campo da tabela, esse campo não pode ter dois ou mais
registros de mesmo valor, e também não pode conter nenhum registro
nulo. Se a chave primária é composta, ou seja, formada por mais de um
campo, os valores de cada campo podem se repetir, mas não a
combinação desses valores. Exemplo: a tabela 'Livros_Autores' tem
como chave primária (cod_livro, cod_autor). Podem existir nessa tabela
os registros:
178
CHAVE PRIMÁRIA
179
CHAVE ESTRANGEIRA - CHAVE SECUNDÁRIA
180
CHAVE ESTRANGEIRA - CHAVE SECUNDÁRIA
Uma chave externa ou estrangeira é um atributo ou uma combinação de
atributos numa relação R2, cujos valores são necessários para equivaler
à chave primária de uma relação R1.
Uma chave estrangeira é um campo, que aponta para a chave primária
de outra tabela ou da mesma tabela. Ou seja, passa a existir uma relação
entre tuplas de duas tabelas ou de uma única tabela. A finalidade da
chave estrangeira é garantir a integridade dos dados referenciais, pois
apenas serão permitidos valores que supostamente vão aparecer na
base de dados.
Esse tipo de atributo não permite exclusão, modificação e/ou inserção de
dados em tabelas que estejam dependentes umas das outras("foreign
key"), o que requer modificadores especiais, como cascade, por exemplo.
Isso também exige uma maior atenção do administrador da base de
dados, quanto à própria manipulação dos dados.
181
RELACIONAMENTOS
182
RELACIONAMENTOS
183
RELACIONAMENTOS
184
RELACIONAMENTOS
185
RELACIONAMENTOS
186
RELACIONAMENTOS
187
RELACIONAMENTOS
188
RELACIONAMENTOS
189
SISTEMA DE GERENCIAMENTO
DE BANCO DE DADOS
RELACIONAL
Charles Emerson Machado
Charles.emerson.machado@gmail.com
190
MODELO ENTIDADE RELACIONAMENTO - LOJA
191
MODELO ENTIDADE RELACIONAMENTO - LOJA
192
SISTEMA DE GERENCIAMENTO
DE BANCO DE DADOS
RELACIONAL
Charles Emerson Machado
Charles.emerson.machado@gmail.com
193
JUNÇÕES
Consultas a uma única tabela são usadas; porém, é nas consultas que
referenciam duas ou mais tabelas que estão os anseios de quem utiliza
um gerenciador de bancos de dados.
Para realizar estas consultas, precisa-se fazer os chamados JOINs, ou
seja, indicar ao gerenciador como ele encontrará as informações
desejadas informando os relacionamentos entre elas. Estes
relacionamentos estão indicados nas tabelas na forma de chaves
estrangeiras, que são os campos que formam as chaves primárias das
tabelas, que, por sua vez, contêm, as informações que se deseja
conseguir.
194
Conexão Cartesiana
SELECT
nome_tabela1.nome_coluna1,
nome_tabela2.nome_coluna1
FROM
nome_tabela1 CROSS JOIN nome_tabela2
195
CONEXÕES DE IGUALDADE
SELECT
nome_tabela1.nome_coluna1,
nome_tabela1.nome_coluna2,
nome_tabela2.nome_coluna1,
nome_tabela2.nome_coluna2
FROM
nome_tabela1 INNER JOIN nome_tabela2 ON
nome_tabela1.nome_coluna1 = nome_tabela2.nome_coluna1
196
CONEXÃO ESQUERDA
SELECT
nome_tabela1.nome_coluna1,
nome_tabela2.nome_coluna1
FROM
nome_tabela1 LEFT JOIN nome_tabela2 ON
nome_tabela1.nome_coluna1 = nome_tabela2.nome_coluna1
197
CONEXÃO DIREITA
SELECT
nome_tabela1.nome_coluna1,
nome_tabela2.nome_coluna1
FROM
nome_tabela1 RIGHT JOIN nome_tabela2 ON
nome_tabela1.nome_coluna1 = nome_tabela2.nome_coluna1
198
Quando um RIGHT ou LEFT JOIN apresenta a cláusula OUTHER, ele
indica ao gerenciador que deve recuperar todas as linhas de uma
tabela, inclusive aquelas que não possuírem linhas equivalentes na
outra.
Este método, portanto, previne e por vezes aponta erros de
inconsistência existentes no banco de dados ou causados por usuários
mal treinados em usa utilização.
Sintaxe:
[…] RIGHT OUTHER JOIN […]
[…] LEFT OUTHER JOIN […]
199
Existem algumas situações em que os JOINs são aplicados e resultam
em linhas com dados redundantes. Para solucionar este problema,
pode-se acrescentar ao comando SELECT a cláusula DISTINCT, que
forçaria o gerenciador a recuperar apenas valores diferentes, ignorando
assim, os que se repetissem.
Exemplo:
SELECT
DISTINCT nome_tabela1.nome_coluna1,
[…]
200
SUBCONSULTAS AO BANCO DE DADOS
Às vezes você precisa perguntar ao seu banco de dados mais que uma
pergunta. Ou pegar o resultado de uma consulta e usá-lo como entrada
para outra consulta. É aí que as subconsultas entram.
Elas irão ajudar a evitar dados duplicados, fazer suas consultas mais
dinâmicas.
SELECT
nome_coluna1,
nome_coluna2
FROM
nome_tabela
WHERE
nome_coluna1 IN (SELECT nome_coluna FROM nome_tabela)
201
Sintaxe para mostrar colunas criadas em outra consulta:
SELECT
nome_coluna_select1,
nome_coluna_select2
FROM
(SELECT
nome_coluna1,
nome_coluna2
FROM
nome_tabela
) AS nome_tabela_criada
202
Sintaxe para mostrar uma coluna dentro das colunas de uma consulta:
SELECT
nome_coluna1,
(SELECT nome_coluna2
FROM nome_tabela2
WHERE nome_tabela1.nome_coluna1 = nome_coluna2),
nome_coluna3
FROM
nome_tabela1
203
SINTAXE DE ANALYZE TABLE
204
EXPLAIN (Obter informações sobre uma SELECT)
205
Para ligações mais complexas, EXPLAIN retorna uma linha de
informação para cada tabela utilizada na instrução SELECT. As tabelas
são listadas na ordem que seriam lidas. O MySQL soluciona todas as
joins utilizando um método multi-join de varedura simples.
Isto significa que o MySQL lê uma linha da primeira tabela, depois
encontra uma linha que combina na segunda tabela, depois
na terceira tabela e continua. Quando todas tabelas são processadas,
ele exibe as colunas selecionadas e recua através da lista
de tabelas até uma tabela na qual existem registros coincidentes for
encontrada. O próximo registro é lido desta tabela e o processo
continua com a próxima tabela.
206
VIEWS
Sintaxe:
CREATE [OR REPLACE] [ALGORITHM = algorithm_type] VIEW AS
SELECT
nome_coluna1
FROM
nome_tabela [WITH [CASCADED | LOCAL] CHECK OPTION]
Testando:
207
VIEWS
• Uma View pode ser utilizada, por exemplo, para retornar um valor
baseado em um identificador de registro;
• Pode ser utilizada para promover restrições em dados para aumentar
a segurança dos mesmos e definir políticas de acesso em nível de
tabela e coluna. Podem ser configurados para mostrar colunas
diferentes para diferentes usuários do banco de dados;
• Pode ser utilizada com um conjunto de tabelas que podem ser
unidas a outros conjuntos de tabelas com a utilização de JOIN´s ou
UNION.
208
VIEWS
209
VIEWS
210
VIEWS
211
TRANSAÇÕES
SET AUTOCOMMIT=0;
START TRANSACTION;
Comandos
COMMIT | ROLLBACK;
212
STORED PROCEDURES
Sintaxe:
213
procedimentos armazenados ou Stored Procedures são programas
armazenados no servidor de banco de dados, no caso o MySQL, para
que ao serem chamados executem alguma lógica, retornando ou não
algum resultado. Estes aceitam parâmetros que por sua vez podem ser
de entrada, saída ou entrada e saída. Mas, em alguns casos, é
necessário armazenar alguma informação em variáveis ou mesmo
executar uma conferência por exemplo de uma instrução INSERT.
Digamos que desejamos efetuar um cálculo com base em um valor
armazenado no banco de dados. Facilmente podemos criar ou definir
uma variável em meio ao processamento e armazenar o valor de uma
coluna de uma tabela em uma dessas variáveis definidas pelo usuário.
214
Definição
Uma variável que é definida pelo usuário, também conhecida como user
variables, é escrita precedida pelo símbolo @ (arroba) e pode receber
através da declaração SET com os valores do tipo inteiro (INT), real
(FLOAT), string ou um valor NULL, que representa um fragmento de
dado sem definição e sem valor. Não vamos falar agora sobre NULL
pois seria necessário escrever um outro artigo. Variáveis do usuário são
diferentes de variáveis locais.
Podemos atribuir um valor a uma variável definida pelo usuário
utilizando os sinais igual (=) ou o sinal de igual com notação Pascal (:=).
Qualquer dos dois poderá ser usado levando em conta o contexto ao
estamos atribuindo tal valor. Por exemplo, se somente queremos
inicializar uma variável atribuindo a esta um valor para ser utilizado em
meio a um processamento ou mesmo guardar um valor de um campo
de uma tabela para uma utilização futura, podemos fazer como mostra
abaixo.
215
SET @teste = ‘Curso Técnico Web – Senac TI';
select @teste;
216
Variáveis do usuário são específicas de uma conexão, não estando
disponíveis ou visíveis para outras conexões. No MySQL 5.0++,
variáveis do usuário não são Case Sensitive, ou seja, @VAR e @var
são a mesma coisa.
217
Variáveis do Usuário + Procedimentos Armazenados
218
CREATE PROCEDURE BANCO_INSERT (V_NOME CHAR(100))
BEGIN
IF (V_NOME !='')THEN
-- Sendo v_nome diferente de vazio, continuamnos com o programa.
insert into cliente set cliente_nome = v_nome;
-- selecionamos o last_insert_id() into a user var.
select last_insert_id() into @var;
if ((@var >0) or (@var = null)) then
select 'Cadastro efetuado' as msg;
else
select 'Falhas no cadastro' as msg;
end if;
else
select 'Um nome precisa ser informado!' as msg;
end if;
end;
219
call banco_insert('Coelho ricochete');
220