27
QWERTY – Escola de Educação Profissional Técnico em Informática Professor: Marcio Rodrigues Ferreira. Bacharel em Informática Pós-Graduado em Banco de Dados Parte desse material foi retirado da WinkiPédia. Banco de Dados - MYSQL

QWERTY – Escola de Educação Profissional Técnico em Informática Professor: Marcio Rodrigues Ferreira. Bacharel em Informática Pós-Graduado em Banco de

Embed Size (px)

Citation preview

Page 1: QWERTY – Escola de Educação Profissional Técnico em Informática Professor: Marcio Rodrigues Ferreira. Bacharel em Informática Pós-Graduado em Banco de

QWERTY – Escola de Educação Profissional

Técnico em Informática

Professor: Marcio Rodrigues Ferreira.Bacharel em InformáticaPós-Graduado em Banco de Dados

Parte desse material foi retirado da WinkiPédia.

Banco de Dados - MYSQL

Page 2: QWERTY – Escola de Educação Profissional Técnico em Informática Professor: Marcio Rodrigues Ferreira. Bacharel em Informática Pós-Graduado em Banco de

Tudo no computador é um arquivo, o nosso banco de dados também será um arquivo.Um SGBD possui muitas ferramentas que gerencia o nosso arquivo de banco de dados.Para termos um banco de dados é necessário que façamos um modelo de dados, normalmente o modelo mais utilizado é o de entidade e relacionamento (ER).O dado se diz que é a unidade atômica da informação, um conjunto dos mesmos obtemos a informação, por exemplo:-Dado, COR É AZUL, não diz muito certo mas se eu unir a COR com a DESCRIÇÃO fica melhor, assim O SLIDE tem COR AZUL agora sim tenho uma informação.No Banco de dados um conjunto de dados eu formo uma tabela, exemplo:

-Tabela Pessoa:-Dados:*Codigo. Nome. Telefone.Endereco.Cidade. Cep. UF

Na tabela eu posso gravar o informação da pessoa e assim cada pessoa será um registro.

Introdução

Page 3: QWERTY – Escola de Educação Profissional Técnico em Informática Professor: Marcio Rodrigues Ferreira. Bacharel em Informática Pós-Graduado em Banco de

Banco de dados (ou base de dados), é um conjunto de registros dispostos em estrutura regular que possibilita a reorganização dos mesmos e produção de informação. Um banco de dados normalmente agrupa registros utilizáveis para um mesmo fim.Um banco de dados é usualmente mantido e acessado por meio de um software conhecido como Sistema Gerenciador de Banco de Dados (SGBD). Normalmente um SGBD adota um modelo de dados, de forma pura, reduzida ou estendida. Muitas vezes o termo banco de dados é usado, de forma errônea, como sinônimo de SGBD.O modelo de dados mais adotado hoje em dia é o modelo relacional, onde as estruturas têm a forma de tabelas, compostas por tuplas (linhas) e colunas.Um Sistema de Gestão de Bases de Dados, (SGBD) não é nada mais do que um conjunto de programas que permitem armazenar, modificar e extrair informação de um banco de dados. Há muitos tipos diferentes de SGBD. Desde pequenos sistemas que funcionam em computadores pessoais a sistemas enormes que estão associados a mainframes. Um Sistema de Gestão de Base de Dados implica a criação e manutenção de bases de dados, elimina a necessidade de especificação de definição de dados, age como interface entre os programas de aplicação e os ficheiros de dados físicos e separa as visões lógica e de concepção dos dados. Assim sendo, são basicamente três as componentes de um SGBD:Linguagem de definição de dados (especifica conteúdos, estrutura a base de dados e define os elementos de dados);Linguagem de manipulação de dados (para poder alterar os dados na base);Dicionário de dados (guarde definições de elementos de dados e respectivas características – descreve os dados, etc.). (Gouveia; 2004).

O que é Banco de Dados ?

Page 4: QWERTY – Escola de Educação Profissional Técnico em Informática Professor: Marcio Rodrigues Ferreira. Bacharel em Informática Pós-Graduado em Banco de

Os bancos de dados são utilizados em muitas aplicações, abrangendo praticamente todo o campo dos programas de computador. 

- Exemplos: Rede Bancária, Hospitais, Prefeituras, Indústrias, Escolas, Universidades, etc.

Utilização do Banco de Dados ?

Page 5: QWERTY – Escola de Educação Profissional Técnico em Informática Professor: Marcio Rodrigues Ferreira. Bacharel em Informática Pós-Graduado em Banco de

A apresentação dos dados geralmente é semelhante à de uma planilha eletrônica, porém os sistemas de gestão de banco de dados possuem características especiais para o armazenamento, classificação, gestão da integridade e recuperação dos dados. Com a evolução de padrões de conectividade entre as tabelas de um banco de dados e programas desenvolvidos em linguagens como Java, Delphi, Visual Basic, C++ etc, a apresentação dos dados, bem como a navegação, passou a ser definida pelo programador ou o designer de aplicações. Como hoje em dia a maioria das linguagens de programação fazem ligações a bancos de dados, a apresentação destes tem ficado cada vez mais a critério dos meios de programação, fazendo com que os bancos de dados deixem de restringir-se às pesquisas básicas, dando lugar ao compartilhamento, em tempo real, de informações, mecanismos de busca inteligentes e permissividade de acesso hierarquizada.

Apresentação dos Dados

Page 6: QWERTY – Escola de Educação Profissional Técnico em Informática Professor: Marcio Rodrigues Ferreira. Bacharel em Informática Pós-Graduado em Banco de

A Directiva CE de Bases de Dados (EU Database Directive), estabelecida pelo Parlamento Europeu em de 11 de março de 1996, fixa os termos de proteção jurídica e física do sistema de bancos de dados, em particular os direitos de propriedade sobre a base.Mesmo para os países que não a adotam explicitamente, ou não possuam normas mais específicas sobre o tema, como o Brasil, tem sido a principal referência.

Podemos dizer também, que existem:- banco de dados de uso livre, sem custo, como o Firebird, MySQL, Postgres, SQL Lite, etc;- banco de dados que precisa de licença de uso como, o SQL Server, Oracle, DBII, etc.

Direitos de Propriedade

Page 7: QWERTY – Escola de Educação Profissional Técnico em Informática Professor: Marcio Rodrigues Ferreira. Bacharel em Informática Pós-Graduado em Banco de

É um conjunto de procedimentos que é executado num banco de dados, que para o usuário é visto como uma única ação.A integridade de uma transação depende de 4 propriedades, conhecidas como ACID.Atomicidade

Todas as ações que compõem a unidade de trabalho da transação devem ser concluídas com sucesso, para que seja efetivada. Qualquer ação que constitui falha na unidade de trabalho, a transação deve ser desfeita (rollback). Quando todas as ações são efetuadas com sucesso, a transação pode ser efetivada (commit).

ConsistênciaNenhuma operação do banco de dados de uma transação pode ser parcial.O status de uma transação deve ser implementado na íntegra. Por exemplo, um pagamento de conta não pode ser efetivado se o processo que debita o valor da conta corrente do usuário não for efetivado antes, nem vice-versa.

IsolamentoCada transação funciona completamente à parte de outras estações. Todas as operações são parte de uma transação única. O principio é que nenhuma outra transação, operando no mesmo sistema, pode interferir no funcionamento da transação corrente(é um mecanismo de controle). Outras transações não podem visualizar os resultados parciais das operações de uma transação em andamento.

DurabilidadeSignifica que os resultados de uma transação são permanentes e podem ser desfeitos somente por uma transação subseqüente.Por exemplo: todos os dados e status relativos a uma transação devem ser armazenados num repositório permanente, não sendo passíveis de falha por uma falha de hardware.

Na prática, alguns SGBDs relaxam na implementação destas propriedades buscando desempenho.Controle de concorrência é um método usado para garantir que as transações sejam executadas de uma forma segura e sigam as regras ACID. Os SGBD devem ser capazes de assegurar que nenhuma ação de transações completadas com sucesso (committed transactions) seja perdida ao desfazer transações abortadas (rollback).Uma transação é uma unidade que preserva consistência. Requeremos, portanto, que qualquer escalonamento produzido ao se processar um conjunto de transações concorrentemente seja computacionalmente equivalente a um escalonamento produzindo executando essas transações serialmente em alguma ordem. Diz-se que um sistema que garante esta propriedade assegura a seriabilidade.

Transação

Page 8: QWERTY – Escola de Educação Profissional Técnico em Informática Professor: Marcio Rodrigues Ferreira. Bacharel em Informática Pós-Graduado em Banco de

Como Funciona

AplicaçãoUsuário

DadosSGBD

Page 9: QWERTY – Escola de Educação Profissional Técnico em Informática Professor: Marcio Rodrigues Ferreira. Bacharel em Informática Pós-Graduado em Banco de

Diferentes níveis de abstração

Aplicação

Usuário

Dados

SGBD

Camada Externa

Camada Lógica

Camada Física

Page 10: QWERTY – Escola de Educação Profissional Técnico em Informática Professor: Marcio Rodrigues Ferreira. Bacharel em Informática Pós-Graduado em Banco de

O objetivo da normalização de um banco de dados é evitar os problemas que podem provocar falhas no projeto do banco de dados, bem como eliminar a mistura de assuntos e as correspondentes redundâncias dos dados desnecessárias. A abreviação usada, (NF), vem do inglês, "Normal Form".

O processo de normalização aplica uma série de regras sobre as tabelas (também chamadas de relações) de um banco de dados, para verificar se estão corretamente projetadas.

Formas Normais

Page 11: QWERTY – Escola de Educação Profissional Técnico em Informática Professor: Marcio Rodrigues Ferreira. Bacharel em Informática Pós-Graduado em Banco de

Um esquema de relação R está na 1FN se todos os seus atributos forem atômicos (simples) e monovalorados, ou seja, não são permitidos atributos multivalorados, atributos compostos ou atributos multivalorados compostos.

Exemplo:FUNCIONÁRIOS = {CODFUNC + NOME + CARGO + {PROJETO + DATAINI + DATA FIM}}

Para colocar na 1FN:FUNCIONÁRIOS = {CODFUNC + NOME + CARGO}

FUNC_PROJ = {CODFUNC + PROJETO + DATAINI + DATA FIM}

OBS: A chave primária de FUNCIONÁRIOS vai ser a chave estrangeira de FUNC_PROJ.

Primeira Forma Normal

Page 12: QWERTY – Escola de Educação Profissional Técnico em Informática Professor: Marcio Rodrigues Ferreira. Bacharel em Informática Pós-Graduado em Banco de

Para estar na 2NF uma tabela deve (1) estar na 1NF e (2) todos os seus atributos que não façam parte de alguma chave candidata devem ser determinados unicamente por qualquer chave candidata da tabela.Se todas as chaves candidatas de uma tabela contiverem somente 1 atributo, esta já se encontra na 2NF.

Em outras palavras, se algum campo depender somente de parte de uma chave candidata composta (e não da chave composta como um todo), então este campo deve ser extraído para outra tabela. A tabela abaixo não está na 2NF:

ALUNOS_CURSOS = {ID_ALUNO + ID_CURSO + NOTA + DESCRICAO_CURSO}

O problema consiste no fato de que o campo DESCRICAO_CURSO depende somente do campo ID_CURSO (apesar da chave ser composta), que é parte da chave primária da tabela. Para que esta tabela esteja na 2NF, o campo DESCRICAO_CURSO deve ser extraído para outra tabela:

ALUNOS_CURSOS = {ID_ALUNO + ID_CURSO + NOTA}

CURSOS = {ID_CURSO + DESCRICAO_CURSO}

Segunda Forma Normal

Page 13: QWERTY – Escola de Educação Profissional Técnico em Informática Professor: Marcio Rodrigues Ferreira. Bacharel em Informática Pós-Graduado em Banco de

A terceira forma normal (3NF) exige que a tabela esteja em 2NF e que todos os atributos que não são chave sejam mutuamente independentes, isto é, que não existam funções que definam um ao outro. Portanto, sempre a chave por inteiro deve definir toda a tabela.

Isto exige que atributos que não dependem diretamente da chave sejam separados em uma tabela distinta.Em outras palavras, caso exista um ou mais atributos que dependam de um atributo não-chave, estes atributos deverão ser extraídos para outra tabela.

A tabela abaixo não está na 3NF:FUNCIONARIOS = {ID + NOME + ID_CARGO + DESCRICAO_CARGO}

O problema é que o campo DESCRICAO_CARGO depende exclusivamente do campo ID_CARGO, que não faz parte da chave da tabela.

Para deixar esta tabela na 3NF, basta extrair o campo para outra tabela:

FUNCIONARIOS = {ID + NOME + ID_CARGO}

CARGOS = {ID_CARGO + DESCRICAO_CARGO}

Terceira Forma Normal

Page 14: QWERTY – Escola de Educação Profissional Técnico em Informática Professor: Marcio Rodrigues Ferreira. Bacharel em Informática Pós-Graduado em Banco de

Definição que engloba as outras formas normais, e define que uma tabela está em BCNF se, e somente se, todo determinante funcional for em relação a uma chave candidata.

Na prática, uma tabela está em BCNF se estiver em 3NF e não existir dependência funcional dentro da chave primária.

Ou seja, se todos os atributos são funcionalmente dependentes da chave, de toda a chave e nada mais do que a chave. Ou, em outras palavras, todos os determinantes são chaves candidatas.

Um modelo que está em BCNF está pronto para ser implementado numa arquitetura de banco de dados relacional.

Forma normal Boyce/Codd (BCNF)

Page 15: QWERTY – Escola de Educação Profissional Técnico em Informática Professor: Marcio Rodrigues Ferreira. Bacharel em Informática Pós-Graduado em Banco de

•Aluno

Normalizar os dados abaixo• Nome• Endereco• Telefone• Cidade• Cep• Uf• Tipo Sanguineo• Rh• Turma• Disciplina

• Pai• Mae• Responsavel• Professor• Regente• Portador Doença• Sexo• Data Nascimento• Estado Civil• Nota

Page 17: QWERTY – Escola de Educação Profissional Técnico em Informática Professor: Marcio Rodrigues Ferreira. Bacharel em Informática Pós-Graduado em Banco de

Acessando o phpMyAdmin

Page 18: QWERTY – Escola de Educação Profissional Técnico em Informática Professor: Marcio Rodrigues Ferreira. Bacharel em Informática Pós-Graduado em Banco de

Criando Tabela

Page 19: QWERTY – Escola de Educação Profissional Técnico em Informática Professor: Marcio Rodrigues Ferreira. Bacharel em Informática Pós-Graduado em Banco de

Tipo de Campos

Os tipos de dados que pode ter um campo, podem-se agrupar em três grandes grupos:

•Tipos numéricos

•Tipos de Data

•Tipos de Cadeia

Page 20: QWERTY – Escola de Educação Profissional Técnico em Informática Professor: Marcio Rodrigues Ferreira. Bacharel em Informática Pós-Graduado em Banco de

Tipos numéricosExistem tipos de dados numéricos, que se podem dividir em dois grandes grupos, os que estão em vírgula flutuante (com decimais) e os que não.

TinyInt: é um número inteiro com ou sem signo. Com signo a margem de valores válidos é desde -128 até 127. Sem signo, a margem de valores é de 0 até 255

Bit ou Bool: um número inteiro que pode ser 0 ou 1.

SmallInt: número inteiro com ou sem signo. Com signo a margem de valores válidos é desde -32768 até 32767. Sem signo, a margem de valores é de 0 até 65535.

MediumInt: número inteiro com ou sem signo. Com signo a margem de valores válidos é desde -8.388.608 até 8.388.607. Sem signo, a margem de valores é de 0 até 16777215.

Integer, Int: número inteiro com ou sem signo. Com signo a margem de valores válidos é desde -2147483648 até 2147483647. Sem signo, a margem de valores é de 0 até 429.496.295

Page 21: QWERTY – Escola de Educação Profissional Técnico em Informática Professor: Marcio Rodrigues Ferreira. Bacharel em Informática Pós-Graduado em Banco de

Tipos numéricosBigInt: número inteiro com ou sem signo. Com signo a margem de valores válidos é desde -9.223.372.036.854.775.808 até 9.223.372.036.854.775.807. Sem signo, a margem de valores é de 0 até 18.446.744.073.709.551.615.

Float: número pequeno em vírgula flutuante de precisão simples. Os valores válidos vão desde -3.402823466E+38 até -1.175494351E-38,0 eté desde 175494351E-38 até 3.402823466E+38.

xReal, Double: número em vírgula flutuante de dupla precisão. Os valores permitidos vão desde -1.7976931348623157E+308 até -2.2250738585072014E-308, 0 e desde 2.2250738585072014E-308 até 1.7976931348623157E+308

Decimal, Dec, Numeric:  Número em vírgula flutuante desempacotado. O número armazena-se como uma cadeia.

Page 22: QWERTY – Escola de Educação Profissional Técnico em Informática Professor: Marcio Rodrigues Ferreira. Bacharel em Informática Pós-Graduado em Banco de

Tipos dataNa hora de armazenar datas, há que ter em conta que MySQL não verifica de uma maneira estricta se uma data é válida ou não. Simplesmente comprova que o mês está compreendido entre 0 e 12 e que o dia está compreendido entre 0 e 31.

Date: tipo data, armazena uma data. A margem de valores vai desde o 1 de Janeiro de 1001 ao 31 de dezembro de 9999. O formato de armazenamento é de ano-mes-dia.

DateTime: Combinação de data e hora. A margem de valores vai desde o 1 ed Janeiro de 1001 às 0 horas, 0 minutos e 0 segundos ao 31 de Dezembro de 9999 às 23 horas, 59 minutos e 59 segundos. O formato de armazenamento é de ano-mes-dia horas:minutos:segundos

TimeStamp: Combinação de data e hora. A margem vai desde o 1 de Janeiro de 1970 ao ano 2037. O formato de armazenamento depende do tamanho do campo:

Time: armazena uma hora. A margem de horas vai desde -838 horas, 59 minutos e 59 segundos. O formato de armazenamento é 'HH:MM:SS'.

Year: armazena um ano. A margem de valores permitidos vai desde o ano 1901 ao ano 2155. O campo pode ter tamanho dois ou tamanho 4 dependendo de se queremos armazenar o ano com dois ou quatro algarismos.

Page 23: QWERTY – Escola de Educação Profissional Técnico em Informática Professor: Marcio Rodrigues Ferreira. Bacharel em Informática Pós-Graduado em Banco de

Tipos de cadeiaChar(n):  armazena uma cadeia de longitude fixa. A cadeia poderá conter desde 0 até 255 caracteres.

VarChar(n): armazena uma cadeia de longitude variável. A cadeia poderá conter desde 0 até 255 caracteres. Dentro dos tipos de cadeia pode-se distinguir dois subtipos, os tipo Test e os tipo Blob (Binary Large Object) A diferença entre um tipo e outro é o tratamento que recebem na hora de ordená-los e compará-los. No tipo test ordena-se sem ter importância as maiúsculas e as minúsculas e no tipo blob ordena-se tendo em conta as maiúsculas e minúsculas.

Os tipos blob utilizam-se para armazenar dados binários como podem ser ficheiros.

TinyText e TinyBlob: Coluna com uma longitude máxima de 255 caracteres.

Blob e Text: um texto com um máximo de 65535 caracteres.

MediumBlob e MediumText: um texto com um máximo de 16.777.215 caracteres.

LongBlob e LongText: um texto com um máximo de caracteres 4.294.967.295. Há que ter em conta que devido aos protocolos de comunicação os pacotes podem ter um máximo de 16 Mb.

Enum: campo que pode ter um único valor de uma lista que se especifica. O tipo Enum aceita até 65535 valores diferentes.

Set: um campo que pode conter nenhum, um ou vários valores de uma lista. A lista pode ter um máximo de 64 valores.

Page 24: QWERTY – Escola de Educação Profissional Técnico em Informática Professor: Marcio Rodrigues Ferreira. Bacharel em Informática Pós-Graduado em Banco de

Palavras-Chave em SQL

. DML - Linguagem de Manipulação de Dados

. DDL - Linguagem de Definição de Dados

. DCL - Linguagem de Controle de Dados

. DTL - Linguagem de Transação de Dados

. DQL - Linguagem de Consulta de Dados . Cláusulas . Operadores Lógicos . Operadores Relacionais . Funções de Agregação

Page 25: QWERTY – Escola de Educação Profissional Técnico em Informática Professor: Marcio Rodrigues Ferreira. Bacharel em Informática Pós-Graduado em Banco de

DML - Linguagem de Manipulação de Dados

. SELECT: usado para selecionar um conjunto de registros de uma tabela existente

. SELECT Nome,Sobrenome FROM Estudante WHERE Sexo=1;

. INSERT: usado para adicionar um novo registro a uma tabela existente

. INSERT INTO `Eventos` VALUES (6, 'XII Ciência Jovem de Pernambuco', '2008-10-29 00:00:00', '2008-10-31 00:00:00', 'Olinda - PE', 'Sec. de Ciência, Tec. e Meio Ambiente do Governo do Estado', 'http://www.espacociencia.pe.gov.br', 4, 1);

Page 26: QWERTY – Escola de Educação Profissional Técnico em Informática Professor: Marcio Rodrigues Ferreira. Bacharel em Informática Pós-Graduado em Banco de

DML - Linguagem de Manipulação de Dados

. UPDATE: usado para alterar um registro existente na tabela

. UPDATE Estudante SET Nome='Nathalia' WHERE UsuarioID=15

. DELETE: usado para apagar um registro existente na tabela

. DELETE FROM Estudante WHERE UsuarioID=15;

Page 27: QWERTY – Escola de Educação Profissional Técnico em Informática Professor: Marcio Rodrigues Ferreira. Bacharel em Informática Pós-Graduado em Banco de

DDL - Linguagem de Definição de Dados

. CREATE: cria um objeto (uma Tabela, por exemplo) dentro da base de dados

. CREATE TABLE User (`UserID` int(11) NOT NULL default '0', `Name` varchar(255) NOT NULL default '', `LastName` varchar(255) NOT NULL default '', `Sex` char(1) default NULL, `CPF` varchar(12) NOT NULL default '', PRIMARY KEY (`UserID`));

. DROP: apaga um objeto do banco de dados

. DROP TABLE User;

. ALTER: alguns SGBDs usam esse comando, que permite ao usuário alterar um objeto, como,adicionando uma coluna a uma tabela existente.