A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

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.

Apresentações semelhantes


Apresentação em tema: "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."— Transcrição da apresentação:

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

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 Instituto Federal do Sul de Minas, câmpus Pouso Alegre 2

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. Instituto Federal do Sul de Minas, câmpus Pouso Alegre 3

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). Instituto Federal do Sul de Minas, câmpus Pouso Alegre 4

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. Instituto Federal do Sul de Minas, câmpus Pouso Alegre 5

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) Instituto Federal do Sul de Minas, câmpus Pouso Alegre 6

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). Instituto Federal do Sul de Minas, câmpus Pouso Alegre 7

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. Instituto Federal do Sul de Minas, câmpus Pouso Alegre 8

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. Instituto Federal do Sul de Minas, câmpus Pouso Alegre 9

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. Instituto Federal do Sul de Minas, câmpus Pouso Alegre 10

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. Instituto Federal do Sul de Minas, câmpus Pouso Alegre 11

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. Instituto Federal do Sul de Minas, câmpus Pouso Alegre 12

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 (teste).  O MySQL foi vendido pela Sun Microsystem, por 1 bilhão de dólares em  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). Instituto Federal do Sul de Minas, câmpus Pouso Alegre 13

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). Instituto Federal do Sul de Minas, câmpus Pouso Alegre 14

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  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  gerenciador do banco de dados MySQL.  PHPMyAdmin  IDE para administração do MySQL Instituto Federal do Sul de Minas, câmpus Pouso Alegre 15

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. Instituto Federal do Sul de Minas, câmpus Pouso Alegre 16

17 Instalação do MySQL Instituto Federal do Sul de Minas, câmpus Pouso Alegre 17

18 Instalação do MySQL 4.Aceite os termos de instalação. 5.Clique em Next. Instituto Federal do Sul de Minas, câmpus Pouso Alegre 18

19 Instalação do MySQL Instituto Federal do Sul de Minas, câmpus Pouso Alegre 19

20 Instalação do MySQL 6.Aceite os termos de instalação. 7.Clique em Next. Instituto Federal do Sul de Minas, câmpus Pouso Alegre 20

21 Instalação do MySQL Instituto Federal do Sul de Minas, câmpus Pouso Alegre 21

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. Instituto Federal do Sul de Minas, câmpus Pouso Alegre 22

23 Instalação do MySQL Instituto Federal do Sul de Minas, câmpus Pouso Alegre 23

24 Instalação do MySQL 10.Clique em Install. Instituto Federal do Sul de Minas, câmpus Pouso Alegre 24

25 Instalação do MySQL Instituto Federal do Sul de Minas, câmpus Pouso Alegre 25

26 Instalação do MySQL 11.Aguarde a instalação. Instituto Federal do Sul de Minas, câmpus Pouso Alegre 26

27 Instalação do MySQL Instituto Federal do Sul de Minas, câmpus Pouso Alegre 27

28 Instalação do MySQL Instituto Federal do Sul de Minas, câmpus Pouso Alegre 28

29 Instalação do MySQL 12.Selecione o navegador padrão. 13.Clique em abrir. Instituto Federal do Sul de Minas, câmpus Pouso Alegre 29

30 Instalação do MySQL Instituto Federal do Sul de Minas, câmpus Pouso Alegre 30

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. Instituto Federal do Sul de Minas, câmpus Pouso Alegre 31

32 Instalação do MySQL Instituto Federal do Sul de Minas, câmpus Pouso Alegre 32

33 Instalação do MySQL 18.Clique em Finish. Instituto Federal do Sul de Minas, câmpus Pouso Alegre 33

34 Instalação do MySQL Instituto Federal do Sul de Minas, câmpus Pouso Alegre 34

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. Instituto Federal do Sul de Minas, câmpus Pouso Alegre 35

36 Instalação do MySQL Instituto Federal do Sul de Minas, câmpus Pouso Alegre 36

37 Instalação do MySQL  Clicar em Colocar online. Instituto Federal do Sul de Minas, câmpus Pouso Alegre 37

38 Instalação do MySQL Instituto Federal do Sul de Minas, câmpus Pouso Alegre 38

39 Instalação do MySQL  O seguinte erro poderá aparecer. Instituto Federal do Sul de Minas, câmpus Pouso Alegre 39

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 Instituto Federal do Sul de Minas, câmpus Pouso Alegre 40

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 41

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:  Para acessar o PHPMYADMIN também deverá adicionar 8080 no seu navegador utilizando o caminho: Instituto Federal do Sul de Minas, câmpus Pouso Alegre 42

43 Iniciando com o MySQL  Vamos começar via CONSOLE. Instituto Federal do Sul de Minas, câmpus Pouso Alegre 43

44 Iniciando com o MySQL  A principio não existe uma senha. Só dê enter. Instituto Federal do Sul de Minas, câmpus Pouso Alegre 44

45 Iniciando com o MySQL  Para logar no MySQL é necessário um usuário.  O usuário principal é o root, a principio sem senha. Instituto Federal do Sul de Minas, câmpus Pouso Alegre 45

46 Linguagem de Controle de Dados - DCL Instituto Federal do Sul de Minas, câmpus Pouso Alegre 46

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. Instituto Federal do Sul de Minas, câmpus Pouso Alegre 47

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 IDENTIFIED BY ‘123456';  Nome do usuário: michellenery  Senha:  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. Instituto Federal do Sul de Minas, câmpus Pouso Alegre 48

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 = Instituto Federal do Sul de Minas, câmpus Pouso Alegre 49

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 Instituto Federal do Sul de Minas, câmpus Pouso Alegre 50

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(); Instituto Federal do Sul de Minas, câmpus Pouso Alegre 51

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. Instituto Federal do Sul de Minas, câmpus Pouso Alegre 52

53 Gerenciamento de Usuário no MySQL - DCL  Sair do Usuário  Para sair do usuário, basta digitar o comando quit; Instituto Federal do Sul de Minas, câmpus Pouso Alegre 53

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. Instituto Federal do Sul de Minas, câmpus Pouso Alegre 54

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] Instituto Federal do Sul de Minas, câmpus Pouso Alegre 55

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. Instituto Federal do Sul de Minas, câmpus Pouso Alegre 56

57 Gerenciamento de Usuário no MySQL - DCL  Privilégios  Abaixo a lista de privilégios. Instituto Federal do Sul de Minas, câmpus Pouso Alegre 57

58 PrivilégioColunaContexto ALTERAlter_privtabelas DELETEDelete_privtabelas INDEXIndex_privtabelas INSERTInsert_privtabelas SELECTSelect_privtabelas UPDATEUpdate_privtabelas CREATECreate_privbanco de dados, tabelas, ou índices DROPDrop_privbanco de dados ou tabelas GRANTGrant_privbanco de dados ou tabelas REFERENCESReferences_privbanco de dados ou tabelas CREATE TEMPORARY TABLESCreate_tmp_tabela_privadministração do servidor EXECUTEExecute_privadministração do servidor FILEFile_privacessa a arquivos no servidor LOCK TABLESLock_tabelas_privadministração do servidor PROCESSProcess_privadministração do servidor RELOADReload_privadministração do servidor REPLICATION CLIENTRepl_client_privadministração do servidor REPLICATION SLAVERepl_slave_privadministração do servidor SHOW DATABASESShow_db_privadministração do servidor SHUTDOWNShutdown_privadministração do servidor SUPERSuper_privadministração do servidor Instituto Federal do Sul de Minas, câmpus Pouso Alegre 58

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. Instituto Federal do Sul de Minas, câmpus Pouso Alegre 59

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: Instituto Federal do Sul de Minas, câmpus Pouso Alegre 60 NíveisDescriçã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... )

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. Instituto Federal do Sul de Minas, câmpus Pouso Alegre 61

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 é GRANT SELECT (nome, idade) ON rh.pessoa TO 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. Instituto Federal do Sul de Minas, câmpus Pouso Alegre 62

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 Instituto Federal do Sul de Minas, câmpus Pouso Alegre 63

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,... Instituto Federal do Sul de Minas, câmpus Pouso Alegre 64

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. Instituto Federal do Sul de Minas, câmpus Pouso Alegre 65

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; Instituto Federal do Sul de Minas, câmpus Pouso Alegre 66

67 Lista de Exercícios  O que faz os privilégios abaixo?  GRANT select ON blog.pessoas TO  GRANT all ON blog.* TO WITH GRANT OPTION;  GRANT select, insert, update ON blog.* TO  GRANT all ON *.* TO WITH GRANT OPTION;  GRANT select ON blog.* TO IDENTIFIED BY "123456"; Instituto Federal do Sul de Minas, câmpus Pouso Alegre 67

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? Instituto Federal do Sul de Minas, câmpus Pouso Alegre 68

69 Linguagem de Definição de Dados - DDL Instituto Federal do Sul de Minas, câmpus Pouso Alegre 69

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). Instituto Federal do Sul de Minas, câmpus Pouso Alegre 70

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. Instituto Federal do Sul de Minas, câmpus Pouso Alegre 71

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 Instituto Federal do Sul de Minas, câmpus Pouso Alegre 72

73 Linguagem de Definição de Dados no MySQL - DDL  Modelo Exemplo:  O modelo relacional utilizado nos exemplos será descrito na figura abaixo: Instituto Federal do Sul de Minas, câmpus Pouso Alegre 73

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

75 Modelo Relacional para Locadora de Filmes  Cliente (codigocliente: inteiro, cpfCliente: caracter(11), nomeCliente: caracter(200), cidadeCliente: caracter(50), ufCliente: caracter(2), dataCadastroCliente:data) Instituto Federal do Sul de Minas, câmpus Pouso Alegre 75

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 Instituto Federal do Sul de Minas, câmpus Pouso Alegre 76

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 Instituto Federal do Sul de Minas, câmpus Pouso Alegre 77

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. Instituto Federal do Sul de Minas, câmpus Pouso Alegre 78

79 Linguagem de Definição de Dados no MySQL - DDL Criar Banco de dados Remover Banco de Dados Usar Banco de Dados Instituto Federal do Sul de Minas, câmpus Pouso Alegre 79

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; Instituto Federal do Sul de Minas, câmpus Pouso Alegre 80

81 Linguagem de Definição de Dados no MySQL - DDL  Comando SQL para criar o esquema de banco de dados Locadora:  CREATE DATABASE Locadora; Instituto Federal do Sul de Minas, câmpus Pouso Alegre 81

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. Instituto Federal do Sul de Minas, câmpus Pouso Alegre 82

83 Linguagem de Definição de Dados no MySQL - DDL  Comando SQL para especificar um banco de dados a ser usado:  USE Locadora; Instituto Federal do Sul de Minas, câmpus Pouso Alegre 83

84 Linguagem de Definição de Dados no MySQL - DDL Criar Tabelas Remover Tabelas Alterar Tabelas Instituto Federal do Sul de Minas, câmpus Pouso Alegre 84

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; Instituto Federal do Sul de Minas, câmpus Pouso Alegre 85

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)],... [Demais restrições] ); Instituto Federal do Sul de Minas, câmpus Pouso Alegre 86

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: Instituto Federal do Sul de Minas, câmpus Pouso Alegre 87

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

89 Linguagem de Definição de Dados no MySQL - DDL  Tipos numéricos Inteiros: Instituto Federal do Sul de Minas, câmpus Pouso Alegre 89

90 Linguagem de Definição de Dados no MySQL - DDL  Tipos numéricos booleanos: Instituto Federal do Sul de Minas, câmpus Pouso Alegre 90

91 Linguagem de Definição de Dados no MySQL - DDL  Tipos numéricos decimais: Instituto Federal do Sul de Minas, câmpus Pouso Alegre 91

92 Linguagem de Definição de Dados no MySQL - DDL  Tipos de Data: Instituto Federal do Sul de Minas, câmpus Pouso Alegre 92

93 Linguagem de Definição de Dados no MySQL - DDL  Tipos de caracteres: Instituto Federal do Sul de Minas, câmpus Pouso Alegre 93

94 Linguagem de Definição de Dados no MySQL - DDL  Diferença de armazenamento entre os tipos Char e VarChar: Instituto Federal do Sul de Minas, câmpus Pouso Alegre 94

95 Linguagem de Definição de Dados no MySQL - DDL  Tipos de Listas: Instituto Federal do Sul de Minas, câmpus Pouso Alegre 95

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. Instituto Federal do Sul de Minas, câmpus Pouso Alegre 96

97 Restrições de Integridade Instituto Federal do Sul de Minas, câmpus Pouso Alegre 97

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. Instituto Federal do Sul de Minas, câmpus Pouso Alegre 98

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. Instituto Federal do Sul de Minas, câmpus Pouso Alegre 99

100 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. Instituto Federal do Sul de Minas, câmpus Pouso Alegre 100

101 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. Instituto Federal do Sul de Minas, câmpus Pouso Alegre 101

102 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. Instituto Federal do Sul de Minas, câmpus Pouso Alegre 102

103 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] Instituto Federal do Sul de Minas, câmpus Pouso Alegre 103

104 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); Instituto Federal do Sul de Minas, câmpus Pouso Alegre 104

105 Linguagem de Definição de Dados no MySQL - DDL Instituto Federal do Sul de Minas, câmpus Pouso Alegre 105

106 Linguagem de Definição de Dados no MySQL - DDL  Pesquise na internet um exemplo para cada uma das restrições citadas acima. Instituto Federal do Sul de Minas, câmpus Pouso Alegre 106

107 Criando as Tabelas Instituto Federal do Sul de Minas, câmpus Pouso Alegre 107

108 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) ); Instituto Federal do Sul de Minas, câmpus Pouso Alegre 108

109 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) ); Instituto Federal do Sul de Minas, câmpus Pouso Alegre 109

110 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’)) ); Instituto Federal do Sul de Minas, câmpus Pouso Alegre 110

111 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 ); Instituto Federal do Sul de Minas, câmpus Pouso Alegre 111

112 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 ); Instituto Federal do Sul de Minas, câmpus Pouso Alegre 112

113 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

114 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) ); Instituto Federal do Sul de Minas, câmpus Pouso Alegre 114

115 Excluindo uma Tabela Instituto Federal do Sul de Minas, câmpus Pouso Alegre 115

116 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. Instituto Federal do Sul de Minas, câmpus Pouso Alegre 116

117 Renomear uma Tabela Instituto Federal do Sul de Minas, câmpus Pouso Alegre 117

118 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; Instituto Federal do Sul de Minas, câmpus Pouso Alegre 118

119 Mostrando as Estruturas das Tabelas e Banco de Dados Instituto Federal do Sul de Minas, câmpus Pouso Alegre 119

120 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; Instituto Federal do Sul de Minas, câmpus Pouso Alegre 120

121 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' Instituto Federal do Sul de Minas, câmpus Pouso Alegre 121

122 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’... Instituto Federal do Sul de Minas, câmpus Pouso Alegre 122

123 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 Instituto Federal do Sul de Minas, câmpus Pouso Alegre 123

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

125 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 Instituto Federal do Sul de Minas, câmpus Pouso Alegre 125

126 Linguagem de Definição de Dados no MySQL - DDL  Adicionar Atributo na Tabela  Remover Atributo da Tabela Instituto Federal do Sul de Minas, câmpus Pouso Alegre 126

127 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; Instituto Federal do Sul de Minas, câmpus Pouso Alegre 127

128 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; Instituto Federal do Sul de Minas, câmpus Pouso Alegre 128

129 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; Instituto Federal do Sul de Minas, câmpus Pouso Alegre 129

130 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; Instituto Federal do Sul de Minas, câmpus Pouso Alegre 130

131 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 Instituto Federal do Sul de Minas, câmpus Pouso Alegre 131

132 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; Instituto Federal do Sul de Minas, câmpus Pouso Alegre 132

133 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; Instituto Federal do Sul de Minas, câmpus Pouso Alegre 133

134 Linguagem de Definição de Dados no MySQL - DDL  Modificando o NULL ou NOT NULL: ALTER TABLE tbCliente MODIFY nomeCliente VARCHAR(150) NOT NULL; Instituto Federal do Sul de Minas, câmpus Pouso Alegre 134

135 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); Instituto Federal do Sul de Minas, câmpus Pouso Alegre 135

136 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; Instituto Federal do Sul de Minas, câmpus Pouso Alegre 136

137 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); Instituto Federal do Sul de Minas, câmpus Pouso Alegre 137

138 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’)); Instituto Federal do Sul de Minas, câmpus Pouso Alegre 138

139 Atenção  Segundo um fórum, a constraint CHECK no mysql não funciona. Instituto Federal do Sul de Minas, câmpus Pouso Alegre 139

140 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. Instituto Federal do Sul de Minas, câmpus Pouso Alegre 140

141 Exercício  Coloque os atributos tbCliente  codigoCliente, tbCategora  codigoCategora, tbClasse  codigoClasse, tbTitulo  codigoTitulo, tbFilme  codigoFilme 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 Instituto Federal do Sul de Minas, câmpus Pouso Alegre 141

142 Linguagem de Definição de Dados no MySQL - DDL Índices Instituto Federal do Sul de Minas, câmpus Pouso Alegre 142

143 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. Instituto Federal do Sul de Minas, câmpus Pouso Alegre 143

144 Linguagem de Definição de Dados no MySQL - DDL Instituto Federal do Sul de Minas, câmpus Pouso Alegre 144

145 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. Instituto Federal do Sul de Minas, câmpus Pouso Alegre 145

146 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. Instituto Federal do Sul de Minas, câmpus Pouso Alegre 146

147 Linguagem de Definição de Dados no MySQL - DDL Instituto Federal do Sul de Minas, câmpus Pouso Alegre 147

148 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. Instituto Federal do Sul de Minas, câmpus Pouso Alegre 148

149 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]); Instituto Federal do Sul de Minas, câmpus Pouso Alegre 149

150 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); Instituto Federal do Sul de Minas, câmpus Pouso Alegre 150

151 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); ); Instituto Federal do Sul de Minas, câmpus Pouso Alegre 151

152 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; Instituto Federal do Sul de Minas, câmpus Pouso Alegre 152

153 Linguagem de Definição de Dados no MySQL - DDL  Visualizar todo os índices:  SHOW INDEX FROM nome da tabela; Instituto Federal do Sul de Minas, câmpus Pouso Alegre 153

154 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. Instituto Federal do Sul de Minas, câmpus Pouso Alegre 154

155 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) Instituto Federal do Sul de Minas, câmpus Pouso Alegre 155

156 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. Instituto Federal do Sul de Minas, câmpus Pouso Alegre 156

157 Linguagem de Modelagem de Dados no MySQL - DML Instituto Federal do Sul de Minas, câmpus Pouso Alegre 157

158 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 Instituto Federal do Sul de Minas, câmpus Pouso Alegre 158

159 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. Instituto Federal do Sul de Minas, câmpus Pouso Alegre 159

160 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); Instituto Federal do Sul de Minas, câmpus Pouso Alegre 160

161 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. Instituto Federal do Sul de Minas, câmpus Pouso Alegre 161

162 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ê? Instituto Federal do Sul de Minas, câmpus Pouso Alegre 162

163 Linguagem de Modelagem de Dados no MySQL - DML  Caso você queira visualizar as linhas da tabela use o comando:  SELECT *FROM nome da tabela; Instituto Federal do Sul de Minas, câmpus Pouso Alegre 163

164 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 Instituto Federal do Sul de Minas, câmpus Pouso Alegre 164

165 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; Instituto Federal do Sul de Minas, câmpus Pouso Alegre 165

166 Linguagem de Modelagem de Dados no MySQL - DML  Exemplo:  DELETE FROM tbEmpDev;  DELETE FROM tbEmpDev WHERE codigoFilme = 1; Instituto Federal do Sul de Minas, câmpus Pouso Alegre 166

167 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, ‘ ’, ‘MG ’, ‘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. Instituto Federal do Sul de Minas, câmpus Pouso Alegre 167

168 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. Instituto Federal do Sul de Minas, câmpus Pouso Alegre 168

169 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. Instituto Federal do Sul de Minas, câmpus Pouso Alegre 169

170 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; Instituto Federal do Sul de Minas, câmpus Pouso Alegre 170

171 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. Instituto Federal do Sul de Minas, câmpus Pouso Alegre 171

172 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$ Para fazer isso, usamos o comando:  UPDATE tbClasse SET precoClasse = 8.00 where nomeClasse = ‘Lançamento’; Instituto Federal do Sul de Minas, câmpus Pouso Alegre 172

173 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. Instituto Federal do Sul de Minas, câmpus Pouso Alegre 173

174 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, ‘ ’, ‘MG ’, ‘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. Instituto Federal do Sul de Minas, câmpus Pouso Alegre 174

175 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. Instituto Federal do Sul de Minas, câmpus Pouso Alegre 175

176 Exercício  Altere todos os atributos de um registro de cada tabela. Instituto Federal do Sul de Minas, câmpus Pouso Alegre 176

177 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. Instituto Federal do Sul de Minas, câmpus Pouso Alegre 177

178 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. Instituto Federal do Sul de Minas, câmpus Pouso Alegre 178

179 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; Instituto Federal do Sul de Minas, câmpus Pouso Alegre 179

180 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; Instituto Federal do Sul de Minas, câmpus Pouso Alegre 180

181 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. Instituto Federal do Sul de Minas, câmpus Pouso Alegre 181

182 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’; Instituto Federal do Sul de Minas, câmpus Pouso Alegre 182

183 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; Instituto Federal do Sul de Minas, câmpus Pouso Alegre 183

184 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  SELECT tbCliente.nomeCliente FROM tbCliente WHERE tbCliente.cidadeCliente = ‘Pouso Alegre’ AND tbCliente.dataCasdastroCliente BETWEEN ‘ ’ AND ‘ ’; Instituto Federal do Sul de Minas, câmpus Pouso Alegre 184

185 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 ‘ ’ AND ‘ ’; Instituto Federal do Sul de Minas, câmpus Pouso Alegre 185

186 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. Instituto Federal do Sul de Minas, câmpus Pouso Alegre 186

187 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. Instituto Federal do Sul de Minas, câmpus Pouso Alegre 187

188 Linguagem de Modelagem de Dados no MySQL - DML  Imagine que tenhamos os seguintes dados nas tabelas tbCategoria e tbTitulo:  tbCategoria  tbTitulo Instituto Federal do Sul de Minas, câmpus Pouso Alegre 188 codigoCategorianomeCategoria 1Terror 2Drama 3Comédia codigoTitulonomeTitulocodigoCategoria 1Mortos Vivos1 2Superando Desafios3 3A Hilariante2 4O Bicho Papão1

189 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; Instituto Federal do Sul de Minas, câmpus Pouso Alegre 189

190 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. Instituto Federal do Sul de Minas, câmpus Pouso Alegre 190

191 Linguagem de Modelagem de Dados no MySQL - DML Instituto Federal do Sul de Minas, câmpus Pouso Alegre 191 codigoTitulonomeTitulocodigoCategoria nomeCategoria 1Mortos Vivos11Terror 1Mortos Vivos12Drama 1Mortos Vivos13Comédia 2 Superando Desafios 31Terror 2 Superando Desafios 32Drama 2 Superando Desafios 33Comédia 3A Hilariante21Terror 3A Hilariante22Drama 3A Hilariante23Comédia 4O Bicho Papão11Terror 4O Bicho Papão12Drama 4O Bicho Papão13Comédia

192 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. Instituto Federal do Sul de Minas, câmpus Pouso Alegre 192

193 Linguagem de Modelagem de Dados no MySQL - DML  SELECT * FROM tbTitulo, tbCategoria WHERE tbCategoria.codigoCategoria = tbTitulo.codigoCategoria; Instituto Federal do Sul de Minas, câmpus Pouso Alegre 193 codigoTitulonomeTitulocodigoCategoria nomeCategoria 1Mortos Vivos11Terror 1 Superando Desafios 33Comédia 2A Hilariante22Drama 2O Bicho Papão11Terror

194 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. Instituto Federal do Sul de Minas, câmpus Pouso Alegre 194

195 Linguagem de Modelagem de Dados no MySQL - DML  Exemplo:  SELECT * FROM tbTitulo INNER JOIN tbCategoria ON tbCategoria.codigoCategoria = tbTitulo.codigoCategoria; Instituto Federal do Sul de Minas, câmpus Pouso Alegre 195

196 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 Instituto Federal do Sul de Minas, câmpus Pouso Alegre 196

197 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. Instituto Federal do Sul de Minas, câmpus Pouso Alegre 197

198 Conteúdo Extra   - Banco%20de%20Dados.DDL%20DML.Exerc%C3%ADcio s%20e%20Exemplos%20Resolvidos.pdf Instituto Federal do Sul de Minas, câmpus Pouso Alegre 198

199 Bibliográfica  Bibliografia Básica  ELMASRI, R.; Navathe, S. B. Sistemas de Banco de Dados. 6ª ed. São Paulo: Pearson Education do Brasil,  KORT, Henry F. et all. Sistema de Bancos de Dados. 5ª Ed. São Paulo: Campus,  MILANI, A. MySQL: Guia do Programador. São Paulo: Editora Novatec,  Bibliografia Complementar  ABREU, M; MACHADO, F. N. R. Projeto de banco de dados – Uma visão prática. 16. ed. São Paulo: Erica,  ALVES, W. P. Banco de dados – teoria e desenvolvimento. São Paulo: Erica:  HEUSER, C. A. Projeto de banco de dados. 6. ed. Porto Alegre: Bookman Companhia,  RAMAKRISHNAN, R.; GEHRKE, J. Sistemas de gerenciamento de banco de dados. 3. ed. São Paulo: McGraw Hill - Artmed:  ROB, Peter; CORONEL, Carlos. Sistemas de Banco de Dados – Projeto, Implementaçao e Administração. São Paulo: Cengage Learning: 2010.


Carregar ppt "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."

Apresentações semelhantes


Anúncios Google