D E/Wh> K K^ KD ^Y> - Avantavant.grupont.com.br/.../Manipulacao_de_Dados_com_SQL_demo.pdf ·...

33

Transcript of D E/Wh> K K^ KD ^Y> - Avantavant.grupont.com.br/.../Manipulacao_de_Dados_com_SQL_demo.pdf ·...

Page 1: D E/Wh> K K^ KD ^Y> - Avantavant.grupont.com.br/.../Manipulacao_de_Dados_com_SQL_demo.pdf · MANIPULANDO DADOS ... de bancos de dados relacionais, no ... a necessidade de utilizar

Grupo NT

INFORMAÇÃO E COMUNICAÇÃO

MANIPULAÇÃO DE DADOS COM SQL

Page 2: D E/Wh> K K^ KD ^Y> - Avantavant.grupont.com.br/.../Manipulacao_de_Dados_com_SQL_demo.pdf · MANIPULANDO DADOS ... de bancos de dados relacionais, no ... a necessidade de utilizar
Page 3: D E/Wh> K K^ KD ^Y> - Avantavant.grupont.com.br/.../Manipulacao_de_Dados_com_SQL_demo.pdf · MANIPULANDO DADOS ... de bancos de dados relacionais, no ... a necessidade de utilizar

AutorGrupo NT

RevisãoNT Editora e Figuramundo

Projeto GráficoNT Editora

Editoração EletrônicaNT Editora e Figuramundo

CapaNT Editora

NT Editora, uma empresa do Grupo NTSCS Q.2 – Bl. D – Salas 307 e 308 – Ed. Oscar NiemeyerCEP: 70316-900 – Brasília - DFFone: (61) [email protected] e www.grupont.com.br

Manipulação de Dados com SQL. / NT Editora.

-- Brasília: 2014. 150p. : il. ; 21,0 X 29,7 cm.

ISBN - 978-85-8416-051-8

1. Linguagem de Manipulação de Dados (SQL).

Copyright © 2014 por NT Editora.Nenhuma parte desta publicação poderá ser reproduzida por

qualquer modo ou meio, seja eletrônico, fotográfico, mecânico ou outros, sem autorização prévia e escrita da NT Editora.

Page 4: D E/Wh> K K^ KD ^Y> - Avantavant.grupont.com.br/.../Manipulacao_de_Dados_com_SQL_demo.pdf · MANIPULANDO DADOS ... de bancos de dados relacionais, no ... a necessidade de utilizar

LEGENDA

ÍCONES

Prezado(a) aluno(a),Ao longo dos seus estudos, você encontrará alguns ícones na coluna lateral do mate-rial didático. A presença desses ícones o(a) ajudará a compreender melhor o conteúdo abordado e também como fazer os exercícios propostos. Conheça os ícones logo abaixo:

Saiba MaisEsse ícone apontará para informações complementares sobre o assunto que você está estudando. Serão curiosidades, temas afins ou exemplos do cotidi-ano que o ajudarão a fixar o conteúdo estudado.

ImportanteO conteúdo indicado com esse ícone tem bastante importância para seus es-tudos. Leia com atenção e, tendo dúvida, pergunte ao seu tutor.

DicasEsse ícone apresenta dicas de estudo.

Exercícios Toda vez que você vir o ícone de exercícios, responda às questões propostas.

Exercícios Ao final das lições, você deverá responder aos exercícios no seu livro.

Bons estudos!

Page 5: D E/Wh> K K^ KD ^Y> - Avantavant.grupont.com.br/.../Manipulacao_de_Dados_com_SQL_demo.pdf · MANIPULANDO DADOS ... de bancos de dados relacionais, no ... a necessidade de utilizar

4 NT Editora

Sumário

1. INTRODUÇÃO À LINGUAGEM SQL ................................................................ 91.1 Introdução .................................................................................................................................. 9 1.2 Apresentando o MySQL .......................................................................................................111.3 Definindo normalização ......................................................................................................121.4 Normalizando um modelo de dados ..............................................................................171.5 Instalando, configurando e testando o MySQL ...........................................................24

2. CRIANDO UM BANCO DE DADOS ................................................................ 332.1 Estrutura da linguagem SQL ..............................................................................................332.2 Estudo de caso ........................................................................................................................342.3 Criando bancos de dados e tabelas com SQL ..............................................................372.4 Alterando a estrutura das tabelas ....................................................................................422.5 Apagando a estrutura das tabelas ...................................................................................462.6 Gerando o script do banco de dados ..............................................................................48

3. MANIPULANDO DADOS ............................................................................... 513.1 Estudo de caso ........................................................................................................................513.2 Inserindo dados ......................................................................................................................543.3 Alterando dados .....................................................................................................................613.4 Excluindo dados .....................................................................................................................643.5 Entendendo os índices .........................................................................................................66

4. MANIPULANDO DADOS – CONSULTAS INICIAIS ....................................... 704.1 Álgebra relacional ..................................................................................................................704.2 Operadores tradicionais de conjunto .............................................................................704.3 Operadores relacionais ........................................................................................................724.4 Conhecendo o comando SELECT da linguagem SQL ...............................................734.5 Restringindo o resultado .....................................................................................................764.6 Manipulando strings .............................................................................................................814.7 Manipulando datas ................................................................................................................85

Page 6: D E/Wh> K K^ KD ^Y> - Avantavant.grupont.com.br/.../Manipulacao_de_Dados_com_SQL_demo.pdf · MANIPULANDO DADOS ... de bancos de dados relacionais, no ... a necessidade de utilizar

5Manipulação de Dados com SQL

5. MANIPULANDO DADOS – RESUMINDO E AGRUPANDO DADOS ............. 905.1 Funções de agregação ..........................................................................................................905.2 Agrupando dados ..................................................................................................................925.3 Classificando os dados .........................................................................................................945.4 Armazenando as consultas .................................................................................................98

6. MANIPULANDO DADOS – CONSULTAS COM MÚLTIPLAS TABELAS ...... 1006.1 Selecionando em mais de uma tabela ........................................................................ 1006.2 Utilizando o comando JOIN ............................................................................................. 1056.3 Condição de junção ............................................................................................................ 1086.4 Tipo de junção ...................................................................................................................... 1086.5 Analisando o comando JOIN ........................................................................................... 1126.6 Simplificando com subconsultas ................................................................................... 113

7. MANIPULANDO DADOS – INSERIR, ALTERAR E EXCLUIR UTILIZANDO SUBCONSULTAS .............................................................................................. 1217.1 Subconsultas nos comandos INSERT, UPDATE e DELETE ...................................... 1217.2 Como criar cópias de tabelas para testes ................................................................... 1237.3 Transações .............................................................................................................................. 1257.4 Entendendo os LOCKS ....................................................................................................... 1267.5 Segurança e conta de usuário ........................................................................................ 1287.6 Prevenção de perdas de informação e recuperação .............................................. 130

8. CONHECENDO VIEW, TRIGGERS E STORED PROCEDURE ....................... 1348.1 Conhecendo as views ........................................................................................................ 1348.2 Conhecendo stored procedures e triggers ................................................................ 1378.3 Estudo de caso ..................................................................................................................... 139

Page 7: D E/Wh> K K^ KD ^Y> - Avantavant.grupont.com.br/.../Manipulacao_de_Dados_com_SQL_demo.pdf · MANIPULANDO DADOS ... de bancos de dados relacionais, no ... a necessidade de utilizar
Page 8: D E/Wh> K K^ KD ^Y> - Avantavant.grupont.com.br/.../Manipulacao_de_Dados_com_SQL_demo.pdf · MANIPULANDO DADOS ... de bancos de dados relacionais, no ... a necessidade de utilizar

7Manipulação de Dados com SQL

APRESENTAÇÃO

O objetivo do curso Linguagem de Manipulação de Dados (SQL) é fazer com que o aluno seja capaz de criar uma base de dados e de utilizar a linguagem SQL para selecionar e manipular suas informações. Neste curso, você tomará contato com assuntos mais avançados como normalização, transações, views e outros recursos utilizados para lidar com bancos de dados.

O ponto de partida de nosso estudo é obter uma visão geral sobre bancos de dados que inclui modelagem de dados com uma revisão dos principais conceitos utilizados no restante do material. Dessa forma, você terá uma base para desenvolver suas atividades de aprendizagem sobre a linguagem SQL.

Durante este curso, vários casos práticos serão propostos. Nesses momentos, você terá a opor-tunidade de vivenciar os conhecimentos trabalhados simulando situações do cotidiano dos profissio-nais de informática.

Este curso proporcionará, portanto, mais que uma simples aprendizagem de comandos SQL, pois o aluno se formará dentro de uma contextualização e, por isso, ele será capaz de agir dentro de necessidades reais.

SUMÁRIO

Repr

oduç

ão p

roib

ida.

Cop

yrig

ht ©

NT

Edito

ra. T

odos

os

dire

itos

rese

rvad

os.

Page 9: D E/Wh> K K^ KD ^Y> - Avantavant.grupont.com.br/.../Manipulacao_de_Dados_com_SQL_demo.pdf · MANIPULANDO DADOS ... de bancos de dados relacionais, no ... a necessidade de utilizar
Page 10: D E/Wh> K K^ KD ^Y> - Avantavant.grupont.com.br/.../Manipulacao_de_Dados_com_SQL_demo.pdf · MANIPULANDO DADOS ... de bancos de dados relacionais, no ... a necessidade de utilizar

9Manipulação de Dados com SQL

1.1 IntroduçãoO desejo do homem de registrar informações e de or-

ganizá-las de alguma forma é antigo. As primeiras formas uti-lizadas para isso eram desenhos, registros em pedras, etc. A escrita é considerada uma invenção recente, já que surgiu há quatro milênios a.C.

O desenvolvimento da humanidade foi marcado predo-minantemente pela grande quantidade de informações geradas. Essas informações lotavam (e ainda lotam) muitos arquivos com-postos por muitas fichas.

A organização desses dados foi se tornando cada vez mais complexa. Isso ocorreu não apenas em relação aos aspectos de ar-mazenamento, mas também em relação à busca de informação e à geração de relatórios que consolidam várias fichas. Como exem-plo, podemos citar o total de vendas mensais em uma empresa.

Os avanços tecnológicos trouxeram muitos benefícios para a humanidade. Como exemplos, podemos destacar a facilidade e a viabilização do manuseio de informações. Os primeiros compu-tadores que tinham a capacidade de armazenar dados surgiram na década 50 e trabalhavam ainda de forma bem restrita. Esses computadores utilizavam armazenadores de dados externos como, por exemplo, fitas magnéticas. As informações eram gravadas em sequências de caracteres como em um grande texto.

Figura 1.3: Homem manipulando um dos computadores antigos.

1. INTRODUÇÃO À LINGUAGEM SQL

Figura 1.1: Homem pré-histórico fazendo marcas em uma pedra.

Figura 1.2: Homem procurando uma ficha no meio de arquivos.

SUMÁRIO

Repr

oduç

ão p

roib

ida.

Cop

yrig

ht ©

NT

Edito

ra. T

odos

os

dire

itos

rese

rvad

os.

Page 11: D E/Wh> K K^ KD ^Y> - Avantavant.grupont.com.br/.../Manipulacao_de_Dados_com_SQL_demo.pdf · MANIPULANDO DADOS ... de bancos de dados relacionais, no ... a necessidade de utilizar

10 NT Editora

Com o contínuo avanço tecnológico, os computadores puderam armazenar cada vez mais da-dos em seus grandes arquivos cheios de caracteres. Consequentemente, surgiu a necessidade de faci-litar a busca dessas informações nesses arquivos.

Surgiram, então, arquivos com índices, os chamados indexados. Neles, existiam arquivos de índices que auxiliavam a localizar registros nos arquivos de dados com mais rapidez e precisão.

Porém, com o tempo, essa forma de armazenagem de dados passou a não ser mais suficiente para as necessidades das organizações. Surgiram, então, sistemas gerenciadores desses dados chama-dos SGBD. As novas formas de organização de dados eram:

• Em rede: os dados desse modelo são representados por coleções de registros que se relacio-nam por ligações complexas, onde cada registro filho pode ser relacionado a mais de um registro pai, como em uma teia de aranha.

• Hierárquica: esse modelo é similar ao modelo em rede. Porém, a ligação dos dados só pode existir de forma hierárquica, como em um organograma.

• Relacional: os dados e o relacionamento entre os dados são representados por uma coleção de tabelas, cada uma com seus dados e índices únicos.

• Orientado a objetos: diferente dos demais tipos de ban-cos de dados, o banco de dados orientado a objetos trata os dados como coleções de objetos do mundo real, contendo estruturas de informações e operações.

SGBD – Sistema computadorizado de armazenagem e orga-nização de dados. Pode trazer vantagens como alteração e recupe-ração de dados com mais rapidez, armazenagem de informações em menor espaço, minimização de redundâncias e inconsistências de informações, compartilhamen-to de estruturas e dados, etc.

DBA (Data Base Administration) – Especialista em bancos de dados que tem como responsa-bilidade manter o banco de dados funcionando de forma eficiente.

Os bancos de dados relacionais serão a base para o estudo deste material, pois a linguagem de manipulação de dados SQL (Structured Query Language / Linguagem Estruturada de Consulta) foi cria-da para trabalhar com esse tipo de banco. A linguagem SQL possui como base conjuntos e operações relacionais com certas modificações e aprimoramentos.

Quando os bancos de dados relacionais foram desenvolvidos, foram criadas linguagens desti-nadas à sua manipulação. O departamento de pesquisas da IBM desenvolveu a SQL como uma forma de interface para o sistema de banco de dados relacional denominado SYSTEM R no início dos anos 70. Em 1986, o ANSI (American National Standard Institute) publicou um padrão SQL. A linguagem SQL, então, foi estabelecida como linguagem padrão para bancos de dados relacionais.

Desde então, a linguagem vem evoluindo com publicações de novas versões padronizadas (caso da SQL-92 e da SQL-99). O número indicado em cada versão se refere aos anos em que essas versões foram publicadas.

Vários fabricantes de bancos de dados relacionais, no entanto, não se preocuparam em seguir a padronização da SQL ANSI, pois ela não é obrigatória. Isso gerou várias versões de SQL proprietárias, ou seja, versões de SQL que só podem ser executadas pelos bancos de dados dos próprios fabricantes.

Figura 1.4: Homem escreven-do suas informações em um

banco de dados.

Arquivos de índice: conjunto de atributos-chave e de endereços que apontam para o restan-te dos dados.

Arquivos de dados: conjunto de dados organizados e armazena-dos em meio digital. Pos-suem nome/identificação e característi-cas próprias.

SGBD: Sistemas Ge-renciadores de Bancos de Dados.

SUMÁRIO

Repr

oduç

ão p

roib

ida.

Cop

yrig

ht ©

NT

Edito

ra. T

odos

os

dire

itos

rese

rvad

os.

Page 12: D E/Wh> K K^ KD ^Y> - Avantavant.grupont.com.br/.../Manipulacao_de_Dados_com_SQL_demo.pdf · MANIPULANDO DADOS ... de bancos de dados relacionais, no ... a necessidade de utilizar

11Manipulação de Dados com SQL

SQL – Uma linguagem não procedural utilizada para a manipulação de dados. Nessa lingua-gem, deve-se especificar o que se quer e não como se quer. O banco de dados estará, então, incumbido de traçar o melhor método para acessar os dados.

A linguagem SQL possui grandes virtudes. Como exemplos, podemos citar:

• Permite acessar dados sem a necessidade de utilizar uma linguagem de programação como, por exemplo, Delphi, PHP, Cobol, etc.;

• Possui estrutura não procedural e não há especificação quanto à ordem de execução dos processos para obter os resultados requeridos. Dessa forma, o sistema de banco de dados é o respon-sável por escolher adequadamente os procedimentos a serem executados observando as questões relacionadas à eficiência;

• Busca e seleção de registro por critérios preestabelecidos com capacidade de ordenação e agrupamento;

• Possibilita inclusão, alteração e exclusão de dados;

• Permite cancelamento ou confirmação de manipulações de dados;

• Permite manipulações de estruturas de dados. Exemplos: inclusão e exclusão de tabelas.

Não devemos confundir os conceitos de arquivo, banco de dados e SGBD.

•Um arquivo é uma estrutura de dados simples que contém uma sequência de informações.

•Um banco de dados é uma coleção de dados logicamente relacionados e com algum significado. Associações aleatórias não podem ser chamadas de bancos de dados. Um banco de dados é projetado, construído e preenchido com dados específicos. Ele tem usuários e algumas aplicações preconcebidas para satisfazer suas necessidades.

•Um sistema gerenciador de banco de dados (SGBD) que possui recursos para adminis-trar os dados e suas estruturas é um aplicativo desenvolvido com esse objetivo.

1.2 Apresentando o MySQLExistem vários bancos de dados relacionais. Como exemplos, podemos citar Oracle, SQL Server,

MySQL e PostgreSQL. Neste livro, o banco de dados MySQL foi escolhido como base para os exercí-cios práticos. Esse aplicativo, que possui código aberto, é mantido pela MySQL AB (http://www.mysql.com/) e possui dois modos de licenciamento. O primeiro modo é gratuito e o segundo é comercial.

O MySQL apresenta várias vantagens. Entre elas, destacam-se:

• Velocidade: ele é desenvolvido com a constante preocupação com a velocidade do sistema, sendo considerado um banco com rapidez de resposta;

• Custo zero: contém licenciamento de uso gratuito e também possui código aberto;

• Linguagem SQL: apesar de ser um sistema relativamente simples, o banco de dados MySQL possui suporte para a maioria dos comandos SQL padrão. Isso facilita bastante o trabalho dos desen-volvedores (profissionais da área de informática que trabalham construindo aplicativos) e, no nosso caso, para a aprendizagem da linguagem SQL;

SUMÁRIO

Repr

oduç

ão p

roib

ida.

Cop

yrig

ht ©

NT

Edito

ra. T

odos

os

dire

itos

rese

rvad

os.

Page 13: D E/Wh> K K^ KD ^Y> - Avantavant.grupont.com.br/.../Manipulacao_de_Dados_com_SQL_demo.pdf · MANIPULANDO DADOS ... de bancos de dados relacionais, no ... a necessidade de utilizar

12 NT Editora

Figura 1.5

• Compatibilidade: possui compatibilidade com vários sistemas operacionais (Linux e Win-dows) e conexões com muitas linguagens de programação como, por exemplo, PHP e Java.

Desenvolvedores – Profissionais da área de informática que trabalham desenvolvendo aplicativos.

Além das vantagens citadas, o MySQL apresenta os recursos de Stored Procedures e Triggers. Esses recursos serão estudados nos últimos capítulos deste livro.

Stored Procedures – Procedimentos armazenados que podem acessar e manipular informa-ções de bancos de dados.

Triggers – Procedimentos gravados que são executados implicitamente quando ocorre deter-minada ação do usuário. Exemplo: modificação de uma tabela.

O banco de dados MySQL é responsável por prover condições para organizar e armazenar os dados. Porém, ele não se preocupa em possuir interface amigável para que o desenvolvedor veja os dados e suas estruturas.

Interface – Parte do aplicativo que mostra e capta as informações para o usuário. Uma interfa-ce deve ser estruturada para permitir navegação intuitiva e fácil.

Para resolver esse problema, a própria MySQL AB disponibiliza aplicativos que possuem inter-faces amigáveis. É o caso do Control Center e do MySQL Query Browser. Esses aplicativos também são gratuitos e podem ser obtidos na internet. Neste livro, trabalharemos com o Control Center, que possui funcionamento simples e eficiente.

1.3 Definindo normalizaçãoTodos os assuntos discutidos até

este momento são referentes a um mes-mo ponto: a informação ou o dado. O dado deve ser consultado, atualizado e armazenado em estruturas adequadas.

Para esse armazenamento, temos o banco de dados relacional MySQL, você pode verificar sua es-trutura na Figura 1.5. Para consultar e atualizar, temos a linguagem SQL e o Front End (Control Center) para facili-tar o trabalho do desenvolvedor.

SUMÁRIO

Repr

oduç

ão p

roib

ida.

Cop

yrig

ht ©

NT

Edito

ra. T

odos

os

dire

itos

rese

rvad

os.

Page 14: D E/Wh> K K^ KD ^Y> - Avantavant.grupont.com.br/.../Manipulacao_de_Dados_com_SQL_demo.pdf · MANIPULANDO DADOS ... de bancos de dados relacionais, no ... a necessidade de utilizar

13Manipulação de Dados com SQL

O desenvolvedor tem a responsabilidade de criar modelos de dados adequados que otimizem o espaço de armazenamento e facilitem as buscas e atualizações. Existem técnicas para auxiliar o de-senvolvedor nessa difícil tarefa. Uma delas é a normalização.

Um modelo de dados muito usado na modelagem de dados de bancos de dados relacionais é o MER (Modelo de Entidade e Relacionamento). O MER consiste em mapear os dados do mundo real relacionados a determinado contexto em um modelo gráfico que representa as entidades e seus relacionamentos. Cada entidade contém atributos e deve ter somente uma chave primária para iden-tificar uma única tupla, podendo ter uma ou mais chaves estrangeiras.

Neste livro, os termos entidade e tabela aparecem como sinôni-mos, pois a preocupação essencial se refere à SQL e não ao detalhamento da modelagem. A tabela ou entidade será representada nos modelos de acordo com a figura mostrada a seguir.

Relacionamentos – Associações entre duas ou mais entidades com significado. A cardinali-dade da associação representa a quantidade de elementos da entidade A associados à quan-tidade de elementos da entidade B e vice-versa. Exemplo: um aluno possui várias inscrições, enquanto uma inscrição pertence a um aluno.

O relacionamento será representado por um traço ligando as duas entidades relacionadas e a cardinalidade de muitos será representada pela letra N. A cardinalidade de um será represen-tada pelo número 1.

Figura 1.7: Relacionamento de 1 Aluno para N Inscricao.

Atributos – Dados elementares que permitem descrever a entidade ou o relacionamento. Os atributos serão escritos na maior parte da entidade. Na entidade ou tabela Aluno, por exem-plo, os atributos Matricula, Nome, Endereco e Telefone pertencem ao Aluno.

Chave primária – Um ou mais atributos cujo valor identifica unicamente uma tupla entre todas as outras de uma entidade. Deve ter conteúdo reduzido e valor constante no tempo.

Os atributos que compõem a chave primária serão sublinhados e destacados em negrito. No caso da tabela Aluno, a chave primária é a Matricula. Em Inscricao, a chave primária é composta por dois atributos: Matricula e CodigoMateria (Figura 1.7).

Figura 1.6: Modelo de entidade.

Modelos de dados: representa-ções gráficas de uma base de informação em determina-do escopo.

Modelagem de dados: técnica aplicada na construção de um modelo de dados.

Entidades: objetos ou eventos do mundo real, distintamente identificados e tratados como uma categoria de-finida, sobre a qual se arma-zenam dados. Exemplos: matrícula, es-cola e aluno.

Tupla: elemento do conjunto de uma entida-de. É uma estrutura de atributos intimamente relacionados e interdepen-dentes que residem em uma entidade específica. É similar a um registro em arquivo comum.

SUMÁRIO

Repr

oduç

ão p

roib

ida.

Cop

yrig

ht ©

NT

Edito

ra. T

odos

os

dire

itos

rese

rvad

os.

Page 15: D E/Wh> K K^ KD ^Y> - Avantavant.grupont.com.br/.../Manipulacao_de_Dados_com_SQL_demo.pdf · MANIPULANDO DADOS ... de bancos de dados relacionais, no ... a necessidade de utilizar

14 NT Editora

Chaves estrangeiras – Ocorrem quando o atributo chave primária de uma entidade é expor-tado para outra entidade.

A chave estrangeira é mostrada em itálico e negrito. O atributo Matricula da tabela de Inscri-cao é uma chave estrangeira (Figura 1.7).

O grande objetivo do projeto de um banco de dados relacional é gerar um conjunto de esque-mas de relações que permita armazenar informações sem redundância e, ainda, recuperar as informa-ções de forma fácil. Uma das abordagens possíveis é projetar esquemas na forma normal apropriada utilizando as regras da normalização.

A normalização de dados tende a evitar problemas como redundância de dados, inconsistência, uso inadequado de espaços de armazenamento e excesso de esforço para manter dados e sistemas.

Redundância de dados – Repetição de dados em várias tabelas e em formatos diferentes.

A tabela Funcionario possui o Nome do funcionário com o formato de 50 caracteres. A tabela Salario também possui o Nome do funcionário, mas com o formato de 100 caracteres.

Inconsistência – Apresentação da mesma informação em várias tabelas, na mesma tabela em várias tuplas ou na mesma tupla em vários atributos. Nesse último caso, cada local em que apare-ce a informação diz uma coisa diferente e não é possível concluir qual está correto.

Observe a tabela Notafiscal (que contém o atributo ValorTotal) e a tabela ItemNotaFiscal (que contém os atributos Quantidade, ValorUnitario e ValorProduto) (Figura 1.8). Quando é mudada uma quantidade do produto vendido na tabela de ItemNotaFiscal, os valores existentes em ValorTotal e ValorProduto também são afetados. Se eles não forem alterados, ficarão inconsistentes (Figura 1.8).

Figura 1.8: Modelo de inconsistência nos atributos das entidades NotaFiscal e ItemNotaFiscal.

Uso inadequado de espaço de armazenamento – Redundância ou inconsistência causam um terceiro problema: gasto elevado de espaço de armazenamento de informação. Afinal, a cada repeti-ção há consumo de espaço. A tabela Funcionario, além de conter os dados NomeFunc, DataNascFunc e EnderecoFunc do funcio-nário, contém as informações de NomeDep e DataNascimento-Dep dos dependentes (filhos, enteados, etc.). Então, os dados do funcionário serão repetidos para cada dependente (Figura 1.9).

Figura 1.9: Entidade Funcionario.

SUMÁRIO

Repr

oduç

ão p

roib

ida.

Cop

yrig

ht ©

NT

Edito

ra. T

odos

os

dire

itos

rese

rvad

os.

Page 16: D E/Wh> K K^ KD ^Y> - Avantavant.grupont.com.br/.../Manipulacao_de_Dados_com_SQL_demo.pdf · MANIPULANDO DADOS ... de bancos de dados relacionais, no ... a necessidade de utilizar

15Manipulação de Dados com SQL

Excesso de esforço para manter dados – Os dados precisam ser armazenados e atuali-zados. Uma estrutura não normalizada dificulta essa ação, elevando a complexidade dos programas ou rotinas manuais.

Excesso de esforço para manter sistema – Ao longo do tempo, os sistemas precisam ser alterados. Isso implica alteração dos programas e, muitas vezes, do banco de dados. Quando as tabelas não estão normalizadas, a manutenção se torna dispendiosa e, muitas vezes, possui resultados imprevisíveis.

Observe com cuidado o exemplo de um modelo não normalizado e acompanhe o passo a pas-so da normalização com o objetivo de proporcionar uma visão intuitiva do processo (Figura 1.10).

Figura 1.10: Modelo não normalizado.

Passo 1 – Criar o atributo CodigoFunc (Figura 1.11) para substituir o NomeFunc (Figura 1.10) como chave primária da tabela Funcionario.

Figura 1.11: Substituição do atributo NomeFunc por CodigoFunc.

Passo 2 – Exportar o atributo CodigoFunc da tabela Funcionarios para a tabela Salario como chave estrangeira (Figura 1.12).

Figura 1.12: Chave primária CodigoFunc exportada para a entidade Salario como chave estrangeira.

SUMÁRIO

Repr

oduç

ão p

roib

ida.

Cop

yrig

ht ©

NT

Edito

ra. T

odos

os

dire

itos

rese

rvad

os.

Page 17: D E/Wh> K K^ KD ^Y> - Avantavant.grupont.com.br/.../Manipulacao_de_Dados_com_SQL_demo.pdf · MANIPULANDO DADOS ... de bancos de dados relacionais, no ... a necessidade de utilizar

16 NT Editora

Passo 3 – Retirar o atributo Nome (Figura 1.12) da tabela Salario (Figura 1.13).

Figura 1.13: Entidade Salario sem o atributo Nome, que ficará na entidade Dependentes.

Passo 4 – Retirar os atributos relacionados aos dados de dependentes da tabela Funcionario (Figura 1.13) e criar a tabela Dependentes (Figura 1.14).

Figura 1.14: Criação da tabela Dependentes.

Passo 5 – Criar o CodigoDep na tabela Dependentes e exportar CodigoFunc da tabela Fun-cionario (chave primária) para a tabela Dependente e relacionar as duas tabelas (Figura 1.15).

Figura 1.15: Chave primária CodigoFunc exportada para a entidade Depen-dentes como chave estrangeira e criação do atributo CodigoDep.

Observe os dois modelo de dados e verifique as diferenças existentes entre eles. Essa norma-lização efetuada deve ter o objetivo de dar uma visão intuitiva para o estudante. No próximo tópico, sistematizaremos essa noção (Figuras 1.10 a 1.15).

Para criar um MER (modelo de entidade e relacionamento) adequado, precisamos saber organi-zar os atributos nas tabelas, escolher bem a chave primária de cada tabela e, ainda, saber relacioná-las.

Suponhamos que você tenha sido contratado por uma empresa para fazer um sistema de con-trole de estoques de mercadorias. Entre os formulários apresentados, existe o formulário de pedido

SUMÁRIO

Repr

oduç

ão p

roib

ida.

Cop

yrig

ht ©

NT

Edito

ra. T

odos

os

dire

itos

rese

rvad

os.

Page 18: D E/Wh> K K^ KD ^Y> - Avantavant.grupont.com.br/.../Manipulacao_de_Dados_com_SQL_demo.pdf · MANIPULANDO DADOS ... de bancos de dados relacionais, no ... a necessidade de utilizar

17Manipulação de Dados com SQL

de compras (Figura 1.16). Vamos, agora, transformar esse formulário em algumas tabelas de forma adequada. Para isso, as informações serão arrastadas para as tabelas corretas ou descartadas quando forem resultados de cálculos (Figura 1.17).

Figura 1.16: Pedido de compra de mercadoria.

Figura 1.17: Entidades do pedido de compra de mercadoria.

1.4 Normalizando um modelo de dados

Ao buscar um conceito prático de normalização, podemos dizer que se trata de um processo formal que examina passo a passo os atributos de uma entidade com o objetivo de evitar ano-malias observadas na inclusão, exclusão e alteração de dados.

Esse objetivo é alcançado a partir da implementação de regras chamadas de formas normais. Existem seis formas normais mais conhecidas. São elas:

• 1 FN (1ª Forma Normal)

• 2 FN (2ª Forma Normal)

• 3 FN (3ª Forma Normal)

SUMÁRIO

Repr

oduç

ão p

roib

ida.

Cop

yrig

ht ©

NT

Edito

ra. T

odos

os

dire

itos

rese

rvad

os.

Page 19: D E/Wh> K K^ KD ^Y> - Avantavant.grupont.com.br/.../Manipulacao_de_Dados_com_SQL_demo.pdf · MANIPULANDO DADOS ... de bancos de dados relacionais, no ... a necessidade de utilizar

18 NT Editora

• FNBC (Forma Normal de Boyce e Codd)

• 5 FN (5ª Forma Normal)

• 6 FN (6ª Forma Normal)

Uma forma normal engloba todas as anteriores. Ou seja: para que uma tabela esteja na 2FN, ela obrigatoriamente deve estar na 1FN e assim por diante. Vale ressaltar que as três primeiras formas normais atendem à maioria dos casos de normalização. Neste livro, seguiremos passo a passo até a terceira forma normal. As formas FNBC, 5FN e 6FN são pouco conhecidas e utilizadas.

Como exemplo, utilizaremos um estudo de caso que contém uma tabela não normalizada. A normalização dessa tabela ocorrerá paralelamente à apresentação das regras.

Suponhamos que um analista de sistemas tenha sido contratado por uma empresa para dar continuidade a um projeto. Quando começou a tomar conhecimento do projeto, o analista se depa-rou com a tabela Nota Fiscal não normalizada. Observe com cuidado a nota fiscal (Figura 1.18) e a tabela construída para armazenar suas informações (Figura 1.19).

1ª Forma Normal (1FN) – Uma relação estará na 1FN somente se todos os domínios básicos contiverem somente valores atômicos, ou seja, se cada atributo contiver somente um valor em somente um lugar.

Domínios – Grupos de valores atômicos a partir dos quais um ou mais atributos retiram seus valores reais.

Figura 1.18: Modelo de Nota Fiscal.Figura 1.19: Entidade Nota-Fiscal sem normalização.

SUMÁRIO

Repr

oduç

ão p

roib

ida.

Cop

yrig

ht ©

NT

Edito

ra. T

odos

os

dire

itos

rese

rvad

os.

Page 20: D E/Wh> K K^ KD ^Y> - Avantavant.grupont.com.br/.../Manipulacao_de_Dados_com_SQL_demo.pdf · MANIPULANDO DADOS ... de bancos de dados relacionais, no ... a necessidade de utilizar

19Manipulação de Dados com SQL

O passo a passo para chegar à 1FN é:

Passo 1 – Identificar a chave primária na tabela que está sendo normalizada. Na tabela NotaFiscal, a chave primária é NumeroNota (Figura 1.19);

Passo 2 – Identificar grupos de atributos repetitivos e remo-vê-los da tabela;

O grupo de atributos repetitivos da tabela NotaFiscal está re-lacionado ao produto. Afinal, para uma mesma notafiscal, há vários produtos (CodigoProduto, DescricaoProduto, QuantidadeVendida, Va-lorUnitario e ValorTotal) (Figuras 1.19 e 1.20).

Passo 3 – Criar uma ou mais novas tabelas com os atributos retirados da tabela original e nomeá-las. Criar uma tabela que contenha todos os atributos relacionados aos produtos retirados da tabela NotaFiscal (Figura 1.20) e denominá-la ItemNota (Figura 1.21);

Figura 1.21: Entidades NotaFiscal e ItemNota.

Passo 4 – Exportar a chave primária da tabela original para a tabela nova. Esse atributo será uma chave estrangeira na nova tabela. Exportar o NumeroNota da tabela NotaFiscal para a tabela ItemNota (Figura 1.22);

Figura 1.22: Chave primária NumeroNota exportada para a entidade ItemNota como chave estrangeira.

Passo 5 – Identificar a chave primária da nova tabela, que será obtida pela concatenação da chave estrangeira (chave primária da tabela original) mais um atributo que identifica o grupo repetitivo;

A chave primária da tabela ItemNota será o NumeroNota + CodigoProduto (Figura 1.23).

Figura 1.20: Entidade NotaFiscal sem os atributos do produto.

SUMÁRIO

Repr

oduç

ão p

roib

ida.

Cop

yrig

ht ©

NT

Edito

ra. T

odos

os

dire

itos

rese

rvad

os.

Page 21: D E/Wh> K K^ KD ^Y> - Avantavant.grupont.com.br/.../Manipulacao_de_Dados_com_SQL_demo.pdf · MANIPULANDO DADOS ... de bancos de dados relacionais, no ... a necessidade de utilizar

20 NT Editora

Figura 1.23: NumeroNota e CodigoProduto definidos como chaves primárias da entidade ItemNota.

Passo 6 – Relacionar a tabela original à tabela nova, sendo que, para cada tupla da tabela ori-ginal, várias tuplas existirão na tabela nova e, para cada tupla na tabela nova, uma tupla existirá na tabela original. Portanto, o relacionamento será de 1 para N, da tabela original, para a tabela criada.

Para uma NotaFiscal, existem várias tuplas em ItemNota. No entanto, para um ItemNota, exis-te somente uma NotaFiscal (Figura 1.24).

Figura 1.24: Relacionamento de 1 NotaFiscal está para N ItemNota.

2ª Forma Normal (2FN) – Uma tabela estará na 2FN se, e somente se, estiver na 1FN e todos os atributos não chave forem totalmente dependentes da chave primária (dependentes de toda a chave e não apenas de parte dela). Ou seja, é necessário eliminar as dependências funcionais parciais.

O passo a passo para chegar à 2FN é:

Passo 1 – Identificar os atributos de todas as tabelas que não são funcionalmente dependentes de toda a chave primária e removê-los das tabelas;

Observar a tabela ItemNota (Figura 1.24). O atributo DescricaoProduto não é dependente de toda a chave primária, NumeroNota e CodigoProduto, somente é dependente do CodigoPro-duto. Porém, a QuantidadeVendida, o ValorUnitario e o ValorTotal já dependem funcionalmente de toda a chave primária.

SUMÁRIO

Repr

oduç

ão p

roib

ida.

Cop

yrig

ht ©

NT

Edito

ra. T

odos

os

dire

itos

rese

rvad

os.

Page 22: D E/Wh> K K^ KD ^Y> - Avantavant.grupont.com.br/.../Manipulacao_de_Dados_com_SQL_demo.pdf · MANIPULANDO DADOS ... de bancos de dados relacionais, no ... a necessidade de utilizar

21Manipulação de Dados com SQL

A chave primária da tabela NotaFiscal só contém um atributo, portanto, já está na 2FN.

Desse modo, o único atributo a ser retirado é, então, o DescricaoProduto da tabela ItemNota (Figura 1.25).

Figura 1.25: Entidade ItemNota sem o atributo DescricaoProduto.

Passo 2 – Criar uma ou mais novas tabelas com os atributos retirados da tabela original e dar um nome para as novas tabelas;

A nova tabela se chamará Produto (Figura 1.26) e terá como atributos DescricaoProduto e Codi-goProduto. O CodigoProduto também é levado para a tabela nova, pois o atributo DescricaoProduto é funcionalmente dependente desse, ou seja, o atributo DescricaoProduto necessita do atributo Codi-goProduto para ser identificado (Figura 1.26).

Figura 1.26: Criação da entidade Produto.

Passo 3 – Identificar a chave primária das novas tabelas;

A tabela Produto terá como chave primária o atributo CodigoProduto (Figura 1.27).

Figura 1.27: CodigoProduto definido como chave primária da entidade Produto.

SUMÁRIO

Repr

oduç

ão p

roib

ida.

Cop

yrig

ht ©

NT

Edito

ra. T

odos

os

dire

itos

rese

rvad

os.

Page 23: D E/Wh> K K^ KD ^Y> - Avantavant.grupont.com.br/.../Manipulacao_de_Dados_com_SQL_demo.pdf · MANIPULANDO DADOS ... de bancos de dados relacionais, no ... a necessidade de utilizar

22 NT Editora

Passo 4 – Relacionar a tabela original à tabela nova sendo que, para cada tupla da tabela ori-ginal, uma tupla existirá na tabela nova e, para cada tupla na tabela nova, várias tuplas existirão na tabela original. Portanto, o relacionamento será de N para 1 da tabela original para as tabelas criadas. Deve-se marcar a chave estrangeira que estará na tabela de origem.

Para cada tupla na tabela ItemNota, há uma tupla na tabela Produto. Para cada tupla na tabela Produto, poderá haver várias tuplas na tabela ItemNota. O atributo CodigoProduto será a chave estrangeira na tabela ItemNota (Figura 1.28).

Figura 1.28: Relacionamento de 1 NotaFiscal está para N ItemNota e 1 Produto está para N ItemNota.

3ª Forma Normal (3FN) – Uma tabela estará na 3FN somente se estiver na 2FN e todos os atributos não chave forem dependentes não transitivos da chave primária, ou seja, se cada atributo for funcionalmente dependente apenas dos atributos componentes da chave primária ou se todos os seus atributos não chave forem independentes entre si.

Dependentes não transitivos – Sejam A, B e C três atributos de uma entidade X. Se C depender de B e B depender de A, então diremos que C é transitivamente dependente de A. Então, quando não há dependência transitiva, A, B e C dependem exclusivamente da chave primária da tabela X.

O passo a passo para chegar à 3FN é:

Passo 1 – Identificar todos os atributos que são funcionalmente dependentes de outros atribu-tos não chave primária em cada uma das tabelas e removê-los de suas respectivas tabelas;

Observe a tabela NotaFiscal (Figura 1.28) e o atributo NomeVendedor, que depende do CPF-Vendedor também. Agora, observe o atributo No-meCliente, que também depende do CPFCliente. O mesmo ocorre com o restante dos atributos do clien-te. O atributo ValorTotalNotaFiscal é resultado de um cálculo: a soma de todos os atributos ValorTotal do ItemNota da NotaFiscal. Por sua vez, o ValorTotal da ItemNota também é resultado de um cálculo, o atributo ValorUnitário * QuantidadeVendida. Os de-mais atributos só dependem das respectivas chaves primárias de cada tabela (Figura 1.29).

Figura 1.29: Remoção de atributos que fazem parte de novas entidades a serem criadas.

SUMÁRIO

Repr

oduç

ão p

roib

ida.

Cop

yrig

ht ©

NT

Edito

ra. T

odos

os

dire

itos

rese

rvad

os.

Page 24: D E/Wh> K K^ KD ^Y> - Avantavant.grupont.com.br/.../Manipulacao_de_Dados_com_SQL_demo.pdf · MANIPULANDO DADOS ... de bancos de dados relacionais, no ... a necessidade de utilizar

23Manipulação de Dados com SQL

Passo 2 – Remover das tabelas todos esses atributos identificados e criar, com eles, uma ou mais novas tabelas. Nomear cada uma das novas tabelas;

Ao remover os atributos da tabela NotaFiscal (Figura 1.28), procure agrupá-los por afinidade de informação. Os atributos de vendedor devem formar a tabela Vendedor (Figura 1.30). Os atributos de cliente, por sua vez, devem formar a tabela Cliente (Figura 1.30). Os atributos ValorTotalNotaFiscal e ValorTotal podem ser simplesmente removidos, pois, quando houver necessidade, a aplicação poderá calculá-los. O CPFCliente e o CPFVendedor também são levados para as tabelas novas, pois há depen-dência funcional dos atributos excluídos (Figura 1.30).

Figura 1.30: Criação das entidades Cliente e Vendedor.

Passo 3 – Identificar a chave primária das novas tabelas.

Na tabela Vendedor (Figura 1.31), a chave primária será CPFVendedor e, na tabela Cliente (Figura 1.31), será CPFCliente.

Figura 1.31: CPFVendedor e CPFCliente definidos respectivamente como chaves primárias das entidades Vendedor e Cliente.

Passo 4 – Relacionar a tabela original às tabelas novas sendo que, para cada tupla da tabela original, uma tupla existirá nas tabelas novas e, para cada tupla nas tabelas novas, várias tuplas existi-rão na tabela original. Portanto, o relacionamento será de N para 1, da tabela original, para as tabelas criadas. Deve-se marcar a chave estrangeira que estará na tabela de origem.

Para uma tupla na NotaFiscal, há uma tupla na tabela Cliente. Para uma tupla na tabela Clien-te, no entanto, poderá haver várias tuplas na tabela NotaFiscal. O mesmo ocorrerá entre as tabelas NotaFiscal e Vendedor (Figura 1.32).

SUMÁRIO

Repr

oduç

ão p

roib

ida.

Cop

yrig

ht ©

NT

Edito

ra. T

odos

os

dire

itos

rese

rvad

os.

Page 25: D E/Wh> K K^ KD ^Y> - Avantavant.grupont.com.br/.../Manipulacao_de_Dados_com_SQL_demo.pdf · MANIPULANDO DADOS ... de bancos de dados relacionais, no ... a necessidade de utilizar

24 NT Editora

Figura 1.32: Relacionamentos. Uma tupla da tabela Cliente pode ter várias tuplas na ta-bela NotaFiscal, mas uma tupla da tabela NotaFiscal só pode ser de uma tupla da tabela Cliente. Em uma tupla da tabela Vendedor poderá haver várias tuplas na tabela Cliente

representadas por tuplas na tabela NotaFiscal, mas em uma tupla da tabela NotaFiscal só haverá uma referência à tabela Cliente e, ainda, uma referência à tabela Vendedor. Uma tupla da tabela NotaFiscal pode conter várias tuplas da tabela ItemNota, mas cada tupla

da tabela ItemNota só pode aparecer uma vez na tabela NotaFiscal. Em uma tupla da tabela ItemNota, há uma tupla na tabela Produto, mas em cada tupla da tabela Produto

poderá haver várias tuplas na tabela ItemNota.

Observe com cuidado o modelo final gerado na 3FN e o modelo inicial (Figuras 1.18 a 1.32). A normalização foi muito importante para a correção de problemas na primeira modelagem.

A normalização não deve ser a única preocupação do desenvolvedor. Os nomes de tabelas e de seus atributos devem representar as informações neles contidas. Por exemplo, na tabela Funcionario, há um atributo com o nome data. Esse nome não qualifica bem o atributo, pois fica a dúvida: qual data, de nascimento ou de admissão?

A padronização de nomes das tabelas e atributos também é muito importante. Por isso, há propostas de padrões fornecidas pelos fabricantes de bancos de dados que resumem algumas ideias de qualificações de atributos. Exemplos: todos os campos data devem começar com “dt” e todos os campos descritivos com “tx”. Dessa forma, o atributo DataNascimento poderia ser DtNascimento.

1.5 Instalando, configurando e testando o MySQLAgora você já está pronto para montar o ambiente computacional para iniciarmos a prática

da SQL. Os aplicativos utilizados serão MySQL Server e MySQL Control Center. Este livro demonstrará como instalar e configurar esses aplicativos no sistema operacional Windows©. Esses aplicativos tam-bém funcionam em outros sistemas operacionais como, por exemplo, no Linux.

A versão do MySQL a ser instalada é a 5.0.18, que poderá ser encontrada no CD-ROM deste livro e na internet a partir do endereço http://dev.mysql.com/downloads/mysql/5.0.html.

O arquivo disponibilizado para instalação encontra-se compactado no formato ZIP, por isso, é necessário efetuar sua descompactação, utilizando qualquer descompactador que tenha compatibi-lidade com o formato ZIP.

Crie uma pasta e dê a ela o nome Instalar_SQL, em seguida, descompacte o arquivo mysql-5.0.18-win32.zip dentro desta pasta. Ao final da descompactação, haverá 1 (um) arquivo dentro da pasta, o Setup.exe.

SUMÁRIO

Repr

oduç

ão p

roib

ida.

Cop

yrig

ht ©

NT

Edito

ra. T

odos

os

dire

itos

rese

rvad

os.

Page 26: D E/Wh> K K^ KD ^Y> - Avantavant.grupont.com.br/.../Manipulacao_de_Dados_com_SQL_demo.pdf · MANIPULANDO DADOS ... de bancos de dados relacionais, no ... a necessidade de utilizar

25Manipulação de Dados com SQL

Dê um clique duplo no arquivo Setup.exe, que abrirá a primeira tela de instalação do MySql (Fi-gura 1.33). A instalação a ser realizada é a típica, sem alterar os dados básicos que o próprio instalador traz. Clique no botão Next para iniciar. O instalador informará quais os tipos de instalação. Escolha a opção Typical (Figura 1.34) e clique no botão Next, o instalador informará o diretório onde será reali-zada a instalação. Clique no botão Install e o MySQL será instalado neste momento. Quando terminar a instalação, aparecerá uma tela de Sign-Up (associação), escolha a opção Skip Sing-Up e clique no botão Next, aparecerá a última tela indicando que a instalação foi concluída. Selecione o item Configu-re the MySQL Server now e clique no botão Finish. O MySQL Server está instalado e iniciaremos agora a configuração do Servidor.

Figura 1.35: tela de Sign-Up.

Na configuração, utilizaremos também uma forma padrão para não dificultar a instalação. Para auxiliar na instalação, visualize a Figura 1.36. A primeira tela de configuração do MySQL Server nos dá as boas-vindas. Clique no botão Next, a próxima tela é a do tipo de configuração, iremos escolher a Standard Configuration e clicar no botão Next. A tela seguinte é a tela de instância, a tela que indica que iremos criar um serviço do Windows, para que o MySQL Server possa ser gerenciado pelo sistema de serviço do Windows®. Em Service Nam, escolha o nome MySQL5. Verifique que abaixo da escolha desse nome tem a opção Launch the MySQL Server automatically, ela deve estar selecionada, pois indica que o MySQL Server será iniciado automaticamente sempre que o sistema operacional (SO) for iniciado. Cli-que no botão Next. Nessa tela, escolheremos a forma de segurança que o servidor funcionará. Escolha a opção Modify Security Settings e digite a senha para o usuário root. Utilize como senha o texto root, confirme a senha com o texto root e clique no botão Next. Esta é a penúltima tela, ela indica o que será feito neste momento. Clique no botão Execute, as configurações serão realizadas e o serviço do MySQL Server iniciado, aparecerá agora a tela final, clique no botão Finish.

Nosso MySQL Server já está instalado e configurado, sempre que o sistema operacional for ini-cializado, o MySQL Server também será.

Figura 1.33: tela inicial de instalação do MySQL.

Figura 1.34: tela de tipo de confi-guração da instalação do MySQL.

SUMÁRIO

Repr

oduç

ão p

roib

ida.

Cop

yrig

ht ©

NT

Edito

ra. T

odos

os

dire

itos

rese

rvad

os.

Page 27: D E/Wh> K K^ KD ^Y> - Avantavant.grupont.com.br/.../Manipulacao_de_Dados_com_SQL_demo.pdf · MANIPULANDO DADOS ... de bancos de dados relacionais, no ... a necessidade de utilizar

26 NT Editora

Figura 1.36: tela Inicial do MySQL.

Para criar e manusear bancos de dados no MySQL, utilizaremos a ferramenta MySQL Control Center, versão 0.9.4, que também pode ser encontrado no CD-ROM deste livro ou na página http://dev.mysql.com/ downloads/mysqlcc.html.

O processo de instalação é similar ao da instalação do MySQL.

Crie uma pasta chamada Instalar_CC e des-compacte o arquivo mysqlcc-0.9.4-win32.zip den-tro dessa pasta.

Dê um clique duplo no arquivo setup.exe que acabou de ser descompactado. Surgirá uma tela do instalador (Figura 1.37). Clique, então, no botão Next. Aparecerá uma tela com a apresentação dos termos da licença nos moldes da licença pública GNU, marque o item I accept the licence agreement e clique no botão Next.

Figura 1.37: tela inicial de instala-ção do MySQL Control Center.

SUMÁRIO

Repr

oduç

ão p

roib

ida.

Cop

yrig

ht ©

NT

Edito

ra. T

odos

os

dire

itos

rese

rvad

os.

Page 28: D E/Wh> K K^ KD ^Y> - Avantavant.grupont.com.br/.../Manipulacao_de_Dados_com_SQL_demo.pdf · MANIPULANDO DADOS ... de bancos de dados relacionais, no ... a necessidade de utilizar

27Manipulação de Dados com SQL

A próxima tela apresentará algumas informações sobre a instalação. Clique no botão Next para que apareça a tela de especificação do diretório de instalação do Control Center, depois clique no botão Next. Na tela seguinte, existem opções de instalação com interfaces em idiomas diferentes do Inglês, infelizmente, ainda não está disponível a opção para o idioma Português, clique no botão Next.

Surge, finalmente, a última tela antes da instalação. Clique no botão Next e aguarde alguns segundos até que a instalação esteja concluída e, na última tela, clique no botão Finish.

Para iniciar o Control Center, clique sequencialmente em Iniciar, Programas, MySQL Control Center e escolha o ícone MySQL Control Center ou no atalho que é inserido na sua área de trabalho (Desktop). Ao iniciar o programa, aparecerá uma janela principal do Control Center com duas outras telas internas com os títulos Console Manager e Register Server.

Agora, vamos adicionar uma configuração de conexão ao MySQL no MySQL Control Center utilizando o Register Server. Caso essa tela não apareça, clique com o botão direito do mouse da tela MySQL Servers e clique na opção New. Pronto, a tela aparecerá. Preencha a janela do Register Server de acordo com o esquema mostrado a seguir.

Name: curso Hostname: localhost Name: root Password: root

Agora clique no botão Test. Deverá aparecer uma mensagem com o indicativo de sucesso da conexão. Isso indica que o MySQL Control Center encontrou e já trocou informações com o serviço MySQL. Por último, clique no botão Add para incluir essa configuração.

Ao explorar o Console Manager, pode-se observar que ele é composto por quatro áreas distin-tas: barra de menu, barra de ferramentas, área de trabalho e área de mensagem (Figura 1.38).

Figura 1.38: tela do Console Manager.

Na área de trabalho, especificamente na janela MySQL Server, dê um clique duplo na conexão Curso que foi criada por você. Abra a pasta Databases para ver o banco de dados mysql. Esse banco de dados armazena informações importantes para o SGBD MySQL, portanto, não é conveniente alte-rar sua estrutura.

Neste ponto, o aluno deve estar com seu ambiente de trabalho instalado, configurado e testado. Para criar um banco de dados, clique com o botão direito do mouse na pasta Databases, em seguida, clique em new database e digite o nome do banco que está sendo criado. Vamos chamá-lo de teste.

SUMÁRIO

Repr

oduç

ão p

roib

ida.

Cop

yrig

ht ©

NT

Edito

ra. T

odos

os

dire

itos

rese

rvad

os.

Page 29: D E/Wh> K K^ KD ^Y> - Avantavant.grupont.com.br/.../Manipulacao_de_Dados_com_SQL_demo.pdf · MANIPULANDO DADOS ... de bancos de dados relacionais, no ... a necessidade de utilizar

28 NT Editora

O procedimento que você acaba de realizar é uma facilidade que esse aplicativo nos permite, mas podemos criar um banco da dados utilizando a SQL, para isso, clique no botão SQL, que está na barra de ferramentas, e digite na área de trabalho o comando create database teste.

Para executar o comando clique no botão (execute). Como este banco de dados já foi criado, aparecerá uma mensagem na área de mensagem indicando erro na criação do banco.

Feche a janela da SQL, volte para o Console Manager, então, clique no botão (refresh), próxi-mo ao botão SQL. O banco que você acabou de criar deve aparecer abaixo da pasta Database.

Após a criação do banco, na mesma janela do Console Manager, clique no banco de dados Teste e no botão (connect). O ícone do banco Teste deve passar de cinza para verde, o que significa que a conexão foi estabelecida com sucesso.

Com o banco de dados Teste conectado, vamos executar alguns comandos SQL para criar uma tabela e manipular dados, com o objetivo de criar familiaridade com o ambiente de trabalho.

Nas próximas lições, esses comandos serão detalhados. No momento, conheceremos create ta-ble, insert e select, drop table e drop database.

Create table

Digite o comando mostrado a seguir na janela SQL (Figura 1.39) para criar uma tabela com o nome Aluno.

CREATE TABLE aluno (

Matricula int(3) NOT NULL DEFAULT ‘0’ , Nome char(50) NOT NULL DEFAULT ‘ ‘ ,PRIMARY KEY (Matricula))

Clique no botão , em seguida, volte para a janela do Console Manager. Acesse o banco de dados Teste e clique em Tables. Em seguida, clique no botão (refresh) para ver a tabela Aluno que você acaba de criar. Clique na tabela Aluno e observe os atributos Matricula e Nome.

Figura 1.39: tela do Query Windows (SQL).

SUMÁRIO

Repr

oduç

ão p

roib

ida.

Cop

yrig

ht ©

NT

Edito

ra. T

odos

os

dire

itos

rese

rvad

os.

Page 30: D E/Wh> K K^ KD ^Y> - Avantavant.grupont.com.br/.../Manipulacao_de_Dados_com_SQL_demo.pdf · MANIPULANDO DADOS ... de bancos de dados relacionais, no ... a necessidade de utilizar

29Manipulação de Dados com SQL

Insert

Digite o comando apresentado na janela SQL para inserir valores nos atributos da tabela Aluno.

INSERT INTO aluno (Matrícula, Nome)

VALUES (345, ‘Lúbia’)

Clique no botão , em seguida, volte para a janela do Console Manager. Acesse o banco de dados Teste e clique em Tables, dê um clique duplo na tabela Aluno. Observe os valores dos atributos Matricula e Nome.

Figura 1.40: tela do Query Windows (SQL) mostrando o resultado do comando Select.

Select

Digite o comando apresentado na janela SQL para ver os valores inseridos.

SELECT *

FROM aluno

Clique no botão e observe os valores dos atributos Matricula e Nome (Figura 1.40).

Drop table

Digite o comando apresentado na janela SQL para excluir a tabela Aluno criada no exercício anterior.

DROP TABLE aluno

SUMÁRIO

Repr

oduç

ão p

roib

ida.

Cop

yrig

ht ©

NT

Edito

ra. T

odos

os

dire

itos

rese

rvad

os.

Page 31: D E/Wh> K K^ KD ^Y> - Avantavant.grupont.com.br/.../Manipulacao_de_Dados_com_SQL_demo.pdf · MANIPULANDO DADOS ... de bancos de dados relacionais, no ... a necessidade de utilizar

30 NT Editora

Clique no botão e volte para a janela do Console Manager. Acesse o banco de dados Teste e cli-que em Tables. Em seguida, clique no botão (refresh) e observe que a tabela Aluno não existe mais.

Drop DataBase

Digite o comando apresentado na janela SQL para excluir o banco de dados Teste criado no exercício anterior.

DROP database teste

Clique no botão e volte para a janela do Console Manager. Clique em DataBases e, em se-guida, no botão (refresh). Observe que o banco de dados Teste não existe mais.

Todos os comandos SQL que foram digitados e executados poderiam ser feitos com a utilização das ferramentas MySQL Control Center. Porém, o objetivo é trabalhar com a SQL. Vamos direcionar o livro para a escrita e a execução de comandos SQL.

Geralmente, para observar o resultado do comando executado, é necessário clicar no botão Refresh no MySQL Control Center.

Abra a janela SQL e observe que, abaixo dela, existem três guia de ficha (Messages, History e Explain). Clique na guia Messages e observe que todas as mensagens de execução dos comandos SQL feitos até agora estão presentes nessa ficha. Clique na guia History, essa ficha contém o histórico dos comandos executados. A ficha Explain será detalhada posteriormente.

Volte para a ficha Messages. As mensagens contidas nessa ficha estão na língua Inglesa, vamos alterar os parâmetros do MySQL para que as mensagens de erro apareçam em Português.

Acesse o arquivo my.ini que se encontra na pasta C:\Arquivos de programas\MySQL\MySQL Server 5.0, com um editor de texto simples, por exemplo, o bloco de notas (notepad), WordPad. Pro-cure a linha “basedir=”, logo abaixo dela, digite “language= C:/Arquivos de programas/MySQL/MySQL Server 5.0/share/ portuguese” (Figura 1.41). Para finalizar salve o arquivo.

Figura 1.41: Arquivo my.ini do MySQL sendo modificado a linguagem.

SUMÁRIO

Repr

oduç

ão p

roib

ida.

Cop

yrig

ht ©

NT

Edito

ra. T

odos

os

dire

itos

rese

rvad

os.

Page 32: D E/Wh> K K^ KD ^Y> - Avantavant.grupont.com.br/.../Manipulacao_de_Dados_com_SQL_demo.pdf · MANIPULANDO DADOS ... de bancos de dados relacionais, no ... a necessidade de utilizar

31Manipulação de Dados com SQL

Parabéns, você fina-lizou esta lição!

Agora responda às questões ao lado.

Para as alterações surtirem efeito, é necessário reiniciar o MySQL Server. Podemos fazer isso de diversas formas, dentre elas citaremos duas: a primeira forma é reiniciar o sistema operacional, o MySQL Server está configurado como serviço do SO e inicia automaticamente quando o SO é iniciado; a segunda forma é acessar o sistema de Serviços do SO, não iremos citar o caminho para chegar nos sistema de serviços, pois depende da versão do SO que está utilizando, mas acessando o sistema de serviços do SO procure o serviço de nome MySQL5, clique com o botão direito do mouse e clique na opção Reiniciar. Com isto as configurações já estão feitas.

Para saber se a alteração ficou correta, volte no Control Center e abra a janela do SQL. Digite create database test, clique no botão e observe a mensagem na ficha Messages. Essa mensagem, que confirma que o comando foi executado com sucesso, deve começar com Query OK... Ela aparece em inglês, pois somente as mensagens de erro passam para português.

Clique no botão novamente. Observe a mensagem agora: “ERROR 1007: Não pode criar ban-co de dados ‘teste’. Banco de dados já existe”. Essa mensagem surgiu ao tentar criar o banco de dados novamente, sendo que ele já existia.

Neste capítulo, vimos que os bancos de dados são fundamentais para a humanidade desen-volver suas atividades. Cabe, então, ao desenvolvedor construir aplicativos capazes de trabalhar com as informações dos bancos de dados. Entre os tipos de bancos de dados estudados – hierárquico, em rede, orientado a objetos e relacional –, o último obteve mais sucesso no mercado e tem sido usado mais largamente.

A SQL, linguagem de manipulação de dados, trabalha com os bancos de dados relacionais e possui uma série de facilidades para promover rapidez e eficiência no acesso aos dados.

Porém, todo o sucesso de um projeto de banco de dados está em sua modelagem. O modelo de entidade e relacionamento (MER) e as formas de normalização são ferramentas importantes e devem ser usadas para maximizar resultados e economizar esforços.

Exercícios

Questão 01 – Com qual finalidade foram criados os arquivos com índices?

Questão 02 – Quais as formas de organização de dados?

Questão 03 – Qual a diferença entre arquivo, banco de dados e SGBD?

SUMÁRIO

Repr

oduç

ão p

roib

ida.

Cop

yrig

ht ©

NT

Edito

ra. T

odos

os

dire

itos

rese

rvad

os.

Page 33: D E/Wh> K K^ KD ^Y> - Avantavant.grupont.com.br/.../Manipulacao_de_Dados_com_SQL_demo.pdf · MANIPULANDO DADOS ... de bancos de dados relacionais, no ... a necessidade de utilizar

32 NT Editora

Questão 04 – Quais as vantagens e desvantagens de utilizar um banco de dados?

Questão 05 – Qual a importância da normalização? Quais são as formas normais?

Questão 06 – Na figura 1.16, identifique as entidades, os atributos, as chaves primá-rias e as chaves estrangeiras.

Questão 07 – De acordo com as regras de normalização, assinale a alternativa correta.

a) Formas normais são independentes.

b) Se estiver na 3ª FN, não estará na 1ª FN.

c) Cada forma normal é dependente da anterior.

Questão 08 – Quais os problemas causados pela não utilização da normalização?

Questão 09 – Por que é necessário utilizar chaves primárias em bancos de dados relacionais?

Questão 10 – Qual a diferença entre chave primária e chave estrangeira?

Questão 11 – Em que consiste o MER?

SUMÁRIO

Repr

oduç

ão p

roib

ida.

Cop

yrig

ht ©

NT

Edito

ra. T

odos

os

dire

itos

rese

rvad

os.