Buscar

Livro - Tecnologias de Banco de Dados para Sistemas de Informação - ebook9

Prévia do material em texto

Grupo SER Educacional | Tecnologias e Linguagens de Banco de Dados 1 
 
 
 
 
TECNOLOGIAS E LINGUAGENS DE 
BANCO DE DADOS 
Tecnologias e Linguagens de 
 Banco de Dados
 
JOÃO DANILO NOGUEIRA 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
MANIPULANDO 
ESTRUTURAS DE 
TABELAS 
 
 
 
 
 
AULA 09 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Diretor Executivo 
DAVID LIRA STEPHEN BARROS 
 
Direção Editorial 
ANDRÉA CÉSAR PEDROSA 
 
Projeto Gráfico 
MANUELA CÉSAR DE ARRUDA 
 
Autor 
JOÃO DANILO NOGUEIRA 
 
 
Desenvolvedor 
CAIO BENTO GOMES DOS SANTOS 
 
 
 
 
 
 
 
O Autor 
 
 
João Danilo Nogueira 
 
Olá. Meu nome é João Danilo. Sou graduado em Ciência da Computação 
pela Faculdade Grande Fortaleza (FGF) e amo programar. Atualmente, o 
foco de minha expertise é na área de gerenciamento de projetos, teoria 
dos números, RSA e criptografia. Vai ser um prazer enorme ajudar VOCÊ a 
se tornar um excelente desenvolvedor de software ou administrador de 
banco de dados. Conte comigo para lhe ajudar nessa trajetória rumo ao 
seu desenvolvimento profissional! Muito sucesso para você. 
 
 
 
JOÃO DANILO NOGUEIRA 
 
“ 
 
 
Iconográficos 
Olá. Meu nome é Manuela César de Arruda. Sou o responsável pelo 
projeto gráfico de seu material. Esses ícones irão aparecer em sua trilha 
de aprendizagem toda vez que: 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
INTRODUÇÃO 
para o início do 
desenvolvimento de 
uma nova 
competência; 
DEFINIÇÃO 
houver necessidade de 
se apresentar um novo 
conceito; 
NOTA 
quando forem 
necessários 
observações ou 
complementações 
para o seu 
conhecimento; 
IMPORTANTE 
as observações 
escritas tiveram 
que ser priorizadas 
para você; 
EXPLICANDO 
MELHOR 
algo precisa ser 
melhor explicado ou 
detalhado; 
VOCÊ SABIA? 
curiosidades e 
indagações lúdicas 
sobre o tema em 
estudo, se forem 
necessárias; 
SAIBA MAIS 
textos, referências 
bibliográficas e links 
para aprofundamento 
do seu conhecimento; 
REFLITA 
se houver a necessidade 
de chamar a atenção 
sobre algo a ser refletido 
ou discutido sobre; 
ACESSE 
se for preciso acessar 
um ou mais sites 
para fazer download, 
assistir vídeos, ler 
textos, ouvir podcast; 
 
RESUMINDO 
quando for preciso se 
fazer um resumo 
acumulativo das 
últimas abordagens; 
ATIVIDADES 
quando alguma 
atividade de 
autoaprendizagem for 
aplicada; 
TESTANDO 
quando o 
desenvolvimento de 
uma competência for 
concluído e questões 
forem explicadas; 
 
 
Sumário 
1 MANIPULANDO ESTRUTURAS DE TABELAS............................................................... 8 
1.1 Criação de uma tabela .......................................................................................... 8 
1.1.1 Tipos de dados do MySQL ....................................................................... 11 
1.1.1.1 Tipos numéricos .................................................................... 11 
1.1.1.2 Tipos data ............................................................................. 12 
1.1.1.3 Tipos de cadeia (alfanumérico) .............................................. 13 
1.1.2 Preenchendo o tamanho e lista de valores de cada campo ....................... 15 
1.1.3 Selecionando o valor default .................................................................. 15 
1.1.4 Selecionando o Collation ........................................................................ 16 
1.1.5 Selecionando o Attributes ....................................................................... 16 
1.1.6 Aceitação de nulo ................................................................................... 17 
1.1.7 Criação de índices .................................................................................. 18 
1.1.8 Autoincremento ..................................................................................... 20 
1.1.9 Comentários ........................................................................................... 20 
1.1.10 Virtualidade ......................................................................................... 21 
1.2 Editando a estrutura de uma tabela .................................................................... 21 
Considerações Finais ................................................................................................ 23 
Atividades de Autoaprendizagem .............................................................................. 23 
Questionário Avaliativo ............................................................................................ 23 
Bibliografia .............................................................................................................. 24 
 
 
 
 
 
Trilha de Aprendizagem 
 
Olá. Meu nome é Andréa César. Sou responsável pela direção editorial 
deste livro didático e de todos os demais recursos relacionados com a sua 
trilha de aprendizagem. Você está iniciando seus estudos sobre 
TECNOLOGIAS E LINGUAGENS DE BANCO DE DADOS, e o nosso objetivo é 
auxiliar você no desenvolvimento das competências necessárias ao seu 
exercício profissional. Para isto, distribuímos os conteúdos didáticos 
deste livro em quatro semanas de estudo, onde, em cada uma delas, 
haverá uma competência a ser construída. Cada uma dessas 
competências será desenvolvida por meio de quatro atividades de estudo, 
que podemos chamar de “aulas”. Em cada aula, você terá uma introdução 
ao tema abordado, os objetivos a serem alcançados, uma atividade de 
autoaprendizagem proposta e uma lista de exercícios a ser em 
respondidos. Quer saber quais serão as competências que você irá 
desenvolver ao longo dessas quatro semanas de estudo? Então vamos a 
elas: 
1. Adquirir uma visão geral sobre os SGBDs disponíveis no mercado, 
suas funcionalidades, ambientes e linguagens de manipulação de 
banco de dados. 
2. Instalar e configurar servidores de banco de dados, atentando para os 
aspectos relacionados à segurança e desempenho. 
3. Criar, formatar e atualizar bancos de dados em um SGBD. 
4. Gerar consultas, procedimentos, gatilhos e visões de bancos de dados 
em um SGBD. 
 
Ao longo desta semana iremos desenvolver a competência de número: 3. 
Vamos arregaçar as mangas? Ao trabalho! 
Tecnologias e Linguagens de Banco de Dados | Danilo Nogueira | 7 
 
 
3ª SEMANA DE ESTUDOS 
INTRODUÇÃO: 
urante esta nova semana de estudos iremos adentrar o 
universo das tabelas, pondo a mão na massa no que tange 
à sua criação, alteração de sua estrutura, inclusão de 
linhas, atualização de dados e exclusão de linhas. 
Preparado para uma viagem rumo ao conhecimento? Então, aperte o 
cinto e boa viagem. 
 
OBJETIVOS: 
 
Ao término do desenvolvimento desta semana de estudos, você será 
capaz de: 
 Criar, alterar a estrutura e eliminar tabelas; 
 Inserir linhas; 
 Atualizar dados; 
 Eliminar linhas em tabelas. 
 
Mãos à obra? Conte com a gente! 
 
 
D 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Tecnologias e Linguagens de Banco de Dados | Danilo Nogueira | 8 
 
 
1 Manipulando Estruturas de Tabelas 
INTRODUÇÃO: 
Precisamos entender um banco de dados como um conjunto de tabelas, 
que podem ou não estar relacionadas entre si. Este relacionamento se dá 
por meio de uma ligação lógica entre dados das duas tabelas, de modo 
que, antes mesmo de qualquer programa tentar inserir, alterar ou excluir 
linhas, o próprio SGBD estará validando (ou não) tais operações conforme 
sejam as regras de negócio implementadas nessas ligações. Tudo isto 
que falamos recebe o nome de integridade referencial. 
 
 
1.1 Criação de uma tabela 
 
Como vimos anteriormente, há duas maneiras de criarmos tabelas em um 
banco de dados. Uma delas é por meio do comando de prompt CREATE 
TABLE. A outra é utilizando o PhpMyAdmin, que é a interface gráfica de 
gerenciamento de bancos de dadosMySQL mais utilizada no mundo. 
Na aula anterior, vimos como criar um banco de dados. Percebemos que, 
ao criá-lo, temos um banco de dados vazio, ou seja, desprovido de t abelas 
ou quaisquer outras estruturas de dados. O que faremos agora é dar 
continuidade à estruturação daquele banco de dados que criamos, 
começando a criação de suas tabelas. 
No exemplo utilizado, tínhamos o banco de dados “EscolaPrime”. A ideia 
é criarmos uma primeira tabela intitulada “Funcionários”, como se segue. 
 Abra o banco de dados “EscolaPrime” no PhpMyAdmin . Em seguida, clique da 
aba “Structure” (estrutura) e visualize a seguinte página em seu navegador: 
 
OBJETIVO: 
Ao término desta aula você será capaz de criar tabelas, alterar sua 
estrutura e eliminá-la do banco de dados. 
 
 
Tecnologias e Linguagens de Banco de Dados | Danilo Nogueira | 9 
 
 
 
Figura 1 - Aba "Structure" para criação da primeira tabela. 
 
 Vamos criar uma primeira tabela neste banco de dados? Então digite o nome 
“funcionarios” no campo “Name”, e informe, no campo “Number of columns”, o 
número 5, uma vez que criaremos a seguinte estrutura de tabela: 
 
matric nome endereco salario Depto 
0001 JOÃO ALBERTO 
SILVA 
RUA VERGUEIRO, 40, APTO 202 4800,00 DRH 
0002 MARIA CYNTHIA 
COSTA 
AV SOARES DA VEIGA, 1468, APTO 
1301 
3750,00 DRH 
0003 ANA MARIA 
CARDOSO 
RUA HOMERO MACEDO, 608, APTO 
101-A 
6550,00 MKT 
0004 SÍLVIO ROMERO 
DOTAS 
RUA VERGUEIRO, 44 2850,00 MKT 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Tecnologias e Linguagens de Banco de Dados | Danilo Nogueira | 10 
 
 
0005 SANDRA MARIA 
MOTA 
AV SETE DE SETEMBRO, 1209, 
APTO 401 
4200,00 MKT 
 
Tabela 1: Massa de dados para a tabela "funionarios" a ser criada. 
 
 Clique em “Go” e visualize a seguinte página, que traz o formulário de estrutura 
da tabela em foco. Vamos entender como funciona? 
 
 
Figura 2 - Formulário de estrutura da tabela "funcionarios". 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Figura 3 - Lista de t ipos de dados do MySQL. 
Tecnologias e Linguagens de Banco de Dados | Danilo Nogueira | 11 
 
 
 
 
 
 
 
 
 
 
Em cada uma das linhas deste formulário você deverá inserir os dados de uma 
coluna da tabela “funcionarios". Primeiramente, vamos informar, na primeira 
linha do formulário, os dados do campo (coluna) “matric” da tabela 
“funcionarios". Na segunda coluna do formulário, selecione o tipo de dado que 
deve ser aceito pelo campo “matric”. Para selecionar um tipo de dado para este 
campo, basta clicar no botão “dropdown” ao lado do campo “Type”, como mostra 
a ilustração a seguir. Mas, como escolher dentre tantos tipos de dados assim? 
 
1.1.1 Tipos de dados do MySQL 
 
Os tipos de dados do MySQL podem ser agrupados em três grandes grupos: 
 Tipos numéricos; 
 Tipos de Data; 
 Tipos de Cadeia. 
 
1.1.1.1 Tipos numéricos 
Os tipos de dados numéricos se dividem em dois grandes grupos, os inteiros e os 
reais fracionários (com vírgulas decimais) . 
 TinyInt: número inteiro com ou sem sinal. Com sinal, seus valores vão desde -
128 até 127. Sem sinal, a variação passa a ser de 0 até 255. 
 Bit ou Bool: número inteiro que só pode ser igual a 0 (zero) ou 1 (um). 
 SmallInt: número inteiro similar ao TinyInt, porém, com maior margem de 
variação, podendo ir, com sinal, de -32768 até 32767, e de 0 até 65535 sem 
sinal. 
Não esqueça de selecionar previamente o formato InnoDB, 
como mostra a figura 2 acima. 
IMPORTANTE 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Tecnologias e Linguagens de Banco de Dados | Danilo Nogueira | 12 
 
 
 MediumInt: também se trata de número inteiro, com uma margem de variação 
de -8388608 até 8388607 (com sinal) e de 0 a 16777215 (sem sinal). 
 Int: inteiro que vai desde -2147483648 até 2147483647, ou, sem sinal, de 0 a 
429496295. 
 BigInt: este é o maior tipo de número inteiro suportado, variando desde o valor 
de -9223372036854775808 até o de 9.223.372.036.854.775.807. Sem sinal, a 
variação é de 0 a 18446744073709551615. 
 Float: número real de alta precisão, porém de baixo valor significativo, indo de 
desde -3.402823466E+38 (três vírgula quatro, vezes dez elevado a trinta e oito) 
até -1.175494351E-38,0 e (menos um vírgula dezessete vezes dez elevado a 
menos trinta e oito). No caso de não haver sinal, a variação é de 1.75494351E-
38 até 3.402823466E+38. 
 
 
 
 
 
 
 
 Double: número real com vírgula (ponto) flutuante de dupla precisão, com faixa 
de variação de -1.7976931348623157E+308 a -2.2250738585072014E-308, e, 
sem sinal, de 2.2250738585072014E-308 a 1.7976931348623157E+308 
 Decimal: Número com vírgula flutuante desempacotado. O número é 
armazenado como uma cadeia de caracteres. 
 
1.1.1.2 Tipos data 
 Date: este tipo de dado armazena uma data de 1 de janeiro de 1001 até 31 de 
dezembro de 9999. O formato de armazenamento é: ano-mês-dia, como por 
exemplo: “2017-10-28”. 
Perceba que a notação científica de base 10 (dez) é 
representada pela letra “E” seguida de um expoente. 
Observe ainda que o MySQL usa o ponto decimal ao invés 
de vírgula decimal. 
NOTA 
Tecnologias e Linguagens de Banco de Dados | Danilo Nogueira | 13 
 
 
 DateTime: trata-se de uma combinação entre data e hora, que vai de 1 de 
janeiro de 1001, à 0 hora, 0 minuto e 0 segundo, até 31 de dezembro de 9999, 
às 23 horas, 59 minutos e 59 segundos. O formato de seu armazenamento é: 
ano-mês-dia horas:minutos:segundos , a exemplo de: “2017 -10-28 04:03:52”. 
 TimeStamp: também se refere a uma combinação entre data e hora, indo de 1 
de janeiro de 1970 até o ano de 2037. O formato desse tipo de data é variável, 
dependendo do tamanho definido para o campo. A tabela a seguir mostra os 
diversos formatos possíveis em função do tamanho do campo: 
 
Tamanho Formato da data ou data-hora 
2 AA 
4 AAMM 
6 AAMMDD 
8 AAAAMMDD 
12 AAMMDDhhmmss 
14 AAAAMMDDhhmmss 
 
Tabela 2: Legenda: A=Ano, M=Mês, D=Dia, h= Hora, m=minuto, s=segundo. 
 
 Time: este tipo de dado armazena um período de tempo em horas. O intervalo 
de horas, minutos e segundos vai de -838 horas, 59 minutos e 59 segundos a 
838 horas, 59 minutos e 59 segundos. O formato de armazenamento é 
“hhh:mm:ss”. 
 Year: trata-se de um tipo de dado que armazena um ano, de 1901 a 2155. O 
formato deste tipo de campo pode ser “AA” (apenas dois últimos dígitos do ano) 
ou “AAAA” (quatro dígitos = ano completo). 
 
 
1.1.1.3 Tipos de cadeia (alfanumérico) 
Agora veremos as variações existentes entre os tipos de dados alfanuméricos, 
também conhecidos como cadeias de caracteres ou strings. São eles: 
 Char: contém uma cadeia de caracteres de tamanho fixo, podendo armazenar 
strings de tamanhos que vão de 0 até 255 caracteres. 
 VarChar: armazena cadeias de caracteres de tamanho variável, podendo ir de 0 
a 255 caracteres. Este tipo de cadeia pode se diferenciar entre dois subtipos: 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Tecnologias e Linguagens de Banco de Dados | Danilo Nogueira | 14 
 
 
o TinyText e TinyBlob: ambos os tipos armazenam dados com tamanho máximo 
de 255 caracteres. 
 Text e Blob: esses tipos de campo alfanumérico suportam textos com até 
65535 caracteres: 
o Text: na hora de ser ordenado quanto aos seus dados armazenados, esse 
subtipo não distingue letras maiúsculas das minúsculas; 
o Blob: leva em conta a diferença entre as letras maiúsculas e minúsculas na 
hora da ordenação. 
 MediumBlob e MediumText: suportam textos com um máximo de 16777215 
caracteres. 
 LongBlob e LongText: suportam textos com até 4294967295 caracteres. Vale 
salientar que, em virtude de os protocolos de comunicação terem limites de 
tamanho de pacote, esses textos não devem passar dos 16 Mb de tamanho. 
 Enum: tipo de campo que contém um único valor existente em uma lista 
especificada previamente.Este tipo de dado suporta até 65535 valores 
diferentes. 
 Set: trata-se de um tipo de campo que pode conter nenhum, um ou mais de um 
valor de uma lista especificada previamente. Essa lista suporta até 64 valores. 
 
 
 
 
 
 
 
 
 
 
 
Existem outros tipos de dados implementados na 
versão mais recente do MySQL. Pesquise sobre cada 
uma delas, passando o mouse por sobre cada opção 
da lista de tipos. Uma janela popup será exibida em 
cada uma, com uma breve descrição. 
Em cada uma dessas opções, atente para o formato 
de representação, limitações (mínimas e máximas) 
dos campos e a quantidade de bytes necessária para 
representa-los. 
No que se refere à quantidade de bytes necessária para a 
representação de cada campo, pesquise também este 
indicador para os campos que estudamos anteriormente. 
ATIVIDADES 
Tecnologias e Linguagens de Banco de Dados | Danilo Nogueira | 15 
 
 
 
1.1.2 Preenchendo o tamanho e lista de valores de cada campo 
 
Com base no que aprendemos quanto aos tipos de dados, vamos continuar a 
preencher a estrutura da tabela “funcionarios"? Depois do tipo de dado (“Type”), 
o próximo campo a ser preenchido é o “Length/Values” (tamanho e valores). 
Neste campo devemos preencher o tamanho em bytes que aquela coluna 
ocupará na tabela que está sendo criada (largura da coluna). Se o tipo de dado 
que está sendo especificado for “Enum” ou “Set”, ao invés de informar o 
tamanho do campo, deve-se informar a lista de valores que aquele dado poderá 
assumir quando a tabela estiver sendo alimentada, separados por vírgula. Por 
exemplo, se o campo do tipo “Enum” for a sigla dos estados da federação 
brasileira, deve-se informar o seguinte conteúdo neste campo do formulário: 
„PE‟, ´BA‟, „CE‟, „RN‟, „PB‟, „AL‟, „SE‟, „MA‟, „PI‟, „SP‟, „RJ‟, ES‟, „MG‟, „RS‟, „SC‟, „PR‟, 
„DF‟, „GO‟, „MT‟, „MS‟, „TO‟, „PA‟, „AM‟, „AP‟, „RR‟, „RO‟, „AC‟ 
 
 
1.1.3 Selecionando o valor default 
 
O próximo campo do formulário da estrutura da tabela é o valor 
“default”, ou seja, o dado que aparecerá previamente alimentado 
no campo quando uma nova linha for inserida na tabela. Por 
exemplo, se o campo for do tipo inteiro, em vez de zero, podemos 
querer que o campo não contenha nenhum valor válido, ou seja, 
nulo. Assim, as definições possíveis para aparecerem como 
default em uma nova linha da tabela são as seguintes: 
 None: no caso do tipo “Enum” ou “Set”, o default será nenhum dado da lista. 
 As defined: o default será o descrito no campo de 
formulário que irá aparecer quando esta opção for 
selecionada, como mostra a figura ao lado. 
 Null: no caso de um campo do tipo numérico, em vez 
de zero, ele receberá o valor nulo (ou nenhum valor) se 
nada for digitado nele. É importante se ter em mente de 
que zero é diferente de nulo. Zero é um indicador de 
uma escala de valor. Nulo é algo que simplesmente não 
existe. 
Figura 4 - Valores possíveis para 
aparecerem como default. 
Figura 5 - Campo Default "As defined". 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Tecnologias e Linguagens de Banco de Dados | Danilo Nogueira | 16 
 
 
 Current Timestamp: este caso se aplica a campo de tipo data ou data -hora. Se 
este tipo de default for selecionado, a data de hoje e a hora corrente será 
automaticamente preenchida quando uma nova linha for inserida na tabela, a 
menos que o usuário digite uma outra data e hora por cima do campo no 
formulário de edição da tabela. 
1.1.4 Selecionando o Collation 
 
No caso de campos do tipo caractere (cadeia / string), este atributo 
representa o conjunto de caracteres a ser utilizado quando do 
preenchimento deste campo. Podemos entender um collation como 
sendo um alfabeto selecionado para ser interpretado por um 
determinado campo do tipo caractere. 
 
1.1.5 Selecionando o Attributes 
 
Este campo do formulário da estrutura da tabela se aplica apenas aos 
dados numéricos. O MySQL suporta uma extensão para opcionalmente 
especificar a largura da exibição de tipos de dados inteiros entre 
parênteses, seguindo a palavra-chave básica para o tipo. Por exemplo, 
INT (4) especifica um número inteiro com uma largura de exibição de 
quatro dígitos. Esta largura de exibição é opcional e pode ser usada por 
aplicativos para exibir valores inteiros com uma largura menor do que a largura 
especificada para a coluna, colocando-os à esquerda com espaços. 
A largura do campo não restringe a faixa 
de valores que podem ser armazenados 
na coluna. Também não impede que os 
valores maiores que a largura de 
exibição da coluna sejam mostrados 
corretamente. Por exemplo, uma coluna 
especificada como SMALLINT (3) tem o 
intervalo SMALLINT usual de -32768 a 
32767, e os valores fora do intervalo 
permitido por três dígitos são exibidos 
na íntegra usando mais de três dígitos. 
Quando usado em conjunto com o 
atributo ZEROFILL (opcional), o 
preenchimento padrão dos espaços é 
substituído por zeros. Por exemplo, para 
uma coluna declarada como INT (4) 
ZEROFILL, um valor de 12 é recuperado como 0012. 
Figura 6 - Lista de Collations. 
Figura 7 - Opções de atributos para um campo. 
Tecnologias e Linguagens de Banco de Dados | Danilo Nogueira | 17 
 
 
 
 
 
 
 
 
 
 
 
Todos os tipos inteiros podem ter um atributo UNSIGNED (opcional). O tipo não 
assinado (traduzido do inglês) pode ser usado para permitir apenas números não 
negativos em uma coluna ou quando você precisa de um intervalo numérico 
maior para a coluna. Por exemplo, se uma coluna INT for UNSIGNED, o tamanho 
do alcance da coluna é o mesmo, mas seus pontos de extremidade mudam de -
2147483648 e 2147483647 para 0 e 4294967295. 
Os tipos de ponto flutuante e ponto fixo também podem ser SINCRONIZADOS. Tal 
como acontece com os tipos inteiros, este atributo impede que os valores 
negativos sejam armazenados na coluna. Ao contrário dos tipos inteiros, a faixa 
superior dos valores das colunas permanece a mesma. 
 
 
 
 
 
 
1.1.6 Aceitação de nulo 
 
Após o campo “Attributes” do formulário de 
estrutura da tabela em foco, temos uma 
caixa de verificação intitulada “Null”. 
Marque esta caixa se o campo em questão 
Figura 8 - Aceita ou não aceita dados nulos neste campo. 
O atributo ZEROFILL é ignorado quando uma coluna está 
envolvida em expressões ou consultas UNION. Se você 
armazenar valores maiores do que a largura de exibição 
do campo em uma coluna inteira que possui o atributo 
ZEROFILL, poderá ter problemas quando o MySQL gerar as 
tabelas temporárias para algumas junções complicadas. 
Nesses casos, o MySQL assumirá que os valores de dados 
se enquadram na largura de exibição da coluna. Veremos 
essas operações de junção adiante. 
NOTA 
Se você especificar ZEROFILL para uma coluna numérica, 
o MySQL adiciona automaticamente o atributo UNSIGNED 
à coluna. 
NOTA 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Tecnologias e Linguagens de Banco de Dados | Danilo Nogueira | 18 
 
 
irá aceitar dados nulos gravados na tabela. Caso não , deixe-a 
desmarcada. 
 
1.1.7 Criação de índices 
 
Independentemente de um campo ser a chave 
primária, secundária ou estrangeira de uma 
tabela, o MySQL permite que seja criado um 
índice para cada um de seus campos. A criação 
de índices alternativos é uma boa estratégia 
para tornar o acesso à tabela mais rápido. 
Os tipos de índices que podem ser criados para 
um campo da tabela são: 
 Primary: índice primário, ou seja, aquele que é 
associado à chave primária da tabela. Só pode 
haver uma chave primária para uma tabela, logo, o índice primário traz dados 
únicos, sem repetição. 
 Unique: índice único, ou seja, aquele que traz apenas dados únicos, sem 
repetição, mesmo não se tratando da chave primária da tabela. A única 
diferença entre o índice primário e o único está no fa to de o primeiro não aceitar 
dados nulos,enquanto que o segundo os aceita sem problemas. 
 Index: trata-se de índice normal (ou alternativo), ou seja, pode ser associado a 
qualquer tipo de campo, aceitando repetição de dados. Os índices normais 
também permitem dados nulos, e são utilizados para agilizar o acesso a 
determinados conjuntos de dados. Por exemplo, o departamento de um 
funcionário, na tabela de funcionários, é um dado que se repete, pois, vários 
funcionários podem pertencer a um mesmo departamento . No entanto, o 
departamento é considerado um dado importante para muitas pesquisas de 
agrupamento e subtotalização, portanto, merece um índice. 
 Fulltext: traduzindo do inglês, fulltext significa texto cheio (ou completo). Esses 
índices permitem se obter rapidamente linhas que contenham determinada 
palavra de um campo ou conjunto de campos. Esse tipo de índice é fortemente 
recomendado para mecanismos de busca, pois conseguem recuperar 
rapidamente as linhas que contêm várias palavras. Isto é possível graças à 
indexação das palavras mais relevantes para as buscas efetuadas. 
 
 
Figura 9 - Opções de índices para um campo de tabela. 
Tecnologias e Linguagens de Banco de Dados | Danilo Nogueira | 19 
 
 
 
 
 
 
 
 
 
Ao escolher um tipo de índice, uma caixa de diálogo “popup” irá aparecer logo 
em seguida, solicitando alguns dados adicionais acerca do índice a ser criado. 
Como podemos observar na figura abaixo, no caso de um índice primário, seu 
nome sempre será igual a “Primary”. 
 
Figura 10 - Caixa de diálogo de criação de índice. 
 
Para qualquer outro tipo de índice, teremos a liberdade de escolher um nome 
para ele, como vemos nos exemplos a seguir. 
Como dissemos em um exemplo anterior, 
o campo “Depto” (departamento) é um 
forte candidato a merecer um índice só 
para ele. Em que pese o fato de o mesmo 
poder se repetir para vários funcionários, 
ele se constitui em uma importante chave 
auxiliar para várias consultas e 
subtotalizações. 
No caso específico em tela, é importante 
que informemos o nome do índice, que 
não necessariamente será igual ao nome 
Figura 11 - Criação do índice DEPTO para o campo "Depto". 
 
Somente tabelas do tipo MyISAM suportam índices 
fulltext. Além disto, o suporte é só para colunas do tipo 
char, varchar e text. A indexação ocorre na coluna toda. 
Como estamos usando o padrão InnoDB, vamos optar pelo 
índice normal. 
NOTA 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Tecnologias e Linguagens de Banco de Dados | Danilo Nogueira | 20 
 
 
do campo, além de confirmarmos a coluna e o seu tamanho em bytes. 
Depois, para criar o índice, basta clicar no botão “Go”. Depois disto, podemos 
observar as marcações de índices exibidas no formulário de estrutura da tabela 
“funcionarios" (veja na figura): 
 
Figura 12 - Formulário de estrutura da tabela com os índices primário e auxiliar criados. 
 
1.1.8 Autoincremento 
 
Em algumas situações, precisamos que a cada nova linha de uma tabela, 
determinado campo tenha seu valor numérico adicionado de 1 (um). Isto se 
aplica, por exemplo, a campos como código, matrícula, sequencial, etc. Para 
tornar a matrícula do funcionário como um campo de autoincremento, por 
exemplo, basta marcar a caixa de verificação intitulada como “A_I”, como mostra 
a figura abaixo. 
 
Figura 13 - Marcação da matrícula como um campo de autoincreme nto. 
 
Mas, atenção! Para um campo ser de autoincremento, ele precisa ser do tipo 
numérico e inteiro. 
 
1.1.9 Comentários 
 
Neste campo do formulário de estrutura da tabela, você poderá descrever 
exatamente o que representa esta coluna para a tabela. Seu preenchimento é 
Tecnologias e Linguagens de Banco de Dados | Danilo Nogueira | 21 
 
 
opcional, mas é considerada uma boa prática documentar, o tanto quanto 
possível, as colunas das tabelas de um banco de dados. Isto é de grande valia 
para a equipe de programação e de administração de dados que irá fazer a 
manutenção dos sistemas e do próprio banco de dados. 
 
1.1.10 Virtualidade 
 
Alguns campos de uma tabela podem ser 
considerados como redundância controlada. Por 
exemplo: determinada coluna pode se destinar tão 
somente a receber um cálculo envolvendo outras 
duas ou três colunas desta mesma tabela, ou de 
outras (como é o caso das consultas). Desse modo, 
neste campo do formulário de estrutura da tabela, 
você pode sinalizar que se trata de um campo 
virtual, em vez de um campo armazenado (stored). 
 
1.2 Editando a estrutura de uma tabela 
 
Uma vez concluído o preenchimento de todos os campos do formulário de 
estrutura da tabela, basta clicar em “Go” para que o PhpMyAdmin execute 
o comando CREATE TABLE correspondente aos dados alimentados no 
referido formulário. A seguinte página será carregada após esta ação: 
 
Figura 15 - Visualização da estrutura da tabela "funcionarios" recém -criada. 
Figura 14 - Campo virtual ou armazenado. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Tecnologias e Linguagens de Banco de Dados | Danilo Nogueira | 22 
 
 
Para alterar os dados referentes a cada uma das colunas da tabela 
recém-criada, basta clicar por sobre o ícone “lápis” intitulado “change”. 
Cada ícone se refere a uma coluna especificamente. 
Você também pode alterar várias colunas de uma só vez. Para isto, basta 
marcar as colunas desejadas e clicar no ícone “Change” localizado abaixo 
da estrutura da tabela. 
Você também pode alterar ou eliminar os índices gerados anteriormente. 
Para isto, basta clicar no ícone “Change” ou “Drop”, localizados no canto 
inferior esquerdo da página, para, respectivamente, alterar e eliminar 
cada índice criado. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Como estamos utilizando o padrão InnoDB, que é o 
formato recomendado para possibilitar o estabelecimento 
de integridade referencial ente tabelas, como veremos 
mais adiante, é importantíssimo não especificarmos os 
tamanhos das colunas-chaves. O default do padrão InnoDB 
para criação de chave primária é o formato INT(11). Assim 
sendo, deixe esse formato em branco, tanto na coluna da 
chave primária, quanto na especificação do tamanho da 
chave primária no índice. 
IMPORTANTE 
Tecnologias e Linguagens de Banco de Dados | Danilo Nogueira | 23 
 
 
Considerações Finais 
SAIBA MAIS: 
 
Quer se aprofundar nos temas desta aula? Recomendamos o acesso 
à seguinte fonte de consulta e aprofundamento: 
Artigo: “Índices MySQL: Otimização de consultas”, acessível pelo 
link: http://www.linhadecodigo.com.br/artigo/3620/indices -mysql-
otimizacao-de-consultas.aspx (Acesso em 03/12/2017). 
 
 
 
 
Atividades de Autoaprendizagem 
ATIVIDADES: 
Pronto para consolidar seus conhecimentos? Leia atentamente o 
enunciado de sua atividade de autoaprendizagem proposta para esta 
aula. Se você está fazendo o seu curso presencialmente, é só abrir o 
seu caderno de atividades. Se você estiver cursando na modalid ade de 
EAD (Educação a Distância), acesse a sua trilha de aprendizagem no seu 
ambiente virtual e realize a atividade de modo online. Você pode 
desenvolver esta atividade sozinho ou em parceria com seus colegas de 
turma. Dificuldades? Poste suas dúvidas no fórum de discussões em seu 
ambiente virtual de aprendizagem. Concluiu a sua atividade? Submeta o 
resultado em uma postagem diretamente em seu ambiente virtual de 
aprendizagem e boa sorte! 
 
 
 
Questionário Avaliativo 
TESTANDO: 
Chegou a hora de você provar que aprendeu tudo o que foi abordado ao 
longo desta aula. Para isto, leia e resolva atentamente as questões do 
seu caderno de atividades. Se você estiver fazendo este curso a 
distância, acesse o QUIZ (Banco de Questões) em seu ambiente virtual 
de aprendizagem. 
 
http://www.linhadecodigo.com.br/artigo/3620/indices-mysql-otimizacao-de-consultas.aspx
http://www.linhadecodigo.com.br/artigo/3620/indices-mysql-otimizacao-de-consultas.aspxTecnologias e Linguagens de Banco de Dados | Danilo Nogueira | 24 
 
 
Bibliografia 
 
RODRIGUES, J. (12 de Dez de 2017). Índices MySQL: Otimização de consultas. Fonte: 
Linha de Código: http://www.linhadecodigo.com.br/artigo/3620/indices -
mysql-otimizacao-de-consultas.aspx 
 
 
 
 
 
 
 
 
Tecnologias e Linguagens de Banco de Dados | Danilo Nogueira | 25

Continue navegando