Baixe o app para aproveitar ainda mais
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
Compartilhar