Tipos de dados do MySQL e MariaDB

Tipos de dados são uma forma de classificar as informações que serão armazenados no banco de dados.
Entender os tipos de dados que podem ser armazenados no banco e a que situações se adequam é importante para projetar um banco de dados o mais eficiente possível. Veja, a seguir, alguns dos tipos de dados mais comuns no MySQL, acompanhado de uma breve descrição.

Antes de definir exatamente o tipo de dado que você deseja definir, vale a pena prestar atenção nas seguintes diretrizes, para ajudar a ter melhores resultados:

  • os tipos de valores que podem ser usados;
  • que tamanhos podem ter
  • as operações que podem ser realizadas;
  • seus significados;
  • se podem/serão indexados
  • como devem ser armazenados etc.

Tipos de dados numéricos no MySQL

O MySQL tem todos os tipos numéricos possíveis, o que inclui exatos, aproximados, inteiros, de ponto fixo, ponto flutuante etc. A lista, abaixo, mostra um resumo dos tipos de dados possíveis no MySQL:

  • TINYINT — número inteiro muito pequeno (tiny);
  • SMALLINT — número inteiro pequeno;
  • MEDIUMINT — número inteiro de tamanho médio;
  • INT — número inteiro de tamanho comum;
  • BIGINT — número inteiro de tamanho grande;
  • DECIMAL — número decimal, de ponto fixo;
  • FLOAT — número de ponto flutuante de precisão simples (32 bits);
  • DOUBLE — número de ponto flutuante de precisão dupla (64 bits);
  • BIT — um campo de um bit.

Tipos de dados em strings

Strings são cadeias de caracteres. No MySQL, uma string pode ter qualquer conteúdo, desde texto simples a dados binários – tais como imagens e arquivos. Cadeias de caracteres podem ser comparadas e ser objeto de buscas.

  • CHAR — uma cadeia de caracteres (string), de tamanho fixo e não-binária;
  • VARCHAR — uma string de tamanho variável e não-binária;
  • BINARY — uma string binária de tamanho fixo;
  • VARBINARY — uma string binária de tamanho variável;
  • BLOB — um BLOB (Binary Large OBject – OBjeto Grande Binário) pequeno;
  • TINYBLOB — um BLOB muito pequeno;
  • MEDIUMBLOB — um BLOB de tamanho médio;
  • LONGBLOB — um BLOB grande;
  • TINYTEXT — uma string não-binária e de tamanho bem reduzido;
  • TEXT — uma string não-binária e pequena;
  • MEDIUMTEXT — uma string de tamanho comum e não-binária;
  • LONGTEXT — uma string não-binária de tamanho grande;
  • ENUM — de acordo com o manual do MySQL, é uma string, com um valor que precisa ser selecionado de uma lista predefinida na criação da tabela;
  • SET — é um objeto que pode ter zero ou mais valores – cada um dos quais precisa ser escolhido de uma lista de valores predeterminados quando da criação da tabela.

Armazenamento de data e hora

Há várias opções para armazenar dados relacionados a data e hora. Se você quiser apenas armazenar o ano referente a um evento, pode usar o tipo YEAR. O tipo TIMESTAMP pode ser usado para acompanhar as mudanças ocorridas em um campo de uma tabela. Veja os tipos e suas descrições:

  • DATE — o valor referente a uma data no formato 'CCYY-MM-DD'. Por exemplo 1985-11-25 (ano-mês-dia). O 'CC' se refere aos dois dígitos do século (Century, em inglês);
  • TIME — um valor horário no formato 'hh:mm:ss' (hora:minutos:segundos);
  • TIMESTAMP — timestamp é uma sequência de caracteres ou informação codificada que identifica uma marca temporal ou um dado momento em que um evento ocorreu. No MySQL, ele tem o formato 'CCYY-MM-DD hh:mm:ss' – neste caso, seguem a padronização ISO 8601;
  • YEAR — armazena um ano no formato 'CCYY' ou 'YY';

Dados espaciais

O MySQL tem suporte a tipos de dados que correspondem às classes OpenGIS. Alguns destes carregam valores geométricos simples:

  • GEOMETRY
  • POINT
  • LINESTRING
  • POLYGON

O GEOMETRY pode armazenar qualquer tipo de valor geométrico. Os outros valores simples (POINT, LINESTRING e POLYGON) têm seus valores restritos aos tipos geométricos a que se referem.
Os outros, que seguem listados, carregam valores relativos a coleções/coletivos:

  • GEOMETRYCOLLECTION
  • MULTILINESTRING
  • MULTIPOINT
  • MULTIPOLYGON

Assim, GEOMETRYCOLLECTION pode armazenar coletâneas de objetos de qualquer tipo. Os outros tipos coletivos (MULTILINESTRING, MULTIPOLYGON e GEOMETRYCOLLECTION) restringem-se a cada forma geométrica particular.

Como eliminar registros duplicados no MySQL.

Há formas eficientes de prevenir redundância de dados no MySQL. Caso você ainda não tenha adotado uma medida preventiva, vou abordar duas soluções que corrigem o problema e previnem sua ocorrência no futuro.

Crie um índice único com o modificador IGNORE

Vamos usar a seguinte tabela como cenário:

select * from contatos;
+----------+------------------+------------------------------+
| nome     | sobrenome        | email                        |
+----------+------------------+------------------------------+
| woody    | woodpecker       | woodywoodpecker@gmail.com    |
| woody    | woodpecker       | woodywoodpecker@hotmail.com  |
| winnie   | woodpecker       | winniewoodpecker@yahoo.com.br|
+----------+------------------+------------------------------+
3 rows in set (0.00 sec)

Note que o nome e o sobrenome do Picapau se repetem, embora cada registro tenha email diferente. Neste exemplo, vamos mostrar como eliminar um deles.
Se o problema ainda não existisse, poderíamos evitar toda esta história daqui pra frente, com o seguinte comando, que cria uma chave única para os campos nome, sobrenome:

create unique index idx_contatos on contatos(nome,sobrenome);

Mas, se você tentar executá-lo em uma situação em que há registros redundantes, vai obter o erro:
ERROR 1062 (23000): Duplicate entry 'woody-woodpecker' for key 'idx_contatos'
MySQL ERROR 1062 (23000): Duplicate entry
Para contornar este erro, podemos usar o comando alter ignore table. Veja como:

alter ignore table contatos add unique idx_contatos(nome,sobrenome);

O sistema deve retornar algo semelhante ao que se vê abaixo:
Query OK, 3 rows affected (0.00 sec)
Records: 3 Duplicates: 1 Warnings: 0

Agora, vamos executar um select para ver como está a nossa tabela:

select * from contatos;
+----------+------------------+------------------------------+
| nome     | sobrenome        | email                        |
+----------+------------------+------------------------------+
| woody    | woodpecker       | woodywoodpecker@gmail.com    |
| winnie   | woodpecker       | winniewoodpecker@yahoo.com.br|
+----------+------------------+------------------------------+
2 rows in set (0.00 sec)

Não funcionou?

Este procedimento pode não ter efeito em algumas versões do MySQL, quando você não estiver usando tabelas MyISAM. Por esta razão, alguns administradores optam por converter as tabelas InnoDB para MyISAM antes de aplicar o procedimento. Depois convertem de volta. Veja como:

alter table contatos engine MyISAM;
alter ignore table contatos add unique index idx_contatos(nome,sobrenome);
alter table contatos engine InnoDB;

Comandos mysql - alter table contatos engine MyISAM

Criando uma tabela auxiliar

Na abordagem anterior, vimos como eliminar os registros duplicados na tabela MySQL, sem a possibilidade, contudo, de escolher qual deles seria descartado e qual permaneceria. Esta possibilidade de escolha faz sentido quando os registros não são exatamente iguais, como era o caso – possuíam endereços de email diferentes.
Vamos começar por criar uma nova tabela vazia, com a mesma estrutura da tabela original:

create table contatosnovo like contatos;

Em seguida, criamos o índice único na nova tabela:

alter table contatosnovo add unique index idx_contatos(nome,sobrenome);

Agora, carregamos a tabela, selecionando um registro de cada grupo de registros duplicados. Na sentença select é possível selecionar o valor que nos interessa de cada um dos campos. No exemplo, que segue, vamos selecionar sempre o registro que contiver o endereço de correio eletrônico mais curto, nos casos de duplicidade:

insert into contatosnovo (nome,sobrenome,email)
(
  select nome, sobrenome, email from
  (
    select nome,sobrenome,email from contatos order by length(email) asc
  ) table_tmp
group by nome,sobrenome
);

Agora, verifique o resultado:

select * from contatosnovo;
+--------+------------+-------------------------------+
| nome   | sobrenome  | email                         |
+--------+------------+-------------------------------+
| winnie | woodpecker | winniewoodpecker@yahoo.com.br |
| woody  | woodpecker | woodywoodpecker@gmail.com     |
+--------+------------+-------------------------------+
2 rows in set (0.00 sec)

Findo este procedimento, vamos remover a tabela original e mudar o nome da tabela temporária:

drop table contatos;
alter table contatosnovo rename to contatos;

Pronto! Problema resolvido.

Compartilhe! 😉

Posted from WordPress for Android

O que é um banco de dados relacional?

Um banco de dados é uma aplicação que lhe permite armazenar e obter de volta dados com eficiência. O que o torna relacional é a maneira como os dados são armazenados e organizados no banco de dados.
Quando falamos em banco de dados, aqui, nos referimos a um banco de dados relacional — RDBMS Relational Database Management System.
Em um banco de dados relacional, todos os dados são guardados em tabelas. Estas têm uma estrutura que se repete a cada linha, como você pode observar em uma planilha. São os relacionamentos entre as tabelas que as tornam “relacionais”.

História – antes dos bancos de dados relacionais

Antes da invenção dos bancos de dados relacionais (nos anos 70), havia outros tipos de bancos de dados, tais como os hierárquicos. Depois que se tornaram disponíveis várias têm feito sucesso com a venda deste tipo de aplicativo. Como exemplo, posso citar a Oracle e a IBM.

Bancos de dados comerciais

  • Ingres, o primeiro RDBMS comercial
  • Progress
  • IBM DB 2
  • Microsoft SQL Server
  • Oracle

Bancos de dados livres/de código aberto

  • MySQL
  • MariaDB
  • PostgresSQL
  • SQLite

Todos eles oferecem mecanismos de segurança, criptografia, controle de acesso de usuários e podem processar requisições SQL.

Normalização de dados

Em 1970, o matemático britânico, Ted Codd, criou o modelo relacional para gestão de bancos de dados e as 12 leis que descrevem o que um banco de dados relacional e um RDBMS fazem – além de uma série de leis de normalização que estabelecem as propriedades dos dados relacionais. Apenas dados que tenham sido normalizados pode ser considerados relacionais.

O que é a normalização

Normalização de dados é o processo de organização de campos e tabelas em um banco de dados relacional para minimizar a redundância e a dependência. Este processo comumente envolve a divisão de tabelas grandes em pequenas (e menos redundantes) e define relacionamentos entre elas.
De forma objetiva, o que se deseja é isolar dados de forma que a entrada/remoção/alteração de informações em um campo possa ser feita em apenas uma tabela e se propagar pelo resto do banco de dados, de acordo com os relacionamentos já definidos.
Como exemplo, imagine uma planilha com dados de clientes a serem lançados em um banco de dados relacional. Alguns clientes possuem algumas informações em comum, tais como trabalhar nos mesmos departamentos de uma mesma empresa, com o mesmo endereço de cobrança, portanto.
Ao lançar os dados na tabela, todos os endereços dos clientes precisam ser movidos para uma outra tabela e a cada um destes endereços é dado uma ID. Assim, substitui-se o texto do endereço de cobrança de cada cliente pelo ID do endereço, de acordo com a tabela de endereços.

Cluster MySQL: Glossário.

MySQL.svg

O que é um Cluster?

No sentido genérico, um cluster é um conjunto de computadores funcionando em unidade para realizar uma determinada tarefa.

Cluster (Imagem: WikiMedia.)
Cluster (Imagem: WikiMedia.)

Um Cluster NDB é um mecanismo de armazenamento, usado pelo MySQL, para implementar o armazenamento de dados, recuperação e gestão distribuída entre os vários computadores que compõem o sistema.

O que é um Cluster MySQL

O termo MySQL Cluster se refere a um grupo de computadores fazendo uso de um mecanismo NDB para dar suporte ao banco de dados em um arquitetura shared-nothing com um sistema de armazenamento em memória principal (in memory).

O que é arquitetura shared-nothing?

A tradução literal livre é “nada compartilhado” e se refere a um sistema de computação distribuída, com unidades auto suficientes, sem ponto crítico de falha e que não compartilham armazenamento em memória ou disco. (Fonte: Wikipedia.)

O glossário

Para melhor ajudar iniciantes que desejam aprender sobre como construir um cluster MySQL, seguem mais termos, de acordo com os manuais oficiais da Oracle. Note que a maioria dos termos se encontra em inglês – por que desejamos facilitar a vida de quem está buscando este glossário para entender melhor algum outro material em inglês.

Configuration files

São arquivos contendo diretivas de funcionamento e informações concernentes ao nosso cluster, seus hosts (unidades hospedeiras, anfitriãs) e seus nós. São lidos pelo sistema assim que o cluster é iniciado.

Backup

Uma cópia integral dos dados do cluster, suas transações e seus arquivos de log salvos em discos ou em outros dispositivos de armazenamento.

Restauro

Ato de levar o cluster a um estado préviamente salvo no backup.

Checkpoint

Grosso modo, quando os dados são gravados em disco, diz-se que chegamos a um checkpoint. No caso do Cluster, para sermos mais específicos, é um ponto no tempo em que todas as transações autorizadas já foram armazenadas em disco.
No que tange o mecanismo de armazenamento NDB, podemos citar dois tipos de checkpoints que trabalham em conjunto para assegurar que uma visão consistente dos dados do cluster seja mantida:

  • Local Checkpoint (LCP): Este é o checkpoint que se refere especificamente a um nó. Um LCP envolve a gravação de todos os dados de um nó no disco, o que ocorre a cada x minutos — o intervalo x varia em função de fatores tais como a quantidade de dados contida em cada nó, o nível de atividade do cluster, entre outros.
  • Global Checkpoint (GCP): Este ocorre a cada x segundos, quando as transações para todos os nós são sincronizadas e o redo-log é liberado pro disco.
Cluster host

Um computador que seja parte de um Cluster MySQL. Um cluster tem tanto uma estrutura física como lógica. Fisicamente, consiste de um conjunto de computadores (cluster hosts) ou hosts. Consulte os termos (node) ou grupo de nós (group nodes).

Node, cluster node

…ou , refere-se a uma unidade lógica ou funcional de um Cluster MySQL. Dentre do contexto do Cluster MySQL, usamos o termo antes para nos referir a um processo em vez de um componente físico.
Há 3 tipos diferentes de nós requeridos para implementar um Cluster MySQL funcional. São os seguintes:

  1. Management (MGM) nodes ou nós de gestão/gerenciamento:
    • organizam os outros nós dentro do Cluster MySQL;
    • fornecem dados de configuração aos outros nós;
    • iniciam e terminam nós (processos);
    • entre outras funções.
  2. Nós SQL (SQL nodes): instâncias do servidor MySQL que funcionam como front ends pros dados mantidos nos nós de armazenamento do cluster. Clientes que desejem armazenar, recuperar ou alterar dados podem acessar um nó SQL tal como se estivessem acessando qualquer outro Servidor MySQL — fazendo uso das APIs e dos métodos de autenticação costumeiros; a distribuição subjacente de dados entre os node groups é transparente entre os usuários e os aplicativos. Os SQL nodes acessam integralmente os dados no banco do cluster sem se “preocuparem” com a forma como se encontram distribuídos entre os diferentes nós de armazenamento ou cluster hosts.
  3. Data nodes: também conhecidos como storage nodes ou, em bom português (quanta pretensão da minha parte!), nós de dados ou nós de armazenamento. Enfim, a função destes nós é armazenar os dados reais. A tabela de dados fragmentados é guardada em um conjunto de node groups — cada qual guarda um subconjunto diferente da tabela de dados. Cada nó, sendo parte de um grupo de nós, armazena uma réplica do fragmento pelo qual o grupo é responsável. Atualmente, um único cluster pode carregar um total de 48 nós de dados;

Nada impede que mais de um nó coexistam em uma única máquina. Mais do que isto: é possível ter um cluster completo rodando dentro de uma única máquina — embora seja totalmente desaconselhável em um ambiente de produção, pode ser um cenário muito útil e até recomendável em um ambiente de aprendizado.
Lembre-se, no contexto de um Cluster MySQL, quando falamos em hospedeiros, ou hosts, nos referimos a um componente físico do cluster, no qual um nó é um compoente lógico ou funcional (ou seja, um processo).

Node group

Um conjunto de nós de dados (data nodes). Todos os nós de dados em um conjunto, contém os mesmos dados (fragmentos) e cada nó pertencente a um determinado grupo precisa estar hospedado em uma máquina diferente.

Node failure

Um Cluster MySQL não precisa de cada um de seus nós para funcionar. O cluster pode continuar rodando, mesmo com a falha de um ou mais nós. O número preciso de falhas em nós que um cluster pode tolerar depende do número total destes e das configurações do sistema.

Node restart

É o processo de reiniciar um dos nós do cluster que tenha falhado.

Initial node restart

É o processo de iniciar um nó cluster sem o seu sistema de arquivos. É útil em alguns casos de upgrade de software e em outras circunstâncias específicas.

System crash ou system failure

Falhas no sistema, como um todo, podem ocorrer em casos de haver tantos nós do cluster com erros que a estabilidade geral do sistema fica comprometida ou não pode ser mais garantida.

System restart

É o processo de reiniciar o cluster e seu estado a partir de logs de disco e checkpoints.

Fragmento

Uma porção de uma tabela. Em um mecanismo de armazenamento NDB, uma tabela é fracionada e armazenada em fragmentos. No Cluster MySQL as tabelas são fragmentadas para facilitar o balanceamento da carga entre máquinas e nós.
Nota: É possível encontrar o termo “partição” (partition) na documentação formal do MySQL, com o mesmo significado. No entanto, o termo recomendado é “fragmento” (fragment).

Replica

No mecanismo NDB de armazenamento, cada fragmento de tabela armazena os números de replicas contidos em outros nós de armazenamento — para manter a redundância. Atualmente, pode haver até quatro réplicas por fragmento.

Transporter

Protocolo que proporciona transferência de dados entre nós. O Cluster MySQL atualmente suporta até 4 tipos diferentes de transporter connections: TCP/IP (local), TCP/IP (remoto), SCI, e SHM.

  • O TCP/IP é, naturalmente, aquele mesmo protocolo que dá sustentação ao HTTP, FTP etc na Internet, que você já conhece;
  • O SCI (Scalable Coherent Interface) é um protocolo veloz usado na montagem de sistemas multiprocessador e aplicações de processamento paralelo. O uso deste protocolo com o Cluster MySQL requer hardware especializado;
  • SHM é sigla para Unix-style shared memory segments ou segmentos de memória compartilhada “no estilo do Unix”, em uma tradução literal.

Nota: O transporter do cluster é um protocolo interno. Aplicações usando o MySQL se comunicam com os nós SQL tal como o fazem com outras versões do MySQL Server (via TCP/IP ou Windows named pipes/Unix Sockets). Através de suas APIs padrão, podemos enviar queries e receber resultados.

NDB

Sigla para Network Database. Refere-se ao mecanismo de armazenamento usado para fazer funcionar o MySQL Cluster. O NDB suporta os tipos mais comuns de colunas e comandos MySQL, além de ser ACID-compliant. Este mecanismo também oferece suporte pleno a transações (commits e rollbacks).

share-nothing architecture

Conceito de arquitetura ideal para um Cluster MySQL. Em um ambiente genuinamente share-nothing, cada nó roda em um host separado. A vantagem desta concepção é que, nela, nenhum host ou nó pode sozinho derrubar ou se tornar um gargalo pras atividades do sistema como um todo.

In-memory storage

Toda informação armazenada em cada nó de dado é guardado na memória do computador em que este se encontra hospedado. Para cada nó de dados (data node) no conjunto, é necessário ter disponível uma quantidade de RAM igual ao tamanho dos dados multiplicado pelo número de replicas, dividido pelo número de nós de dados.
Para exemplificar, se o banco de dados ocupa um gigabyte de memória, e você deseja configurar o cluster com quatro replicas e 8 nós de dados, uma reserva de, no mínimo, 500 MB de memória será necessária por nó. Some a este valor os requisitos necessários para rodar o sistema operacional e os demais aplicativos da máquina.

Tabela

Como de hábito, no contexto de um banco de dados relacional, o termo “tabela” denota um conjunto ordenado de registros estruturados e idênticos. Em um Cluster MySQL, um banco de dados é armazenado em um nó de dados na forma de um conjunto de fragmentos — cada um dos quais é replicado em outros nós de dados. Este conjunto de dados, que reproduz o mesmo fragmento ou conjunto de fragmentos, é chamado de grupo de nós (node group).

programas do Cluster

São programas em linha de comando usados para rodar, configurar e administrar o Cluster MySQL. O que inclui ambos daemons de servidor:

  • ndbd – daemon que executa o processo de dados do nó;
  • ndb_mgmd – executa o servidor de gestão.
Programas clientes
  • ndb_mgm – O cliente de gestão (oferece uma interface para executar os programas de gestão)
  • ndb_waiter – Usado para verificar o status de todos os nós em um cluster
  • ndb_restore – Recupera dados do cluster do backup
Event log

O Cluster MySQL registra (log) os eventos por categoria (início, desligamento, erros, checkpoints etc.), prioridade e pela sua gravidade.
Os registros são divididos em 2 tipos:

  • Cluster log – mantém um registro de todos os eventos relacionados ao cluster, como um todo;
  • Node log – um registro (log) separado é criado e mantido para cada nó individualmente.

Sob circunstâncias normais, é necessário e suficiente manter e examinar apenas o log do cluster (cluster log). Os node logs, normalmente só são necessários para desenvolvedores de aplicativos e para fins de depuração.

MySQL: comandos básicos

O objetivo deste curto tutorial é introduzir os primeiros conceitos, de forma bem objetiva e com exemplos práticos, a quem está tendo o seu primeiro contato com o MySQL ou precisa apenas obter uma referência rápida sobre como lidar com criação/remoção de bancos de dados, tabelas e registros, entre outras tarefas básicas.
mysql logo
No meio do texto, há links para outros artigos em que os comandos são abordados com maior profundidade.

NOTAS
  • Não esqueça de sempre terminar o comando com um ‘;’ (ponto e vírgula), ou ele não funcionará;
  • Tenha em mente o limite de 64 caracteres para nomes de bancos de dados;
  • Para evitar problemas ao mover dados entre servidores de diferentes sistemas operacionais use apenas letras minúsculas, alfanuméricas e underscores nos nomes dos bancos e das tabelas;
  • E, sim, você pode escrever tudo em letras minúsculas – tanto os comandos, como as variáveis. O cliente MySQL não é sensível à caixa das letras. Este tutorial as usa apenas para tornar mais fácil a leitura e a compreensão;

ad-receias-geek-funcoes-data-hora-512x120

Comandos MySQL

Após a instalação completa do MySQL, alguns programas, que fazem parte do pacote, ajudam a conectar ao servidor e a realizar todas as tarefas administrativas. O cliente mysql é o principal deles e é nele que este artigo manterá o foco.

Como conectar ao MySQL

Conecte-se ao servidor MySQL com o seguinte comando:

mysql -h NOME-DO-SERVIDOR -u NOME-DO-USUARIO

Após dar o comando, o sistema vai pedir a sua senha de usuário.
Dica: Se você instalou o MySQL no seu próprio PC, pode usar localhost no lugar de NOME-DO-SERVIDOR.
No exemplo, a seguir, veja como se conectar como root:

mysql -u root -p

Se não foi você quem fez a instalação, pode precisar contatar o administrador do banco de dados para saber que valores usar para conectar ao servidor MySQL.
Em servidores remotos, você provavelmente precisará usar o SSH para se conectar ao MySQL.

Como criar um banco de dados no MySQL

O comando para criar um banco de dados é este:

CREATE DATABASE nome-do-banco;

Para ver todos os bancos de dados existentes no servidor:

SHOW DATABASES;

Em um exemplo prático, a criação do banco de dados testes, ficaria assim:

CREATE DATABASE testes;

Você pode exibir os bancos de dados criados, através do comando SHOW:

SHOW DATABASES;

Antes de criar uma tabela ou realizar qualquer operação, é necessário selecionar o banco de dados que vai ser usado:

USE testes;
LEIA MAIS:

Como criar uma tabela no MySQL

Como já foi dito, antes de criar uma tabela, você precisa indicar o banco de dados a ser usado – dentro do qual vai criar uma tabela. Que tal usarmos o exemplo do tópico anterior?

USE testes;

Agora, vamos criar uma tabela dentro dele, com o nome clientes:

CREATE TABLE `clientes` (
  `idCliente` mediumint(8) unsigned NOT NULL auto_increment,
  `nomeEmpresa` varchar(255),
  `nomeDiretor` varchar(255) default NULL,
  `numEmpregados` mediumint default NULL,
  PRIMARY KEY (`idCliente`)
) AUTO_INCREMENT=1;

Você pode pedir pro sistema exibir todas as tabelas presentes no banco de dados selecionado:

SHOW tables;

Para obter informações sobre uma tabela, você pode usar o comando DESCRIBE ou DESC:

DESCRIBE clientes;

Como inserir mais dados em uma tabela

Vamos “povoar” mais a nossa tabela com alguns dados:

INSERT INTO `clientes` (`idCliente`,`nomeEmpresa`,`nomeDiretor`,`numEmpregados`) VALUES (1,"Malesuada Inc.","Johnny Pedd",4847);
INSERT INTO `clientes` (`idCliente`,`nomeEmpresa`,`nomeDiretor`,`numEmpregados`) VALUES (2,"Aliquam Inc.","Al Capino",4135);
INSERT INTO `clientes` (`idCliente`,`nomeEmpresa`,`nomeDiretor`,`numEmpregados`) VALUES (3,"Union Carbide","Robert Ne Diro",3755);
INSERT INTO `clientes` (`idCliente`,`nomeEmpresa`,`nomeDiretor`,`numEmpregados`) VALUES (4,"Magna Carta Ltda.","Wenzel Dashington",3071);
INSERT INTO `clientes` (`idCliente`,`nomeEmpresa`,`nomeDiretor`,`numEmpregados`) VALUES (5,"Nunc Corp.","",3859);
INSERT INTO `clientes` (`idCliente`,`nomeEmpresa`,`nomeDiretor`,`numEmpregados`) VALUES (6,"In Company","Macaulay Bulkin",4440);

Lembra que o campo idCliente foi criado com o parâmetro auto_increment. Seu preenchimento é automático. Você não precisa informar o seu valor, portanto:

INSERT INTO `clientes`
(`idCliente`,`nomeEmpresa`,`nomeDiretor`,`numEmpregados`)
VALUES ('',"GameCorp.","Din Viesel",2071);
LEIA MAIS:

Como ver os registros na tabela com o comando SELECT

Tal como o nome sugere, o comando SELECT seleciona e exibe os registros gravados na tabela.
A maneira mais simples de usá-lo é essa:

SELECT * FROM clientes;

Você pode refinar a pesquisa de inúmeras maneiras.
Se quiser ver apenas o conteúdo dos campos id_cliente e nome_empresa, use-o assim:

SELECT id_cliente, nome_empresa FROM clientes;
SAIBA MAIS

Como remover um registro de uma tabela

A sintaxe do comando para apagar um registro é:

DELETE FROM nome-da-tabela WHERE nome-da-coluna=texto;

Veja um exemplo prático de uso do comando DELETE:

DELETE FROM clientes WHERE nomeEmpresa = 'GameCorp';

Com este comando, TODOS os registros que tiverem nomeEmpresa = 'GameCorp' serão eliminados. Neste caso, há apenas 1. Mas vamos imaginar que houvesse 10 ou 100 registros em que o nomeEmpresa fosse igual a GameCorp. Neste caso, seria necessário usar outro campo como referência para encontrar o registro que eu desejo eliminar. No nosso caso, há o campo idCliente, que é único – ele não se repete dentro da tabela:

DELETE FROM clientes WHERE idCliente = 7;

Como remover uma tabela ou um banco de dados

Seja cuidadoso(a). O comando DROP apaga permanentemente uma tabela ou um banco de dados. Veja como usar o DROP para eliminar uma tabela:

DROP TABLE nome-da-tabela;

ou, como remover um banco de dados:

DROP DATABASE nome-do-banco;

Como limpar uma tabela

Para limpar uma tabela, use o comando TRUNCATE. Internamente, ele remove a tabela primeiro e, depois, a recria com a mesma estrutura – só que sem os dados. Se houver um contador AUTO_INCREMENT, na tabela em questão, ele é zerado e recolocado. Veja como funciona:

TRUNCATE TABLE nome-da-tabela;

Como alterar um registro no MySQL

Aqui, o comando UPDATE entra em ação. Vamos ver como usá-lo para alterar o valor de um campo dentro de um registro:

UPDATE clientes SET numEmpregados=1999 WHERE idCliente = 1;
LEIA MAIS: