MYSQL

 

CRIAÇÃO DE TABELAS

 

Considere a situação onde existe a necessidade de registrar clientes de diferentes lojas, identificando para cada cliente sua única loja referente. Como objetivo inicial, precisamos construir nosso banco de dados para comerçarmos a trabalhar nele.

 
 


Um comando utilizado para construir um novo banco de dados, tabela, índice ou consulta armazenada. Essa declaração cria um objeto dentro do MySQL.

 

Primeiramente para ser possivel a criação de tabelas e outros objetos referente da situação dita no começo, é criada uma base de dados.

Utilizando o comando:

CREATE DATABASE loja_cliente;


Assim é criada a base de dados.

É utilizado o comando:

SHOW DATABASES;


para verificar se a base de dados foi realmente criada.

 
 

Agora que existe uma base de dados, é possivel criar tabelas para essa base, dessa forma para dar continuidade a situação proposta é criada a tabela "LOJA" e "CLIENTE"

 

    USE loja_cliente;

    CREATE TABLE LOJA (
      id  INTEGER NOT NULL,
      nome VARCHAR(100) NOT NULL,
      CONSTRAINT LOJA_PK PRIMARY KEY(id)
    ) ENGINE = InnoDB AUTO_INCREMENT = 1;

    CREATE TABLE CLIENTE (
     id INTEGER NOT NULL  AUTO_INCREMENT,
     loja_id INTEGER  NOT NULL,
     nome VARCHAR(100)  NOT NULL,
     cpf  NUMERIC(11) NOT NULL,
     rua  VARCHAR(100)  NOT NULL,
     cidade VARCHAR(100)  NOT NULL  DEFAULT 'Brasilia',
     complemento  VARCHAR(100),
     estado VARCHAR(2)  NOT NULL  DEFAULT 'DF',
     credito_limite DECIMAL(7.2)  NOT NULL,
     CONSTRAINT CLIENTE_PK PRIMARY KEY(id),
     CONSTRAINT CLIENTE_LOJA_FK FOREIGN KEY(loja_id) REFERENCES LOJA(id),
     CONSTRAINT CLIENTE_UQ UNIQUE(cpf),
     CONSTRAINT CLIENTE_CK CHECK(credito_limite >= 0)
    ) ENGINE = InnoDB AUTO_INCREMENT = 1;


Referente a esses comandos apresentados temos primeiramente a utilização do comando "USE loja_cliente" para acessar a base de dado criada anteriormente, em seguida a criação da tabela "LOJA" representando as lojas, contendo seu id e nome, e depois a criação da tabela "CLIENTE" representando os clientes. Cada cliente possui como atributo um: 'id' que na verdade é um identificador para diferenciar cada cliente, 'loja_id' referente ao identificador de uma loja que 'possui' esse cliente, seu 'nome', seu 'cpf' e atributos que são a respeito do endereço de cada cliente, como: 'cidade', 'estado', 'rua' e 'complemento'. Por último é guardado como atributo o crédito limite que um cliente possui em determinada loja que é representado como 'credito_limite'.

 

Para verificar se realmente foi criada a tabela "CLIENTE" e se seus atributos e restrições estão de acordo, é utilizado o comando

   DESC CLIENTE;

 
 

Para cada coluna(atributo) é importante identificar o seu "tipo" de dado, por exemplo, para o 'id' do cliente seria correto ser um número, por esse motivo o atributo é do tipo inteiro. Como tipos de dados mais comuns no MySQL temos:

 

VARCHAR('tamanho') - usar "" ou '' para sua representação - EX: "algum texto";

 

INTEGER - Representa números inteiros sem parte decimal. Exemplo: 42;

 

BIGINT('tamanho') - Usado para representar números inteiros sem parte decimal, mas com tamanhos que não são suportados pelo int. Podendo representar números de até 8 bits;

 

DOUBLE - Representa números de ponto flutuante (dupla precisão), ou seja, números com parte decimal;

 

FLOAT - Similar ao DOUBLE, representa números de ponto flutuante (simples precisão), sendo menos preciso que o DOUBLE;

 

ENUM('opção1','opção2', ...) - permite que uma coluna de banco de dados contenha apenas um valor de um conjunto pré-definido de valores. EX: status ENUM('pendente', 'processando', 'enviado', 'entregue');

 

NUMERIC('tamanho') - usar "" ou '' para sua representação - EX: "123";

 

DECIMAL('tamanho', 'numeros depois da virgula') - usar um ponto(.) em sua representação no lugar da vírgula - EX: "100.22";

 

DATE - representação com o formato AAAA/MM/DD utilizando '' ou "" e um hífen(-) para separação - EX: "1990-04-01";

 

TIME - representação com o formato HH:MM:SS utilizando '' ou "" e um hífen(-) ou dois pontos(:) para separação - EX: "00-00-00" ou "00:00:00";

 

DATETIME - que seria uma junção do DATE com o TIME separado por um espaço - EX:"1990-04-01 00-00-00".

 

RESTRIÇÕES

 

Na criação de uma tabela temos um elemento muito importante a ser utilizado, que são as restrições(CONSTRAINTS).

 

- Restrições são regras aplicadas nas colunas de uma tabela.

 

- São usadas para limitar os tipos de dados que serão inseridos.

 

- Podem ser especificadas no momento de criação da tabela (CREATE) ou após a tabela ter sido criada (ALTER).

 

como restrições mais comuns temos: NOT NULL, PRIMARY KEY, FOREIGN KEY, CHECK, UNIQUE e DEFAULT.

 

NOT NULL - No MySQL com a restrição NOT NULL, é possível especificar que uma coluna não pode conter nenhum valor nulo. NOT NULL pode ser usado com o CREATE e ALTER referente a uma tabela;

 

UNIQUE - A restrição UNIQUE no MySQL não permite inserir um valor duplicado em uma coluna. Ela mantém a singularidade de uma coluna em uma tabela. Mais de uma coluna UNIQUE pode ser usada em uma tabela;

 

PRIMARY KEY - Uma restrição PRIMARY KEY para uma tabela impõe que a tabela aceite dados exclusivos para uma coluna específica e essa restrição cria um índice exclusivo para acessar a tabela mais rapidamente;

 

FOREIGN KEY - Uma FOREIGN KEY no MySQL cria um link entre duas tabelas por uma coluna específica de ambas as tabelas. A coluna especificada em uma tabela deve ser uma PRIMARY KEY e referida pela coluna de outra tabela conhecida como FOREIGN KEY;

 

CHECK - Uma restrição CHECK controla os valores na coluna associada. A restrição CHECK determina se o valor é válido ou não de uma expressão lógica;

 

DEFAULT - Em uma tabela MySQL, cada coluna deve conter um valor (incluindo um NULL). Ao inserir dados em uma tabela, se nenhum valor for fornecido a uma coluna, a coluna obtém o valor definido como DEFAULT.

 

Atividade de Fixação

 

No intuito de fixar a aprendizagem iniciada por meio deste módulo e verificar como está sua compreensão sobre o mesmo, são sugeridos alguns exercícios de fixação para serem resolvidos. Clique no link de exercícios ao lado, pois será por meio dele iniciada a lista de exercícios sobre os conteúdos estudados até este momento. Boa revisão sobre os mesmos!!