SQL - 14ª Edição Atualizada

Page 1

9cm x 9cm 24cm 9cmx x9cm 24cm 9cm 24cm xx24cm 24cm

21,5 mm 21,5 21,5mm mm 21,5 21,5mm mm

17cm 17cm x 17cm 24cmx17cm 17cm x24cm 24cm xx24cm 24cm

17cm 17cm x 17cm 24cmx17cm 17cm x24cm 24cm xx24cm 24cm

9cm x 9cm 24cm 9cmx x9cm 24cm 9cm 24cm xx24cm 24cm

1414 14 .ª 14 14 .ª.ª .ª.ª Edição Edição Edição Edição Edição Atualizada Atualizada Atualizada Atualizada Atualizada

Luís Luís Luís Luís Luís Damas Damas Damas Damas Damas

Esta Esta Esta Esta Esta é aéénova aéaénova anova a nova nova edição edição edição edição edição atualizada atualizada atualizada atualizada atualizada dede de uma de de uma uma uma uma obra obra obra obra obra fundamental fundamental fundamental fundamental fundamental Este Este Este Este Este livro livro livro livro livro apresenta-nos: apresenta-nos: apresenta-nos: apresenta-nos: apresenta-nos: e de ee de ede eleitura de de leitura leitura leitura leitura obrigatória obrigatória obrigatória obrigatória obrigatória que que que que que aborda aborda aborda aborda aborda a temática aa temática atemática a temática temática dodo do acesso do do acesso acesso acesso acesso a aa aa bases bases bases bases bases dede de dados de de dados dados dados dados através através através através através dada da linguagem da da linguagem linguagem linguagem linguagem SQL SQL SQL SQL SQL – –um – um ––um standard um um standard standard standard standard Teoria Teoria Teoria Teoria Teoria geral geral geral geral geral das das das bases das das bases bases bases bases dede de dados de de dados dados dados dados internacional. internacional. internacional. internacional. internacional. Destinado Destinado Destinado Destinado Destinado aos aos aos estudantes aos aos estudantes estudantes estudantes estudantes dos dos dos cursos dos dos cursos cursos cursos cursos dede de Informática de de Informática Informática Informática Informática e InformáeeInformáInformáee InformáInformática tica tica tica de tica de de Gestão de de Gestão Gestão Gestão Gestão dede de nível de de nível nível nível nível universitário, universitário, universitário, universitário, universitário, politécnico politécnico politécnico politécnico politécnico e eensino e ensino eeensino ensino ensino técnico, técnico, técnico, técnico, técnico, e útil ee útil eútil e também útil útil também também também também para para para para para profissionais, profissionais, profissionais, profissionais, profissionais, oo presente o presente oo presente presente presente livro livro livro livro livro está está está está está dividido dividido dividido dividido dividido emem em duas em em duas duas duas duas partes: partes: partes: partes: partes:

CC

MM

YY

Uma Uma Uma Uma obra Uma obra obra obra que obra que que ajuda que que ajuda ajuda ajuda ajuda estudantes estudantes estudantes estudantes estudantes e profissionais eeprofissionais profissionais ee profissionais profissionais a compreenderem aacompreenderem compreenderem aa compreenderem compreenderem os os osos os sistemas sistemas sistemas sistemas sistemas dede de gestão de de gestão gestão gestão gestão dede de bases de de bases bases bases bases dede de dados de de dados dados dados dados relacionais. relacionais. relacionais. relacionais. relacionais. Com Com Com Com apresentação Com apresentação apresentação apresentação apresentação dosdos dos dos dos conceitos conceitos conceitos conceitos conceitos fundamentais, fundamentais, fundamentais, fundamentais, fundamentais, inclui inclui inclui inclui inclui variados variados variados variados variados exemplos exemplos exemplos exemplos exemplos e exercícios. eeexercícios. exercícios. ee exercícios. exercícios.

CM CM

MY MY

CY CY

CMY CMY

KK

Estude Estude Estude Estude Estude a fundo aafundo fundo aa fundo fundo os os conceitos osos conceitos os conceitos conceitos conceitos desta desta desta desta desta linguagem, linguagem, linguagem, linguagem, linguagem, as as consasas consas consconsconstruções truções truções truções truções dada da POO da da POO POO em POO POO em em JAVA em em JAVA JAVA JAVA JAVA moderno moderno moderno moderno moderno e todas eetodas todas ee todas todas as as asas as construções construções construções construções construções funcionais funcionais funcionais funcionais funcionais trazidas trazidas trazidas trazidas trazidas pela pela pela versão pela pela versão versão versão versão 8. 8.8. 8. 8. Obra Obra Obra Obra essencial Obra essencial essencial essencial essencial para para para para para estudantes, estudantes, estudantes, estudantes, estudantes, profissionais, profissionais, profissionais, profissionais, profissionais, autodidatas. autodidatas. autodidatas. autodidatas. autodidatas. Este Este Este livro Este Este livro livro dá-lhe livro livro dá-lhe dá-lhe dá-lhe dá-lhe uma uma uma uma uma panorâmica panorâmica panorâmica panorâmica panorâmica geral geral geral geral geral e atual eeatual atual ee atual atual dasdas das das das redes redes redes redes redes dede de sensores de de sensores sensores sensores sensores sem sem sem fios: sem sem fios: fios: fios: fios: conceitos, conceitos, conceitos, conceitos, conceitos, tecnologias, tecnologias, tecnologias, tecnologias, tecnologias, protocolos, protocolos, protocolos, protocolos, protocolos, fundamentos, fundamentos, fundamentos, fundamentos, fundamentos, sistemas sistemas sistemas sistemas sistemas operativos. operativos. operativos. operativos. operativos. Com Com Com Com exercícios Com exercícios exercícios exercícios exercícios resolvidos resolvidos resolvidos resolvidos resolvidos para para para TinyOS para para TinyOS TinyOS TinyOS TinyOS e ContikiOS. eeContikiOS. ContikiOS. ee ContikiOS. ContikiOS.

Este Este Este livro Este Este livro livro reúne livro livro reúne reúne reúne reúne os os aspetos osos aspetos os aspetos aspetos aspetos mais mais mais mais importantes mais importantes importantes importantes importantes a ter aater ter em aa ter ter em emem em conta: conta: conta: conta: conta: como como como como como conceber conceber conceber conceber conceber uma uma uma uma uma boa boa boa experiência boa boa experiência experiência experiência experiência dede de jogo, de de jogo, jogo, jogo, jogo, o que ooque que oocaracteriza que que caracteriza caracteriza caracteriza caracteriza umum um jogo, um um jogo, jogo, jogo, jogo, a teoria aateoria teoria aa teoria teoria dede de jogos, de de jogos, jogos, jogos, jogos, a indústria, aaindústria, indústria, aa indústria, indústria, como como como como como serser ser empreendedor, ser ser empreendedor, empreendedor, empreendedor, empreendedor, etc.etc. etc. etc. etc.

A Aprimeira AA primeira Aprimeira primeira primeira apresenta apresenta apresenta apresenta apresenta osos os fundamentos os os fundamentos fundamentos fundamentos fundamentos gerais gerais gerais gerais gerais das das das das bases das bases bases bases bases dede de dados, de de dados, dados, dados, dados, permitindo permitindo permitindo permitindo permitindo aoao ao leitor ao ao leitor leitor leitor leitor terter ter uma ter ter uma uma uma uma panorâmica panorâmica panorâmica panorâmica panorâmica global global global global global sobre sobre sobre sobre sobre o contexto oocontexto o contexto o contexto contexto e os eeos os esistemas e os os sistemas sistemas sistemas sistemas dede de informação de de informação informação informação informação emem em que em em que que que estas que estas estas estas estas sese se inserem, se se inserem, inserem, inserem, inserem, nomeadamente nomeadamente nomeadamente nomeadamente nomeadamente osos os vários os os vários vários vários vários modelos modelos modelos modelos modelos dede de bases de de bases bases bases bases dede dede de dados, dados, dados, dados, dados, desenho desenho desenho desenho desenho dede de bases de de bases bases bases bases dede de dados, de de dados, dados, dados, dados, modelo modelo modelo modelo modelo entidadeentidadeentidadeentidadeentidade-associação -associação -associação -associação -associação e normalização. ee normalização. enormalização. e normalização. normalização. NaNa Na segunda Na Na segunda segunda segunda segunda são são são apresentados são são apresentados apresentados apresentados apresentados e explicados, eeexplicados, explicados, ee explicados, explicados, com com com com com especial especial especial especial especial cuidado, cuidado, cuidado, cuidado, cuidado, osos os principais os osprincipais principais principais principais comandos comandos comandos comandos comandos dada da linguagem da dalinguagem linguagem linguagem linguagem SQL: SQL: SQL: SQL: SQL: SELECT SELECT SELECT SELECT SELECT / INSERT, // INSERT, /INSERT, / INSERT, INSERT, UPDATE UPDATE UPDATE UPDATE UPDATE e eDELETE e DELETE eeDELETE DELETE DELETE / CREATE, // CREATE, /CREATE, / CREATE, CREATE, ALTER ALTER ALTER ALTER ALTER e ee ee DROP DROP DROP DROP DROP / GRANT // GRANT GRANT // GRANT GRANT e REVOKE. ee REVOKE. eREVOKE. e REVOKE. REVOKE. AsAs As matérias As As matérias matérias matérias matérias são são são são apresentadas são apresentadas apresentadas apresentadas apresentadas dede de forma de de forma forma forma forma detalhada detalhada detalhada detalhada detalhada e pragee prageprage pragpragmática, mática, mática, mática, mática, recorrendo recorrendo recorrendo recorrendo recorrendo a múltiplos aa múltiplos amúltiplos a múltiplos múltiplos exemplos exemplos exemplos exemplos exemplos dede de comandos de de comandos comandos comandos comandos que que que que que são são são são explicados são explicados explicados explicados explicados com com com com com oo detalhe o detalhe oo detalhe detalhe detalhe suficiente suficiente suficiente suficiente suficiente para para para para para sese se tornarem se se tornarem tornarem tornarem tornarem acessíveis acessíveis acessíveis acessíveis acessíveis mesmo mesmo mesmo mesmo mesmo àqueles àqueles àqueles àqueles àqueles que que que que não que não não não têm não têm têm têm qualquer têm qualquer qualquer qualquer qualquer experiência experiência experiência experiência experiência emem em programação. em em programação. programação. programação. programação.

Desenho Desenho Desenho Desenho Desenho e normalização eenormalização normalização ee normalização normalização dede de bases de de bases bases bases bases dede de dados de de dados dados dados dados Mais Mais Mais Mais Mais dede de 300 de de 300 300 exemplos 300 300 exemplos exemplos exemplos exemplos dede de comandos de de comandos comandos comandos comandos SQL SQL SQL SQL SQL Comandos Comandos Comandos Comandos Comandos SQL SQL SQL SQL testados SQL testados testados testados testados em: em: em: em: em: Access Access Access Access Access SQL SQL SQL SQL Server SQL Server Server Server Server Oracle Oracle Oracle Oracle Oracle MySQL MySQL MySQL MySQL MySQL novo novo novo novo novo PostgreSQL PostgreSQL PostgreSQL PostgreSQL PostgreSQL novo novo novo novo novo SQLite SQLite SQLite SQLite SQLite Capítulo Capítulo Capítulo Capítulo Capítulo adicional adicional adicional adicional adicional sobre sobre sobre sobre sobre bases bases bases bases bases dede de dados de de dados dados dados dados NoSQL NoSQL NoSQL NoSQL NoSQL Aplicação-exemplo Aplicação-exemplo Aplicação-exemplo Aplicação-exemplo Aplicação-exemplo dede de ligação de de ligação ligação ligação ligação entre entre entre entre entre a linguagem aalinguagem linguagem aa linguagem linguagem C#C# C# eC# C# oeeSQL oo eeSQL o SQL o SQL Server SQL Server Server Server Server

O OO livro O O livro livro livro livro cobre cobre cobre cobre cobre também também também também também asas as três as as três três três três sublinguagens sublinguagens sublinguagens sublinguagens sublinguagens DDL, DDL, DDL, DDL, DDL, DML DML DML DML DML e ee ee DCL DCL DCL DCL DCL e aborda ee aborda eaborda e aborda aborda a criação aa criação acriação a criação criação dede de Views de de Views Views Views Views e Índices, ee Índices, eÍndices, e Índices, Índices, Funções Funções Funções Funções Funções EstatístiEstatístiEstatístiEstatístiEstatísticas, cas, cas, cas, Joins, cas, Joins, Joins, Joins, Joins, Ordenação Ordenação Ordenação Ordenação Ordenação e Subqueries. ee Subqueries. eSubqueries. e Subqueries. Subqueries. NoNo No final, No No final, final, final, final, foifoi foi adicionado foi foi adicionado adicionado adicionado adicionado um um um novo um um novo novo novo novo capítulo, capítulo, capítulo, capítulo, capítulo, que que que que mostra, que mostra, mostra, mostra, mostra, dede de uma de de uma uma uma uma forma forma forma forma forma simples simples simples simples simples e breve, eebreve, ebreve, e breve, breve, asas as características as as características características características características dede de um de de um um sistema um um sistema sistema sistema sistema NoSQL. NoSQL. NoSQL. NoSQL. NoSQL. Para Para Para Para Para osos os mais os os mais mais mais mais interessados interessados interessados interessados interessados nas nas nas áreas nas nas áreas áreas áreas áreas dada da Programação, da da Programação, Programação, Programação, Programação, é apreéé apreéapreé apreapresentado sentado sentado sentado sentado um um um exemplo um um exemplo exemplo exemplo exemplo completo completo completo completo completo dede de ligação de de ligação ligação ligação ligação dada da linguagem da da linguagem linguagem linguagem linguagem C#C# C#C# C# a uma aa uma auma a uma uma base base base base base dede de dados de de dados dados dados dados SQL SQL SQL SQL SQL Server. Server. Server. Server. Server.

ISBNISBN ISBN 978-972-722-829-4 ISBN ISBN 978-972-722-829-4 978-972-722-829-4 978-972-722-829-4 978-972-722-829-4

9 9789727 99 789727 9789727 789727 789727 228294 228294 228294 228294 228294

Licenciado Licenciado Licenciado Licenciado Licenciado emem em Informática em em Informática Informática Informática Informática pela pela pela pela Faculdade pela Faculdade Faculdade Faculdade Faculdade dede de Ciências de de Ciências Ciências Ciências Ciências dada da Universidade da da Universidade Universidade Universidade Universidade dede de Lisboa de de Lisboa Lisboa Lisboa Lisboa e Mestre eeMestre Mestre ee Mestre Mestre emem em Gestão em em Gestão Gestão Gestão Gestão dede de Informação de de Informação Informação Informação Informação pela pela pela pela pela Universidade Universidade Universidade Universidade Universidade Católica Católica Católica Católica Católica Portuguesa. Portuguesa. Portuguesa. Portuguesa. Portuguesa. Desenvolve Desenvolve Desenvolve Desenvolve Desenvolve a sua aasua sua aaatividade sua sua atividade atividade atividade atividade nana na área na na área área área do área do dodo do Desenvolvimento Desenvolvimento Desenvolvimento Desenvolvimento Desenvolvimento dede de Aplicações de de Aplicações Aplicações Aplicações Aplicações como como como como como Consultor. Consultor. Consultor. Consultor. Consultor. Paralelamente, Paralelamente, Paralelamente, Paralelamente, Paralelamente, tem tem tem lecionado, tem tem lecionado, lecionado, lecionado, lecionado, emem em universidades em em universidades universidades universidades universidades e outros eeoutros outros ee outros outros organismos, organismos, organismos, organismos, organismos, disciplinas disciplinas disciplinas disciplinas disciplinas nana na área na na área área área das área das das Linguagens das das Linguagens Linguagens Linguagens Linguagens e Técnicas eeTécnicas Técnicas ee Técnicas Técnicas dede de Programação. de de Programação. Programação. Programação. Programação. É autor ÉÉautor autor ÉÉ autor autor dodo do livro do do livro livro livro Linguagem livro Linguagem Linguagem Linguagem Linguagem C, C, C,C, C, publicado publicado publicado publicado publicado pela pela pela pela FCA. pela FCA. FCA. FCA. FCA.

Código-fonte Código-fonte Código-fonte Código-fonte Código-fonte dosdos dos programas dos dos programas programas programas programas e base eebase base eede base base de dados dedados de de dados dados usada dados usada usada usada nos usada nos nos exemplos nos nos exemplos exemplos exemplos exemplos do do livro dolivro do do livro disponíveis livro livro disponíveis disponíveis disponíveis disponíveis emem em www.fca.pt, em em www.fca.pt, www.fca.pt, www.fca.pt, www.fca.pt, até até oaté livro até oaté olivro livro ose o livro livro esgotar se sedos esgotar se esgotar se esgotar esgotar ou ou ser oudisponíveis ser ou ou publicada serdisponíveis ser publicada ser publicada publicada publicada Soluções Soluções Soluções Soluções Soluções dos dos dos Exercícios dos Exercícios Exercícios Exercícios Exercícios disponíveis disponíveis disponíveis nova nova edição nova nova edição edição edição edição atualizada atualizada atualizada atualizada atualizada ou ou com ou com ou ou com alterações com alterações alterações alterações alterações emnova em em www.fca.pt, em em www.fca.pt, www.fca.pt, www.fca.pt, www.fca.pt, até até oatélivro até oaté olivro livro ose o livro livro esgotar se secom esgotar se esgotar se esgotar esgotar ou ou ser ouser ou ou publicada serser publicada ser publicada publicada publicada nova nova nova edição nova nova edição edição edição edição atualizada atualizada atualizada atualizada atualizada ou ou com oucom ou ou com alterações. com com alterações. alterações. alterações. alterações.

14 14 14 14 .ª .ª.ª ..ªª

Edição Edição Edição Edição Edição Atualizada Atualizada Atualizada Atualizada Atualizada


EDIÇÃO FCA – Editora de Informática, Lda. Av. Praia da Vitória, 14 A – 1000-247 Lisboa Tel: +351 213 511 448 fca@fca.pt www.fca.pt DISTRIBUIÇÃO Lidel – Edições Técnicas, Lda. Rua D. Estefânia, 183, R/C Dto. – 1049-057 Lisboa Tel: +351 213 511 448 lidel@lidel.pt www.lidel.pt LIVRARIA Av. Praia da Vitória, 14 A – 1000-247 Lisboa Tel: +351 213 511 448 * Fax: +351 213 522 684 livraria@lidel.pt

Copyright © 2017, FCA – Editora de Informática, Lda. ISBN edição impressa: 978-972-722-829-4 14.ª edição atualizada impressa: junho 2017 1.ª edição impressa: setembro 1999

Paginação: Alice Paula Simões Impressão e acabamento: Cafilesa – Soluções Gráficas, Lda. – Venda do Pinheiro Depósito Legal n.º 427409/17 Capa: José Manuel Reis Ilustração da capa: Miguel Montenegro

Marcas Registadas de FCA – Editora de Informática, Lda. –

®

®

®

Todos os nossos livros passam por um rigoroso controlo de qualidade, no entanto aconselhamos a consulta periódica do nosso site (www.fca.pt) para fazer o download de eventuais correções. Não nos responsabilizamos por desatualizações das hiperligações presentes nesta obra, que foram verificadas à data de publicação da mesma. Os nomes comerciais referenciados neste livro têm patente registada. Reservados todos os direitos. Esta publicação não pode ser reproduzida, nem transmitida, no todo ou em parte, por qualquer processo eletrónico, mecânico, fotocópia, digitalização, gravação, sistema de armazenamento e disponibilização de informação, sítio Web, blogue ou outros, sem prévia autorização escrita da Editora, exceto o permitido pelo CDADC, em termos de cópia privada pela AGECOP – Associação para a Gestão da Cópia Privada, através do pagamento das respetivas taxas.

XX


O AUTOR LUÍS DAMAS

Licenciado em Informática pela Faculdade de Ciências da Universidade de Lisboa e Mestre em Gestão de Informação pela Universidade Católica Portuguesa. Desenvolve a sua atividade na área do Desenvolvimento de Aplicações como Consultor. Paralelamente, tem lecionado, em universidades e outros organismos, disciplinas na área das Linguagens e Técnicas de Programação. É autor do livro Linguagem C, publicado pela FCA.


À memória dos meus primos Lúcia, Xana e Quim. À minha mãe e ao meu irmão, que me acompanham desde que nasci. À minha mulher Célia. E, claro, à Catarina, à Mariana e à Madalena, que nos põem a cabeça em água, mas que são a alegria de todos nós.


ÍNDICE GERAL AGRADECIMENTOS ...............................................................................................................................................................................XI SOBRE O LIVRO

XIII

LINGUAGEM SQL ........................................................................................................................................................................ XIII CARACTERÍSTICAS DA LINGUAGEM SQL ....................................................................................................................... XV ORGANIZAÇÃO DO LIVRO ..................................................................................................................................................... XV ESTRUTURA DO LIVRO ........................................................................................................................................................ XVIII SISTEMAS UTILIZADOS ........................................................................................................................................................... XX

PARTE I – BASE DE DADOS ................................................................................................................................1 1.

2.

BASES DE DADOS: VISÃO GERAL

3

1.1

BASES DE DADOS ..............................................................................................................................................................3

1.2

ANÁLISE DE SISTEMAS .................................................................................................................................................. 4

1.3

SQL ............................................................................................................................................................................................6

1.4

LIGAÇÃO A OUTRAS LINGUAGENS .......................................................................................................................... 16

MODELOS DE BASES DE DADOS

19

2.1 DADOS E INFORMAÇÃO ................................................................................................................................................ 19 2.2 QUALIDADE DA INFORMAÇÃO ................................................................................................................................. 20 2.3 BASES DE DADOS .............................................................................................................................................................21 2.4 SISTEMAS GESTORES DE BASES DE DADOS (SGBD).................................................................................... 22 2.4.1

INTRODUÇÃO ....................................................................................................................................................... 22

2.4.2 CARACTERÍSTICAS DE UM SGBD ............................................................................................................... 23 2.4.3 REQUISITOS DE UM SGBD ............................................................................................................................. 24 2.4.4 SERVIÇOS PRESTADOS POR UM SGBD.................................................................................................. 24 2.4.5 COMPONENTES DE UM SGBD ...................................................................................................................... 25 2.4.6 UTILIZADORES DE UM SGBD........................................................................................................................ 26 2.4.7 ARQUITETURA ANSI/SPARC ....................................................................................................................... 27 2.4.8 EXEMPLOS DE SGBD........................................................................................................................................ 28 2.5 MODELOS DE BASES DE DADOS............................................................................................................................. 29 2.5.1

SISTEMAS BASEADOS EM FICHEIROS....................................................................................................30

2.5.2 MODELO DE FICHEIRO INVERTIDO ............................................................................................................ 33 2.5.3 MODELO HIERÁRQUICO ..................................................................................................................................35 2.5.4 MODELO EM REDE ............................................................................................................................................39 2.5.5 MODELO RELACIONAL ..................................................................................................................................... 41 2.5.5.1 ENTIDADES E RELAÇÕES .............................................................................................................. 41 2.5.5.2 CHAVES ................................................................................................................................................43 2.5.5.3 RESTRIÇÕES DE INTEGRIDADE ..................................................................................................44 2.5.5.4 ÁLGEBRA E CÁLCULO RELACIONAL ...................................................................................... 45 2.5.5.5 AS 12 REGRAS DE CODD ...............................................................................................................46 2.5.6 MODELO ORIENTADO POR OBJETOS ......................................................................................................48 2.5.7 MODELO OBJETO-RELACIONAL ................................................................................................................ 50

© FCA – EDITORA DE INFORMÁTICA

V


SQL

2.5.8 MODELO DISTRIBUÍDO ......................................................................................................................................51 2.5.8.1 CARACTERÍSTICAS DE UMA BASE DE DADOS DISTRIBUÍDA ..................................... 54 2.5.8.2 FRAGMENTAÇÃO ............................................................................................................................. 55 2.5.8.3 REPLICAÇÃO....................................................................................................................................... 57 2.5.8.4 BASES DE DADOS DISTRIBUÍDAS............................................................................................ 58 2.5.9 ARQUITETURA CLIENTE/SERVIDOR ........................................................................................................ 59 2.5.9.1 PROCESSAMENTO CLIENTE/SERVIDOR ............................................................................... 60 2.5.9.2 CARACTERÍSTICAS DE UM SISTEMA CLIENTE/SERVIDOR ............................................61 2.5.9.3 COMPONENTES DA ARQUITETURA CLIENTE/SERVIDOR ............................................. 62 2.5.9.4 TIPOS DE ARQUITETURA CLIENTE/SERVIDOR .................................................................. 63 2.5.10 NoSQL DATABASES ........................................................................................................................................ 64 2.5.11 EVOLUÇÃO FUTURA ........................................................................................................................................ 64 3.

DESENHO DE BASES DE DADOS RELACIONAIS 3.1

65

SISTEMAS DE INFORMAÇÃO ..................................................................................................................................... 66 3.1.1

CICLO DE VIDA DE UM SISTEMA DE INFORMAÇÃO ......................................................................... 67

3.1.2

PLANEAMENTO .................................................................................................................................................. 68

3.1.3

ANÁLISE ................................................................................................................................................................ 69

3.1.4

DESENHO DETALHADO DO SISTEMA ...................................................................................................... 70

3.1.5

IMPLEMENTAÇÃO ............................................................................................................................................. 73

3.1.6

MANUTENÇÃO .................................................................................................................................................... 74 3.1.6.1

MANUTENÇÃO CORRETIVA ........................................................................................................ 75

3.1.6.2

MANUTENÇÃO ADAPTATIVA..................................................................................................... 75

3.1.6.3 MANUTENÇÃO PREVENTIVA ..................................................................................................... 76 3.1.6.4 MANUTENÇÃO PERFETIVA ......................................................................................................... 76 3.1.7

“ANOMALIAS” DO MODELO CVSI ..............................................................................................................77

3.2 CICLO DE VIDA DE UMA BASE DE DADOS .......................................................................................................... 78 3.2.1

ESTUDO INICIAL.................................................................................................................................................. 78

3.2.2 DESENHO .............................................................................................................................................................. 79 3.2.2.1

CRIAÇÃO DO DESENHO CONCEPTUAL................................................................................... 80

3.2.2.2 SELEÇÃO DO SGBD ......................................................................................................................... 82 3.2.2.3 CRIAÇÃO DO DESENHO LÓGICO ............................................................................................... 83 3.2.2.4 CRIAÇÃO DO DESENHO FÍSICO ................................................................................................. 84 3.2.3 IMPLEMENTAÇÃO E CARREGAMENTO ................................................................................................... 84 3.2.4 TESTES E AVALIAÇÃO ................................................................................................................................... 85 3.2.5 OPERAÇÃO ........................................................................................................................................................... 85 3.2.6 MANUTENÇÃO E AVALIAÇÃO .................................................................................................................... 86 3.3 DIAGRAMA ENTIDADE-ASSOCIAÇÃO.................................................................................................................... 86 3.3.1

ENTIDADES ........................................................................................................................................................... 86

3.3.2 RELAÇÕES ............................................................................................................................................................ 87 3.3.2.1

GRAU DE UMA RELAÇÃO ............................................................................................................. 89

3.3.2.2 OBRIGATORIEDADE ..........................................................................................................................91 3.3.2.3 CARDINALIDADE............................................................................................................................... 92 3.3.2.4 DIAGRAMA ENTIDADE-ASSOCIAÇÃO E BASES DE DADOS RELACIONAIS............. 94

VI

© FCA – EDITORA DE INFORMÁTICA


ÍNDICE GERAL 3.3.2.5 RELAÇÕES 1:N ....................................................................................................................................95 3.3.2.6 RELAÇÕES M:N..................................................................................................................................98 3.3.2.7 RELAÇÕES 1:1 ...................................................................................................................................... 101 3.3.2.8 RELAÇÕES RECURSIVAS .............................................................................................................102 3.4 EXEMPLO PRÁTICO ....................................................................................................................................................... 103 3.4.1

ENTIDADE: PESSOA........................................................................................................................................ 103

3.4.2 ENTIDADE: DEPARTAMENTO ..................................................................................................................... 104 3.4.3 HIERARQUIA ENTRE FUNCIONÁRIOS ...................................................................................................... 107 3.4.4 ENTIDADE: PRÉMIO ......................................................................................................................................... 108 3.4.5 ENTIDADES: COMISSÃO E MENSAGEM .................................................................................................... 111 4.

NORMALIZAÇÃO 4.1

115

INTRODUÇÃO ..................................................................................................................................................................... 115

4.2 DEPENDÊNCIAS FUNCIONAIS ..................................................................................................................................... 118 4.2.1

DEPENDÊNCIAS TRIVIAIS E NÃO TRIVIAIS ............................................................................................ 119

4.2.2 REGRAS DE INFERÊNCIA E AXIOMAS DE ARMSTRONG ................................................................120 4.3 FORMAS NORMAIS......................................................................................................................................................... 121 4.3.1

PRIMEIRA FORMA NORMAL (1FN) .............................................................................................................. 121

4.3.2 SEGUNDA FORMA NORMAL (2FN) ........................................................................................................... 123 4.3.3 TERCEIRA FORMA NORMAL (3FN) .............................................................................................................124 4.3.4 FORMA NORMAL DE BOYCE-CODD (FNBC) ......................................................................................... 126 4.3.5 DEPENDÊNCIAS MULTIVALORADAS .......................................................................................................128 4.3.6 QUARTA FORMA NORMAL (4FN) .............................................................................................................129 4.3.7 QUINTA FORMA NORMAL (5FN) .............................................................................................................. 130 4.4 DESNORMALIZAÇÃO ................................................................................................................................................... 133

PARTE II – SQL..................................................................................................................................................... 137 5.

COMANDO SELECT: SELEÇÕES SIMPLES 5.1

139

LINGUAGEM SQL NO CONTEXTO DOS SISTEMAS DE INFORMAÇÃO ................................................... 139

5.2 COMANDO SELECT.......................................................................................................................................................... 141 5.3 SELECIONAR TODOS OS REGISTOS ....................................................................................................................... 141 5.4 SELECIONAR TODAS AS COLUNAS ...................................................................................................................... 143 5.5 PROJEÇÃO ........................................................................................................................................................................ 145 5.6 RESTRIÇÃO: CLÁUSULA WHERE ............................................................................................................................. 146 5.7 OPERADORES RELACIONAIS ................................................................................................................................... 148 5.8 OPERADORES LÓGICOS ............................................................................................................................................. 150 5.9 OPERADORES BETWEEN, IN, IS E LIKE .................................................................................................................152 5.9.1

OPERADOR BETWEEN....................................................................................................................................152

5.9.2 OPERADOR IN ................................................................................................................................................... 154 5.9.3 OPERADOR IS: TRATAMENTO DE VALORES NULOS ..................................................................... 155 5.9.4 NULL: CONSIDERAÇÕES FINAIS ................................................................................................................ 158 5.9.5 OPERADOR LIKE: COMPARAÇÃO ENTRE STRINGS ......................................................................... 158 5.9.6 WILDCARDS: RESUMO ................................................................................................................................... 164 5.10 PRECEDÊNCIA DOS OPERADORES ........................................................................................................................ 165

© FCA – EDITORA DE INFORMÁTICA

VII


SQL

5.11 COMENTÁRIOS................................................................................................................................................................. 167 6.

COMANDO SELECT: ORDENAÇÃO 6.1

169

ORDENAÇÃO POR UMA COLUNA ........................................................................................................................... 170

6.2 ORDENAÇÃO POR VÁRIAS COLUNAS .................................................................................................................... 171 6.3 SELEÇÃO DE EXPRESSÕES ....................................................................................................................................... 173 6.4 ORDENAÇÃO POR POSIÇÃO ..................................................................................................................................... 175 6.5 ORDENAÇÃO E O VALOR NULL ............................................................................................................................... 177 6.6 ELIMINAÇÃO DE REPETIÇÕES: DISTINCT E ALL ............................................................................................... 177 6.7 NOTAS FINAIS SOBRE ORDENAÇÃO .................................................................................................................... 179 6.8 SELECIONAR APENAS ALGUNS REGISTOS........................................................................................................180 7.

COMANDO SELECT: JUNTAR TABELAS

183

7.1

INTRODUÇÃO .................................................................................................................................................................... 183

7.2

PRODUTO CARTESIANO DE TABELAS .................................................................................................................184

7.3 INNER JOIN ........................................................................................................................................................................188 7.4 OUTER JOIN .......................................................................................................................................................................194 7.4.1

OUTER JOIN: IMPLEMENTAÇÃO EM ORACLE ..................................................................................... 197

7.5 UNION ................................................................................................................................................................................... 199 7.6 SELF JOIN ......................................................................................................................................................................... 203 7.7

OPERADOR INTERSECT ............................................................................................................................................. 204

7.8 OPERADOR MINUS....................................................................................................................................................... 205 7.9 RESUMO DAS JUNÇÕES............................................................................................................................................ 206 8.

COMANDO SELECT: FUNÇÕES DE AGREGAÇÃO 8.1

207

FUNÇÃO COUNT .............................................................................................................................................................207

8.2 FUNÇÕES MIN E MAX ................................................................................................................................................... 212 8.3 FUNÇÃO SUM ................................................................................................................................................................... 213 8.4 FUNÇÃO AVG ................................................................................................................................................................... 214 9.

COMANDO SELECT: AGRUPAR A INFORMAÇÃO 9.1

217

INTRODUÇÃO .................................................................................................................................................................... 217

9.2 CLÁUSULA GROUP BY.................................................................................................................................................. 219 9.3 CLÁUSULA HAVING ..................................................................................................................................................... 224 9.4 CLÁUSULA WHERE VS. CLÁUSULA HAVING.................................................................................................... 226 9.5 AGRUPAMENTOS E O VALOR NULL..................................................................................................................... 227 9.6 ORDENAÇÃO DE GRUPOS ........................................................................................................................................ 228 10. COMANDO SELECT: SUBQUERIES 10.1

231

QUERIES ............................................................................................................................................................................. 231

10.2 SUBQUERY ...................................................................................................................................................................... 232 10.3 SUBQUERIES CORRELACIONADAS E NÃO CORRELACIONADAS .......................................................... 235 10.4 QUERIES: COMO FUNCIONAM ................................................................................................................................ 236 10.4.1 QUERY NÃO CORRELACIONADA ............................................................................................................ 236 10.4.2 QUERY CORRELACIONADA ........................................................................................................................237 10.4.3 QUERIES CORRELACIONADAS VS. QUERIES NÃO CORRELACIONADAS ............................ 239 VIII

© FCA – EDITORA DE INFORMÁTICA


ÍNDICE GERAL 10.5 OPERADOR IN................................................................................................................................................................. 239 10.6 OPERADOR EXISTS ...................................................................................................................................................... 242 10.7 ALL E ANY ....................................................................................................................................................................... 246 10.8 ALL E ANY: RESUMO .................................................................................................................................................. 248 10.9 NOTAS SOBRE A UTILIZAÇÃO DE SUBQUERIES POR OUTROS COMANDOS .................................. 249 11.

PROCESSAMENTO DE DADOS

251

11.1

DATA MANIPULATION LANGUAGE (DML) ...........................................................................................................251

11.2

COMANDO INSERT ....................................................................................................................................................... 252 11.2.1 INSERÇÃO DE REGISTOS SIMPLES ........................................................................................................ 252 11.2.2 INSERÇÃO DE CONJUNTOS DE REGISTOS .......................................................................................... 255

11.3 11.4

COMANDO UPDATE ..................................................................................................................................................... 256 COMANDO DELETE ...................................................................................................................................................... 257

11.5

MANIPULAÇÃO DE DATAS ....................................................................................................................................... 260

12. CRIAÇÃO E MANUTENÇÃO DE TABELAS 12.1 12.2 12.3 12.4

12.5 12.6 12.7 12.8 12.9

263

COMANDO CREATE DATABASE ............................................................................................................................ 263 COMANDO DROP DATABASE ................................................................................................................................. 267 COMANDO CREATE TABLE ...................................................................................................................................... 268 TIPOS DE DADOS .......................................................................................................................................................... 268 12.4.1 CARACTERÍSTICAS DAS COLUNAS ........................................................................................................ 270 12.4.2 COLUNAS: VALORES POR DEFEITO ........................................................................................................ 271 12.4.3 CONSTRAINTS (RESTRIÇÕES) ................................................................................................................... 274 12.4.3.1 CONSTRAINT NOT NULL ............................................................................................................. 274 12.4.3.2 CONSTRAINT CHECK( ) ................................................................................................................ 274 12.4.3.3 CONSTRAINT UNIQUE .................................................................................................................. 275 12.4.3.4 CONSTRAINT PRIMARY KEY .................................................................................................... 276 12.4.3.5 CONSTRAINT REFERENCES ....................................................................................................... 277 12.4.4 CRIAÇÃO DE TABELAS A PARTIR DE OUTRAS TABELAS .......................................................... 282 CAMPOS COM AUTOINCREMENTO....................................................................................................................... 283 VARCHAR VS. NVARCHAR ...................................................................................................................................... 286 COMANDO ALTER TABLE ......................................................................................................................................... 289 COMANDO DROP TABLE ........................................................................................................................................... 290 COMANDO TRUNCATE TABLE ................................................................................................................................ 292

13. VIEWS E ÍNDICES 13.1

295

VIEWS................................................................................................................................................................................. 295

13.2 COMANDO CREATE VIEW ......................................................................................................................................... 297 13.2.1 JUNTAR VÁRIAS TABELAS NUMA VIEW ............................................................................................. 301 13.2.2 CLÁUSULA WITH CHECK OPTION ............................................................................................................. 303 13.3 13.4 13.5 13.6 13.7

COMANDO DROP VIEW ..............................................................................................................................................305 COMO OBTER A LISTA DE TABELAS E VIEWS ............................................................................................... 306 ÍNDICES .............................................................................................................................................................................. 307 COMANDO CREATE INDEX ........................................................................................................................................ 310 COMANDO DROP INDEX ............................................................................................................................................... 311

© FCA – EDITORA DE INFORMÁTICA

IX


SQL

14. TRANSAÇÕES 14.1 14.2 14.3 14.4

INTRODUÇÃO .................................................................................................................................................................... 313 TRANSAÇÃO ..................................................................................................................................................................... 314 COMANDOS COMMIT E ROLLBACK ....................................................................................................................... 315 CHECKPOINT ...................................................................................................................................................................... 317

15. SEGURANÇA 15.1 15.2 15.3 15.4 15.5 15.6

313

319

CONCEITOS GERAIS....................................................................................................................................................... 319

VIEWS COMO MECANISMO DE SEGURANÇA.................................................................................................. 320 CONTROLO DE ACESSOS À BASE DE DADOS ............................................................................................... 320 SEGURANÇA AO NÍVEL DO UTILIZADOR............................................................................................................. 321 COMANDO GRANT ....................................................................................................................................................... 324 COMANDO REVOKE .................................................................................................................................................... 325

16. NoSQL

327

16.1 CONTEXTO ........................................................................................................................................................................327 16.2 MONGODB........................................................................................................................................................................ 329 16.2.1 CRIAR/ATIVAR BASE DE DADOS .......................................................................................................... 330 16.2.2 DOCUMENTOS E DADOS............................................................................................................................. 330 16.2.3 INSERÇÃO DE DOCUMENTOS ..................................................................................................................... 331 16.2.4 PESQUISA DE DOCUMENTOS ................................................................................................................... 332 16.2.5 JUNTAR COLLECTIONS ................................................................................................................................ 336 16.2.6 ALTERAR DOCUMENTOS ............................................................................................................................ 337 16.2.7 APAGAR DOCUMENTOS ............................................................................................................................. 337 16.2.8 APAGAR COLLECTIONS ............................................................................................................................... 338 16.2.9 APAGAR BASE DE DADOS ......................................................................................................................... 339 16.2.10 CONCLUSÃO ...................................................................................................................................................... 339 A1. APÊNDICE 1 – SQL E C# A1.1 A1.2 A1.3 A1.4

341

INTRODUÇÃO .................................................................................................................................................................... 341 LIGAÇÃO ENTRE C# E BASES DE DADOS ........................................................................................................ 343 CRIAÇÃO DA BASE DE DADOS .............................................................................................................................. 344 APLICAÇÃO DE DEMONSTRAÇÃO DEMOSQL ................................................................................................ 348 A1.4.1 ECRÃ PRINCIPAL (FRMPRINCIPAL) ......................................................................................................... 349 A1.4.2 ECRÃ DE GESTÃO DE MENSAGENS ...................................................................................................... 350 A1.4.3 ECRÃ DE GESTÃO DE DEPARTAMENTOS .......................................................................................... 354 A1.4.4 ECRÃ DE GESTÃO DE FUNCIONÁRIOS ................................................................................................. 357

GLOSSÁRIO............................................................................................................................................................................................ 361 BIBLIOGRAFIA .................................................................................................................................................................................... 363 ÍNDICE REMISSIVO ........................................................................................................................................................................... 365 A2. APÊNDICE 2 – SQL EMBUTIDO............................................................................................. disponível em www.fca.pt

X

© FCA – EDITORA DE INFORMÁTICA


AGRADECIMENTOS Nesta altura, em que se faz mais uma edição desta obra, é novamente importante olhar para trás para compreender quem são todos aqueles que têm dado o apoio necessário para que a pudesse escrever. Agradece-se a colaboração prestada por Pedro Velez (Oracle), Rui Rosa (Outware) e Gonçalo Castro Lopes. Uma nota final de agradecimento à própria FCA, na pessoa do Eng.º Frederico, principalmente pela oportunidade que dá aos Autores Portugueses. Sem esquecer, é claro, todo o apoio e paciência por parte do staff da Editora, nomeadamente, das incansáveis, Paula Martins e Sandra Correia.

© FCA – EDITORA DE INFORMÁTICA

XI



S0BRE O LIVRO Bem-vindos ao mundo das bases de dados. Neste livro iremos estudar e apresentar a linguagem SQL, um verdadeiro caso de sucesso no que respeita ao acesso e manipulação de dados. Este livro irá apresentar a generalidade das características da linguagem SQL. Para que nunca se sinta perdido, todo o texto é recheado de exemplos explicados com o detalhe necessário para que não deixe de os compreender.

LINGUAGEM SQL A história da linguagem SQL começa em junho de 1970 com a publicação por E. F. Codd, no ACM journal1, de um artigo intitulado "A Relational Model of Data for Large Shared Data Banks". O modelo proposto por Codd é hoje considerado a base de trabalho para qualquer Sistema Gestor de Bases de Dados Relacional (SGBDR). A primeira implementação da linguagem SEQUEL foi realizada pela IBM e tinha como objetivo a implementação do modelo de Codd. A evolução desta linguagem veio a dar origem ao SQL. Já a primeira implementação comercial de SQL foi realizada pela Relational Software, Inc., hoje conhecida por Oracle Corporation. Em 1986 tornou-se um standard americano (ANSI) e no ano seguinte, um standard internacional (ISO). Nos dias de hoje, a linguagem de SQL é ainda considerada um standard dos Sistemas Gestores de Bases de Dados Relacionais (SGBDR), por isso, todos os fabricantes a integram nos seus produtos, embora possam não implementar todos os requisitos. O facto de ser um standard só traz vantagens para os seus utilizadores, pois as características essenciais da linguagem mantêm-se em todos os fabricantes destes sistemas. Na realidade, tal acaba por não suceder porque cada fabricante acaba por adicionar componentes ou características que melhoram o produto final, mas que não são compatíveis com o standard definido internacionalmente, e, como tal, não totalmente compatíveis com os outros sistemas. Como saberá, existe um vasto conjunto de linguagens de programação disponível no mercado informático. Estas, de acordo com as suas características, são geralmente agrupadas em gerações.

1

Association of Computer Machinery (ACM) journal, Communications of the ACM.

© FCA – EDITORA DE INFORMÁTICA

XIII


SQL

Existem até ao momento cinco gerações de linguagens, embora não exista unanimidade na forma como são classificadas: 

1.ª geração – Código-máquina;

2.ª geração – Assembly;

3.ª geração – Fortran, Basic, Cobol, Pascal, C;

4.ª geração – SQL;

"5.ª geração" – C++, Java, Delphi, C#, VB.Net.

As gerações de linguagens de maior sucesso são a 3.ª e a "5.ª". A "5.ª geração" é, regra geral, conhecida como contendo as linguagens que permitem a Programação Orientada por Objetos (POO). A 4.ª geração, a que pertence o SQL e que prometia muito aos informáticos, acabou por se tornar numa grande desilusão. Exceto, é claro, o estrondoso sucesso que acabou por ser a linguagem SQL. Embora se possa pensar que o SQL resulta de uma evolução das linguagens que pertencem à 3.ª geração, isso não é verdade. As características abreviadas das linguagens de 3.ª geração são: 

Existência de variáveis, arrays, etc.;

Existência de instruções condicionais (if, switch, case);

Existência de ciclos (for, while, do...while, repeat…until);

Possibilidade de escrita de funções e procedimentos.

Ora, nenhuma destas características está presente na linguagem SQL, existindo, por isso, um corte radical com as gerações que a precederam. A título de curiosidade, podemos afirmar que existe maior ligação entre as linguagens de 3.ª geração e POO do que entre as de 3.ª e 4.ª gerações. Ao contrário das linguagens de outras gerações, que se destinam essencialmente a informáticos, a linguagem SQL, pela sua simplicidade, destina-se a todos os potenciais utilizadores, sejam programadores, administradores de bases de dados, gestores, entre outros. Uma outra diferença importante é que as linguagens de 3.ª geração, como C ou Pascal, não têm um objetivo definido. Tanto podem servir para implementar uma interface gráfica, como para controlar um sistema de endoscopia gástrica, por exemplo. É precisamente neste aspeto particular que o SQL é diferente, pois o objetivo da linguagem é claramente o processamento de dados. Mais especificamente, o objetivo da linguagem SQL é servir de interface entre o utilizador dos dados e um SGBDR como o Oracle ou o SQL Server.

XIV

© FCA – EDITORA DE INFORMÁTICA


SOBRE O LIVRO Os comandos SQL correspondem a instruções que visam, de alguma forma, processar ou aceder aos dados existentes num SGBDR.

CARACTERÍSTICAS DA LINGUAGEM SQL A linguagem SQL implementa os conceitos definidos no modelo relacional, um modelo largamente aceite e recomendado. A utilização deste standard internacional reduz as incompatibilidades entre os sistemas e evita que se opte por arquiteturas proprietárias que implicam maiores custos de desenvolvimento e maior esforço financeiro e humano por parte dos intervenientes. Com a linguagem SQL é possível: 

 

Criar, alterar e remover todas as componentes de uma base de dados, como tabelas, campos, views, índices, etc.; Inserir, alterar e apagar dados; Interrogar a base de dados, obtendo como resposta o conjunto de registos que obedece às condições indicadas; Controlar o acesso dos utilizadores à base de dados e as operações a que cada um deles pode ter acesso; Obter a garantia da consistência e integridade dos dados.

De notar que a linguagem SQL realiza o conjunto das tarefas enunciadas através de uma linguagem simples, de fácil aprendizagem e implementação.

ORGANIZAÇÃO DO LIVRO No início de cada capítulo são apresentados, de forma sucinta, os principais conteúdos que serão desenvolvidos no capítulo. O aspeto deste conjunto de tópicos é semelhante ao que a seguir se apresenta:

Principais Conteúdos  Breve história do SQL  Características da linguagem SQL

Sempre que forem apresentados comandos, será indicada qual a sua sintaxe, utilizando uma fonte diferente para a diferenciar do resto do texto. Seguem-se alguns exemplos. A sintaxe do comando é a seguinte: DELETE FROM Tabela [WHERE Condição]

© FCA – EDITORA DE INFORMÁTICA

XV


SQL

Ou SELECT … FROM … WHERE valor [NOT] BETWEEN valor1 AND valor2

O uso de parênteses retos na sintaxe indica que a componente dentro dos mesmos é opcional. Note-se que as palavras reservadas da linguagem são sempre colocadas em maiúsculas. Tal não é um requisito, mas é uma prática largamente aceite e adotada, como forma de realçar que se trata de código SQL. Neste livro serão apresentados múltiplos exemplos de comandos escritos na linguagem SQL para cimentar a matéria apresentada. Nesta nova edição iremos apresentar exemplos de comandos e os respetivos resultados em seis arquiteturas, pois iremos adicionar duas outras (PostgreSQL e SQLite) que se tornaram importantes devido à preferência dos utilizadores por ambientes e produtos open source. São elas: 

Access (Microsoft);

SQL Server (Microsoft);

Oracle (Oracle);

MySQL (Oracle);

PostgreSQL (PostgreSQL Global Development Group);

SQLite (SQLite Consortium).

Embora se trate de um standard, existem aspetos na linguagem que variam de implementação para implementação, e outros nem sequer fazem parte de algumas implementações. Por isso, todos os exemplos neste livro são precedidos de um cabeçalho indicativo dos sistemas onde o comando é válido. Vejamos: O comando seguinte é válido e aceite por todos os sistemas.

SELECT * FROM Premio

O comando seguinte é válido em todos os sistemas analisados, exceto Access.

SELECT * FROM Mensagem WHERE Mensagem LIKE 'T%'

XVI

© FCA – EDITORA DE INFORMÁTICA


SOBRE O LIVRO O comando seguinte é válido apenas em Access.

SELECT * FROM Mensagem WHERE Mensagem LIKE 'T*'

Como pode observar nos exemplos anteriores, o tipo de letra em que são escritos os exemplos também é diferente do tipo de letra utilizado para o texto. SELECT * FROM Mensagem

Algumas partes dos exemplos são colocadas a bold para realçar o aspeto que está a ser apresentado. SELECT * FROM Mensagem WHERE Mensagem LIKE 'T%'

A utilização de bold ao longo da obra serve para destacar algum item ou componente no contexto que se está a analisar. Se o comando fornecer algum resultado, este será apresentado da seguinte forma:

SELECT Id, Nome, Telefone FROM Pessoa

Colocando os valores numa grelha: +-----+----------------+----------------+ | Id | Nome | Telefone | +-----+----------------+----------------+ | 649 | Carla Santiago | NULL | | 5 | Rute Isabel | 217 555 666 | | 37 | Isa Rodrigues | NULL | | 25 | Rute Bernardo | +44 919155666 | | 14 | Isabel Augusto | +351 962333444 | | 132 | Zulmira Santos | NULL | | 42 | António Dias | 21 7111 222 | +-----+----------------+----------------+

Em alguns exemplos ou sistemas, o valor NULL pode não ser representado visualmente: +-----+----------------+----------------+ | Id | Nome | Telefone | +-----+----------------+----------------+ | 649 | Carla Santiago | | | 5 | Rute Isabel | 217 555 666 | | 37 | Isa Rodrigues | | | 25 | Rute Bernardo | +44 919155666 | | 14 | Isabel Augusto | +351 962333444 | | 132 | Zulmira Santos | | | 42 | António Dias | 21 7111 222 | +-----+----------------+----------------+

© FCA – EDITORA DE INFORMÁTICA

XVII


SQL

Durante o desenrolar dos capítulos são realçados alguns conceitos ou notas importantes, os quais são apresentados graficamente da seguinte forma: CONCEITO Base de dados Consiste numa coleção de dados estruturados, organizados e armazenados de forma persistente por uma aplicação informática.

NOTA A cláusula DISTINCT permite eliminar repetições de linhas no resultado de um comando SELECT.

Não é de mais referir que, em informática, podem existir inúmeras soluções para o mesmo problema, pelo que as soluções aqui apresentadas não são únicas e podem, eventualmente, nem ser as melhores para cada um dos problemas.

ESTRUTURA DO LIVRO Este livro encontra-se dividido em duas partes: 

Parte I – Bases de Dados;

Parte II – SQL.

Existe ainda um apêndice, no final do livro, que mostra de que forma uma linguagem orientada por objetos (C#) se liga e manipula uma base de dados (SQL Server).

PARTE I – BASES DE DADOS A primeira parte do livro é composta por quatro capítulos com características maioritariamente descritivas, que apresentam a parte teórica associada ao desenho, bem como a compreensão do que é a arquitetura de uma base de dados.

XVIII

Capítulo 1

Bases de Dados: Visão Geral

Capítulo 2

Modelos de Bases de Dados

Capítulo 3

Desenho de Bases de Dados Relacionais

Capítulo 4

Normalização

© FCA – EDITORA DE INFORMÁTICA


SOBRE O LIVRO PARTE II – SQL Na segunda parte do livro trataremos, efetivamente, de apresentar a linguagem que dá nome ao livro. Como não podia deixar de ser, o comando SELECT – o comando de extração de dados da linguagem SQL – irá ocupar os Capítulos 5 a 10, explicando cada uma das cláusulas que compõem o comando e as possíveis variantes. Mas a apresentação da linguagem SQL irá prolongar-se até ao final do Capítulo 15, como demonstrado no seguinte quadro: Capítulo 5

Comando SELECT: Seleções Simples

Capítulo 6

Comando SELECT: Ordenação

Capítulo 7

Comando SELECT: Juntar Tabelas

Capítulo 8

Comando SELECT: Funções de Agregação

Capítulo 9

Comando SELECT: Agrupar a Informação

Capítulo 10

Comando SELECT: Subqueries

Capítulo 11

Processamento de Dados

Capítulo 12

Criação e Manutenção de Tabelas

Capítulo 13

Views e Índices

Capítulo 14

Transações

Capítulo 15

Segurança

Nesta nova edição adicionamos um capítulo extra que permitirá ao leitor ter um breve contacto com uma possível alternativa às bases de dados relacionais – as bases de dados NoSQL. Capítulo 16

NoSQL

No final do livro, o leitor tem ainda disponível um Apêndice com a totalidade do código escrito em C#, que gere uma pequena base de dados, armazenada em SQL Server, que contém o conjunto das tabelas utilizadas ao longo deste livro. Apêndice 1

SQL e C#

No site da Editora, em www.fca.pt poderá ainda fazer o download de um apêndice com o seguinte conteúdo: Apêndice 2

SQL Embutido

© FCA – EDITORA DE INFORMÁTICA

XIX


SQL

SISTEMAS UTILIZADOS Neste livro, todos os exemplos foram testados em seis Sistemas Gestores de Bases de Dados Relacionais (SGBDR). O leitor terá sempre disponível o código necessário para testar os exemplos apresentados neste livro, pois encontrará no site da Editora, em www.fca.pt, a base de dados com os dados usados nos exemplos ou o ficheiro com o conjunto de comandos SQL a executar para criar os dados em cada sistema.

ACCESS 2013 (WWW.MICROSOFT.COM)

Um dos sistemas escolhidos foi o Access da Microsoft, por ser de utilização generalizada para pequenas bases de dados em ambiente Windows e de fácil acesso aos leitores, pois praticamente toda a gente tem acesso ao Office, embora o Access não faça parte da versão mais básica deste produto.

IMAGEM DO ACCESS (MICROSOFT)

Para ter acesso à base de dados de exemplo com os dados utilizados ao longo deste livro, faça o download do ficheiro a partir do site da FCA. Abra a pasta Access e depois

XX

© FCA – EDITORA DE INFORMÁTICA


SOBRE O LIVRO faça duplo clique no ficheiro para que a base de dados seja apresentada dentro do ambiente do Access. O ambiente gráfico apresentado pelo Access é bastante interessante; no entanto, as bases de dados deixam algo a desejar, dado que é relativamente comum ficarem em estados não consistentes. No que diz respeito ao SQL, este ambiente não permite executar mais do que um comando de cada vez, o que é uma enorme limitação.

IMAGEM DE ERRO NO ACCESS QUANDO HÁ MAIS DO QUE UM COMANDO SQL A EXECUTAR

Se necessitar de executar mais do que um comando, terá que os escrever e executar, um a um, na janela Query Design. Embora seja uma base de dados interessante para iniciados, se realmente está a pensar fazer algo mais do que tabelas com alguns dados, então o melhor mesmo é optar por uma das outras bases de dados.

SQL SERVER 2014 (WWW.MICROSOFT.COM)

O SQL Server é o SGBD da Microsoft. Se é fã da Microsoft e pretende usar uma base de dados em Windows, então esta é a opção mais comum. Em termos de características e fiabilidade, o SQL Server deixa o Access a anos-luz de distância. Existem várias versões disponíveis, algumas gratuitas (as denominadas Express) que servem perfeitamente para a utilização no contexto deste livro.

© FCA – EDITORA DE INFORMÁTICA

XXI


SQL

Para ter disponível a base de dados exemplo usada ao longo deste livro, execute o seguinte conjunto de passos: 1. Faça o download do ficheiro com os scripts a partir do site da Editora (www.fca.pt). 2. Execute o SQL Server. 3. Aceda ao menu File/Open/File (selecione o ficheiro Db.SQL na pasta SQL Server). 4. Prima o botão Execute (ícone com um ponto de exclamação encarnado). 5. Na árvore da esquerda faça Refresh na lista das bases de dados. 6. Faça clique com o botão direito do rato na base TesteSQL/New Query. É neste ambiente que terá acesso a executar os exemplos numa base de dados já criada e contendo algumas tabelas com registos carregados.

IMAGEM DO SQL SERVER 2014 (MICROSOFT)

De notar que existe uma confusão generalizada sobre os termos SQL e SQL Server. Muitos leitores pensam que são uma e a mesma realidade, mas na verdade muito pouco têm em comum. Este livro é sobre a linguagem SQL, que é de larga utilização no acesso e na manipulação de bases de dados. A expressão "SQL Server" designa um dos sistemas que usa a linguagem SQL.

ORACLE 11G R2 (WWW.ORACLE.COM)

Trata-se de uma referência na indústria informática, onde aparece no topo do ranking de popularidade dos SGBD. XXII

© FCA – EDITORA DE INFORMÁTICA


SOBRE O LIVRO

IMAGEM GENÉRICA DE UMA DAS COMPONENTES DA ORACLE (SQL PLUS)

MYSQL 5.7.9 (WWW.MYSQL.COM)

O SGBD denominado MySQL faz também parte do vasto leque de produtos da Oracle. Este deverá ser o SGBD com maior adoção e maior crescimento na atualidade, em parte porque é open source, gratuito e bastante fiável.

IMAGEM DO MYSQL A EXECUTAR NUMA JANELA DE COMANDO

© FCA – EDITORA DE INFORMÁTICA

XXIII


SQL

Existe também uma interface gráfica que é possível instalar, denominada phpMyAdmin, que tem a vantagem de ser acessível em ambiente web.

IMAGEM DA INTERFACE GRÁFICA PHPMYADMIN A EXECUTAR EM AMBIENTE WEB

Para criar a base de dados exemplo usada neste teste, execute o seguinte comando já dentro do ambiente do MySQL: (Atenção: sem colocar ";" no final!) mysql> source ./db.sql

Ou mysql> source (CAMINHO)/db.sql

POSTGRESQL 9.4.5 (WWW.POSTGRESQL.ORG)

O PostgreSQL é um sistema muito poderoso com um elevado número de características e funcionalidades. De todos os SGBD aqui apresentados deverá ser o que tem menor adoção. Ainda assim, trata-se de uma peça de tecnologia a ter em conta.

XXIV

© FCA – EDITORA DE INFORMÁTICA


SOBRE O LIVRO

EXEMPLO DO RESULTADO DA EXECUÇÃO DE UM COMANDO SQL SOBRE A BASE DE DADOS POSTGRESQL

NOTA Se fizer a instalação deste sistema em Windows e verificar que os acentos não estão corretos, então remova a base de dados e depois de executar o comando CMD (Terminal) mude as definições do teclado (executando, por exemplo, o comando cmd /c chcp 1252). Só então deverá executar os comandos necessários à criação da base de dados.

SQLITE 3.9.1 (WWW.SQLITE.ORG)

Com o surgimento das aplicações móveis, tornou-se necessário utilizar fontes de dados robustas, mas de pequeno porte e sem grandes necessidades de administração, uma vez que em cada periférico móvel, em princípio, não há ambiente concorrencial entre utilizadores e os recursos de memória e disco são relativamente limitados. A Internet das coisas (televisões, automóveis, frigoríficos, sensores remotos, etc.), que está aí a despertar, também será mais um aliado desta plataforma simples, mas extremamente útil e fiável.

© FCA – EDITORA DE INFORMÁTICA

XXV


SQL

IMAGEM DE UM ECRÃ COM UMA INTERROGAÇÃO DA BASE DE DADOS SQLITE

Depois de fazer a instalação, execute o seguinte comando e verifique se os acentos estão corretos: SELECT Nome FROM Pessoa; NOTA Se fizer a instalação deste sistema em Windows e verificar que os acentos não estão corretos, consulte a Nota da página anterior.

SQL FIDDLE (WWW.SQLFIDDLE.COM) Apresentamos agora não um SGBD, mas um site muito interessante, que permite testar comandos sem ter que instalar os produtos no seu computador.

XXVI

© FCA – EDITORA DE INFORMÁTICA


SOBRE O LIVRO

À data de escrita desta nova edição do livro, estão disponíveis para testes neste site as seguintes arquiteturas:

.

© FCA – EDITORA DE INFORMÁTICA

XXVII


www.fca.pt Acompanhe a FCA de perto e conheça as Nossas Coleções

Novo!

Novo!

Nova coleção sobre os grandes temas da Ciência dos Dados: Data Science, Big Data, Analytics e Internet das Coisas. Com uma abordagem muito prática e demonstração de exemplos e projetos, estes são os livros essenciais aos profissionais do futuro!

Dedicada a todos os envolvidos com as Tecnologias de Informação, é indispensável para todos aqueles que pretendam desenvolver as suas aplicações de acordo com as tecnologias mais recentes

Coleção sobre um tema bastante importante no panorama atual, onde apresentamos livros dedicados aos utilizadores, aos profissionais e aos estudantes

A coleção da FCA para os estudantes do Ensino Superior. Aborda as principais temáticas de um curso TI. Útil também para profissionais que pretendam atualizar os seus conhecimentos

Dedicada não só aos profissionais de Sistemas de Informação, mas também a Gestores e outros profissionais de Informática, assim como aos estudantes de licenciaturas e mestrados

Destinada aos alunos dos diversos Cursos de Educação e Formação para Jovens (3.º Ciclo do EB e cursos profissionais do ES) e para Adultos, de acordo com os respetivos programas. Útil também para autoformação

Esta coleção, única em Portugal, é dedicada à Gestão de Projetos segundo as melhores e mais atuais práticas

Dedicada aos amantes do digital, coloca à disposição de amadores e profissionais conhecimentos anteriormente apenas acessíveis através de obras estrangeiras

Concebida para iniciação e prática, esta coleção permite-lhe aprender a matéria através de exercícios práticos, resolvidos passo a passo

Esta coleção mostra-lhe, com uma liguagem simples e acessível, como tirar partido das últimas versões dos programas para utilizadores e sistemas operativos mais utilizados, através de exemplos e exercícios resolvidos para praticar

Nova coleção que serve os referenciais dos cursos de educação e formação profissional da indústria metalomecânica. Com livros profusamente ilustrados, escrita simples e exercícios para autoaprendizagem

Os livros desta coleção, simples e objetivos, profusamente ilustrados com exemplos passo a passo, levam-no a dominar com rapidez e facilidade as matérias apresentadas


Turn static files into dynamic content formats.

Create a flipbook
Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.