Aprenda MySQL

  • Página Inicial
  • Contato!
  • Tudo sobre MySQL Parte 1!
  • Tudo sobre MySQL Parte 2!
  • Tudo sobre MySQL Parte 3!
  • Tudo sobre MySQL Parte 4!
  • Tudo sobre MySQL Parte 5!
  • Tudo sobre MySQL Parte 6!
  • Tudo sobre MySQL Parte 7!
  • Tudo sobre MySQL Parte 1

    Criando o primeiro Banco de Dados

    O banco de dados é como um navio com containers, que guardam coisas com características semelhantes (como nomes, senhas, e-mails, etc.). Banco de dados são conjuntos de tabelas, tabelas são conjuntos de registros e registros contém campos.

    PS: Os registros também podem ser chamados de linhas ou tuplas.

    Saiba também que:

    Quando o assunto é banco de dados, um termo muito comum é o CRUD, um acrônimo para as quatro operações de DML que podemos fazer em uma tabela no banco de dados – podemos inserir informações (create), ler (read), atualizar (update) e apagar (delete).

    Os passos necessários para efetuar uma das operações do CRUD são sempre os mesmos:

    Para criar o banco de dados usamos o comando create database, dessa forma:

    
    create database cadastro;
    
    

    PS: Ao invés de database, podemos usar também schema, como por exemplo create schema cadastro, não há diferença entre ambos.

    Para criar tabelas, usamos o comando create table, com os campos, assim:

    
    use cadastro;
    create table pessoas (
        nome varchar(30),
        idade tinyint,
        sexo char(1),
        peso float,
        altura float,
        nacionalidade varchar(20)
    );
    describe pessoas;
    
    

    O comando use cadastro é para escolher um banco existente para usar.

    Esses são os tipos de dados primitivos em MySQL:

    Tipos Primitivos

    Melhorando a Estrutura do Banco de Dados

    Aprendemos a criar bancos e tabelas básicas, mas podemos e devemos fazer muitas melhorias.

    Para isso precisamos excluir as bases antigas, podemos fazer dessa forma, com o comando drop database:

    
    drop database cadastro;
    
    

    Agora, criaremos um novo banco com parâmetros (constraints) e com collation, veja aí uma criação com eles, para definir os caracteres pro nosso idioma:

    
    create database cadastro
    default character set utf8
    default collate utf8_general_ci;
    
    

    Para atualizar as tabelas, devemos usar campos mais inteligentes, tipos primitivos melhor dimensionados e muito mais. Para economizar espaços em bytes no seu servidor. Veja alguns tipos primitivos que podemos usar:

    Para guardar cadeias de caracteres, prefira o varchar, que ocupa menos espaço caso ele receba um valor menor que o predefinido.

    Para números reais é preferível o decimal.

    A idade é melhor cadastrar a data de nascimento e calcular usando o date para não ter que atualizar todo ano.

    Para sexo usaremos uma coleção com valores pré-definidos, com o enum, sempre colocando not null.

    Para o peso e altura, usareamos o decimal, e os números entre parênteres. O primeiro é a quantidade de caracteres, e o segundo são as casas decimais (o primeiro sempre é maior).

    Veja um exemplo:

    
    create table pessoas (
        nome varchar(30) not null,
        nascimento date,
        sexo enum('M', 'F') not null,
        peso decimal(5, 2),
        altura decimal(3, 2),
        nacionalidade varchar(20) default 'Brasil'
    )
    default charset = utf8;
    
    

    A constraint not null é pra obrigar a preencher os dados exigidos (geralmente é necessária pro enum funcionar, por exemplo). A constraint default é usada pra pré-definir um valor padrão, caso nada seja enviado.

    Agora delete a tabela com esse comando:

    
    drop table pessoas;
    
    

    Para evitar que duas pessoas exatamente iguais se cadastrem, criaremos um campo para gerar um código automático, como uma matrícula. Para isso usamos o constraint auto_increment. Para definir uma chave primária, usamos primary key() com o campo entre parênteses. Veja um exemplo:

    
    create table pessoas (
        id int not null auto_increment,
        nome varchar(30) not null,
        nascimento date,
        sexo enum('M', 'F') not null,
        peso decimal(5, 2),
        altura decimal(3, 2),
        nacionalidade varchar(20) default 'Brasil',
        primary key(id)
    )
    default charset = utf8;
    
    

    Os comandos create são chamados de DDL (Data Definition Language).

    Inserindo Dados na Tabela com Insert Into

    Para inserir dados em tabelas, primeiros a gente pega os nomes dos campos do MySQL, separados por vírgula, assim:

    
    insert into pessoas
    (nome, nascimento, sexo, peso, altura, nacionalidade)
    values
    ('Carlos', '1977-06-25', 'M', '74.2', '1.75', 'Brasil');
    
    

    PS: As datas em MySQL são colocadas ao contrário do que estamos acostumandos, no formato ano-mês-dia. E qualquer tipo de dados se coloca entre aspas. Alguns campos não precisam ser específicados, no caso anterior, foi o ID.

    Também pode colocar default em alguns campos (nesse caso, sem aspas), assim:

    
    insert into pessoas
    (id, nome, nascimento, sexo, peso, altura, nacionalidade)
    values
    (default, 'Fátima', '1964-01-18', 'F', '62.3', '1.69', 'Portugal');
    
    

    Se a ordem dos campos for exatamente a mesma nos comandos, você pode simplificar o código assim:

    
    insert into pessoas
    values
    (default, 'Fátima', '1964-01-18', 'F', '62.3', '1.69', 'Portugal');
    
    

    Podemos inserir vários dados de uma só vez, separando por vírgulas cada cadastro, dessa forma:

    
    insert into pessoas
    (id, nome, nascimento, sexo, peso, altura, nacionalidade)
    values
    (default, 'Silvio', '1942-09-14', 'M', '84.1', '1.86', 'Israel'),
    (default, 'Luciana', '1982-07-23', 'F', '66.9', '1.72', default),
    (default, 'Ramon', '1977-05-21', 'M', '67.0', '1.76', 'Espanha');
    
    

    O comando insert into é do tipo DML (Data Manupulation Language).

    Veja alguns significados de constraints:

    Alterando a Estrutura da Tabela

    Para alterar a estrutura da tabela, você usa o comando alter table. Para descrever os cadastros da base de dados, usamos o comando describe ou desc. Para adicionar colunas (campos) usamos o comando column.

    Veja um exemplo de tudo isso:

    
    desc pessoas;
    alter table pessoas
    add column profissao varchar(10);
    
    

    Para ver os campos adicionados, use esse comando:

    
    select * from pessoas;
    
    

    Para eliminar colunas, usa-se o drop também, dessa forma:

    
    alter table pessoas
    drop column profissao;
    
    

    Agora vamos adicionar o campo profissão novamente, mas em outra posição, no exemplo, depois do nome, usando o comando after (depois). Dessa forma:

    
    desc pessoas;
    alter table pessoas
    add column profissao varchar(10) after nome;
    
    

    PS: O after significa depois, mas no MySQL não existe o "before" (antes). Para colocar uma coluna como a primeira, usamos o comando first. Veja um exemplo:

    
    desc pessoas;
    alter table pessoas
    add column codigo int first;
    
    

    Para alterar a estrutura de definições de colunas, usamos o código modify, dessa forma:

    
    alter table pessoas
    modify column profissao varchar(20) not null default '';
    
    

    PS: O modo acima não modifica nomes de campos, apenas as constraints e os tipos primitivos.

    Para modificar o nome das colunas, usamos o código change (também pode ser usado pra mudar constraints e tipos primitivos). Veja um exemplo:

    
    alter table pessoas
    change column profissao prof varchar(25) not null default '';
    
    

    PS: Como visto, você deve colocar o nome antigo (a ser alterado) seguido do novo nome. E para manter as constrains e tipos primitivos, deve se colocar novamente elas com os mesmos valores, como também podem ser alteradas.

    Para renomear a tabela inteira, você usa o comando rename to, dessa forma:

    
    alter table pessoas
    rename to usuarios;
     
    

    Vamos criar uma nova tabela para o próximo exemplo, assim:

    
    create table if not exists cursos (
        nome varchar(30) not null unique,
        descricao text,
        carga int unsigned,
        totaulas int,
        ano year default '2017'
    )
    default charset = utf8;
    
    

    Para adicionar chaves primárias no campo acima, fazemos assim, como por exemplo, pra adicionar um código:

    
    alter table cursos
    add column idcurso int first;
    
    

    Logo após, você apenas fará isso para adicionar a chave primária:

    
    alter table cursos
    add primary key(idcurso);
    
    

    Para apagar uma chave primária de uma tabela, faça assim:

    
    alter table gafanhotos
    drop primary key;
    
    

    Para apagar um índice único, faça assim:

    
    alter table cursos
    drop index nome;
    
    

    PS: Não é possível deletar uma chave primária definida com auto-incremento, então use o modify column antes de deletar uma chave primária. O modify também pode ser usado para devolver a constraint unique à uma chave.

    Para excluir uma tabela, podemos usar o drop assim:

    
    drop table if exists teste;
    
    

    PS: O alter table e drop table são DDL.