Carregar apresentação
A apresentação está carregando. Por favor, espere
PublicouLuiza Isabel Alterado mais de 9 anos atrás
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
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
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
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
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
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
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
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
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
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
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
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 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). 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). 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 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
16
Instalação do MySQL Execute o arquivo que foi feito o download.
A primeira tela mostra os programas que serão instalados, dentre eles, o que precisamos. Clique em Next. Instituto Federal do Sul de Minas, câmpus Pouso Alegre
17
Instalação do MySQL Instituto Federal do Sul de Minas, câmpus Pouso Alegre
18
Instalação do MySQL Aceite os termos de instalação. Clique em Next.
Instituto Federal do Sul de Minas, câmpus Pouso Alegre
19
Instalação do MySQL Instituto Federal do Sul de Minas, câmpus Pouso Alegre
20
Instalação do MySQL Aceite os termos de instalação. Clique em Next.
Instituto Federal do Sul de Minas, câmpus Pouso Alegre
21
Instalação do MySQL Instituto Federal do Sul de Minas, câmpus Pouso Alegre
22
Instalação do MySQL Se quiser adicione atalhos na Área de Trabalho e na barra de inicialização rápida. Clique em Next. Instituto Federal do Sul de Minas, câmpus Pouso Alegre
23
Instalação do MySQL Instituto Federal do Sul de Minas, câmpus Pouso Alegre
24
Instalação do MySQL Clique em Install.
Instituto Federal do Sul de Minas, câmpus Pouso Alegre
25
Instalação do MySQL Instituto Federal do Sul de Minas, câmpus Pouso Alegre
26
Instalação do MySQL Aguarde a instalação.
Instituto Federal do Sul de Minas, câmpus Pouso Alegre
27
Instalação do MySQL Instituto Federal do Sul de Minas, câmpus Pouso Alegre
28
Instalação do MySQL Instituto Federal do Sul de Minas, câmpus Pouso Alegre
29
Instalação do MySQL Selecione o navegador padrão. Clique em abrir.
Instituto Federal do Sul de Minas, câmpus Pouso Alegre
30
Instalação do MySQL Instituto Federal do Sul de Minas, câmpus Pouso Alegre
31
Instalação do MySQL O localhost será o nome do seu servidor.
Os usuários poderão se logar por meu do padrão de endereço escrito. Essas ações não precisam ser alteradas. Clique em Next. Instituto Federal do Sul de Minas, câmpus Pouso Alegre
32
Instalação do MySQL Instituto Federal do Sul de Minas, câmpus Pouso Alegre
33
Instalação do MySQL Clique em Finish.
Instituto Federal do Sul de Minas, câmpus Pouso Alegre
34
Instalação do MySQL 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. Instituto Federal do Sul de Minas, câmpus Pouso Alegre
36
Instalação do MySQL Instituto Federal do Sul de Minas, câmpus Pouso Alegre
37
Instalação do MySQL Clicar em Colocar online.
Instituto Federal do Sul de Minas, câmpus Pouso Alegre
38
Instalação do MySQL Instituto Federal do Sul de Minas, câmpus Pouso Alegre
39
Instalação do MySQL O seguinte erro poderá aparecer.
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 Instituto Federal do Sul de Minas, câmpus Pouso Alegre
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
42
Instalação do MySQL Após o passo acima, tudo estará resolvido, tente acessar a página local do WampServer adicionando 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
43
Iniciando com o MySQL Vamos começar via CONSOLE.
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.
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. Instituto Federal do Sul de Minas, câmpus Pouso Alegre
46
Linguagem de Controle de Dados - DCL
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. 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 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
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
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
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
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
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
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
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
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
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
58
Privilégio Coluna Contexto
ALTER Alter_priv tabelas DELETE Delete_priv INDEX Index_priv INSERT Insert_priv SELECT Select_priv UPDATE Update_priv CREATE Create_priv banco de dados, tabelas, ou índices DROP Drop_priv banco de dados ou tabelas GRANT Grant_priv REFERENCES References_priv CREATE TEMPORARY TABLES Create_tmp_tabela_priv administração do servidor EXECUTE Execute_priv FILE File_priv acessa a arquivos no servidor LOCK TABLES Lock_tabelas_priv PROCESS Process_priv RELOAD Reload_priv REPLICATION CLIENT Repl_client_priv REPLICATION SLAVE Repl_slave_priv SHOW DATABASES Show_db_priv SHUTDOWN Shutdown_priv SUPER Super_priv 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. 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... ) 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. 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 é 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
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
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
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
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
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
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
69
Linguagem de Definição de Dados - DDL
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). 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. 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 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: Instituto Federal do Sul de Minas, câmpus Pouso Alegre
74
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) 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 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 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. Instituto Federal do Sul de Minas, câmpus Pouso Alegre
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
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
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
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
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
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
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
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
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
88
Tipos de Dados Instituto Federal do Sul de Minas, câmpus Pouso Alegre
89
Linguagem de Definição de Dados no MySQL - DDL
Tipos numéricos Inteiros: Instituto Federal do Sul de Minas, câmpus Pouso Alegre
90
Linguagem de Definição de Dados no MySQL - DDL
Tipos numéricos booleanos: Instituto Federal do Sul de Minas, câmpus Pouso Alegre
91
Linguagem de Definição de Dados no MySQL - DDL
Tipos numéricos decimais: Instituto Federal do Sul de Minas, câmpus Pouso Alegre
92
Linguagem de Definição de Dados no MySQL - DDL
Tipos de Data: Instituto Federal do Sul de Minas, câmpus Pouso Alegre
93
Linguagem de Definição de Dados no MySQL - DDL
Tipos de caracteres: 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: Instituto Federal do Sul de Minas, câmpus Pouso Alegre
95
Linguagem de Definição de Dados no MySQL - DDL
Tipos de Listas: 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. Instituto Federal do Sul de Minas, câmpus Pouso Alegre
97
Restrições de Integridade
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. 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. Instituto Federal do Sul de Minas, câmpus Pouso Alegre
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
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
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
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] CASCADE: Se a linha da tabela que tem a PK for apagada/modificada, a linha da tabela que tem a FK também será. Instituto Federal do Sul de Minas, câmpus Pouso Alegre
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
105
Linguagem de Definição de Dados no MySQL - DDL
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 Instituto Federal do Sul de Minas, câmpus Pouso Alegre
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
107
Criando as Tabelas Instituto Federal do Sul de Minas, câmpus Pouso Alegre
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) ); Valores não numéricos, como caractere, data e hora devem estar entre aspas simples. A última linha não tem vírgula. Instituto Federal do Sul de Minas, câmpus Pouso Alegre
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
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’)) ); Números com 4 dígitos e 2 casas decimais. Só aceita os valores ‘Lançamento’ ou ‘Catálogo’). Instituto Federal do Sul de Minas, câmpus Pouso Alegre
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
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
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 ); 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. Instituto Federal do Sul de Minas, câmpus Pouso Alegre
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
115
Excluindo uma Tabela Instituto Federal do Sul de Minas, câmpus Pouso Alegre
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
117
Renomear uma Tabela Instituto Federal do Sul de Minas, câmpus Pouso Alegre
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
119
Mostrando as Estruturas das Tabelas e Banco de Dados
Instituto Federal do Sul de Minas, câmpus Pouso Alegre
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
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
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
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
124
Alterando Tabelas Instituto Federal do Sul de Minas, câmpus Pouso Alegre
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
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
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
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
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
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
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
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
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 COLUMN ufCliente SET DEFAULT ‘SP’; Excluindo o DEFAULT do atributo: ALTER COLUMN ufCliente DROP DEFAULT; Instituto Federal do Sul de Minas, câmpus Pouso Alegre
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
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; ADD CONSTRAINT pk_tbCliente_codigoCliente PRIMARY KEY (codigoCliente); Instituto Federal do Sul de Minas, câmpus Pouso Alegre
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; 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
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); O MySQL considera um restrição UNIQUE como INDEX. Instituto Federal do Sul de Minas, câmpus Pouso Alegre
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
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
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
141
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 Instituto Federal do Sul de Minas, câmpus Pouso Alegre
142
Linguagem de Definição de Dados no MySQL - DDL
Índices Instituto Federal do Sul de Minas, câmpus Pouso Alegre
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
144
Linguagem de Definição de Dados no MySQL - DDL
Instituto Federal do Sul de Minas, câmpus Pouso Alegre
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
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
147
Linguagem de Definição de Dados no MySQL - DDL
Instituto Federal do Sul de Minas, câmpus Pouso Alegre
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
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]); É o mesmo que uma constraint UNIQUE. Instituto Federal do Sul de Minas, câmpus Pouso Alegre
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
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
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
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
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
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
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
157
Linguagem de Modelagem de Dados no MySQL - DML
Instituto Federal do Sul de Minas, câmpus Pouso Alegre
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
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
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 Instituto Federal do Sul de Minas, câmpus Pouso Alegre
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
176
Exercício Altere todos os atributos de um registro de cada tabela.
Instituto Federal do Sul de Minas, câmpus Pouso Alegre
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
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
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
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
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 * 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
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
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
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 2014. 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
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
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
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
188
Linguagem de Modelagem de Dados no MySQL - DML
Imagine que tenhamos os seguintes dados nas tabelas tbCategoria e tbTitulo: tbCategoria tbTitulo codigoCategoria nomeCategoria 1 Terror 2 Drama 3 Comédia codigoTitulo nomeTitulo codigoCategoria 1 Mortos Vivos 2 Superando Desafios 3 A Hilariante 4 O Bicho Papão Instituto Federal do Sul de Minas, câmpus Pouso Alegre
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; O produto cartesiano é indicado pela , Instituto Federal do Sul de Minas, câmpus Pouso Alegre
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
191
Linguagem de Modelagem de Dados no MySQL - DML
codigoTitulo nomeTitulo codigoCategoria nomeCategoria 1 Mortos Vivos Terror 2 Drama 3 Comédia Superando Desafios A Hilariante 4 O Bicho Papão Instituto Federal do Sul de Minas, câmpus Pouso Alegre
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
193
Linguagem de Modelagem de Dados no MySQL - DML
SELECT * FROM tbTitulo, tbCategoria WHERE tbCategoria.codigoCategoria = tbTitulo.codigoCategoria; codigoTitulo nomeTitulo codigoCategoria nomeCategoria 1 Mortos Vivos Terror Superando Desafios 3 Comédia 2 A Hilariante Drama O Bicho Papão Instituto Federal do Sul de Minas, câmpus Pouso Alegre
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
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
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
197
Exercícios Tabela Locadora
Faça uma consulta na tabela locadora que retorne o nome e a cidade de todos os clientes cadastrados. Faça uma consulta que retorne todos os nomes dos títulos e os respectivos nomes dos distribuidores dos filmes. Faça uma consulta que retorne o nome de todos os filmes da categoria ‘Terror’. 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. Insira registros na tabela venda e faz 3 consultas com o comando INNER JOIN. Instituto Federal do Sul de Minas, câmpus Pouso Alegre
198
Conteúdo Extra http://www.fabricio.pro.br/OA/ex/ex03.htm
- Banco%20de%20Dados.DDL%20DML.Exerc%C3%ADcio s%20e%20Exemplos%20Resolvidos.pdf Instituto Federal do Sul de Minas, câmpus Pouso Alegre
199
Bibliográfica Bibliografia Básica Bibliografia Complementar
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: 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.
Apresentações semelhantes
© 2024 SlidePlayer.com.br Inc.
All rights reserved.