SlideShare uma empresa Scribd logo
1 de 48
Baixar para ler offline
Introdução ao MySQL



Conselho Regional de Estatística da 3a Região


        Anderson Carlos D. Sanches

            www.software.pro.br
Agenda



● 1. Definições de SGBD e terminologia;
● 2. Modelagem de dados e cardinalidade;

● 3. Formas normais;

● 4. DCL e DML;

● 5. Prática: criação de um banco de dados;

● 6. Consultas em um banco de dados exemplo.
Vocabulário

  Banco de Dados
       SGBD
       Tabela
      Registro
       Tupla
       Índice
       Chave
  Chave candidata
 Chave primária (PK)
Chave estrangeira (FK)
Vocabulário

Banco de Dados
●   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
Vocabulário

Sistema Gerenciador de Banco de Dados
●   Relacional
●   Orientado a Objetos


Exemplos:
●   MySQL, Postgres, Oracle, DB2, SQL Server
    etc
Vocabulário

SQL
●   Structured Query Language
       –   Select
       –   Insert
       –   Update
       –   Delete
       –   Create table
Vocabulário

●   Entidade
●   Atributo
●   Tabela
●   Coluna
●   Registro
●   Tupla
●   null
Vocabulário

●   Chave
●   Chave candidata
●   Chave primária (PK)
●   Chave estrangeira (FK)
●   Índice
Vocabulário

●   Visão
●   Função ou Stored Procedure
●   Gatilho
●   Permissões
Transação
●   Conjunto de operações executado de forma
    atômica
●   Atomicidade
●   Consistência
●   Isolamento
●   Durabilidade
●   BEGIN TRANSACTION
●   COMMIT
●   ROLLBACK
Modelagem



Modelo Conceitual

 Modelo Lógico

  Modelo Físico
Relacionamentos


         Uma pessoa possui um telefone




pessoa               possui              telefone
Cardinalidade

●   Um para um
       –   1–1
●   Um para N
       –   1–N
●   N para N
       –   N-N
Normalização

Aumentar:
✔   Facilidade de manipulação dos dados
Diminuir:
✗   Redundância
✗   Chance dos dados se tornarem inconsistentes


    Consideramos normalizada uma tabela se ela
    aderir a 3a Forma Normal
Forma Normal “Zero”

●   Os nomes das tabelas devem representar
    suas entidades
●   Geralmente no plural
Primeira Forma Normal

●   Todos os valores das colunas devem ser
    atômicos
Como obter a 1FN

●   Devemos eliminar grupos repetidos pondo-os
    cada um em uma tabela separada,
    conectando-os com uma chave primária ou
    estrangeira
a
             Exemplo fora da 1 FN

Cliente
codigo nome     telefone            endereco
1      Anderson 1234-5678 / 9876-   R. Um, 10 – Mooca
                5432                – São Paulo/SP
2      Renata   2222-7788           R. Dois, 20 – Tatuapé –
                                    São Paulo/SP
3     Lili       7777-9999 /        R. Três, 8 apto. 161 –
                 3333-1234           Leblon – Rio de Janeiro/RJ
Exemplo Primeira Forma Normal

Cliente
id       nome
     1   Anderson
     2   Renata
     3   Lili

Telefone
id       id_cliente   numero
     1        1       1234-5678
     2        1       9876-5432
     3        2       2222-7788
     4        3       7777-9999
     5        3       3333-1234
Exemplo Primeira Forma Normal

Endereco
id id_cliente endereco numero complemento bairro cidade        uf
 1     1      R. Um        10             Mooca São Paulo      SP
 2     2      R. Dois      20             Tatuapé São Paulo    SP
 3     3      R. Três       8 Apto. 161   Leblon Rio de JaneiroRJ
Segunda Forma Normal

●   Estar na primeira forma normal
●   Todos os atributos não chave devem ser
    totalmente dependentes da chave primária
    (dependente de toda a chave e não apenas
    de parte dela)
Como obter a 2FN

●   Identificar os atributos que não são
    funcionalmente dependentes de toda a chave
    primária
●   Remover da entidade todos os atributos
    identificados e criar uma nova entidade com
    eles
a
           Exemplo fora da 2 FN

Pedido
numero cod_produto produto               quant vl_unit   subtotal
 1001       1      Enxugador de gelo       1         100      100
 1002       1      Enxugador de gelo       3         100      300
 1003       2      Desentortador de banana 2         150      300
Segunda Forma Normal

Pedido
numero         cod_produto            quant vl_unit subtotal
    1001                 1              1       100      100
    1002                 1              3       100      300
    1003                 2              2       150      300

Produto
codigo_produto nome                    preco
       1       Enxugador de gelo          100
       2       Desentortador de banana    150
Terceira Forma Normal

●   Estar na segunda forma normal
●   Nenhuma coluna não-chave depender de
    outra coluna não-chave
Como obter a 3FN

●   Identificar todos os atributos que são
    funcionalmente dependentes de outros
    atributos não chave
●   Removê-los
a
          Exemplo fora da 3 FN

Pedido
numero codigo_produto quant valor_unitario subtotal
 1001         1         1              100      100
 1002         1         3              100      300
 1003         2         2              150      300
Terceira Forma Normal

Pedido
numero codigo_produto quant valor_unitario
 1001         1         1              100
 1002         1         3              100
 1003         2         2              150
Outras Formas Normais

●   Forma Normal de Boyce-Codd
●   Quarta Forma Normal
●   Quinta Forma Normal
●   Forma Normal Chave-Domínio
Instalando o MySQL

●   No Linux:
●   apt-get install mysql-server
Instalando o MySQL

●   No Windows:
●   1. Baixe o arquivo noinstall para Windows. No
    momento em que escrevo esse tutorial o mais
    recente é: mysql-noinstall-5.1.35-win32.zip
●   2. Descompacte esse arquivo para uma pasta
    c:mysql
●   3. Abra um prompt de comando e vá até o
    diretório bin, digite: cd mysqlbin
Instalando o MySQL

●   4. Inicie o MySQL. Ainda no prompt de
    comando digite: mysqld --console
●   5. Pronto, o MySQL já está funcionando. Você
    já pode se conectar a ele com a ferramenta
    gráfica MySQL Query Browser. Nome de
    usuário root e na senha deixar vazio.
DDL


   Data Definition Language

 CREATE | DROP DATABASE
CREATE | DROP | ALTER TABLE
CREATE | DROP | ALTER VIEW
   CREATE | DROP INDEX
Tipos das Colunas
Tipo        Tamanho decimais Unsigned zerofil   unicode values
TINYINT        x                  x       x
SMALLINT       x                  x       x
MEDIUMINT      x                  x       x
INT            x                  x       x
INTEGER        x                  x       x
BIGINT         x                  x       x
REAL           x        x         x       x
DOUBLE         x        x         x       x
FLOAT          x        x         x       x
DECIMAL        x        x         x       x
NUMERIC        x        x         x       x
CHAR           x                                   x
VARCHAR        x                                   x
Tipos das Colunas
Tipo         Tamanho decimais Unsigned zerofil   unicode values
DATE
TIME
TIMESTAMP
DATETIME
TINYBLOB
BLOB
MEDIUMBLOB
LONGBLOB
TINYTEXT
TEXT
MEDIUMTEXT
LONGTEXT
ENUM                                                       x
Set                                                        x
Create table

       CREATE TABLE nome_tabela (
 Nome_campo tipo [UNSIGNED] [NOT NULL]
             [DEFAULT valor],
              nome_campo...
        PRIMARY KEY (campo1, ...),
     KEY idx_fk_campo (`nome_campo`),
CONSTRAINT fk_chave_estrangeira FOREIGN
 KEY (campo) REFERENCES tabela (campo)
   [ON DELETE RESTRICT] [ON UPDATE
               CASCADE]
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
Create view




CREATE VIEW v AS SELECT qty, price,
    qty*price AS value FROM t;
Create index




CREATE [UNIQUE] INDEX part_of_name ON
  customer (name(10)[DESC], last_name);
DML



Data Manipulation Language
         SELECT
         INSERT
        UPDATE
         DELETE
Select
         SELECT [DISTINCT]
      select_expr [, select_expr ...]
        [FROM table_references
       [WHERE where_condition]
[GROUP BY {col_name | expr | position}
    [ASC | DESC], ... [WITH ROLLUP]]
       [HAVING where_condition]
[ORDER BY {col_name | expr | position}
             [ASC | DESC], ...]
 [LIMIT {[offset,] row_count | row_count
           OFFSET offset}]
Obtendo dados combinados



Cliente           Telefone
cpf    nome       telefone_id cpf     numero
   1   Anderson         1         2    87654321
   2   Renata           2         1    80000000
   3   Lili             3         1    12345678
Left [outer] Join

SELECT c.cpf,nome, numero FROM Cliente c
left join Telefone t on c.cpf=t.cpf

      cpf   nome         numero
        1   Anderson       80000000
        1   Anderson       12345678
        2   Renata         87654321
        3   Lili         NULL
Right [outer] Join

SELECT c.cpf,nome, numero FROM Cliente c
Right join Telefone t on c.cpf=t.cpf

      cpf    nome        numero
        2    Renata        87654321
        1    Anderson      80000000
        1    Anderson      12345678
Natural Join

SELECT c.cpf,nome, numero FROM Cliente c
Natural join Telefone t

      cpf   nome         numero
        2   Renata         87654321
        1   Anderson       80000000
        1   Anderson       12345678
Insert


INSERT [INTO] tbl_name [(col_name,...)]
 {VALUES | VALUE} ({expr | DEFAULT},...)

     INSERT [INTO] tbl_name
  SET col_name={expr | DEFAULT}, ...

  INSERT INTO tbl_name (col1,col2)
       VALUES(15,col1*2);
Update


          UPDATE table
 SET col_name1={expr1|DEFAULT} [,
 col_name2={expr2|DEFAULT}] ...
     [WHERE where_condition]

UPDATE persondata SET age=age+1;
Delete




DELETE FROM table WHERE condição
   [ORDER BY campo] [LIMIT n];
Obrigado!




Anderson Carlos D. Sanches
   www.software.pro.br
   andycds@gmail.com

Mais conteúdo relacionado

Mais procurados

Banco de Dados I - Aula 05 - Banco de Dados Relacional (Modelo Conceitual)
Banco de Dados I - Aula 05 - Banco de Dados Relacional (Modelo Conceitual)Banco de Dados I - Aula 05 - Banco de Dados Relacional (Modelo Conceitual)
Banco de Dados I - Aula 05 - Banco de Dados Relacional (Modelo Conceitual)Leinylson Fontinele
 
Banco de Dados I - Aula 03 - Conceitos de Sistemas de Banco de Dados
Banco de Dados I - Aula 03 - Conceitos de Sistemas de Banco de DadosBanco de Dados I - Aula 03 - Conceitos de Sistemas de Banco de Dados
Banco de Dados I - Aula 03 - Conceitos de Sistemas de Banco de DadosLeinylson Fontinele
 
Banco de Dados I - Aula 09 - Normalização de Dados
Banco de Dados I - Aula 09 - Normalização de DadosBanco de Dados I - Aula 09 - Normalização de Dados
Banco de Dados I - Aula 09 - Normalização de DadosLeinylson Fontinele
 
Bancos de Dados para Bibliotecarios
Bancos de Dados para BibliotecariosBancos de Dados para Bibliotecarios
Bancos de Dados para BibliotecariosLuciano Ramalho
 
Aula 1 - Introdução a POO
Aula 1 -  Introdução a POOAula 1 -  Introdução a POO
Aula 1 - Introdução a POODaniel Brandão
 
Introdução sobre desenvolvimento web
Introdução sobre desenvolvimento webIntrodução sobre desenvolvimento web
Introdução sobre desenvolvimento webRodrigo Rodrigues
 
Estrutura de Dados - Aula 02 - Estrutura de Dados e TAD
Estrutura de Dados - Aula 02 - Estrutura de Dados e TADEstrutura de Dados - Aula 02 - Estrutura de Dados e TAD
Estrutura de Dados - Aula 02 - Estrutura de Dados e TADLeinylson Fontinele
 
Treinamento de SQL Básico
Treinamento de SQL BásicoTreinamento de SQL Básico
Treinamento de SQL BásicoIgor Alves
 
Modelo Relacional, Rede e Hierárquico
Modelo Relacional, Rede e HierárquicoModelo Relacional, Rede e Hierárquico
Modelo Relacional, Rede e Hierárquicorosimaracorsino
 
Aula 1 - Introdução ao Conteúdo de Banco de Dados
Aula 1 - Introdução ao Conteúdo de Banco de DadosAula 1 - Introdução ao Conteúdo de Banco de Dados
Aula 1 - Introdução ao Conteúdo de Banco de DadosHenrique Nunweiler
 
Aula 4 - Teste de mesa
Aula 4 - Teste de mesaAula 4 - Teste de mesa
Aula 4 - Teste de mesaPacc UAB
 
Banco de dados - Aula 1 SQL
Banco de dados - Aula 1 SQLBanco de dados - Aula 1 SQL
Banco de dados - Aula 1 SQLDaniel Brandão
 
Banco de Dados I Aula 06 - Generalização e Especialização
Banco de Dados I Aula 06 - Generalização e EspecializaçãoBanco de Dados I Aula 06 - Generalização e Especialização
Banco de Dados I Aula 06 - Generalização e EspecializaçãoLeinylson Fontinele
 
Programação orientada a objetos
Programação orientada a objetosProgramação orientada a objetos
Programação orientada a objetosCleyton Ferrari
 

Mais procurados (20)

Banco de Dados I - Aula 05 - Banco de Dados Relacional (Modelo Conceitual)
Banco de Dados I - Aula 05 - Banco de Dados Relacional (Modelo Conceitual)Banco de Dados I - Aula 05 - Banco de Dados Relacional (Modelo Conceitual)
Banco de Dados I - Aula 05 - Banco de Dados Relacional (Modelo Conceitual)
 
Banco de Dados I - Aula 03 - Conceitos de Sistemas de Banco de Dados
Banco de Dados I - Aula 03 - Conceitos de Sistemas de Banco de DadosBanco de Dados I - Aula 03 - Conceitos de Sistemas de Banco de Dados
Banco de Dados I - Aula 03 - Conceitos de Sistemas de Banco de Dados
 
Banco de dados
Banco de dadosBanco de dados
Banco de dados
 
Banco de Dados I - Aula 09 - Normalização de Dados
Banco de Dados I - Aula 09 - Normalização de DadosBanco de Dados I - Aula 09 - Normalização de Dados
Banco de Dados I - Aula 09 - Normalização de Dados
 
Bancos de Dados para Bibliotecarios
Bancos de Dados para BibliotecariosBancos de Dados para Bibliotecarios
Bancos de Dados para Bibliotecarios
 
Aula 2 banco de dados
Aula 2   banco de dadosAula 2   banco de dados
Aula 2 banco de dados
 
Aula 1 - Introdução a POO
Aula 1 -  Introdução a POOAula 1 -  Introdução a POO
Aula 1 - Introdução a POO
 
Introdução sobre desenvolvimento web
Introdução sobre desenvolvimento webIntrodução sobre desenvolvimento web
Introdução sobre desenvolvimento web
 
Modelagem de dados
Modelagem de dados Modelagem de dados
Modelagem de dados
 
Estrutura de Dados - Aula 02 - Estrutura de Dados e TAD
Estrutura de Dados - Aula 02 - Estrutura de Dados e TADEstrutura de Dados - Aula 02 - Estrutura de Dados e TAD
Estrutura de Dados - Aula 02 - Estrutura de Dados e TAD
 
Treinamento de SQL Básico
Treinamento de SQL BásicoTreinamento de SQL Básico
Treinamento de SQL Básico
 
Modelo Relacional, Rede e Hierárquico
Modelo Relacional, Rede e HierárquicoModelo Relacional, Rede e Hierárquico
Modelo Relacional, Rede e Hierárquico
 
Introdução a Bancos de Dados
Introdução a Bancos de DadosIntrodução a Bancos de Dados
Introdução a Bancos de Dados
 
Aula 1 - Introdução ao Conteúdo de Banco de Dados
Aula 1 - Introdução ao Conteúdo de Banco de DadosAula 1 - Introdução ao Conteúdo de Banco de Dados
Aula 1 - Introdução ao Conteúdo de Banco de Dados
 
Aula 4 - Teste de mesa
Aula 4 - Teste de mesaAula 4 - Teste de mesa
Aula 4 - Teste de mesa
 
Banco de Dados
Banco de DadosBanco de Dados
Banco de Dados
 
Banco de dados - Aula 1 SQL
Banco de dados - Aula 1 SQLBanco de dados - Aula 1 SQL
Banco de dados - Aula 1 SQL
 
Banco de Dados I Aula 06 - Generalização e Especialização
Banco de Dados I Aula 06 - Generalização e EspecializaçãoBanco de Dados I Aula 06 - Generalização e Especialização
Banco de Dados I Aula 06 - Generalização e Especialização
 
Modelagem de dados
Modelagem de dadosModelagem de dados
Modelagem de dados
 
Programação orientada a objetos
Programação orientada a objetosProgramação orientada a objetos
Programação orientada a objetos
 

Destaque

Recursos e Benefícios do MySQL
Recursos e Benefícios do MySQLRecursos e Benefícios do MySQL
Recursos e Benefícios do MySQLMySQL Brasil
 
MySQL para Desenvolvedores de Produto
MySQL para Desenvolvedores de ProdutoMySQL para Desenvolvedores de Produto
MySQL para Desenvolvedores de ProdutoMySQL Brasil
 
Banco de dados
Banco de dadosBanco de dados
Banco de dadosJohn Leno
 
A1 - Sql Injection na Prática Parte 01
A1 - Sql Injection na Prática Parte 01A1 - Sql Injection na Prática Parte 01
A1 - Sql Injection na Prática Parte 01Reinaldo Junior
 
The Power of MySQL Explain
The Power of MySQL ExplainThe Power of MySQL Explain
The Power of MySQL ExplainMYXPLAIN
 
SQL Server 2012
SQL Server 2012SQL Server 2012
SQL Server 2012Hcode
 
Como migrar una base de datos de mysql a power designer
Como migrar una base de datos de mysql a power designerComo migrar una base de datos de mysql a power designer
Como migrar una base de datos de mysql a power designerAlex Bernal
 
Banco de dados oracle
Banco de dados oracleBanco de dados oracle
Banco de dados oracleEduardo Lopes
 
Tipos de dados do MySQL 5
Tipos de dados do MySQL 5Tipos de dados do MySQL 5
Tipos de dados do MySQL 5Daniel Brandão
 
Tutorial - Criando Banco com MySQL Workbench
Tutorial - Criando Banco com MySQL WorkbenchTutorial - Criando Banco com MySQL Workbench
Tutorial - Criando Banco com MySQL WorkbenchDaniel Brandão
 
Apostila introdução à linguagem sql
Apostila introdução à linguagem sqlApostila introdução à linguagem sql
Apostila introdução à linguagem sqlReuel Lopes
 
PHP e MySQL para iniciantes
PHP e MySQL para iniciantesPHP e MySQL para iniciantes
PHP e MySQL para iniciantesEduardo Mendes
 

Destaque (20)

MySql slides (ppt)
MySql slides (ppt)MySql slides (ppt)
MySql slides (ppt)
 
Recursos e Benefícios do MySQL
Recursos e Benefícios do MySQLRecursos e Benefícios do MySQL
Recursos e Benefícios do MySQL
 
MySQL para Desenvolvedores de Produto
MySQL para Desenvolvedores de ProdutoMySQL para Desenvolvedores de Produto
MySQL para Desenvolvedores de Produto
 
MYSQL.ppt
MYSQL.pptMYSQL.ppt
MYSQL.ppt
 
PostgreSQL
PostgreSQLPostgreSQL
PostgreSQL
 
Banco de dados
Banco de dadosBanco de dados
Banco de dados
 
Introdução ao BD Postgre
Introdução ao BD PostgreIntrodução ao BD Postgre
Introdução ao BD Postgre
 
MySQL
MySQLMySQL
MySQL
 
A1 - Sql Injection na Prática Parte 01
A1 - Sql Injection na Prática Parte 01A1 - Sql Injection na Prática Parte 01
A1 - Sql Injection na Prática Parte 01
 
Curso MySQL #01 - Surgimento dos Bancos de Dados
Curso MySQL #01 - Surgimento dos Bancos de DadosCurso MySQL #01 - Surgimento dos Bancos de Dados
Curso MySQL #01 - Surgimento dos Bancos de Dados
 
The Power of MySQL Explain
The Power of MySQL ExplainThe Power of MySQL Explain
The Power of MySQL Explain
 
SQL Server 2012
SQL Server 2012SQL Server 2012
SQL Server 2012
 
Como migrar una base de datos de mysql a power designer
Como migrar una base de datos de mysql a power designerComo migrar una base de datos de mysql a power designer
Como migrar una base de datos de mysql a power designer
 
Banco de dados oracle
Banco de dados oracleBanco de dados oracle
Banco de dados oracle
 
Tipos de dados do MySQL 5
Tipos de dados do MySQL 5Tipos de dados do MySQL 5
Tipos de dados do MySQL 5
 
Tutorial - Criando Banco com MySQL Workbench
Tutorial - Criando Banco com MySQL WorkbenchTutorial - Criando Banco com MySQL Workbench
Tutorial - Criando Banco com MySQL Workbench
 
Apostila introdução à linguagem sql
Apostila introdução à linguagem sqlApostila introdução à linguagem sql
Apostila introdução à linguagem sql
 
PHP e MySQL para iniciantes
PHP e MySQL para iniciantesPHP e MySQL para iniciantes
PHP e MySQL para iniciantes
 
Modelos de Banco de dados e SGBDS
Modelos de Banco de dados e SGBDSModelos de Banco de dados e SGBDS
Modelos de Banco de dados e SGBDS
 
Cabeçalho de avaliação do 1º bimestre 2012
Cabeçalho de avaliação do 1º bimestre 2012Cabeçalho de avaliação do 1º bimestre 2012
Cabeçalho de avaliação do 1º bimestre 2012
 

Semelhante a Introdução ao MySQL

10 Boas Práticas de Programação
10 Boas Práticas de Programação10 Boas Práticas de Programação
10 Boas Práticas de ProgramaçãoCarlos Schults
 
postgres servlab
postgres servlabpostgres servlab
postgres servlabbjsjd
 
Atividade pratica supervisionada construção de algoritimo
Atividade pratica supervisionada  construção de algoritimoAtividade pratica supervisionada  construção de algoritimo
Atividade pratica supervisionada construção de algoritimoFelipe Dias Guimarães
 
Desenvolvimento em .Net - Boas Praticas De Desenvolvimento
Desenvolvimento em .Net - Boas Praticas De DesenvolvimentoDesenvolvimento em .Net - Boas Praticas De Desenvolvimento
Desenvolvimento em .Net - Boas Praticas De DesenvolvimentoVitor Silva
 
Introdução à Linguagem de programação Python
Introdução à Linguagem de programação PythonIntrodução à Linguagem de programação Python
Introdução à Linguagem de programação Pythondmmartins
 
ORM: Sendo produtivo com NHibernate
ORM: Sendo produtivo com NHibernateORM: Sendo produtivo com NHibernate
ORM: Sendo produtivo com NHibernateJuliano Oliveira
 
Python Introdução e Orientação a Objetos.pdf
Python Introdução e Orientação a Objetos.pdfPython Introdução e Orientação a Objetos.pdf
Python Introdução e Orientação a Objetos.pdfMarioAthayde
 
Curso de PostgreSQL: Um pouco Além dos Comandos
Curso de PostgreSQL: Um pouco Além dos ComandosCurso de PostgreSQL: Um pouco Além dos Comandos
Curso de PostgreSQL: Um pouco Além dos ComandosMarcos Thomaz
 
AulaProgramacao6LingC_MatrizesExemplosERE.pptx
AulaProgramacao6LingC_MatrizesExemplosERE.pptxAulaProgramacao6LingC_MatrizesExemplosERE.pptx
AulaProgramacao6LingC_MatrizesExemplosERE.pptxElisangelaPereiraCal1
 
Banco II - PostgreSQL - Filtros
Banco II - PostgreSQL - FiltrosBanco II - PostgreSQL - Filtros
Banco II - PostgreSQL - FiltrosGustavo Sávio
 
Relato Sobre a Migração de uma Aplicação Legada para Rails
Relato Sobre a Migração de uma Aplicação Legada para RailsRelato Sobre a Migração de uma Aplicação Legada para Rails
Relato Sobre a Migração de uma Aplicação Legada para RailsCássio Marques
 

Semelhante a Introdução ao MySQL (19)

Haskell
HaskellHaskell
Haskell
 
10 Boas Práticas de Programação
10 Boas Práticas de Programação10 Boas Práticas de Programação
10 Boas Práticas de Programação
 
Banco dedados aula002
Banco dedados aula002Banco dedados aula002
Banco dedados aula002
 
postgres servlab
postgres servlabpostgres servlab
postgres servlab
 
Atividade pratica supervisionada construção de algoritimo
Atividade pratica supervisionada  construção de algoritimoAtividade pratica supervisionada  construção de algoritimo
Atividade pratica supervisionada construção de algoritimo
 
Estrutura de dados 2
Estrutura de dados 2Estrutura de dados 2
Estrutura de dados 2
 
AULA-02.pdf
AULA-02.pdfAULA-02.pdf
AULA-02.pdf
 
Desenvolvimento em .Net - Boas Praticas De Desenvolvimento
Desenvolvimento em .Net - Boas Praticas De DesenvolvimentoDesenvolvimento em .Net - Boas Praticas De Desenvolvimento
Desenvolvimento em .Net - Boas Praticas De Desenvolvimento
 
Introdução à Linguagem de programação Python
Introdução à Linguagem de programação PythonIntrodução à Linguagem de programação Python
Introdução à Linguagem de programação Python
 
ORM: Sendo produtivo com NHibernate
ORM: Sendo produtivo com NHibernateORM: Sendo produtivo com NHibernate
ORM: Sendo produtivo com NHibernate
 
Standard ML / CPN ML
Standard ML / CPN MLStandard ML / CPN ML
Standard ML / CPN ML
 
Apostila etec banco
Apostila etec   bancoApostila etec   banco
Apostila etec banco
 
Python Introdução e Orientação a Objetos.pdf
Python Introdução e Orientação a Objetos.pdfPython Introdução e Orientação a Objetos.pdf
Python Introdução e Orientação a Objetos.pdf
 
Bd sql (1)
Bd sql (1)Bd sql (1)
Bd sql (1)
 
Curso de PostgreSQL: Um pouco Além dos Comandos
Curso de PostgreSQL: Um pouco Além dos ComandosCurso de PostgreSQL: Um pouco Além dos Comandos
Curso de PostgreSQL: Um pouco Além dos Comandos
 
AulaProgramacao6LingC_MatrizesExemplosERE.pptx
AulaProgramacao6LingC_MatrizesExemplosERE.pptxAulaProgramacao6LingC_MatrizesExemplosERE.pptx
AulaProgramacao6LingC_MatrizesExemplosERE.pptx
 
PROINTER
PROINTERPROINTER
PROINTER
 
Banco II - PostgreSQL - Filtros
Banco II - PostgreSQL - FiltrosBanco II - PostgreSQL - Filtros
Banco II - PostgreSQL - Filtros
 
Relato Sobre a Migração de uma Aplicação Legada para Rails
Relato Sobre a Migração de uma Aplicação Legada para RailsRelato Sobre a Migração de uma Aplicação Legada para Rails
Relato Sobre a Migração de uma Aplicação Legada para Rails
 

Introdução ao MySQL

  • 1. Introdução ao MySQL Conselho Regional de Estatística da 3a Região Anderson Carlos D. Sanches www.software.pro.br
  • 2. Agenda ● 1. Definições de SGBD e terminologia; ● 2. Modelagem de dados e cardinalidade; ● 3. Formas normais; ● 4. DCL e DML; ● 5. Prática: criação de um banco de dados; ● 6. Consultas em um banco de dados exemplo.
  • 3. Vocabulário Banco de Dados SGBD Tabela Registro Tupla Índice Chave Chave candidata Chave primária (PK) Chave estrangeira (FK)
  • 4. Vocabulário Banco de Dados ● 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
  • 5. Vocabulário Sistema Gerenciador de Banco de Dados ● Relacional ● Orientado a Objetos Exemplos: ● MySQL, Postgres, Oracle, DB2, SQL Server etc
  • 6. Vocabulário SQL ● Structured Query Language – Select – Insert – Update – Delete – Create table
  • 7. Vocabulário ● Entidade ● Atributo ● Tabela ● Coluna ● Registro ● Tupla ● null
  • 8. Vocabulário ● Chave ● Chave candidata ● Chave primária (PK) ● Chave estrangeira (FK) ● Índice
  • 9. Vocabulário ● Visão ● Função ou Stored Procedure ● Gatilho ● Permissões
  • 10. Transação ● Conjunto de operações executado de forma atômica ● Atomicidade ● Consistência ● Isolamento ● Durabilidade ● BEGIN TRANSACTION ● COMMIT ● ROLLBACK
  • 11. Modelagem Modelo Conceitual Modelo Lógico Modelo Físico
  • 12. Relacionamentos Uma pessoa possui um telefone pessoa possui telefone
  • 13. Cardinalidade ● Um para um – 1–1 ● Um para N – 1–N ● N para N – N-N
  • 14. Normalização Aumentar: ✔ Facilidade de manipulação dos dados Diminuir: ✗ Redundância ✗ Chance dos dados se tornarem inconsistentes Consideramos normalizada uma tabela se ela aderir a 3a Forma Normal
  • 15. Forma Normal “Zero” ● Os nomes das tabelas devem representar suas entidades ● Geralmente no plural
  • 16. Primeira Forma Normal ● Todos os valores das colunas devem ser atômicos
  • 17. Como obter a 1FN ● Devemos eliminar grupos repetidos pondo-os cada um em uma tabela separada, conectando-os com uma chave primária ou estrangeira
  • 18. a Exemplo fora da 1 FN Cliente codigo nome telefone endereco 1 Anderson 1234-5678 / 9876- R. Um, 10 – Mooca 5432 – São Paulo/SP 2 Renata 2222-7788 R. Dois, 20 – Tatuapé – São Paulo/SP 3 Lili 7777-9999 / R. Três, 8 apto. 161 – 3333-1234 Leblon – Rio de Janeiro/RJ
  • 19. Exemplo Primeira Forma Normal Cliente id nome 1 Anderson 2 Renata 3 Lili Telefone id id_cliente numero 1 1 1234-5678 2 1 9876-5432 3 2 2222-7788 4 3 7777-9999 5 3 3333-1234
  • 20. Exemplo Primeira Forma Normal Endereco id id_cliente endereco numero complemento bairro cidade uf 1 1 R. Um 10 Mooca São Paulo SP 2 2 R. Dois 20 Tatuapé São Paulo SP 3 3 R. Três 8 Apto. 161 Leblon Rio de JaneiroRJ
  • 21. Segunda Forma Normal ● Estar na primeira forma normal ● Todos os atributos não chave devem ser totalmente dependentes da chave primária (dependente de toda a chave e não apenas de parte dela)
  • 22. Como obter a 2FN ● Identificar os atributos que não são funcionalmente dependentes de toda a chave primária ● Remover da entidade todos os atributos identificados e criar uma nova entidade com eles
  • 23. a Exemplo fora da 2 FN Pedido numero cod_produto produto quant vl_unit subtotal 1001 1 Enxugador de gelo 1 100 100 1002 1 Enxugador de gelo 3 100 300 1003 2 Desentortador de banana 2 150 300
  • 24. Segunda Forma Normal Pedido numero cod_produto quant vl_unit subtotal 1001 1 1 100 100 1002 1 3 100 300 1003 2 2 150 300 Produto codigo_produto nome preco 1 Enxugador de gelo 100 2 Desentortador de banana 150
  • 25. Terceira Forma Normal ● Estar na segunda forma normal ● Nenhuma coluna não-chave depender de outra coluna não-chave
  • 26. Como obter a 3FN ● Identificar todos os atributos que são funcionalmente dependentes de outros atributos não chave ● Removê-los
  • 27. a Exemplo fora da 3 FN Pedido numero codigo_produto quant valor_unitario subtotal 1001 1 1 100 100 1002 1 3 100 300 1003 2 2 150 300
  • 28. Terceira Forma Normal Pedido numero codigo_produto quant valor_unitario 1001 1 1 100 1002 1 3 100 1003 2 2 150
  • 29. Outras Formas Normais ● Forma Normal de Boyce-Codd ● Quarta Forma Normal ● Quinta Forma Normal ● Forma Normal Chave-Domínio
  • 30. Instalando o MySQL ● No Linux: ● apt-get install mysql-server
  • 31. Instalando o MySQL ● No Windows: ● 1. Baixe o arquivo noinstall para Windows. No momento em que escrevo esse tutorial o mais recente é: mysql-noinstall-5.1.35-win32.zip ● 2. Descompacte esse arquivo para uma pasta c:mysql ● 3. Abra um prompt de comando e vá até o diretório bin, digite: cd mysqlbin
  • 32. Instalando o MySQL ● 4. Inicie o MySQL. Ainda no prompt de comando digite: mysqld --console ● 5. Pronto, o MySQL já está funcionando. Você já pode se conectar a ele com a ferramenta gráfica MySQL Query Browser. Nome de usuário root e na senha deixar vazio.
  • 33. DDL Data Definition Language CREATE | DROP DATABASE CREATE | DROP | ALTER TABLE CREATE | DROP | ALTER VIEW CREATE | DROP INDEX
  • 34. Tipos das Colunas Tipo Tamanho decimais Unsigned zerofil unicode values TINYINT x x x SMALLINT x x x MEDIUMINT x x x INT x x x INTEGER x x x BIGINT x x x REAL x x x x DOUBLE x x x x FLOAT x x x x DECIMAL x x x x NUMERIC x x x x CHAR x x VARCHAR x x
  • 35. Tipos das Colunas Tipo Tamanho decimais Unsigned zerofil unicode values DATE TIME TIMESTAMP DATETIME TINYBLOB BLOB MEDIUMBLOB LONGBLOB TINYTEXT TEXT MEDIUMTEXT LONGTEXT ENUM x Set x
  • 36. Create table CREATE TABLE nome_tabela ( Nome_campo tipo [UNSIGNED] [NOT NULL] [DEFAULT valor], nome_campo... PRIMARY KEY (campo1, ...), KEY idx_fk_campo (`nome_campo`), CONSTRAINT fk_chave_estrangeira FOREIGN KEY (campo) REFERENCES tabela (campo) [ON DELETE RESTRICT] [ON UPDATE CASCADE] )ENGINE=InnoDB DEFAULT CHARSET=utf8;
  • 37. Create view CREATE VIEW v AS SELECT qty, price, qty*price AS value FROM t;
  • 38. Create index CREATE [UNIQUE] INDEX part_of_name ON customer (name(10)[DESC], last_name);
  • 39. DML Data Manipulation Language SELECT INSERT UPDATE DELETE
  • 40. Select SELECT [DISTINCT] select_expr [, select_expr ...] [FROM table_references [WHERE where_condition] [GROUP BY {col_name | expr | position} [ASC | DESC], ... [WITH ROLLUP]] [HAVING where_condition] [ORDER BY {col_name | expr | position} [ASC | DESC], ...] [LIMIT {[offset,] row_count | row_count OFFSET offset}]
  • 41. Obtendo dados combinados Cliente Telefone cpf nome telefone_id cpf numero 1 Anderson 1 2 87654321 2 Renata 2 1 80000000 3 Lili 3 1 12345678
  • 42. Left [outer] Join SELECT c.cpf,nome, numero FROM Cliente c left join Telefone t on c.cpf=t.cpf cpf nome numero 1 Anderson 80000000 1 Anderson 12345678 2 Renata 87654321 3 Lili NULL
  • 43. Right [outer] Join SELECT c.cpf,nome, numero FROM Cliente c Right join Telefone t on c.cpf=t.cpf cpf nome numero 2 Renata 87654321 1 Anderson 80000000 1 Anderson 12345678
  • 44. Natural Join SELECT c.cpf,nome, numero FROM Cliente c Natural join Telefone t cpf nome numero 2 Renata 87654321 1 Anderson 80000000 1 Anderson 12345678
  • 45. Insert INSERT [INTO] tbl_name [(col_name,...)] {VALUES | VALUE} ({expr | DEFAULT},...) INSERT [INTO] tbl_name SET col_name={expr | DEFAULT}, ... INSERT INTO tbl_name (col1,col2) VALUES(15,col1*2);
  • 46. Update UPDATE table SET col_name1={expr1|DEFAULT} [, col_name2={expr2|DEFAULT}] ... [WHERE where_condition] UPDATE persondata SET age=age+1;
  • 47. Delete DELETE FROM table WHERE condição [ORDER BY campo] [LIMIT n];
  • 48. Obrigado! Anderson Carlos D. Sanches www.software.pro.br andycds@gmail.com