Introdução ao MySQL

8,180 views
7,976 views

Published on

Published in: Technology
1 Comment
2 Likes
Statistics
Notes
No Downloads
Views
Total views
8,180
On SlideShare
0
From Embeds
0
Number of Embeds
40
Actions
Shares
0
Downloads
215
Comments
1
Likes
2
Embeds 0
No embeds

No notes for slide

Introdução ao MySQL

  1. 1. Introdução ao MySQL Conselho Regional de Estatística da 3a Região Anderson Carlos D. Sanches www.software.pro.br
  2. 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. 3. Vocabulário Banco de Dados SGBD Tabela Registro Tupla Índice Chave Chave candidata Chave primária (PK) Chave estrangeira (FK)
  4. 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. 5. Vocabulário Sistema Gerenciador de Banco de Dados ● Relacional ● Orientado a Objetos Exemplos: ● MySQL, Postgres, Oracle, DB2, SQL Server etc
  6. 6. Vocabulário SQL ● Structured Query Language – Select – Insert – Update – Delete – Create table
  7. 7. Vocabulário ● Entidade ● Atributo ● Tabela ● Coluna ● Registro ● Tupla ● null
  8. 8. Vocabulário ● Chave ● Chave candidata ● Chave primária (PK) ● Chave estrangeira (FK) ● Índice
  9. 9. Vocabulário ● Visão ● Função ou Stored Procedure ● Gatilho ● Permissões
  10. 10. Transação ● Conjunto de operações executado de forma atômica ● Atomicidade ● Consistência ● Isolamento ● Durabilidade ● BEGIN TRANSACTION ● COMMIT ● ROLLBACK
  11. 11. Modelagem Modelo Conceitual Modelo Lógico Modelo Físico
  12. 12. Relacionamentos Uma pessoa possui um telefone pessoa possui telefone
  13. 13. Cardinalidade ● Um para um – 1–1 ● Um para N – 1–N ● N para N – N-N
  14. 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. 15. Forma Normal “Zero” ● Os nomes das tabelas devem representar suas entidades ● Geralmente no plural
  16. 16. Primeira Forma Normal ● Todos os valores das colunas devem ser atômicos
  17. 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. 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. 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. 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. 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. 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. 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. 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. 25. Terceira Forma Normal ● Estar na segunda forma normal ● Nenhuma coluna não-chave depender de outra coluna não-chave
  26. 26. Como obter a 3FN ● Identificar todos os atributos que são funcionalmente dependentes de outros atributos não chave ● Removê-los
  27. 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. 28. Terceira Forma Normal Pedido numero codigo_produto quant valor_unitario 1001 1 1 100 1002 1 3 100 1003 2 2 150
  29. 29. Outras Formas Normais ● Forma Normal de Boyce-Codd ● Quarta Forma Normal ● Quinta Forma Normal ● Forma Normal Chave-Domínio
  30. 30. Instalando o MySQL ● No Linux: ● apt-get install mysql-server
  31. 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. 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. 33. DDL Data Definition Language CREATE | DROP DATABASE CREATE | DROP | ALTER TABLE CREATE | DROP | ALTER VIEW CREATE | DROP INDEX
  34. 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. 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. 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. 37. Create view CREATE VIEW v AS SELECT qty, price, qty*price AS value FROM t;
  38. 38. Create index CREATE [UNIQUE] INDEX part_of_name ON customer (name(10)[DESC], last_name);
  39. 39. DML Data Manipulation Language SELECT INSERT UPDATE DELETE
  40. 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. 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. 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. 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. 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. 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. 46. Update UPDATE table SET col_name1={expr1|DEFAULT} [, col_name2={expr2|DEFAULT}] ... [WHERE where_condition] UPDATE persondata SET age=age+1;
  47. 47. Delete DELETE FROM table WHERE condição [ORDER BY campo] [LIMIT n];
  48. 48. Obrigado! Anderson Carlos D. Sanches www.software.pro.br andycds@gmail.com

×