199
Banco de Dados Curso Técnico em Informática Modalidade Integrado Instituto Federal do Sul de Minas, Câmpus Pouso Alegre Professora MsC. Michelle Nery

Banco de Dados Curso Técnico em Informática Modalidade Integrado Instituto Federal do Sul de Minas, Câmpus Pouso Alegre Professora MsC. Michelle Nery

Embed Size (px)

Citation preview

Page 1: Banco de Dados Curso Técnico em Informática Modalidade Integrado Instituto Federal do Sul de Minas, Câmpus Pouso Alegre Professora MsC. Michelle Nery

Banco de DadosCurso Técnico em Informática

Modalidade Integrado

Instituto Federal do Sul de Minas, Câmpus Pouso Alegre

Professora MsC. Michelle Nery

Page 2: Banco de Dados Curso Técnico em Informática Modalidade Integrado Instituto Federal do Sul de Minas, Câmpus Pouso Alegre Professora MsC. Michelle Nery

Instituto Federal do Sul de Minas, câmpus Pouso Alegre

2 Conteúdo Programático

SQL

Introdução a Linguagem SQL

Modelo Exemplo

Instalação e Configuração do MySQL

Gerenciamento de Usuários e seus Privilégios

Comandos da Linguagem DDL (Linguagem de Definição de Dados)

Comando da Linguagem DML (Linguagem de Manipulação de Dados)

Linguagem de Consulta (Query Language)

Comandos Avançados para Consultas

Disposições das Consultas

Subconsultas e Tipos de Junção

Page 3: Banco de Dados Curso Técnico em Informática Modalidade Integrado Instituto Federal do Sul de Minas, Câmpus Pouso Alegre Professora MsC. Michelle Nery

Instituto Federal do Sul de Minas, câmpus Pouso Alegre

3 Introdução ao SQL

Uma vez que os modelos de dados conceitual e lógico estão prontos, a próxima etapa do desenvolvimento de um projeto de banco de dados é a implementação do modelo em um SGBD relacional.

Para fazermos a implementação, teremos que utilizar uma linguagem própria para esse tipo de banco de dados, chama LINGUAGEM SQL.

Page 4: Banco de Dados Curso Técnico em Informática Modalidade Integrado Instituto Federal do Sul de Minas, Câmpus Pouso Alegre Professora MsC. Michelle Nery

Instituto Federal do Sul de Minas, câmpus Pouso Alegre

4 Introdução ao SQL

SQL (Linguagem de Consulta Estruturada) é uma linguagem destinada a armazenar, manipular e obter dados armazenados em bases de dados relacionais.

A primeira linguagem SQL apareceu em 1974, quando um grupo dentro da IBM desenvolveu o primeiro protótipo de uma base de dados relacional.

A primeira base de dados relacional comercial foi distribuída pela Relational Software (mais tarde passou a chamar-se Oracle).

As duas entidades responsáveis pela sua padronização são ANSI (American National Standards Institute) e ISO (International Standards Organization).

Page 5: Banco de Dados Curso Técnico em Informática Modalidade Integrado Instituto Federal do Sul de Minas, Câmpus Pouso Alegre Professora MsC. Michelle Nery

Instituto Federal do Sul de Minas, câmpus Pouso Alegre

5 Introdução ao SQL

Embora a tradução do nome SQL seja “linguagem de consulta”, essa linguagem possui vários recursos, além da consulta a uma base de dados, como por exemplo, meios para a definição da estrutura de dados, para modificação, para inserção, para exclusão de dados, para especificação de restrições de segurança, etc.

Page 6: Banco de Dados Curso Técnico em Informática Modalidade Integrado Instituto Federal do Sul de Minas, Câmpus Pouso Alegre Professora MsC. Michelle Nery

Instituto Federal do Sul de Minas, câmpus Pouso Alegre

6 Introdução ao SQL

A linguagem SQL possui subdivisões de comandos.

Essas subdivisões consistem numa separação dos comando pela função que desempenham.

As duas principais subdivisões são:

DDL (Data Definition Language) ou Linguagem de Definição de Dados

DML (Data Manipulation Language) ou Linguagem de Manipulação de Dados

DQL (Data Query Language) ou Linguagem de Consulta de Dados

DCL (Data Control Language) ou (Linguagem de Controle de Dados)

Page 7: Banco de Dados Curso Técnico em Informática Modalidade Integrado Instituto Federal do Sul de Minas, Câmpus Pouso Alegre Professora MsC. Michelle Nery

Instituto Federal do Sul de Minas, câmpus Pouso Alegre

7 Introdução ao SQL

DDL (Data Definition Language) ou Linguagem de Definição de Dados: disponibiliza comandos para a definição e criação do esquema de banco de dados; comandos para criação, exclusão, alteração de objetos na base de dados (exemplos de objetos: tabelas, visões, índice, procedimentos armazenados, etc.) comando que especificam direitos de acesso; e comandos que permitem criar restrições de integridade (triggers).

Page 8: Banco de Dados Curso Técnico em Informática Modalidade Integrado Instituto Federal do Sul de Minas, Câmpus Pouso Alegre Professora MsC. Michelle Nery

Instituto Federal do Sul de Minas, câmpus Pouso Alegre

8 Introdução ao SQL

DML (Data Manipulation Language) ou Linguagem de Manipulação de Dados: disponibiliza comandos para inserção, exclusão e alteração da base de dados.

Além disso, possui comando que permitem que o usuário ou o programa de aplicação recuperem as informações previamente armazenadas na base de dados.

Page 9: Banco de Dados Curso Técnico em Informática Modalidade Integrado Instituto Federal do Sul de Minas, Câmpus Pouso Alegre Professora MsC. Michelle Nery

Instituto Federal do Sul de Minas, câmpus Pouso Alegre

9 Introdução ao SQL

DQL (Data Query Language) Linguagem de Consulta de Dados, uma das importante dentre o conjunto de linguagens, pois consultas são realizadas a todo instante. O comando que é utilizado pelo DQL é o SELECT. Coloquei o SELECT também em DML pois algumas literaturas constam que SELECT também é DML.

Page 10: Banco de Dados Curso Técnico em Informática Modalidade Integrado Instituto Federal do Sul de Minas, Câmpus Pouso Alegre Professora MsC. Michelle Nery

Instituto Federal do Sul de Minas, câmpus Pouso Alegre

10 Introdução ao SQL

DCL (Data Control Language) ou (Linguagem de Controle de Dados) é uma linguagem que disponibiliza comandos para a controlar o acesso aos dados em um banco de dados.

A linguagem pode permitir ou restringir os usuários a executar as ações ou comandos das outras linguagens SQL definição e criação do esquema de banco de dados.

Page 11: Banco de Dados Curso Técnico em Informática Modalidade Integrado Instituto Federal do Sul de Minas, Câmpus Pouso Alegre Professora MsC. Michelle Nery

Instituto Federal do Sul de Minas, câmpus Pouso Alegre

11 Implementação do Banco de Dados

A primeira ação que devemos fazer é selecionar o SGDB que será utilizado para criar a base de dados e suas respectivas tabelas.

O SGDB selecionado foi o MuSQL. A escolha se baseia no fato de ser muito utilizado e gratuito.

Page 12: Banco de Dados Curso Técnico em Informática Modalidade Integrado Instituto Federal do Sul de Minas, Câmpus Pouso Alegre Professora MsC. Michelle Nery

Instituto Federal do Sul de Minas, câmpus Pouso Alegre

12 Introdução ao MySQL

O MySQL é um sistema de gerenciamento de banco de dados (SGBD), que utiliza a linguagem SQL (Linguagem de Consulta Estruturada, do inglês Structured Query Language) como interface.

É atualmente um dos bancos de dados mais populares, segundo a revista DB-Engines, com mais de 10 milhões de instalações pelo mundo.

Entre os usuários do banco de dados MySQL estão: NASA, Friendster, Banco Bradesco, Dataprev, HP, Nokia, Sony, Lufthansa, U.S. Army, U.S. Federal Reserve Bank, Associated Press, Alcatel, Slashdot, Cisco Systems, Google e outros.

Page 13: Banco de Dados Curso Técnico em Informática Modalidade Integrado Instituto Federal do Sul de Minas, Câmpus Pouso Alegre Professora MsC. Michelle Nery

Instituto Federal do Sul de Minas, câmpus Pouso Alegre

13 Introdução ao MySQL

MySQL começou em 1995, com o nome de MySQL AB.

Seus fundadores são Michael Widenus, David Axmark e Allan Larsson.

Durante várias anos versões foram desenvolvidas para acrescentar funcionalidades.

A versão mais atual é MySQL 5.7.1 (teste).

O MySQL foi vendido pela Sun Microsystem, por 1 bilhão de dólares em 2008.

Em 2010, a Oracle Corporation, maior empresa de banco de dados do mundo, comprou a Sun Microsystems por 7 bilhões de dólares, levando junto o MySQL e também o Java.

Mesmo após a aquisição pela Oracle, o MySQL continua sendo uma sistema open source (código livre).

Page 14: Banco de Dados Curso Técnico em Informática Modalidade Integrado Instituto Federal do Sul de Minas, Câmpus Pouso Alegre Professora MsC. Michelle Nery

Instituto Federal do Sul de Minas, câmpus Pouso Alegre

14 Download e Instação do MySql

Com alguns já devem saber , o phpMyAdmin é um script em PHP que tem por finalidade gerenciar o banco de dados MySQL. Com ele, a administração do banco fica super fácil e intuitiva (só no final).

Page 15: Banco de Dados Curso Técnico em Informática Modalidade Integrado Instituto Federal do Sul de Minas, Câmpus Pouso Alegre Professora MsC. Michelle Nery

Instituto Federal do Sul de Minas, câmpus Pouso Alegre

15 Download e Instação do MySql Para executar o phpMyAdmin é necessário um servidor Web.

No laboratório, o servidor Web instalado é o Apache, gratuito, open source.

As versões do Apache para Windows se encontram nesse site http://www.devmedia.com.br/instalacao-do-wampserver/25871

Existem várias distribuições do pacote Apache para Windows, uma das mais utilizadas é WampServer.

Esse programa, na verdade, possui um conjunto de programas necessários para a implementação de uma páginas Web. Dentre esse conjunto de programas, vamos utilizar os seguintes:

Apache: servidor Web.

MySQL na versão mais recente 5.6.17 gerenciador do banco de dados MySQL.

PHPMyAdmin IDE para administração do MySQL

Page 16: Banco de Dados Curso Técnico em Informática Modalidade Integrado Instituto Federal do Sul de Minas, Câmpus Pouso Alegre Professora MsC. Michelle Nery

Instituto Federal do Sul de Minas, câmpus Pouso Alegre

16 Instalação do MySQL

1. Execute o arquivo que foi feito o download.

2. A primeira tela mostra os programas que serão instalados, dentre eles, o que precisamos.

3. Clique em Next.

Page 17: Banco de Dados Curso Técnico em Informática Modalidade Integrado Instituto Federal do Sul de Minas, Câmpus Pouso Alegre Professora MsC. Michelle Nery

Instituto Federal do Sul de Minas, câmpus Pouso Alegre

17 Instalação do MySQL

Page 18: Banco de Dados Curso Técnico em Informática Modalidade Integrado Instituto Federal do Sul de Minas, Câmpus Pouso Alegre Professora MsC. Michelle Nery

Instituto Federal do Sul de Minas, câmpus Pouso Alegre

18 Instalação do MySQL

4. Aceite os termos de instalação.

5. Clique em Next.

Page 19: Banco de Dados Curso Técnico em Informática Modalidade Integrado Instituto Federal do Sul de Minas, Câmpus Pouso Alegre Professora MsC. Michelle Nery

Instituto Federal do Sul de Minas, câmpus Pouso Alegre

19 Instalação do MySQL

Page 20: Banco de Dados Curso Técnico em Informática Modalidade Integrado Instituto Federal do Sul de Minas, Câmpus Pouso Alegre Professora MsC. Michelle Nery

Instituto Federal do Sul de Minas, câmpus Pouso Alegre

20 Instalação do MySQL

6. Aceite os termos de instalação.

7. Clique em Next.

Page 21: Banco de Dados Curso Técnico em Informática Modalidade Integrado Instituto Federal do Sul de Minas, Câmpus Pouso Alegre Professora MsC. Michelle Nery

Instituto Federal do Sul de Minas, câmpus Pouso Alegre

21 Instalação do MySQL

Page 22: Banco de Dados Curso Técnico em Informática Modalidade Integrado Instituto Federal do Sul de Minas, Câmpus Pouso Alegre Professora MsC. Michelle Nery

Instituto Federal do Sul de Minas, câmpus Pouso Alegre

22 Instalação do MySQL

8. Se quiser adicione atalhos na Área de Trabalho e na barra de inicialização rápida.

9. Clique em Next.

Page 23: Banco de Dados Curso Técnico em Informática Modalidade Integrado Instituto Federal do Sul de Minas, Câmpus Pouso Alegre Professora MsC. Michelle Nery

Instituto Federal do Sul de Minas, câmpus Pouso Alegre

23 Instalação do MySQL

Page 24: Banco de Dados Curso Técnico em Informática Modalidade Integrado Instituto Federal do Sul de Minas, Câmpus Pouso Alegre Professora MsC. Michelle Nery

Instituto Federal do Sul de Minas, câmpus Pouso Alegre

24 Instalação do MySQL

10.Clique em Install.

Page 25: Banco de Dados Curso Técnico em Informática Modalidade Integrado Instituto Federal do Sul de Minas, Câmpus Pouso Alegre Professora MsC. Michelle Nery

Instituto Federal do Sul de Minas, câmpus Pouso Alegre

25 Instalação do MySQL

Page 26: Banco de Dados Curso Técnico em Informática Modalidade Integrado Instituto Federal do Sul de Minas, Câmpus Pouso Alegre Professora MsC. Michelle Nery

Instituto Federal do Sul de Minas, câmpus Pouso Alegre

26 Instalação do MySQL

11.Aguarde a instalação.

Page 27: Banco de Dados Curso Técnico em Informática Modalidade Integrado Instituto Federal do Sul de Minas, Câmpus Pouso Alegre Professora MsC. Michelle Nery

Instituto Federal do Sul de Minas, câmpus Pouso Alegre

27 Instalação do MySQL

Page 28: Banco de Dados Curso Técnico em Informática Modalidade Integrado Instituto Federal do Sul de Minas, Câmpus Pouso Alegre Professora MsC. Michelle Nery

Instituto Federal do Sul de Minas, câmpus Pouso Alegre

28 Instalação do MySQL

Page 29: Banco de Dados Curso Técnico em Informática Modalidade Integrado Instituto Federal do Sul de Minas, Câmpus Pouso Alegre Professora MsC. Michelle Nery

Instituto Federal do Sul de Minas, câmpus Pouso Alegre

29 Instalação do MySQL

12.Selecione o navegador padrão.

13.Clique em abrir.

Page 30: Banco de Dados Curso Técnico em Informática Modalidade Integrado Instituto Federal do Sul de Minas, Câmpus Pouso Alegre Professora MsC. Michelle Nery

Instituto Federal do Sul de Minas, câmpus Pouso Alegre

30 Instalação do MySQL

Page 31: Banco de Dados Curso Técnico em Informática Modalidade Integrado Instituto Federal do Sul de Minas, Câmpus Pouso Alegre Professora MsC. Michelle Nery

Instituto Federal do Sul de Minas, câmpus Pouso Alegre

31 Instalação do MySQL

14.O localhost será o nome do seu servidor.

15.Os usuários poderão se logar por meu do padrão de endereço escrito.

16.Essas ações não precisam ser alteradas.

17.Clique em Next.

Page 32: Banco de Dados Curso Técnico em Informática Modalidade Integrado Instituto Federal do Sul de Minas, Câmpus Pouso Alegre Professora MsC. Michelle Nery

Instituto Federal do Sul de Minas, câmpus Pouso Alegre

32 Instalação do MySQL

Page 33: Banco de Dados Curso Técnico em Informática Modalidade Integrado Instituto Federal do Sul de Minas, Câmpus Pouso Alegre Professora MsC. Michelle Nery

Instituto Federal do Sul de Minas, câmpus Pouso Alegre

33 Instalação do MySQL

18.Clique em Finish.

Page 34: Banco de Dados Curso Técnico em Informática Modalidade Integrado Instituto Federal do Sul de Minas, Câmpus Pouso Alegre Professora MsC. Michelle Nery

Instituto Federal do Sul de Minas, câmpus Pouso Alegre

34 Instalação do MySQL

Page 35: Banco de Dados Curso Técnico em Informática Modalidade Integrado Instituto Federal do Sul de Minas, Câmpus Pouso Alegre Professora MsC. Michelle Nery

Instituto Federal do Sul de Minas, câmpus Pouso Alegre

35 Instalação do MySQL

O ícone do servidor WampServer aparecerá na sua barra de tarefas na cor laranja.

Altere a linguagem para português clicando com o botão direito do mouse sobre o ícone.

Page 36: Banco de Dados Curso Técnico em Informática Modalidade Integrado Instituto Federal do Sul de Minas, Câmpus Pouso Alegre Professora MsC. Michelle Nery

Instituto Federal do Sul de Minas, câmpus Pouso Alegre

36 Instalação do MySQL

Page 37: Banco de Dados Curso Técnico em Informática Modalidade Integrado Instituto Federal do Sul de Minas, Câmpus Pouso Alegre Professora MsC. Michelle Nery

Instituto Federal do Sul de Minas, câmpus Pouso Alegre

37 Instalação do MySQL

Clicar em Colocar online.

Page 38: Banco de Dados Curso Técnico em Informática Modalidade Integrado Instituto Federal do Sul de Minas, Câmpus Pouso Alegre Professora MsC. Michelle Nery

Instituto Federal do Sul de Minas, câmpus Pouso Alegre

38 Instalação do MySQL

Page 39: Banco de Dados Curso Técnico em Informática Modalidade Integrado Instituto Federal do Sul de Minas, Câmpus Pouso Alegre Professora MsC. Michelle Nery

Instituto Federal do Sul de Minas, câmpus Pouso Alegre

39 Instalação do MySQL

O seguinte erro poderá aparecer.

Page 40: Banco de Dados Curso Técnico em Informática Modalidade Integrado Instituto Federal do Sul de Minas, Câmpus Pouso Alegre Professora MsC. Michelle Nery

Instituto Federal do Sul de Minas, câmpus Pouso Alegre

40 Instalação do MySQL

Vamos resolver esse pequeno probleminha:

Clique com o BOTÃO esquerdo do mouse sobre o ícone do WampServer, vá até a pasta APACHE e clique em HTTPD.CONF

Page 41: Banco de Dados Curso Técnico em Informática Modalidade Integrado Instituto Federal do Sul de Minas, Câmpus Pouso Alegre Professora MsC. Michelle Nery

41 Instalação do MySQL

Vamos resolver esse pequeno probleminha: Após abrir o arquivo, procure as linhas com a seguinte

descrição (algumas versões pode ser diferente).Listen 80

ServerName localhost:80

Modifique as mesmas adicionando “80”, consequentemente ficará assim:

Listen 8080

ServerName localhost:8080

Em seguida salve o arquivo e feche-o. Após estas configurações reinicie todos os serviços.

Clique com o botão esquerdo do mouse sobre o ícone do WampServer e clique em Reiniciar todos os serviços.

Pronto, seu WampServer está funcionando corretamente.Instituto Federal do Sul de Minas, câmpus Pouso Alegre

Page 42: Banco de Dados Curso Técnico em Informática Modalidade Integrado Instituto Federal do Sul de Minas, Câmpus Pouso Alegre Professora MsC. Michelle Nery

Instituto Federal do Sul de Minas, câmpus Pouso Alegre

42 Instalação do MySQL

Após o passo acima, tudo estará resolvido, tente acessar a página local do WampServer adicionando 8080 no seu navegador utilizando o caminho: http://localhost:8080/

Para acessar o PHPMYADMIN também deverá adicionar 8080 no seu navegador utilizando o caminho: http://localhost:8080/phpmyadmin/

Page 43: Banco de Dados Curso Técnico em Informática Modalidade Integrado Instituto Federal do Sul de Minas, Câmpus Pouso Alegre Professora MsC. Michelle Nery

Instituto Federal do Sul de Minas, câmpus Pouso Alegre

43 Iniciando com o MySQL

Vamos começar via CONSOLE.

Page 44: Banco de Dados Curso Técnico em Informática Modalidade Integrado Instituto Federal do Sul de Minas, Câmpus Pouso Alegre Professora MsC. Michelle Nery

Instituto Federal do Sul de Minas, câmpus Pouso Alegre

44 Iniciando com o MySQL

A principio não existe uma senha. Só dê enter.

Page 45: Banco de Dados Curso Técnico em Informática Modalidade Integrado Instituto Federal do Sul de Minas, Câmpus Pouso Alegre Professora MsC. Michelle Nery

Instituto Federal do Sul de Minas, câmpus Pouso Alegre

45 Iniciando com o MySQL

Para logar no MySQL é necessário um usuário.

O usuário principal é o root, a principio sem senha.

Page 46: Banco de Dados Curso Técnico em Informática Modalidade Integrado Instituto Federal do Sul de Minas, Câmpus Pouso Alegre Professora MsC. Michelle Nery

Instituto Federal do Sul de Minas, câmpus Pouso Alegre

46

Linguagem de Controle de Dados - DCL

Page 47: Banco de Dados Curso Técnico em Informática Modalidade Integrado Instituto Federal do Sul de Minas, Câmpus Pouso Alegre Professora MsC. Michelle Nery

Instituto Federal do Sul de Minas, câmpus Pouso Alegre

47 Gerenciamento de Usuário no MySQL - DCL

Todos bancos de dados possui um conjunto de usuários de banco de dados.

Os usuários possuem objetos de banco de dados (por exemplo, tabelas), e podem conceder privilégios nestes objetos para outros usuários controlando, assim, quem pode acessar qual objeto.

Iremos ver como criar e gerenciar usuários, e introduzir o sistema de privilégios, baseados no MySQL.

Page 48: Banco de Dados Curso Técnico em Informática Modalidade Integrado Instituto Federal do Sul de Minas, Câmpus Pouso Alegre Professora MsC. Michelle Nery

Instituto Federal do Sul de Minas, câmpus Pouso Alegre

48 Gerenciamento de Usuário no MySQL - DCL

Criando Usuário

Para criar um usuário deve ser utilizado o comando SQL CREATE USER: CREATE USER ‘michellenery'@'localhost' IDENTIFIED BY ‘123456';

Nome do usuário: michellenery

Senha: 123456

Caso você queira criar um usuário sem senha, o que torna o sistema inseguro, você pode digitar o comando até o nome do usuário e o servidor.

Page 49: Banco de Dados Curso Técnico em Informática Modalidade Integrado Instituto Federal do Sul de Minas, Câmpus Pouso Alegre Professora MsC. Michelle Nery

Instituto Federal do Sul de Minas, câmpus Pouso Alegre

49 Gerenciamento de Usuário no MySQL - DCL

Alterando a Senha do Usuário

Mesmo que você defina ou não uma senha ao criar um usuário, você pode alterar a senha dele posteriormente, através do comando

SET PASSWORD FOR ‘michellenery’@’localhost’ = PASSWORD(‘1qaz@wsx');

Page 50: Banco de Dados Curso Técnico em Informática Modalidade Integrado Instituto Federal do Sul de Minas, Câmpus Pouso Alegre Professora MsC. Michelle Nery

Instituto Federal do Sul de Minas, câmpus Pouso Alegre

50 Gerenciamento de Usuário no MySQL - DCL

Excluindo o Usuário

Para remover um usuário existente deve ser utilizado o comando DROP USER:

DROP USER ‘michellenery'@'localhost';

Page 51: Banco de Dados Curso Técnico em Informática Modalidade Integrado Instituto Federal do Sul de Minas, Câmpus Pouso Alegre Professora MsC. Michelle Nery

Instituto Federal do Sul de Minas, câmpus Pouso Alegre

51 Gerenciamento de Usuário no MySQL - DCL

Listar os Usuários

Para listar todos os usuários inseridos no MySQL deve ser utilizado o comando

SELECT * FROM mysql.user;

Para listar qual o usuário está logado no momento deve ser utilizado o comando

SELECT CURRENT_USER();

Page 52: Banco de Dados Curso Técnico em Informática Modalidade Integrado Instituto Federal do Sul de Minas, Câmpus Pouso Alegre Professora MsC. Michelle Nery

Instituto Federal do Sul de Minas, câmpus Pouso Alegre

52 Gerenciamento de Usuário no MySQL - DCL

Trocar de Usuário

Para trocar de usuário, basta entra no prompt MSDOS, entrar na pasta bin que fica dentro da pasta onde está o MySQL (c:\wamp\bin\mysql\mysql5.6.17\bin) e digitar o comando

MYSQL –u michellenery –p

Será solicitado a senha daquele usuário.

Page 53: Banco de Dados Curso Técnico em Informática Modalidade Integrado Instituto Federal do Sul de Minas, Câmpus Pouso Alegre Professora MsC. Michelle Nery

Instituto Federal do Sul de Minas, câmpus Pouso Alegre

53 Gerenciamento de Usuário no MySQL - DCL

Sair do Usuário

Para sair do usuário, basta digitar o comando

quit;

Page 54: Banco de Dados Curso Técnico em Informática Modalidade Integrado Instituto Federal do Sul de Minas, Câmpus Pouso Alegre Professora MsC. Michelle Nery

Instituto Federal do Sul de Minas, câmpus Pouso Alegre

54 Gerenciamento de Usuário no MySQL - DCL

Privilégios

O sistema de privilégios do MySQL garante que todos usuários possam fazer exatamente as operações que lhe são permitidas.

Quando você conecta a um servidor MySQL, sua identidade é determinada pela máquina de onde você conectou e o nome de usuário que você especificou.

O sistema concede privilégios de acordo com sua identidade e com o que você deseja fazer.

Page 55: Banco de Dados Curso Técnico em Informática Modalidade Integrado Instituto Federal do Sul de Minas, Câmpus Pouso Alegre Professora MsC. Michelle Nery

Instituto Federal do Sul de Minas, câmpus Pouso Alegre

55 Gerenciamento de Usuário no MySQL - DCL

Privilégios

O comando GRANT é usado pelos administradores para adicionar novas permissões a um usuário de banco de dados.

Ele tem uma sintaxe muito simples, definida como se segue:

GRANT [privilege]

ON [object]

TO [user]

[WITH GRANT OPTION]

Page 56: Banco de Dados Curso Técnico em Informática Modalidade Integrado Instituto Federal do Sul de Minas, Câmpus Pouso Alegre Professora MsC. Michelle Nery

Instituto Federal do Sul de Minas, câmpus Pouso Alegre

56 Gerenciamento de Usuário no MySQL - DCL

Privilégio pode ser a palavra-chave ALL (para conceder uma ampla variedade de permissões) ou uma permissão de banco de dados específico ou um conjunto de permissões.

Objeto pode ser qualquer objeto de banco de dados. As opções de privilégios válidos irá variar de acordo com o tipo de objeto de banco de dados que incluem nesta cláusula.

O usuário pode ser qualquer usuário do banco de dados.

Se você incluir a cláusula opcional WITH GRANT OPTION no final do comando GRANT, você não só conceder o usuário especificado as permissões definidas na instrução SQL, mas também dar ao usuário a capacidade de conceder essas mesmas permissões para outros usuários do banco de dados.

Page 57: Banco de Dados Curso Técnico em Informática Modalidade Integrado Instituto Federal do Sul de Minas, Câmpus Pouso Alegre Professora MsC. Michelle Nery

Instituto Federal do Sul de Minas, câmpus Pouso Alegre

57 Gerenciamento de Usuário no MySQL - DCL

Privilégios

Abaixo a lista de privilégios.

Page 58: Banco de Dados Curso Técnico em Informática Modalidade Integrado Instituto Federal do Sul de Minas, Câmpus Pouso Alegre Professora MsC. Michelle Nery

Instituto Federal do Sul de Minas, câmpus Pouso Alegre

58

Privilégio Coluna Contexto

ALTER Alter_priv tabelas

DELETE Delete_priv tabelas

INDEX Index_priv tabelas

INSERT Insert_priv tabelas

SELECT Select_priv tabelas

UPDATE Update_priv tabelas

CREATE Create_priv banco de dados, tabelas, ou índices

DROP Drop_priv banco de dados ou tabelas

GRANT Grant_priv banco de dados ou tabelas

REFERENCES References_priv banco de dados ou tabelas

CREATE TEMPORARY TABLES Create_tmp_tabela_priv administração do servidor

EXECUTE Execute_priv administração do servidor

FILE File_priv acessa a arquivos no servidor

LOCK TABLES Lock_tabelas_priv administração do servidor

PROCESS Process_priv administração do servidor

RELOAD Reload_priv administração do servidor

REPLICATION CLIENT Repl_client_priv administração do servidor

REPLICATION SLAVE Repl_slave_priv administração do servidor

SHOW DATABASES Show_db_priv administração do servidor

SHUTDOWN Shutdown_priv administração do servidor

SUPER Super_priv administração do servidor

Page 59: Banco de Dados Curso Técnico em Informática Modalidade Integrado Instituto Federal do Sul de Minas, Câmpus Pouso Alegre Professora MsC. Michelle Nery

Instituto Federal do Sul de Minas, câmpus Pouso Alegre

59 Gerenciamento de Usuário no MySQL - DCL

Restrições dos Privilégios

Os únicos privilégios que você pode especificar para uma tabela são SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, GRANT, INDEX e ALTER.

Os únicos privilégios que você pode especificar para uma coluna (isto é, quando você usar uma cláusula column_list) são SELECT, INSERT e UPDATE.

Page 60: Banco de Dados Curso Técnico em Informática Modalidade Integrado Instituto Federal do Sul de Minas, Câmpus Pouso Alegre Professora MsC. Michelle Nery

Instituto Federal do Sul de Minas, câmpus Pouso Alegre

60 Gerenciamento de Usuário no MySQL - DCL

Objetos

Uma vez informados os privilégios do usuário, você deverá indicar o nível ao qual o privilégio se aplica, sendo possível especificar três níveis:

Níveis Descrição

*.* Privilégio global

db.* Qualquer tabela do banco db

db.tb

Apenas a tabela tb do banco de dados db. Para especificar

apenas algumas colunas de uma determinada tabela, estas deverão ser listadas ao lado do

privilégio:privilégio (coluna, coluna... )

Page 61: Banco de Dados Curso Técnico em Informática Modalidade Integrado Instituto Federal do Sul de Minas, Câmpus Pouso Alegre Professora MsC. Michelle Nery

Instituto Federal do Sul de Minas, câmpus Pouso Alegre

61 Gerenciamento de Usuário no MySQL - DCL

Usuários

Depois do nível você deverá indicar o usuário, ou a lista de usuários, para os quais os privilégios se aplicam.

Page 62: Banco de Dados Curso Técnico em Informática Modalidade Integrado Instituto Federal do Sul de Minas, Câmpus Pouso Alegre Professora MsC. Michelle Nery

Instituto Federal do Sul de Minas, câmpus Pouso Alegre

62 Gerenciamento de Usuário no MySQL - DCL

Criando Usuário e/ou Criando/Alterando Privilégios

Exemplo:

É criado um usuário com o nome teste

Pode se conectar somente do host onde o servidor está em execução (localhost)

O usuário só poderá fazer SELECT nas colunas nome e idade da tabela pessoa, que se encontra no banco de dados rh.

A senha do usuário é 12345.

GRANT SELECT (nome, idade) ON rh.pessoa TO ‘teste’@’localhost’ IDENTIFIED BY "12345";

Obs: a parte em vermelho cria o usuário, quando você a retira, você altera os privilégios do usuário em questão.

Page 63: Banco de Dados Curso Técnico em Informática Modalidade Integrado Instituto Federal do Sul de Minas, Câmpus Pouso Alegre Professora MsC. Michelle Nery

Instituto Federal do Sul de Minas, câmpus Pouso Alegre

63 Gerenciamento de Usuário no MySQL - DCL

Criando Usuário e/ou Alterando Privilégios

Para listar os privilégios deste usuário utilize o comando:

mysql>SHOW GRANTS FOR ‘teste’@’localhost’;

Page 64: Banco de Dados Curso Técnico em Informática Modalidade Integrado Instituto Federal do Sul de Minas, Câmpus Pouso Alegre Professora MsC. Michelle Nery

Instituto Federal do Sul de Minas, câmpus Pouso Alegre

64 Gerenciamento de Usuário no MySQL - DCL

Excluindo Privilégios

Para remover um privilégio do usuário utilize o comando REVOKE mostrado abaixo:

REVOKE privilégio, privilégio, ... ON {*.* | db.* | db.tabela}

FROM usuário, usuário, ...

Page 65: Banco de Dados Curso Técnico em Informática Modalidade Integrado Instituto Federal do Sul de Minas, Câmpus Pouso Alegre Professora MsC. Michelle Nery

Instituto Federal do Sul de Minas, câmpus Pouso Alegre

65 Lista de Exercícios

Crie 5 usuários diferentes no MySQL.

Altere a senha do último criado.

Remova o primeiro usuário

Logar em um dos usuários e tente criar um banco de dados com o comando CREATE DATABASE nomebanco.

Perceba que não é possível criar um banco de dados, porque o usuário não tem esse privilégio.

Logar com o root e dar permissão a esse usuário de criar um banco de dados.

Mostrar os privilégios desse usuário.

Logar com o usuário.

Criar um banco de dados.

Remova o privilégio adicionado usando o comando REVOKE, com o usuário root.

Page 66: Banco de Dados Curso Técnico em Informática Modalidade Integrado Instituto Federal do Sul de Minas, Câmpus Pouso Alegre Professora MsC. Michelle Nery

Instituto Federal do Sul de Minas, câmpus Pouso Alegre

66 Lista de Exercícios

Criar um esquema de permissão para que outro usuário possa deletar o banco de dados. Testar os comandos necessários e imprimir o resultado num documento.

DROP DATABASE nomedobanco;

Page 67: Banco de Dados Curso Técnico em Informática Modalidade Integrado Instituto Federal do Sul de Minas, Câmpus Pouso Alegre Professora MsC. Michelle Nery

Instituto Federal do Sul de Minas, câmpus Pouso Alegre

67 Lista de Exercícios

O que faz os privilégios abaixo?

GRANT select ON blog.pessoas TO ‘michellenery’@’localhost’;

GRANT all ON blog.* TO ‘michellenery’@’localhost’ WITH GRANT OPTION;

GRANT select, insert, update ON blog.* TO ‘michellenery’@’localhost’;

GRANT all ON *.* TO ‘michellenery’@’localhost’ WITH GRANT OPTION;

GRANT select ON blog.* TO ‘michellenery’@’localhost’ IDENTIFIED BY "123456";

Page 68: Banco de Dados Curso Técnico em Informática Modalidade Integrado Instituto Federal do Sul de Minas, Câmpus Pouso Alegre Professora MsC. Michelle Nery

Instituto Federal do Sul de Minas, câmpus Pouso Alegre

68 Lista de Exercícios

Dado o banco de dados abaixo denominado locadora:

Qual o comando para que o usuário ‘ciclano’ possa apenas selecionar as colunas cpfCliente e nomeCliente da tabela Cliente?

Qual o comando para que o usuário ‘root’ possa fazer todas as ações nas tabelas e banco de dados e inclusive repassar os privilégios a outro usuário?

Qual o comando para que os usuários ‘ciclano’ e ‘beltrano’ possam selecionar qualquer coluna da tabela Filme?

Page 69: Banco de Dados Curso Técnico em Informática Modalidade Integrado Instituto Federal do Sul de Minas, Câmpus Pouso Alegre Professora MsC. Michelle Nery

Instituto Federal do Sul de Minas, câmpus Pouso Alegre

69

Linguagem de Definição de Dados - DDL

Page 70: Banco de Dados Curso Técnico em Informática Modalidade Integrado Instituto Federal do Sul de Minas, Câmpus Pouso Alegre Professora MsC. Michelle Nery

Instituto Federal do Sul de Minas, câmpus Pouso Alegre

70 Linguagem de Definição de Dados no MySQL - DDL

Linguagem de definição de dados (LDD ou DDL, do Inglês Data Definition Language) é uma linguagem de computador usada para a definição de estrutura de dados.

Uma vez compilados, os parâmetros DDL são armazenados num conjunto de arquivos denominado dicionário de dados (ou catálogo).

O dicionário de dados contém os metadados (dados a respeito das estruturas de armazenamento).

Page 71: Banco de Dados Curso Técnico em Informática Modalidade Integrado Instituto Federal do Sul de Minas, Câmpus Pouso Alegre Professora MsC. Michelle Nery

Instituto Federal do Sul de Minas, câmpus Pouso Alegre

71 Linguagem de Definição de Dados no MySQL - DDL

O SGBD sempre consulta os metadados a cada operação sobre o banco de dados.

Por exemplo, um determinado programa precisa recuperar alguns campos (nome, CPF) de um arquivo de clientes.

O SGBD irá verificar se os campos "nome" e "CPF" estão definidos para este arquivo.

O interpretador DDL processa os comandos alimentados pelos DBAs na definição dos esquemas.

Page 72: Banco de Dados Curso Técnico em Informática Modalidade Integrado Instituto Federal do Sul de Minas, Câmpus Pouso Alegre Professora MsC. Michelle Nery

Instituto Federal do Sul de Minas, câmpus Pouso Alegre

72 Linguagem de Definição de Dados no MySQL - DDL

Os comandos básicos da DDL são poucos:

CREATE: cria um esquema de banco de dados.

DROP: apaga um esquema de banco de dados.

Outros comandos DDL:

CREATE TABLE

CREATE INDEX

CREATE VIEW

ALTER TABLE

ALTER INDEX

DROP INDEX

DROP VIEW

Page 73: Banco de Dados Curso Técnico em Informática Modalidade Integrado Instituto Federal do Sul de Minas, Câmpus Pouso Alegre Professora MsC. Michelle Nery

Instituto Federal do Sul de Minas, câmpus Pouso Alegre

73 Linguagem de Definição de Dados no MySQL - DDL

Modelo Exemplo:

O modelo relacional utilizado nos exemplos será descrito na figura abaixo:

Page 74: Banco de Dados Curso Técnico em Informática Modalidade Integrado Instituto Federal do Sul de Minas, Câmpus Pouso Alegre Professora MsC. Michelle Nery

Instituto Federal do Sul de Minas, câmpus Pouso Alegre

74

Page 75: Banco de Dados Curso Técnico em Informática Modalidade Integrado Instituto Federal do Sul de Minas, Câmpus Pouso Alegre Professora MsC. Michelle Nery

Instituto Federal do Sul de Minas, câmpus Pouso Alegre

75 Modelo Relacional para Locadora de Filmes

Cliente (codigocliente: inteiro, cpfCliente: caracter(11), nomeCliente: caracter(200), cidadeCliente: caracter(50), ufCliente: caracter(2), dataCadastroCliente:data)

Page 76: Banco de Dados Curso Técnico em Informática Modalidade Integrado Instituto Federal do Sul de Minas, Câmpus Pouso Alegre Professora MsC. Michelle Nery

Instituto Federal do Sul de Minas, câmpus Pouso Alegre

76 Modelo Relacional para Locadora de Filmes

Categoria (codigoCategoria: inteiro, nomeCategoria: caracter(20))

Classe (codigoClasse: inteiro, nomeClasse: caracter(20), precoClasse: real)

Titulo (codigoTitulo: inteiro, nomeTitulo: caracter(50), anoTitulo: numérico(4), codigoCategoria: inteiro, codigoClasse: inteiro)

codigoCategoria referencia Categoria

codigoClasse referencia Classe

Filme (codigofilme: inteiro, codigoTitulo: inteiro, nomeDistribuidor: caracter (20))

codigoTitulo referencia Titulo

Page 77: Banco de Dados Curso Técnico em Informática Modalidade Integrado Instituto Federal do Sul de Minas, Câmpus Pouso Alegre Professora MsC. Michelle Nery

Instituto Federal do Sul de Minas, câmpus Pouso Alegre

77 Modelo Relacional para Locadora de Filmes

EmprestimoDevolucao (codigoCliente: inteiro, codigoFilme: inteiro, dataEmprestimo: data, dataDevolucaoPrevista: data, dataDevolucaoEfetiva: data, valorMulta: real)

codigoCliente referencia Cliente

codigoFilme referencia Filme

Page 78: Banco de Dados Curso Técnico em Informática Modalidade Integrado Instituto Federal do Sul de Minas, Câmpus Pouso Alegre Professora MsC. Michelle Nery

Instituto Federal do Sul de Minas, câmpus Pouso Alegre

78 Modelo Relacional para Locadora de Filmes

Esse é um modelo bem clássico e didático.

A base de dados é uma locadora de filmes.

Locadora de Filmes

Possui vários CLIENTES

Possui vários TÍTULOS de FILMES

Para cada TÍTULO possuem vários DVD´s que contém o FILMES.

Os FILMES pertencem a uma categoria (por exemplo, romance, policial, terror, etc.)

Os FILMES possui uma classe, que define se o filme é lançamento ou catálogo e define o preço da locação.

Vários CLIENTES podem pegar um FILME emprestado.

Page 79: Banco de Dados Curso Técnico em Informática Modalidade Integrado Instituto Federal do Sul de Minas, Câmpus Pouso Alegre Professora MsC. Michelle Nery

Instituto Federal do Sul de Minas, câmpus Pouso Alegre

79

Linguagem de Definição de Dados no MySQL - DDLCriar Banco de dados

Remover Banco de Dados

Usar Banco de Dados

Page 80: Banco de Dados Curso Técnico em Informática Modalidade Integrado Instituto Federal do Sul de Minas, Câmpus Pouso Alegre Professora MsC. Michelle Nery

Instituto Federal do Sul de Minas, câmpus Pouso Alegre

80 Linguagem de Definição de Dados no MySQL - DDL

Comando SQL para criar um esquema de banco de dados:

CREATE DATABASE nome do banco de dados;

Comando SQL para remover um esquema de banco de dados:

DROP DATABASE nome do banco de dados;

Page 81: Banco de Dados Curso Técnico em Informática Modalidade Integrado Instituto Federal do Sul de Minas, Câmpus Pouso Alegre Professora MsC. Michelle Nery

Instituto Federal do Sul de Minas, câmpus Pouso Alegre

81 Linguagem de Definição de Dados no MySQL - DDL

Comando SQL para criar o esquema de banco de dados Locadora:

CREATE DATABASE Locadora;

Page 82: Banco de Dados Curso Técnico em Informática Modalidade Integrado Instituto Federal do Sul de Minas, Câmpus Pouso Alegre Professora MsC. Michelle Nery

Instituto Federal do Sul de Minas, câmpus Pouso Alegre

82 Linguagem de Definição de Dados no MySQL - DDL

Pode-se criar tantas bases de dados quantas forem necessárias o SGDB MySql.

Logo, para usar uma base de dados específica, é necessário definir qual a base de dados.

Para isso usa-se o comando USE.

O comando indica que os comandos subsequentes irão ser executados sobre a base de dados escolhida.

Page 83: Banco de Dados Curso Técnico em Informática Modalidade Integrado Instituto Federal do Sul de Minas, Câmpus Pouso Alegre Professora MsC. Michelle Nery

Instituto Federal do Sul de Minas, câmpus Pouso Alegre

83 Linguagem de Definição de Dados no MySQL - DDL

Comando SQL para especificar um banco de dados a ser usado:

USE Locadora;

Page 84: Banco de Dados Curso Técnico em Informática Modalidade Integrado Instituto Federal do Sul de Minas, Câmpus Pouso Alegre Professora MsC. Michelle Nery

Instituto Federal do Sul de Minas, câmpus Pouso Alegre

84

Linguagem de Definição de Dados no MySQL - DDLCriar Tabelas

Remover Tabelas

Alterar Tabelas

Page 85: Banco de Dados Curso Técnico em Informática Modalidade Integrado Instituto Federal do Sul de Minas, Câmpus Pouso Alegre Professora MsC. Michelle Nery

Instituto Federal do Sul de Minas, câmpus Pouso Alegre

85 Linguagem de Definição de Dados no MySQL - DDL

Comando para criar uma nova tabela no banco de dados:

CREATE TABLE;

a nova tabela não possui dados

Comando para remover uma tabela e todas as suas instâncias do bando de dados:

DROP TABLE;

Comando para alterar uma tabela do bando de dados:

ALTER TABLE;

Page 86: Banco de Dados Curso Técnico em Informática Modalidade Integrado Instituto Federal do Sul de Minas, Câmpus Pouso Alegre Professora MsC. Michelle Nery

Instituto Federal do Sul de Minas, câmpus Pouso Alegre

86 Implementação: Gerenciamento de Definição de Dados no MySQL - DDL

Depois de criado o banco de dados, é necessário criarmos as tabelas para essa base de dados:

CREATE TABLE Nome da Tabela (

Nome do Atributo Tipo de Dado [NOT NULL] [DEFAULT(Expressão Padrão)],

Nome do Atributo Tipo de Dado [NOT NULL] [DEFAULT(Expressão Padrão)],

...

[Demais restrições]

);

Page 87: Banco de Dados Curso Técnico em Informática Modalidade Integrado Instituto Federal do Sul de Minas, Câmpus Pouso Alegre Professora MsC. Michelle Nery

Instituto Federal do Sul de Minas, câmpus Pouso Alegre

87 Implementação: Gerenciamento de Definição de Dados no MySQL - DDL

O que está entre colchetes na sintaxe acima significa opcional.

O tipo de dados de um atributo vai depender do SGDB escolhido. No caso do SGDB MySQL, os principais tipos são:

Page 88: Banco de Dados Curso Técnico em Informática Modalidade Integrado Instituto Federal do Sul de Minas, Câmpus Pouso Alegre Professora MsC. Michelle Nery

Instituto Federal do Sul de Minas, câmpus Pouso Alegre

88Tipos de Dados

Page 89: Banco de Dados Curso Técnico em Informática Modalidade Integrado Instituto Federal do Sul de Minas, Câmpus Pouso Alegre Professora MsC. Michelle Nery

Instituto Federal do Sul de Minas, câmpus Pouso Alegre

89 Linguagem de Definição de Dados no MySQL - DDL

Tipos numéricos Inteiros:

Page 90: Banco de Dados Curso Técnico em Informática Modalidade Integrado Instituto Federal do Sul de Minas, Câmpus Pouso Alegre Professora MsC. Michelle Nery

Instituto Federal do Sul de Minas, câmpus Pouso Alegre

90 Linguagem de Definição de Dados no MySQL - DDL

Tipos numéricos booleanos:

Page 91: Banco de Dados Curso Técnico em Informática Modalidade Integrado Instituto Federal do Sul de Minas, Câmpus Pouso Alegre Professora MsC. Michelle Nery

Instituto Federal do Sul de Minas, câmpus Pouso Alegre

91 Linguagem de Definição de Dados no MySQL - DDL

Tipos numéricos decimais: 

Page 92: Banco de Dados Curso Técnico em Informática Modalidade Integrado Instituto Federal do Sul de Minas, Câmpus Pouso Alegre Professora MsC. Michelle Nery

Instituto Federal do Sul de Minas, câmpus Pouso Alegre

92 Linguagem de Definição de Dados no MySQL - DDL

Tipos de Data:

Page 93: Banco de Dados Curso Técnico em Informática Modalidade Integrado Instituto Federal do Sul de Minas, Câmpus Pouso Alegre Professora MsC. Michelle Nery

Instituto Federal do Sul de Minas, câmpus Pouso Alegre

93 Linguagem de Definição de Dados no MySQL - DDL

Tipos de caracteres: 

Page 94: Banco de Dados Curso Técnico em Informática Modalidade Integrado Instituto Federal do Sul de Minas, Câmpus Pouso Alegre Professora MsC. Michelle Nery

Instituto Federal do Sul de Minas, câmpus Pouso Alegre

94 Linguagem de Definição de Dados no MySQL - DDL

Diferença de armazenamento entre os tipos Char e VarChar: 

Page 95: Banco de Dados Curso Técnico em Informática Modalidade Integrado Instituto Federal do Sul de Minas, Câmpus Pouso Alegre Professora MsC. Michelle Nery

Instituto Federal do Sul de Minas, câmpus Pouso Alegre

95 Linguagem de Definição de Dados no MySQL - DDL

Tipos de Listas: 

Page 96: Banco de Dados Curso Técnico em Informática Modalidade Integrado Instituto Federal do Sul de Minas, Câmpus Pouso Alegre Professora MsC. Michelle Nery

Instituto Federal do Sul de Minas, câmpus Pouso Alegre

96 Linguagem de Definição de Dados no MySQL - DDL

Mais usados:

Integer, Int: número inteiro

Float: número pequeno em vírgula flutuante de precisão simples.

xReal, Double: número em vírgula flutuante de dupla precisão.  

Date: tipo data, armazena uma data. 

DateTime: Combinação de data e hora.

TimeStamp: Combinação de data e hora.

Time: armazena uma hora. 

Char(n): armazena uma cadeia de caracteres fixa.

VarChar(n):  armazena uma cadeia de caracteres variável.

Page 97: Banco de Dados Curso Técnico em Informática Modalidade Integrado Instituto Federal do Sul de Minas, Câmpus Pouso Alegre Professora MsC. Michelle Nery

Instituto Federal do Sul de Minas, câmpus Pouso Alegre

97

Restrições de Integridade

Page 98: Banco de Dados Curso Técnico em Informática Modalidade Integrado Instituto Federal do Sul de Minas, Câmpus Pouso Alegre Professora MsC. Michelle Nery

Instituto Federal do Sul de Minas, câmpus Pouso Alegre

98 Linguagem de Definição de Dados no MySQL - DDL

Restrição NULL

Implica que o atributo adicionado a tabela poderá receber valor nulo.

Padrão quando não se restringe.

Restrição NOT NULL

Implica que o atributo adicionado na tabela nunca poderá receber um valor nulo.

Restrição DEFAULT

Indica um valor a ser atribuído ao atributo caso o usuário não especifique algum valor.

A restrição DEFAULT não se aplica aos atributos chaves primárias.

Page 99: Banco de Dados Curso Técnico em Informática Modalidade Integrado Instituto Federal do Sul de Minas, Câmpus Pouso Alegre Professora MsC. Michelle Nery

Instituto Federal do Sul de Minas, câmpus Pouso Alegre

99 Linguagem de Definição de Dados no MySQL - DDL

Existe ainda outra quatro restrições, conhecidas como constrains, que podem ser aplicadas aos atributos de uma tabela, segue:

UNIQUE: é utilizada para manter os dados inseridos com valores únicos. Se um campo estiver definido com a restrição UNIQUE nenhum valor repetido poderá ser digitado para este campo. Pode-se ter várias restrições UNIQUE para uma tabela, mas para cada atributo que possui essa restrição só pode-se inserir o valor nulo (null) uma única vez.

Page 100: Banco de Dados Curso Técnico em Informática Modalidade Integrado Instituto Federal do Sul de Minas, Câmpus Pouso Alegre Professora MsC. Michelle Nery

Instituto Federal do Sul de Minas, câmpus Pouso Alegre

Linguagem de Definição de Dados no MySQL - DDL

Existe ainda outra quatro restrições, conhecidas como constrains, que podem ser aplicadas aos atributos de uma tabela, segue:

CHECK: permite criar regra que verifica se o valor inserido para o atributo é um valor permitido para o atributo.

100

Page 101: Banco de Dados Curso Técnico em Informática Modalidade Integrado Instituto Federal do Sul de Minas, Câmpus Pouso Alegre Professora MsC. Michelle Nery

Instituto Federal do Sul de Minas, câmpus Pouso Alegre

Linguagem de Definição de Dados no MySQL - DDL

Existe ainda outra quatro restrições, conhecidas como constrains, que podem ser aplicadas aos atributos de uma tabela, segue:

PRIMARY KEY (PK): utilizado para definir a chave primária da tabela. Não pode se repetir e não aceita valor nulo.

101

Page 102: Banco de Dados Curso Técnico em Informática Modalidade Integrado Instituto Federal do Sul de Minas, Câmpus Pouso Alegre Professora MsC. Michelle Nery

Instituto Federal do Sul de Minas, câmpus Pouso Alegre

Linguagem de Definição de Dados no MySQL - DDL

Existe ainda outra quatro restrições, conhecidas como constrains, que podem ser aplicadas aos atributos de uma tabela, segue:

FOREIGN KEY (FK): Implementa o conceito de chave estrangeira e garante a integridade referencial. O conteúdo de um campo que tem uma FK deve se referenciar a outro campo que possua ou uma chave primária ou uma constraint UNIQUE. Atributos com a restrição FOREIGN KEY permitem o valor nulo.

102

Page 103: Banco de Dados Curso Técnico em Informática Modalidade Integrado Instituto Federal do Sul de Minas, Câmpus Pouso Alegre Professora MsC. Michelle Nery

Instituto Federal do Sul de Minas, câmpus Pouso Alegre

Linguagem de Definição de Dados no MySQL - DDL

Constraint de PRIMARY KEY:

CONSTRAINT Nome da Constraint PRIMARY KEY (atributo que recebe a constraint);

Constraint de FOREIGN KEY:

CONSTRAINT NomeConstraint FOREIGN KEY (atributo que recebe a constraint) REFERENCES Nome da Tabela Referenciada (Nome do Atributo Referenciado);

[ON DELETE CASCADE]

[ON UPDATE CASCADE]

103

CASCADE: Se a linha da tabela que tem a PK for apagada/modificada, a linha da tabela que tem a FK também será.

Page 104: Banco de Dados Curso Técnico em Informática Modalidade Integrado Instituto Federal do Sul de Minas, Câmpus Pouso Alegre Professora MsC. Michelle Nery

Instituto Federal do Sul de Minas, câmpus Pouso Alegre

Linguagem de Definição de Dados no MySQL - DDL

Constraint de UNIQUE:

CONSTRAINT Nome da Constraint UNIQUE (atributo que recebe a constraint);

Constraint de CHECK:

CONSTRAINT NomeConstraint CHECK (regra);

104

Page 105: Banco de Dados Curso Técnico em Informática Modalidade Integrado Instituto Federal do Sul de Minas, Câmpus Pouso Alegre Professora MsC. Michelle Nery

Instituto Federal do Sul de Minas, câmpus Pouso Alegre

Linguagem de Definição de Dados no MySQL - DDL

105

CUIDADO!O nome da constraint é o nome que se dá para a restrição. O nome da constraint não muda o nome do atributo.

Nome sugerido para a constraint: abreviação da constraint underline nome da tabela que está sendo criada a constraint underline nome do campo que recebe a constraint. Exemplo: pk_tbCliente_codigoCliente

Page 106: Banco de Dados Curso Técnico em Informática Modalidade Integrado Instituto Federal do Sul de Minas, Câmpus Pouso Alegre Professora MsC. Michelle Nery

Instituto Federal do Sul de Minas, câmpus Pouso Alegre

Linguagem de Definição de Dados no MySQL - DDL

Pesquise na internet um exemplo para cada uma das restrições citadas acima.

106

Page 107: Banco de Dados Curso Técnico em Informática Modalidade Integrado Instituto Federal do Sul de Minas, Câmpus Pouso Alegre Professora MsC. Michelle Nery

Instituto Federal do Sul de Minas, câmpus Pouso Alegre

Criando as Tabelas107

Page 108: Banco de Dados Curso Técnico em Informática Modalidade Integrado Instituto Federal do Sul de Minas, Câmpus Pouso Alegre Professora MsC. Michelle Nery

Instituto Federal do Sul de Minas, câmpus Pouso Alegre

Linguagem de Definição de Dados no MySQL – DDL

CREATE TABLE tbCliente

(

codigoCliente INT,

cpfCliente CHAR(11) NOT NULL,

nomeCliente VARCHAR(100) NOT NULL,

dataCadastroCliente DATE,

cidadeCliente VARCHAR(50),

ufCliente CHAR(2) DEFAULT ‘MG’,

CONSTRAINT pk_tbCliente_codigoCliente PRIMARY KEY (codigoCliente),

CONSTRAINT un_tbCliente_cpfCliente UNIQUE (cpfCliente)

);

108

Valores não numéricos, como caractere, data e hora devem estar

entre aspas simples.

A última linha não tem vírgula.

Page 109: Banco de Dados Curso Técnico em Informática Modalidade Integrado Instituto Federal do Sul de Minas, Câmpus Pouso Alegre Professora MsC. Michelle Nery

Instituto Federal do Sul de Minas, câmpus Pouso Alegre

Linguagem de Definição de Dados no MySQL - DDL

CREATE TABLE tbCategoria

(

codigoCategoria INT,

nomeCategoria VARCHAR(30) NOT NULL,

CONSTRAINT pk_tbCategoria_codigoCategoria PRIMARY KEY (codigoCategoria)

);

109

Page 110: Banco de Dados Curso Técnico em Informática Modalidade Integrado Instituto Federal do Sul de Minas, Câmpus Pouso Alegre Professora MsC. Michelle Nery

Instituto Federal do Sul de Minas, câmpus Pouso Alegre

Linguagem de Definição de Dados no MySQL - DDL

CREATE TABLE tbClasse

(

codigoClasse INT,

nomeClasse VARCHAR(30) NOT NULL,

precoClasse NUMERIC(4,2) NOT NULL,

CONSTRAINT pk_tbClasse_codigoClasse PRIMARY KEY (codigoClasse),

CONSTRAINT ck_tbClasse_nomeClasse CHECK (nomeClasse IN (‘Lançamento’,’Catálogo’))

);

110

Números com 4 dígitos e 2 casas

decimais.

Só aceita os valores

‘Lançamento’ ou ‘Catálogo’).

Page 111: Banco de Dados Curso Técnico em Informática Modalidade Integrado Instituto Federal do Sul de Minas, Câmpus Pouso Alegre Professora MsC. Michelle Nery

Instituto Federal do Sul de Minas, câmpus Pouso Alegre

Linguagem de Definição de Dados no MySQL - DDL

CREATE TABLE tbTitulo

(

codigoTitulo INT,

nomeTitulo VARCHAR(80) NOT NULL,

ano NUMERIC(4) NOT NULL,

codigoCategoria INT,

codigoClasse INT,

CONSTRAINT pk_tbTitulo_codigoTitulo PRIMARY KEY (codigoTitulo),

CONSTRAINT fk_tbTitulo_codigoCategoria FOREIGN KEY (codigoCategoria) REFERENCES tbCategoria (codigoCategoria) ON DELETE CASCADE ON UPDATE CASCADE,

CONSTRAINT fk_tbTitulo_codigoClasse FOREIGN KEY (codigoClasse) REFERENCES tbClasse (codigoClasse) ON DELETE CASCADE ON UPDATE CASCADE

);

111

Page 112: Banco de Dados Curso Técnico em Informática Modalidade Integrado Instituto Federal do Sul de Minas, Câmpus Pouso Alegre Professora MsC. Michelle Nery

Instituto Federal do Sul de Minas, câmpus Pouso Alegre

Linguagem de Definição de Dados no MySQL - DDL

CREATE TABLE tbFilme

(

codigoFilme INT,

nomeDistribuidor VARCHAR(40) NOT NULL,

codigoTitulo INT,

CONSTRAINT pk_tbFilme_codigoFilme PRIMARY KEY (codigoFilme),

CONSTRAINT fk_tbFilme_codigoTitulo FOREIGN KEY (codigoTitulo) REFERENCES tbTitulo (codigoTitulo) ON DELETE CASCADE ON UPDATE CASCADE

);

112

Page 113: Banco de Dados Curso Técnico em Informática Modalidade Integrado Instituto Federal do Sul de Minas, Câmpus Pouso Alegre Professora MsC. Michelle Nery

Linguagem de Definição de Dados no MySQL - DDL

CREATE TABLE tbEmpDev

(

codigoCliente INT,

codigoFilme INT,

dataEmprestimo DATE NOT NULL,

dataDevolucaoPrevista DATE NOT NULL,

dataDevolucaoEfetiva DATE,

valorMulta NUMERIC(4,2) DEFAULT 0,

CONSTRAINT pk_tbEmpDev_codigoCliente_codigoFilme_dataEmprestimo PRIMARY KEY (codigoCliente, codigoFilme, dataEmprestimo),

CONSTRAINT fk_tbEmpDev_codigoCliente FOREIGN KEY (codigoCliente) REFERENCES tbCliente (codigoCliente) ON DELETE CASCADE ON UPDATE CASCADE,

CONSTRAINT fk_tbEmpDev_codigoFilme FOREIGN KEY (codigoFilme) REFERENCES tbFilme (codigoFilme) ON DELETE CASCADE ON UPDATE CASCADE

);Instituto Federal do Sul de Minas, câmpus Pouso Alegre

113

Chave primária composta (os atributos

devem estar entre parênteses e

separados por vírgula).

Atributos que fazem parte da chave primária e

individualmente são chaves estrangeiras.

Page 114: Banco de Dados Curso Técnico em Informática Modalidade Integrado Instituto Federal do Sul de Minas, Câmpus Pouso Alegre Professora MsC. Michelle Nery

Instituto Federal do Sul de Minas, câmpus Pouso Alegre

Linguagem de Definição de Dados no MySQL - DDL

Os campos chaves podem ser incrementados automaticamente.

Para isso, o atributo primeiramente deverá ser numérico e deverá ser usado o comando AUTO_INCREMENT.

Exemplo:

CREATE TABLE tbCategoria

(

codigoCategoria INT AUTO_INCREMENT,

nomeCategoria VARCHAR(30) NOT NULL,

CONSTRAINT pk_tbCategoria_codigoCategoria PRIMARY KEY (codigoCategoria)

);

114

Page 115: Banco de Dados Curso Técnico em Informática Modalidade Integrado Instituto Federal do Sul de Minas, Câmpus Pouso Alegre Professora MsC. Michelle Nery

Instituto Federal do Sul de Minas, câmpus Pouso Alegre

Excluindo uma Tabela115

Page 116: Banco de Dados Curso Técnico em Informática Modalidade Integrado Instituto Federal do Sul de Minas, Câmpus Pouso Alegre Professora MsC. Michelle Nery

Instituto Federal do Sul de Minas, câmpus Pouso Alegre

Linguagem de Definição de Dados no MySQL - DDL Para excluir um tabela, utiliza-se o comando DROP.

Quando você exclui uma tabela, todos os dados que foram armazenados nela também será excluído.

Sintaxe:

DROP TABLE nome da tabela;

Exemplo:

DROP TABLE tbEmpDev;

Não é possível excluir uma tabela que tenha a sua chave primária (PK) sendo referenciada por outra tabela (FK). Por exemplo, você não pode excluir a tabela tbClasse porque o codigoClasse é uma chave estrangeira (FK) em tbTitutlo. Nesse caso, temos que primeiramente excluir a constraint de FKm para depois excluirmos a tabela. Para excluirmos uma constraint de FK, usamos o comando ALTER.

116

Page 117: Banco de Dados Curso Técnico em Informática Modalidade Integrado Instituto Federal do Sul de Minas, Câmpus Pouso Alegre Professora MsC. Michelle Nery

Instituto Federal do Sul de Minas, câmpus Pouso Alegre

Renomear uma Tabela117

Page 118: Banco de Dados Curso Técnico em Informática Modalidade Integrado Instituto Federal do Sul de Minas, Câmpus Pouso Alegre Professora MsC. Michelle Nery

Instituto Federal do Sul de Minas, câmpus Pouso Alegre

Linguagem de Definição de Dados no MySQL - DDL

Para renomear uma tabela, utiliza-se o comando RENAME. RENAME TABLE nome_tabela TO novo_nome_tabela;

118

Page 119: Banco de Dados Curso Técnico em Informática Modalidade Integrado Instituto Federal do Sul de Minas, Câmpus Pouso Alegre Professora MsC. Michelle Nery

Instituto Federal do Sul de Minas, câmpus Pouso Alegre

Mostrando as Estruturas das Tabelas e Banco de Dados119

Page 120: Banco de Dados Curso Técnico em Informática Modalidade Integrado Instituto Federal do Sul de Minas, Câmpus Pouso Alegre Professora MsC. Michelle Nery

Instituto Federal do Sul de Minas, câmpus Pouso Alegre

Linguagem de Definição de Dados no MySQL - DDL

Comando para mostrar todos os bancos criados no MySQL:

SHOW DATABASES;

Comando para mostrar todos as tabelas de uma banco de dados: (não se esqueça do use banco de dados)

SHOW TABLES;

O comando para você visualizar a estrutura de uma tabela é

DESCRIBE nome da tabela;

120

Page 121: Banco de Dados Curso Técnico em Informática Modalidade Integrado Instituto Federal do Sul de Minas, Câmpus Pouso Alegre Professora MsC. Michelle Nery

Instituto Federal do Sul de Minas, câmpus Pouso Alegre

Linguagem de Definição de Dados no MySQL - DDL

Mostrar todas as constraints do banco de dados:

SELECT * FROM information_schema.table_constraints WHERE constraint_schema = ‘nome do banco de dados'

121

Page 122: Banco de Dados Curso Técnico em Informática Modalidade Integrado Instituto Federal do Sul de Minas, Câmpus Pouso Alegre Professora MsC. Michelle Nery

Instituto Federal do Sul de Minas, câmpus Pouso Alegre

Exercícios

Crie o banco de dados Venda e as seguintes tabelas abaixo:

Cliente (cpfCliente: carater(11), nomeCliente caracter(100), enderecoCliente caracter(100), bairroCliente: caracter(30), cidadeCliente caracter(50), codigoEstado: numérico, cepCliente caracter(9), telefoneCliente caracter(14))

codigoEstado referencia Estado

Estado(codigoEstado: numérico autoincremento, estado caracter (2))

Check estado = ‘AC’, ‘AM’ ...

122

Page 123: Banco de Dados Curso Técnico em Informática Modalidade Integrado Instituto Federal do Sul de Minas, Câmpus Pouso Alegre Professora MsC. Michelle Nery

Instituto Federal do Sul de Minas, câmpus Pouso Alegre

Exercícios

Produto (codigoProduto: numérico autoincremento, nomeProduto caracter(50), descricaoProduto: caracter(200), precoProduto: float (5,2))

Pedido (codigoPedido: numérico autoincremento, tipoPedido: caracter(30), dataPedido: data, cpfCliente: caracter(11),)

cpfCliente referencia Cliente

ItemPedido (codigoItem: numérico autoincremento, codigoProduto: numérico, quantidadeItem: numérico, valorUnitario: float(5,2), codigoPedido: numérico)

codigoProduto referencia Produto

codigoPedido referencia Pedido

123

Page 124: Banco de Dados Curso Técnico em Informática Modalidade Integrado Instituto Federal do Sul de Minas, Câmpus Pouso Alegre Professora MsC. Michelle Nery

Instituto Federal do Sul de Minas, câmpus Pouso Alegre

Alterando Tabelas124

Page 125: Banco de Dados Curso Técnico em Informática Modalidade Integrado Instituto Federal do Sul de Minas, Câmpus Pouso Alegre Professora MsC. Michelle Nery

Instituto Federal do Sul de Minas, câmpus Pouso Alegre

Linguagem de Definição de Dados no MySQL - DDL

O comando ALTER permite alterar a estrutura de uma tabela.

Com esse comando podem-se adicionar atributos, excluir atributos, alterar o tipo ou o tamanho do atributo, adicionar ou excluir constraints, etc.

Adicionar

Modificar

Alterar

Excluir

125

Page 126: Banco de Dados Curso Técnico em Informática Modalidade Integrado Instituto Federal do Sul de Minas, Câmpus Pouso Alegre Professora MsC. Michelle Nery

Instituto Federal do Sul de Minas, câmpus Pouso Alegre

Linguagem de Definição de Dados no MySQL - DDL

Adicionar Atributo na Tabela

Remover Atributo da Tabela

126

Page 127: Banco de Dados Curso Técnico em Informática Modalidade Integrado Instituto Federal do Sul de Minas, Câmpus Pouso Alegre Professora MsC. Michelle Nery

Instituto Federal do Sul de Minas, câmpus Pouso Alegre

Linguagem de Definição de Dados no MySQL - DDL

Comando para adicionar um novo atributo na tabela.

ALTER TABLE nome da tabela

ADD nome_atributo tipo_dado [NOT NULL] [DEFAULT(Expressão Padrão)];

Exemplo:

ALTER TABLE tbCliente

ADD celularCliente VARCHAR(14) NOT NULL;

127

Page 128: Banco de Dados Curso Técnico em Informática Modalidade Integrado Instituto Federal do Sul de Minas, Câmpus Pouso Alegre Professora MsC. Michelle Nery

Instituto Federal do Sul de Minas, câmpus Pouso Alegre

Linguagem de Definição de Dados no MySQL - DDL

Comando para adicionar um novo atributo na tabela antes ou depois de um determinado atributo.

ALTER TABLE nome da tabela

ADD atributo TIPO[TAMANHO] [FIRST] [AFTER] nome do atributo de referência;

Exemplo:

ALTER TABLE tbCliente

ADD celularCliente VARCHAR(14) NOT NULL AFTER nomeCliente;

128

Page 129: Banco de Dados Curso Técnico em Informática Modalidade Integrado Instituto Federal do Sul de Minas, Câmpus Pouso Alegre Professora MsC. Michelle Nery

Instituto Federal do Sul de Minas, câmpus Pouso Alegre

Linguagem de Definição de Dados no MySQL - DDL

Comando para adicionar mais um de atributo na tabela antes ou depois de um determinado atributo.

ALTER TABLE nome da tabela

ADD atributo1 TIPO[TAMANHO] [FIRST] [AFTER] nome do atributo,

ADD atributo2 TIPO[TAMANHO] [FIRST] [AFTER] nome do atributo;

129

Page 130: Banco de Dados Curso Técnico em Informática Modalidade Integrado Instituto Federal do Sul de Minas, Câmpus Pouso Alegre Professora MsC. Michelle Nery

Instituto Federal do Sul de Minas, câmpus Pouso Alegre

Linguagem de Definição de Dados no MySQL - DDL

O comando DROP permite excluir um atributo da tabela.

ALTER TABLE nome da tabela

DROP nome do atributo que deseja excluir;

Exemplo:

ALTER TABLE tbCliente

DROP celularCliente;

130

Page 131: Banco de Dados Curso Técnico em Informática Modalidade Integrado Instituto Federal do Sul de Minas, Câmpus Pouso Alegre Professora MsC. Michelle Nery

Instituto Federal do Sul de Minas, câmpus Pouso Alegre

Linguagem de Definição de Dados no MySQL - DDL

Alterar no nome do atributo

Modificar o tipo do atributo

Modificar o tamanho do atributo

Modificar o Default do atributo

Modificar o atributo para NULL ou Not NULL

Adicionar ou Remover uma constraint.

PRIMARY KEY

FOREIGN KEY

UNIQUE

CHECK

131

Page 132: Banco de Dados Curso Técnico em Informática Modalidade Integrado Instituto Federal do Sul de Minas, Câmpus Pouso Alegre Professora MsC. Michelle Nery

Instituto Federal do Sul de Minas, câmpus Pouso Alegre

Linguagem de Definição de Dados no MySQL - DDL

Alterar no nome do atributo:

ALTER TABLE nome_tabela

CHANGE nome_atributo novo_nome_atributo tipo_dado [NOT NULL] [DEFAULT(Expressão Padrão)];

Exemplo:

ALTER TABLE tbCliente CHANGE cidadeCliente cidCliente VARCHAR(50) NOT NULL;

132

Page 133: Banco de Dados Curso Técnico em Informática Modalidade Integrado Instituto Federal do Sul de Minas, Câmpus Pouso Alegre Professora MsC. Michelle Nery

Instituto Federal do Sul de Minas, câmpus Pouso Alegre

Linguagem de Definição de Dados no MySQL - DDL

Modificando o tamanho do atributo:

ALTER TABLE tbCliente

MODIFY nomeCliente VARCHAR(150);

Modificando ou adicionando um Default:

ALTER TABLE tbCliente

ALTER COLUMN ufCliente SET DEFAULT ‘SP’;

Excluindo o DEFAULT do atributo:

ALTER TABLE tbCliente

ALTER COLUMN ufCliente DROP DEFAULT;

133

Page 134: Banco de Dados Curso Técnico em Informática Modalidade Integrado Instituto Federal do Sul de Minas, Câmpus Pouso Alegre Professora MsC. Michelle Nery

Instituto Federal do Sul de Minas, câmpus Pouso Alegre

Linguagem de Definição de Dados no MySQL - DDL

Modificando o NULL ou NOT NULL:

ALTER TABLE tbCliente

MODIFY nomeCliente VARCHAR(150) NOT NULL;

134

Page 135: Banco de Dados Curso Técnico em Informática Modalidade Integrado Instituto Federal do Sul de Minas, Câmpus Pouso Alegre Professora MsC. Michelle Nery

Instituto Federal do Sul de Minas, câmpus Pouso Alegre

Linguagem de Definição de Dados no MySQL - DDL

Excluindo uma constraint de PRIMARY KEY;

ALTER TABLE tbCliente

DROP PRIMARY KEY;

A chave primária não pode ser auto incremento

Adicionado uma constraint de PRIMARY KEY;

ALTER TABLE tbCliente

ADD CONSTRAINT pk_tbCliente_codigoCliente PRIMARY KEY (codigoCliente);

135

Page 136: Banco de Dados Curso Técnico em Informática Modalidade Integrado Instituto Federal do Sul de Minas, Câmpus Pouso Alegre Professora MsC. Michelle Nery

Instituto Federal do Sul de Minas, câmpus Pouso Alegre

Linguagem de Definição de Dados no MySQL - DDL

Excluindo uma constraint de FOREIGN KEY;

ALTER TABLE tbTitulo

DROP FOREIGN KEY fk_tbTitulo_codigoClasse;

Adicionado uma constraint de FOREIGN KEY;

ALTER TABLE tbTitulo

ADD CONSTRAINT fk_tbTitulo_codigoClasse FOREIGN KEY (codigoClasse) REFERENCES tbClasse(codigoClasse) ON DELETE CASCADE ON UPDATE CASCADE;

136

Page 137: Banco de Dados Curso Técnico em Informática Modalidade Integrado Instituto Federal do Sul de Minas, Câmpus Pouso Alegre Professora MsC. Michelle Nery

Instituto Federal do Sul de Minas, câmpus Pouso Alegre

Linguagem de Definição de Dados no MySQL - DDL

Excluindo uma constraint UNIQUE:

ALTER TABLE tbCliente

DROP INDEX un_tbcliente_cpfCliente;

Adicionado uma constraint UNIQUE:

ALTER TABLE tbTitulo

ADD CONSTRAINT un_tbCliente_cpfCliente UNIQUE (cpfCliente);

137

O MySQL considera um restrição UNIQUE como INDEX.

Page 138: Banco de Dados Curso Técnico em Informática Modalidade Integrado Instituto Federal do Sul de Minas, Câmpus Pouso Alegre Professora MsC. Michelle Nery

Instituto Federal do Sul de Minas, câmpus Pouso Alegre

Linguagem de Definição de Dados no MySQL - DDL

Excluindo uma constraint de CHECK;

Adicionado uma constraint de CHECK;

ALTER TABLE tbClasse

ADD CONSTRAINT ck_tbClasse_nomeClasse CHECK (nomeClasse IN (‘Lançamento’, ‘Catálogo’));

138

Page 139: Banco de Dados Curso Técnico em Informática Modalidade Integrado Instituto Federal do Sul de Minas, Câmpus Pouso Alegre Professora MsC. Michelle Nery

Instituto Federal do Sul de Minas, câmpus Pouso Alegre

Atenção

Segundo um fórum, a constraint CHECK no mysql não funciona.

139

Page 140: Banco de Dados Curso Técnico em Informática Modalidade Integrado Instituto Federal do Sul de Minas, Câmpus Pouso Alegre Professora MsC. Michelle Nery

Instituto Federal do Sul de Minas, câmpus Pouso Alegre

Exercício

Insira um campo na tabela Cliente do banco de dados Vendas, denominado rgCliente, logo após o cpfCliente.

Renomeie o campo tipoPedido da tabela Pedido para tipoPagamentoPedido.

Adicione Default = 1 para quantidadeItem da tabela ItemPedido

Coloque todos os campos das tabelas como não nulos.

140

Page 141: Banco de Dados Curso Técnico em Informática Modalidade Integrado Instituto Federal do Sul de Minas, Câmpus Pouso Alegre Professora MsC. Michelle Nery

Instituto Federal do Sul de Minas, câmpus Pouso Alegre

Exercício

Coloque os atributos tbClientecodigoCliente, tbCategoracodigoCategora, tbClassecodigoClasse, tbTitulocodigoTitulo, tbFilmecodigoFilme como AUTO_INCREMENT.

Você precisará desabilitar as FOREIGN KEY. Use o comando: SET FOREIGN_KEY _CHECKS = 0;

Para habilitar use o comando SET FOREIGN_KEY _CHECKS = 1;

Para verificar o status das FOREIGN use o comando SELECT @@FOREIGN_KEY_CHECKS;

141

Page 142: Banco de Dados Curso Técnico em Informática Modalidade Integrado Instituto Federal do Sul de Minas, Câmpus Pouso Alegre Professora MsC. Michelle Nery

Instituto Federal do Sul de Minas, câmpus Pouso Alegre

Linguagem de Definição de Dados no MySQL - DDLÍndices

142

Page 143: Banco de Dados Curso Técnico em Informática Modalidade Integrado Instituto Federal do Sul de Minas, Câmpus Pouso Alegre Professora MsC. Michelle Nery

Instituto Federal do Sul de Minas, câmpus Pouso Alegre

Linguagem de Definição de Dados no MySQL - DDL

Quando executamos uma operação de SELECT sobre uma tabela, podemos filtrar um ou vários campos.

O gerenciador do banco efetua uma ação chamada “TABLE SCAN”.

Essa ação consiste em percorrer toda a tabela, avaliando cada registro. Caso o registro atenda às condições definidas no filtro, ele é incluído no conjunto de retorno, senão, é apenas desconsiderado.

143

Page 144: Banco de Dados Curso Técnico em Informática Modalidade Integrado Instituto Federal do Sul de Minas, Câmpus Pouso Alegre Professora MsC. Michelle Nery

Instituto Federal do Sul de Minas, câmpus Pouso Alegre

Linguagem de Definição de Dados no MySQL - DDL

144

Page 145: Banco de Dados Curso Técnico em Informática Modalidade Integrado Instituto Federal do Sul de Minas, Câmpus Pouso Alegre Professora MsC. Michelle Nery

Instituto Federal do Sul de Minas, câmpus Pouso Alegre

Linguagem de Definição de Dados no MySQL - DDL

Para melhorar essas consultas, utilizamos ÍNDICES, objetos do banco de dados que facilitam a organização e consulta de uma tabela, “indexando-a” por uma de suas colunas.

Quando criamos um índice em uma coluna, o gerenciador do banco ordena a tabela por essa coluna.

Na busca, a tabela sofre divisões sucessivas até que o registro desejado seja localizado.

145

Page 146: Banco de Dados Curso Técnico em Informática Modalidade Integrado Instituto Federal do Sul de Minas, Câmpus Pouso Alegre Professora MsC. Michelle Nery

Instituto Federal do Sul de Minas, câmpus Pouso Alegre

Linguagem de Definição de Dados no MySQL - DDL

Inicialmente a tabela é “dividida” na metade, onde os registros com os menores valores no campo indexado ficam na parte superior, e os registros com os maiores valores ficam na parte inferior.

O gerenciador verifica então em que parte está contido o valor pesquisado, se na primeira metade ou na segunda.

Isso é facilmente feito comparando o valor pesquisado com o do registro intermediário. Se o valor pesquisado for maior que o do registro intermediário, o registro desejado encontra-se na segunda metade, caso contrário, encontra-se na primeira metade.

146

Page 147: Banco de Dados Curso Técnico em Informática Modalidade Integrado Instituto Federal do Sul de Minas, Câmpus Pouso Alegre Professora MsC. Michelle Nery

Instituto Federal do Sul de Minas, câmpus Pouso Alegre

Linguagem de Definição de Dados no MySQL - DDL

147

Page 148: Banco de Dados Curso Técnico em Informática Modalidade Integrado Instituto Federal do Sul de Minas, Câmpus Pouso Alegre Professora MsC. Michelle Nery

Instituto Federal do Sul de Minas, câmpus Pouso Alegre

Linguagem de Definição de Dados no MySQL - DDL

Um índice é definido sobre um atributo para melhorar o desempenho das consultas.

Índices PRIMARY são índices únicos, e a indexação é feita pelo atributo que contém a chave primária.

Índices UNIQUE são índices que são associados a qualquer atributo da tabela, com restrição do valor do atributo ser único.

Índices INDEX cria um índice básico que não possui restrições de unicidade, permitindo valores repetidos. Podendo haver vários deles em uma tabela.

148

Page 149: Banco de Dados Curso Técnico em Informática Modalidade Integrado Instituto Federal do Sul de Minas, Câmpus Pouso Alegre Professora MsC. Michelle Nery

Instituto Federal do Sul de Minas, câmpus Pouso Alegre

Linguagem de Definição de Dados no MySQL - DDL

A criação desse último tipo de índice pode ser feita pelo comando CREATE ou ALTER TABLE.

Sintaxe:

CREATE [UNIQUE] INDEX nome do índice

ON nome da tabela (nome do atributo [, nome do outro atributo]);

ALTER TALBE nome da tabela

ADD [UNIQUE] (nome do atributo [, nome do outro atributo]);

149

É o mesmo que uma constraint UNIQUE.

Page 150: Banco de Dados Curso Técnico em Informática Modalidade Integrado Instituto Federal do Sul de Minas, Câmpus Pouso Alegre Professora MsC. Michelle Nery

Instituto Federal do Sul de Minas, câmpus Pouso Alegre

Linguagem de Definição de Dados no MySQL - DDL

Exemplo:

CREATE INDEX idx_nomeCliente ON tbCliente (nomeCliente);

ALTER TABLE tbCliente ADD INDEX idx_nomeCliente (nomeCliente);

150

Page 151: Banco de Dados Curso Técnico em Informática Modalidade Integrado Instituto Federal do Sul de Minas, Câmpus Pouso Alegre Professora MsC. Michelle Nery

Instituto Federal do Sul de Minas, câmpus Pouso Alegre

Linguagem de Definição de Dados no MySQL - DDL

Exemplo:

CREATE TABLE Cliente

(     codigoCliente  INT,     nomeCliente VARCHAR(50),

sobrenomeCliente VARCHAR(50);constraint pk_tbCliente_PRIMARY_KEY (codigoCliente),INDEX idx_sobrenomeCliente (sobrenomeCliente););

151

Page 152: Banco de Dados Curso Técnico em Informática Modalidade Integrado Instituto Federal do Sul de Minas, Câmpus Pouso Alegre Professora MsC. Michelle Nery

Instituto Federal do Sul de Minas, câmpus Pouso Alegre

Linguagem de Definição de Dados no MySQL - DDL

Um INDEX pode ser excluído por meio do comando DROP.

Sintaxe:

DROP INDEX nome do índice ON nome da tabela;

ALTER TABLE nome da tabela

DROP INDEX nome do índice;

152

Page 153: Banco de Dados Curso Técnico em Informática Modalidade Integrado Instituto Federal do Sul de Minas, Câmpus Pouso Alegre Professora MsC. Michelle Nery

Instituto Federal do Sul de Minas, câmpus Pouso Alegre

Linguagem de Definição de Dados no MySQL - DDL

Visualizar todo os índices:

SHOW INDEX FROM nome da tabela;

153

Page 154: Banco de Dados Curso Técnico em Informática Modalidade Integrado Instituto Federal do Sul de Minas, Câmpus Pouso Alegre Professora MsC. Michelle Nery

Instituto Federal do Sul de Minas, câmpus Pouso Alegre

Linguagem de Definição de Dados no MySQL - DDL

Dicas:

Os índices devem ser criados para atributos usados como condição em uma consulta (no WHERE), ordenamento e agrupamento.

Em tabelas que tem poucos registros não há necessidade de índice, e o seu uso pode causar perda de desempenho.

Deve-se indexar atributos que possuam poucos valores que se repetem. Exemplo, é desnecessário criar um índice para o tipo sexo.

Quanto menor o espaço ocupado por um tipo de dados, mais eficiente a indexação.

A ordem dos atributos no índice dá diferença no desempenho. Numa lista em ordem alfabética, pesquisar o sobrenome e depois pelo nome é mais eficiente do que pesquisar o nome e depois o sobrenome.

154

Page 155: Banco de Dados Curso Técnico em Informática Modalidade Integrado Instituto Federal do Sul de Minas, Câmpus Pouso Alegre Professora MsC. Michelle Nery

Instituto Federal do Sul de Minas, câmpus Pouso Alegre

Exercícios

Desenho o DER para o modelo relacional abaixo:

tbEmpregado (codidgoEmpregado, nomeEmpregado, ruaEmpregado, cidadeEmpregado, telefoneEmpregado, codigoGerente)

codigoGerente referencia tbGerente

tbTrabalha (codigoEmpregado, codigoCampanha, salario)

codigoEmpregado referencia tbEmpregado

codigoCampanha referente tbCampanha

tbCampanha(codigoCampanha, nomeCampanha, cidadeCampanha)

tbGerente (codigoGerente, nomeGerente)

155

Page 156: Banco de Dados Curso Técnico em Informática Modalidade Integrado Instituto Federal do Sul de Minas, Câmpus Pouso Alegre Professora MsC. Michelle Nery

Instituto Federal do Sul de Minas, câmpus Pouso Alegre

Exercícios

Explique para que serve um índice e quando devemos utilizá-lo.

Por que quando criamos um índice para o atributo sexo, esse índice não será eficiente?

Crie a base de dados usando comando SQL do modelo ER.

Defina a ordem de criação das tabelas e explique como você escolheu a ordem das tabelas.

Escreva os comandos SQL para criar todas as tabelas, na ordem definida no exercício anterior. As chaves primarias e estrangeiras, bem como qualquer restrição para um atributo deverão ser definidas diretamente no momento da criação das tabelas.

Crie um índice do tipo INDEX para nomeEmpregador na tabela tbEmpregado.

Crie um índice único para o nome da companhia na tabela companhia.

Acrescente o atributo telefoneGerente em tbGerente;

Exclua a tabela tbGerente.

156

Page 157: Banco de Dados Curso Técnico em Informática Modalidade Integrado Instituto Federal do Sul de Minas, Câmpus Pouso Alegre Professora MsC. Michelle Nery

Instituto Federal do Sul de Minas, câmpus Pouso Alegre

Linguagem de Modelagem de Dados no MySQL - DML157

Page 158: Banco de Dados Curso Técnico em Informática Modalidade Integrado Instituto Federal do Sul de Minas, Câmpus Pouso Alegre Professora MsC. Michelle Nery

Instituto Federal do Sul de Minas, câmpus Pouso Alegre

Linguagem de Modelagem de Dados no MySQL - DML

Depois que o esquema da base de dados, com suas tabelas e restrições foi criado usando os comando DDL, podemos começar a inserir os dados.

Para fazermos isso, usamos a Linguagem de Modelagem de Dados – DML.

Os comando dessa linguagem permite:

Inserir

Alterar

Excluir

Consultar

158

Page 159: Banco de Dados Curso Técnico em Informática Modalidade Integrado Instituto Federal do Sul de Minas, Câmpus Pouso Alegre Professora MsC. Michelle Nery

Instituto Federal do Sul de Minas, câmpus Pouso Alegre

Linguagem de Modelagem de Dados no MySQL - DML

Comando Inserir

O comando INSERT é usado quando queremos inserir dados no banco de dados.

Os valores dos atributos a serem inseridos devem estar na ordem que foram definidos no CREATE TABLE. Caso não estejam é necessário especificar a ordem.

159

Page 160: Banco de Dados Curso Técnico em Informática Modalidade Integrado Instituto Federal do Sul de Minas, Câmpus Pouso Alegre Professora MsC. Michelle Nery

Instituto Federal do Sul de Minas, câmpus Pouso Alegre

Linguagem de Modelagem de Dados no MySQL - DML

Sintaxe quando não se conhece a ordem dos atributos

INSERT INTO nome da tabela (atributo_1, atrubuto_2, atributo_3, ..., atributo_n)

VALUES (valor1, valor2, valor3 ..., valor_n);

Sintaxe quando se conhece a ordem dos atributos

INSERT INTO nome da tabela

VALUES (valor1, valor2, valor3 ..., valor_n);

160

Page 161: Banco de Dados Curso Técnico em Informática Modalidade Integrado Instituto Federal do Sul de Minas, Câmpus Pouso Alegre Professora MsC. Michelle Nery

Instituto Federal do Sul de Minas, câmpus Pouso Alegre

Linguagem de Modelagem de Dados no MySQL - DML

Exemplo quando não se conhece a ordem dos atributos

INSERT INTO tbClasse (codigoClasse, nomeClasse, precoClasse)

VALUES (1, ‘Lançamento’, 7.50);

Exemplo quando se conhece a ordem dos atributos

INSERT INTO tbClasse

VALUES (null, ‘Catálogo’, 5.00);

Inserimos um valor igual a null, pois a chave primária codigoClasse é automaticamente incrementada.

A mesma ação fazemos quando não queremos inserir valores para os atributos que permitem ser nulos.

Quando queremos inserir um valor que foi definido como DEFAULT no atributos, trocamos null por default.

161

Page 162: Banco de Dados Curso Técnico em Informática Modalidade Integrado Instituto Federal do Sul de Minas, Câmpus Pouso Alegre Professora MsC. Michelle Nery

Instituto Federal do Sul de Minas, câmpus Pouso Alegre

Linguagem de Modelagem de Dados no MySQL - DML

É importante lembrar que o valor de uma FOREIGN KEY deve ser um valor nulo (se você optou por null durante a criação da tabela) ou um valor cadastrado na sua PRIMARY KEY correspondente.

Você conseguiria inserir uma linha tabela tbFIlme. Se não, por quê?

162

Page 163: Banco de Dados Curso Técnico em Informática Modalidade Integrado Instituto Federal do Sul de Minas, Câmpus Pouso Alegre Professora MsC. Michelle Nery

Instituto Federal do Sul de Minas, câmpus Pouso Alegre

Linguagem de Modelagem de Dados no MySQL - DML

Caso você queira visualizar as linhas da tabela use o comando:

SELECT *FROM nome da tabela;

163

Page 164: Banco de Dados Curso Técnico em Informática Modalidade Integrado Instituto Federal do Sul de Minas, Câmpus Pouso Alegre Professora MsC. Michelle Nery

Instituto Federal do Sul de Minas, câmpus Pouso Alegre

Exercícios

Insira:

5 linhas na tabela tbCliente

2 linhas na tabela tbClasse

5 linhas na tabela tbCategoria

6 linhas na tabela tbTitulo

6 linhas na tabela tbFilme

3 linhas na tabela tbEmpDev

164

Page 165: Banco de Dados Curso Técnico em Informática Modalidade Integrado Instituto Federal do Sul de Minas, Câmpus Pouso Alegre Professora MsC. Michelle Nery

Instituto Federal do Sul de Minas, câmpus Pouso Alegre

Linguagem de Modelagem de Dados no MySQL - DML

Comando DELETE

O comando DELETE é utilizado para excluir registros de uma tabela.

Após a remoção, você não poderá desfazer a operação.

Sintaxe do comando DELETE

DELETE FROM nome da tabela;

Assim você excluirá todos os registros da tabela.

DELETE FROM nome da tabela

WHERE condição;

165

Page 166: Banco de Dados Curso Técnico em Informática Modalidade Integrado Instituto Federal do Sul de Minas, Câmpus Pouso Alegre Professora MsC. Michelle Nery

Instituto Federal do Sul de Minas, câmpus Pouso Alegre

Linguagem de Modelagem de Dados no MySQL - DML

Exemplo:

DELETE FROM tbEmpDev;

DELETE FROM tbEmpDev

WHERE codigoFilme = 1;

166

Page 167: Banco de Dados Curso Técnico em Informática Modalidade Integrado Instituto Federal do Sul de Minas, Câmpus Pouso Alegre Professora MsC. Michelle Nery

Instituto Federal do Sul de Minas, câmpus Pouso Alegre

Linguagem de Modelagem de Dados no MySQL - DML

Se você não usou o ON DELETE CASCADE na criação da tabela, não será possível excluir registros de uma tabela que tenham uma PRIMARY KEY que é referenciada por uma FOREIGN KEY em outra tabela.

Exemplo:

tbCliente

1, ‘000.000.000-00’, ‘MG-000.000.00’, ‘PEDRO’, ‘22/10/2014’, ‘POUSO ALEGRE’, ‘MG’

tbEmpDev

codigoCliente = 1

codigoFilme e demais não interessam...

Para deletar o cliente Pedro, eu tenho que excluir todas as linhas que fazem referencia a ele na tabela tbEmpDev.

167

Page 168: Banco de Dados Curso Técnico em Informática Modalidade Integrado Instituto Federal do Sul de Minas, Câmpus Pouso Alegre Professora MsC. Michelle Nery

Instituto Federal do Sul de Minas, câmpus Pouso Alegre

Linguagem de Modelagem de Dados no MySQL - DML

Se você usou o ON DELETE CASCADE na criação da tabela, ao excluir a linha da tabela tbCliente, o SGBD se encarregará de excluir também todos os registros referente a linha que você deletou na tabela tbEmpDev.

ATENÇÃO: NORMALMENTE NÃO SE EXCLUI DESSA MANEIRA INFORMAÇÕES EM UMA BANCO DE DADOS.

168

Page 169: Banco de Dados Curso Técnico em Informática Modalidade Integrado Instituto Federal do Sul de Minas, Câmpus Pouso Alegre Professora MsC. Michelle Nery

Instituto Federal do Sul de Minas, câmpus Pouso Alegre

Exercícios

Delete todos os registros da tabela cliente da cidade de Machado.

Se você não tiver um registo como especificado acima, insira um.

Visualize todas as linhas da tabela tbEmpDev e verifique se os registros do cliente que foram deletados se encontram nessa tabela.

Delete o registro com o código 1 da tabela tbFilme.

Visualize todas as linhas da tabela tbEmpDev e verifique se os registros do filme que foi deletado se encontram nessa tabela.

169

Page 170: Banco de Dados Curso Técnico em Informática Modalidade Integrado Instituto Federal do Sul de Minas, Câmpus Pouso Alegre Professora MsC. Michelle Nery

Instituto Federal do Sul de Minas, câmpus Pouso Alegre

Linguagem de Modelagem de Dados no MySQL - DML

Comanda UPDATE

O comando UPDATE modifica valores inseridos dentro de uma tabela.

Sintaxe

UPDATE nome da tabela SET

nome do atributo1 = novo valor,

nome do atributo2 = novo valor,

nome do atributo 3 = novo valor

WHERE condição;

170

Page 171: Banco de Dados Curso Técnico em Informática Modalidade Integrado Instituto Federal do Sul de Minas, Câmpus Pouso Alegre Professora MsC. Michelle Nery

Instituto Federal do Sul de Minas, câmpus Pouso Alegre

Linguagem de Modelagem de Dados no MySQL - DML

O comando SET é um comando de atribuição.

Deve-se especificar quais atributos terão seus valores alterados e o novo valor.

Utiliza-se uma condição especificando qual (ou quais) registro deverá ser alterado por meio do comando WHERE. Com esse comando, será feita uma procura por todos os registros que satisfaçam a condição, e desses encontrados, todos serão alterados.

171

Page 172: Banco de Dados Curso Técnico em Informática Modalidade Integrado Instituto Federal do Sul de Minas, Câmpus Pouso Alegre Professora MsC. Michelle Nery

Instituto Federal do Sul de Minas, câmpus Pouso Alegre

Linguagem de Modelagem de Dados no MySQL - DML

Suponha que você queira alterar o preço de filme da classe ‘Lançamento’ de R$ 7.50 para R$ 8.00. Para fazer isso, usamos o comando:

UPDATE tbClasse SET

precoClasse = 8.00

where nomeClasse = ‘Lançamento’;

172

Page 173: Banco de Dados Curso Técnico em Informática Modalidade Integrado Instituto Federal do Sul de Minas, Câmpus Pouso Alegre Professora MsC. Michelle Nery

Instituto Federal do Sul de Minas, câmpus Pouso Alegre

Linguagem de Modelagem de Dados no MySQL - DML

Suponha que você queira alterar todos os atributos de um registro da tabela tbClasse, dado uma condição que retorna apenas um único registro:

UPDATE tbClasse SET

codigoClasse = 1,

nomeClasse = ‘Novo’,

precoClasse = 8.50

where codigoClasse = 1;

NORMALMENTE UTILIZAMOS A CHAVE PRIMÁRIA PARA A CONDIÇÃO, POIS ELA RETORNA APENAS UM ÚNICO REGISTRO, NA MAIORIA DAS VEZES.

173

Page 174: Banco de Dados Curso Técnico em Informática Modalidade Integrado Instituto Federal do Sul de Minas, Câmpus Pouso Alegre Professora MsC. Michelle Nery

Instituto Federal do Sul de Minas, câmpus Pouso Alegre

Linguagem de Modelagem de Dados no MySQL - DML

Se você não usou o ON UPDATE CASCADE na criação da tabela, ao tentar alterar um valor de uma PRIMARY KEY que é referenciada por uma FOREIGN KEY, o SGBD emitirá um erro.

Exemplo:

tbCliente

1, ‘000.000.000-00’, ‘MG-000.000.00’, ‘PEDRO’, ‘22/10/2014’, ‘POUSO ALEGRE’, ‘MG’

tbEmpDev

codigoCliente = 1

codigoFilme e demais não interessam...

O que aconteceria se você alterasse o código do cliente na tabela tbCliente de 1 para 2?

Erro.

174

Page 175: Banco de Dados Curso Técnico em Informática Modalidade Integrado Instituto Federal do Sul de Minas, Câmpus Pouso Alegre Professora MsC. Michelle Nery

Instituto Federal do Sul de Minas, câmpus Pouso Alegre

Linguagem de Modelagem de Dados no MySQL - DML

Se você usou o ON UPDATE CASCADE na criação da tabela, ao alterar o codigoCliente da tabela tbCliente, o SGBD se encarregará de alterar também todos os registros referente a linha que você alterou na tabela tbEmpDev.

175

Page 176: Banco de Dados Curso Técnico em Informática Modalidade Integrado Instituto Federal do Sul de Minas, Câmpus Pouso Alegre Professora MsC. Michelle Nery

Instituto Federal do Sul de Minas, câmpus Pouso Alegre

Exercício

Altere todos os atributos de um registro de cada tabela.

176

Page 177: Banco de Dados Curso Técnico em Informática Modalidade Integrado Instituto Federal do Sul de Minas, Câmpus Pouso Alegre Professora MsC. Michelle Nery

Instituto Federal do Sul de Minas, câmpus Pouso Alegre

Linguagem de Modelagem de Dados no MySQL - DML

Comando SELECT

As consultas são feitas através de três comandos SELECT, FROM e WHERE.

SELECT: usado para selecionar os atributos desejados no resultado de uma consulta.

FROM: define quais tabelas serão usadas na consulta.

WHERE: descreve a condição da consulta. Não é obrigatório quando você quiser consultar todos os registros de uma tabela sem especificação.

177

Page 178: Banco de Dados Curso Técnico em Informática Modalidade Integrado Instituto Federal do Sul de Minas, Câmpus Pouso Alegre Professora MsC. Michelle Nery

Instituto Federal do Sul de Minas, câmpus Pouso Alegre

Linguagem de Modelagem de Dados no MySQL - DML

Sintaxe do comando SELECT:

SELECT * FROM nome da tabela [WHERE condição]

Exemplo:

SELECT * FROM tbCliente WHERE cidadeCliente = ‘Pouso Alegre’;

O resultado de uma consulta em SQL será sempre uma tabela, mesmo que ela tenha apenas 1 linha e 1 coluna.

178

Page 179: Banco de Dados Curso Técnico em Informática Modalidade Integrado Instituto Federal do Sul de Minas, Câmpus Pouso Alegre Professora MsC. Michelle Nery

Instituto Federal do Sul de Minas, câmpus Pouso Alegre

Linguagem de Modelagem de Dados no MySQL - DML

Um consulta SQL permite que no seu resultado apareçam valores duplicados. Para forçar a eliminação de duplicidade no resultado de uma consulta, usa-se o comando DISTINCT.

Supondo que você queira saber de quais cidades você possui clientes para então fazer cartazes de propagandas.

Sintaxe do comando DISTINCT:

SELECT DISTINCT atributos FROM nome da tabela;

Exemplo:

SELECT DISTINCT cidadeCliente FROM tbCliente;

179

Page 180: Banco de Dados Curso Técnico em Informática Modalidade Integrado Instituto Federal do Sul de Minas, Câmpus Pouso Alegre Professora MsC. Michelle Nery

Instituto Federal do Sul de Minas, câmpus Pouso Alegre

Linguagem de Modelagem de Dados no MySQL - DML

Você pode usar o * quando quiser listar todos os registros de uma determinada tabela:

Sintaxe:

SELECT * FROM nome da tabela;

Exemplo:

SELECT * FROM tbcliente;

180

Page 181: Banco de Dados Curso Técnico em Informática Modalidade Integrado Instituto Federal do Sul de Minas, Câmpus Pouso Alegre Professora MsC. Michelle Nery

Instituto Federal do Sul de Minas, câmpus Pouso Alegre

Linguagem de Modelagem de Dados no MySQL - DML

Um comando SELECT pode conter também expressões aritméticas (+, -, *, /).

Exemplo

SELECT tbClasse.nomeClasse, tbClass.precoClasse * 1.05 FROM tbClasse;

Você pode especificar o nome da tabela.nome do atributo, quando você não desejar consultar todos os atributos.

Utilizar as expressões aritméticas não alteram o valor do registro.

181

Page 182: Banco de Dados Curso Técnico em Informática Modalidade Integrado Instituto Federal do Sul de Minas, Câmpus Pouso Alegre Professora MsC. Michelle Nery

Instituto Federal do Sul de Minas, câmpus Pouso Alegre

Linguagem de Modelagem de Dados no MySQL - DML

O comando WHERE sempre terá associado a ele uma condição que determina quais registros deverão ser retornados pela consulta.

Por exemplo, se quisermos saber o nome de todos os clientes que moram em Pouso Alegre.

SELECT tbCliente.nomeCliente

FROM tbCliente

WHERE tbCliente.cidadeCliente = ‘Pouso Alegre’;

182

Page 183: Banco de Dados Curso Técnico em Informática Modalidade Integrado Instituto Federal do Sul de Minas, Câmpus Pouso Alegre Professora MsC. Michelle Nery

Instituto Federal do Sul de Minas, câmpus Pouso Alegre

Linguagem de Modelagem de Dados no MySQL - DML

Pode-se utilizar junto ao comando WHERE:

Os operadores lógicos AND, OR, e NOT.

Os operadores relacionais <, <=, >, >=, = e <>.

Exemplo: Encontrar todos os clientes da cidade de Pouso Alegre, em que o código do cliente seja menor que 5.

SELECT tbCliente.nomeCliente

FROM tbCliente

WHERE tbCliente.cidadeCliente = ‘Pouso Alegre’

AND tbcliente.codigoCliente < 5;

183

Page 184: Banco de Dados Curso Técnico em Informática Modalidade Integrado Instituto Federal do Sul de Minas, Câmpus Pouso Alegre Professora MsC. Michelle Nery

Instituto Federal do Sul de Minas, câmpus Pouso Alegre

Linguagem de Modelagem de Dados no MySQL - DML

A SQL disponibiliza ainda um operador de comparação chamado BETWEEN, que pode ser usado para simplificar a cláusula WHERE.

Este operador especifica um intervalo de valores.

Exemplo: Encontre o nome de todos os clientes da cidade de ‘Pouso Alegre’ que tenham data de cadastro no ano de 2014.

SELECT tbCliente.nomeCliente

FROM tbCliente

WHERE tbCliente.cidadeCliente = ‘Pouso Alegre’

AND tbCliente.dataCasdastroCliente BETWEEN ‘2014-01-01’ AND ‘2014-12-31’;

184

Page 185: Banco de Dados Curso Técnico em Informática Modalidade Integrado Instituto Federal do Sul de Minas, Câmpus Pouso Alegre Professora MsC. Michelle Nery

Instituto Federal do Sul de Minas, câmpus Pouso Alegre

Linguagem de Modelagem de Dados no MySQL - DML

O comando NOT BETWEEN pode ser usado para consultar registros que estejam fora do intervalo de valores.

Exemplo:

SELECT tbCliente.nomeCliente

FROM tbCliente

WHERE tbCliente.cidadeCliente = ‘Pouso Alegre’

AND tbCliente.dataCasdastroCliente NOT BETWEEN ‘2014-01-01’ AND ‘2014-12-31’;

185

Page 186: Banco de Dados Curso Técnico em Informática Modalidade Integrado Instituto Federal do Sul de Minas, Câmpus Pouso Alegre Professora MsC. Michelle Nery

Instituto Federal do Sul de Minas, câmpus Pouso Alegre

Linguagem de Modelagem de Dados no MySQL - DML

O comando FROM define quais tabela serão utilizadas em uma consulta, ou seja, de quais tabelas devemos buscar os dados.

Até agora, usamos apenas uma tabela no comando FROM. No entanto, é comum usar mais que uma para que possamos obter informações interessantes.

IMPORTANTE: Usar numa consulta o menor número de tabelas possível por questão de desempenho.

186

Page 187: Banco de Dados Curso Técnico em Informática Modalidade Integrado Instituto Federal do Sul de Minas, Câmpus Pouso Alegre Professora MsC. Michelle Nery

Instituto Federal do Sul de Minas, câmpus Pouso Alegre

Linguagem de Modelagem de Dados no MySQL - DML

Quando precisamos utilizar duas ou mais tabelas, podemos fazer o produto cartesiano dessas tabelas.

O produto cartesiano permite combinar informações de várias tabelas fazendo a combinação de todos os dados de uma tabela com todos os dados de outra tabela.

187

Page 188: Banco de Dados Curso Técnico em Informática Modalidade Integrado Instituto Federal do Sul de Minas, Câmpus Pouso Alegre Professora MsC. Michelle Nery

Instituto Federal do Sul de Minas, câmpus Pouso Alegre

Linguagem de Modelagem de Dados no MySQL - DML

Imagine que tenhamos os seguintes dados nas tabelas tbCategoria e tbTitulo:

tbCategoria

tbTitulo

188

codigoCategoria nomeCategoria

1 Terror

2 Drama

3 Comédia

codigoTitulo

nomeTitulo codigoCategoria

1 Mortos Vivos 1

2 Superando Desafios 3

3 A Hilariante 2

4 O Bicho Papão 1

Page 189: Banco de Dados Curso Técnico em Informática Modalidade Integrado Instituto Federal do Sul de Minas, Câmpus Pouso Alegre Professora MsC. Michelle Nery

Instituto Federal do Sul de Minas, câmpus Pouso Alegre

Linguagem de Modelagem de Dados no MySQL - DML

Suponha que queiramos fazer uma consulta que retorne os dados sobre títulos e a qual categoria pertencem. Para isso, teremos que usas as tabelas tbCategoria e tbTitulo, como mostra abaixo:

SELECT * FROM tbTitutlo, tbCategoria;

189

O produto cartesiano é indicado pela ,

Page 190: Banco de Dados Curso Técnico em Informática Modalidade Integrado Instituto Federal do Sul de Minas, Câmpus Pouso Alegre Professora MsC. Michelle Nery

Instituto Federal do Sul de Minas, câmpus Pouso Alegre

Linguagem de Modelagem de Dados no MySQL - DML

Como o produto cartesiano fará a combinação de todos os registros da tabela tbCategoria e tbTitulo, o resultado do produto cartesiano para o nosso exemplo será uma tabela com 12 registros (3 tbCategoria * 4 tbTitulo).

Uma combinação das linhas da tabela tbCategoria com as linhas da tabela tbTitulo.

190

Page 191: Banco de Dados Curso Técnico em Informática Modalidade Integrado Instituto Federal do Sul de Minas, Câmpus Pouso Alegre Professora MsC. Michelle Nery

Instituto Federal do Sul de Minas, câmpus Pouso Alegre

Linguagem de Modelagem de Dados no MySQL - DML

191

codigoTitulo nomeTitulo codigoCategor

iacodigoCategor

ianomeCategor

ia1 Mortos Vivos 1 1 Terror

1 Mortos Vivos 1 2 Drama

1 Mortos Vivos 1 3 Comédia

2 Superando Desafios 3 1 Terror

2 Superando Desafios 3 2 Drama

2 Superando Desafios 3 3 Comédia

3 A Hilariante 2 1 Terror

3 A Hilariante 2 2 Drama

3 A Hilariante 2 3 Comédia

4 O Bicho Papão 1 1 Terror

4 O Bicho Papão 1 2 Drama

4 O Bicho Papão 1 3 Comédia

Page 192: Banco de Dados Curso Técnico em Informática Modalidade Integrado Instituto Federal do Sul de Minas, Câmpus Pouso Alegre Professora MsC. Michelle Nery

Instituto Federal do Sul de Minas, câmpus Pouso Alegre

Linguagem de Modelagem de Dados no MySQL - DML

A consulta deveria retornar apenas as linhas pintadas de cinza.

O filme “Mortos Vivos” é apenas da categoria “Terror”.

Como resolver isso?

Observe na tabela que as linhas que estão corretas no nosso resultado são aquelas que têm chave primária em uma tabela (tbCategoria.codigoCategoria) igual a chave estrangeira de outra tabela (tbTitulo.codigoCategoria).

Portanto, para resolver isso temo que coloca ruma condição WHERE que diga que o valor de PK deve ser igual ao valor de FK.

192

Page 193: Banco de Dados Curso Técnico em Informática Modalidade Integrado Instituto Federal do Sul de Minas, Câmpus Pouso Alegre Professora MsC. Michelle Nery

Instituto Federal do Sul de Minas, câmpus Pouso Alegre

Linguagem de Modelagem de Dados no MySQL - DML

SELECT * FROM tbTitulo, tbCategoria

WHERE tbCategoria.codigoCategoria = tbTitulo.codigoCategoria;

193

codigoTitulo nomeTitulo codigoCategor

iacodigoCategor

ianomeCategor

ia1 Mortos Vivos 1 1 Terror

1 Superando Desafios 3 3 Comédia

2 A Hilariante 2 2 Drama

2 O Bicho Papão 1 1 Terror

Page 194: Banco de Dados Curso Técnico em Informática Modalidade Integrado Instituto Federal do Sul de Minas, Câmpus Pouso Alegre Professora MsC. Michelle Nery

Instituto Federal do Sul de Minas, câmpus Pouso Alegre

Linguagem de Modelagem de Dados no MySQL - DML

A forma mais utilizada de se escrever uma consulta que utilize duas ou mais tabela é usando o comando INNER JOIN.

A diferença é que esse comando possui uma condição de junção. Essa condição é a mesma que fizemos no WHERE (PK = FK). No entanto, como ela é aplicado no FROM ela permite que os dados sejam filtrados durante a execução do FROM, diminuindo o tempo de execução de consulta, uma vez que o número de registros pesquisados será menor agora que só temos os dados que são corretos.

194

Page 195: Banco de Dados Curso Técnico em Informática Modalidade Integrado Instituto Federal do Sul de Minas, Câmpus Pouso Alegre Professora MsC. Michelle Nery

Instituto Federal do Sul de Minas, câmpus Pouso Alegre

Linguagem de Modelagem de Dados no MySQL - DML

Exemplo:

SELECT * FROM tbTitulo

INNER JOIN tbCategoria ON tbCategoria.codigoCategoria = tbTitulo.codigoCategoria;

195

Page 196: Banco de Dados Curso Técnico em Informática Modalidade Integrado Instituto Federal do Sul de Minas, Câmpus Pouso Alegre Professora MsC. Michelle Nery

Instituto Federal do Sul de Minas, câmpus Pouso Alegre

Linguagem de Modelagem de Dados no MySQL - DML

Sintaxe do comando INNER JOIN

SELECT atributo1, atributo2 ... atributo_n

FROM tabela1 INNER JOIN tabela2 ON condição da junção entre as tabelas 1 e 2

[INNER JOIN tabela 3 ON condição da junção entre as tabelas 1 e 3];

Exemplo:

SELECT * FROM tbTitulo

INNER JOIN tbCategoria ON tbCategoria.codigoCategoria = tbTitulo.codigoCategoria

IINER JOIN tbClasse ON tbTitulo.codigoClasse = tbClasse.codigoClasse

196

Page 197: Banco de Dados Curso Técnico em Informática Modalidade Integrado Instituto Federal do Sul de Minas, Câmpus Pouso Alegre Professora MsC. Michelle Nery

Instituto Federal do Sul de Minas, câmpus Pouso Alegre

Exercícios

Tabela Locadora

1. Faça uma consulta na tabela locadora que retorne o nome e a cidade de todos os clientes cadastrados.

2. Faça uma consulta que retorne todos os nomes dos títulos e os respectivos nomes dos distribuidores dos filmes.

3. Faça uma consulta que retorne o nome de todos os filmes da categoria ‘Terror’.

4. Faça uma consulta que retorne o nome do cliente, a data do empréstimo, a data da devolução prevista e o nome dos títulos que foram emprestados.

1. Insira registros na tabela venda e faz 3 consultas com o comando INNER JOIN.

197

Page 198: Banco de Dados Curso Técnico em Informática Modalidade Integrado Instituto Federal do Sul de Minas, Câmpus Pouso Alegre Professora MsC. Michelle Nery

Instituto Federal do Sul de Minas, câmpus Pouso Alegre

Conteúdo Extra

http://www.fabricio.pro.br/OA/ex/ex03.htm

http://www.ceunes.ufes.br/downloads/2/mariateixeira-Banco%20de%20Dados.DDL%20DML.Exerc%C3%ADcios%20e%20Exemplos%20Resolvidos.pdf

198

Page 199: Banco de Dados Curso Técnico em Informática Modalidade Integrado Instituto Federal do Sul de Minas, Câmpus Pouso Alegre Professora MsC. Michelle Nery

Bibliográfica

Bibliografia Básica

ELMASRI, R.; Navathe, S. B. Sistemas de Banco de Dados. 6ª ed. São Paulo: Pearson Education do Brasil, 2011.

KORT, Henry F. et all. Sistema de Bancos de Dados. 5ª Ed. São Paulo: Campus, 2006.

MILANI, A. MySQL: Guia do Programador. São Paulo: Editora Novatec, 2007.

Bibliografia Complementar

ABREU, M; MACHADO, F. N. R. Projeto de banco de dados – Uma visão prática. 16. ed. São Paulo: Erica, 2009.

ALVES, W. P. Banco de dados – teoria e desenvolvimento. São Paulo: Erica: 2009.

HEUSER, C. A. Projeto de banco de dados. 6. ed. Porto Alegre: Bookman Companhia, 2009.

RAMAKRISHNAN, R.; GEHRKE, J. Sistemas de gerenciamento de banco de dados. 3. ed. São Paulo: McGraw Hill - Artmed: 2008.

ROB, Peter; CORONEL, Carlos. Sistemas de Banco de Dados – Projeto, Implementaçao e Administração. São Paulo: Cengage Learning: 2010.