IST - Física HowTo - Informática 11:01
2025-12-22
  Programação
 
     MySQL / MariaDB
 
        Instalação e Admin.
 
        Pequeno manual
 
        MySQLi (PHP)
 

MySQL / MariaDB - Pequeno manual

Sumário
1. Tipos dos campos de uma tabela
2. Como se cria, apaga e chama uma base de dados
3. Como se cria, limpa e apaga uma tabela (table)
4. Como se introduz, altera e apaga a informação numa tabela
5. Como pesquisar a informação numa tabela
6. Curingas (wildcards) em SQL. Instrução 'LIKE'
7. Como pesquisar diversos valores para um campo. Instrução 'IN'. Equivalente a uma sucessão de 'OR'
8. Como pesquisar valores dum campo num certo intervalo. Instrução 'BETWEEN'
9. Funções predefinidas -- alguns exemplos
10. Como executar sequências de comando a partir de um ficheiro
11. Como pesquisar em mais do que uma tabela
12. Como juntar duas pesquisas. Instrução 'UNION'
13. Como ver e apagar dados de uma tabela com certo tempo
Início

1. Tipos dos campos de uma tabela

Tipo Descrição
TINYINT Inteiro de 1 byte
SMALLINT Inteiro de 2 byte
MEDIUMINT Inteiro de 3 byte
INT ou INTEGER Inteiro de 4 bytes
BIGINT Inteiro de 8 bytes
FLOAT Real de 4 bytes
DOUBLE ou REAL Real de 8 bytes
DATE Formato: 'YYYY-MM-DD'
TIME Formato: 'HH:MM:SS'
DATETIME Formato: 'YYYY-MM-DD HH:MM:SS'
CHAR(len) String de caracteres de tamanho fixo
VARCHAR(len) String de caracteres de tamanho variável
TINYBLOB, TINYTEXT Texto até 255 (2^8 - 1) caracteres
BLOB, TEXT Texto até 65535 (2^16 - 1) caracteres
MEDIUMBLOB, MEDIUMTEXT Texto até 16777215 (2^24 - 1) caracteres
LONGBLOB, LONGTEXT Texto até 4294967295 (2^32 - 1) caracteres
ENUM Tipo enumerado
Início

2. Como se cria, apaga e chama uma base de dados

Uma base de dados é criada com o comando 'CREATE DATABASE':

  • CREATE DATABASE xpto DEFAULT CHARACTER SET utf8 COLLATE utf8_swedish_ci;
neste caso usa-se o modo de representação de caracteres de tamanho variável 'utf8'.

Nota: Se se desejar fazer o teste de existência da base de dados antes de a apagar, fazer 'CREATE DATABASE IF NOT EXISTS'.

Para a apagar usa-se 'DROP DATABASE':

  • DROP DATABASE IF EXISTS xpto;

Nota: De um modo análogo, se que quiser fazer o teste de existência antes de apagar fazer 'DROP DATABASE IF EXISTS'.

Para chamar uma base de dados usa-se 'USE':

  • USE xpto;

Início

3. Como se cria, limpa e apaga uma tabela (table)

Uma tabela é criada com o comando 'CREATE TABLE' a que se segue a informação referente a cada um dos campos nela contidos que deverá ter o nome seguido pelo seu tipo (ver tipos). Neste caso usa-se 'id' como um contador númerico se funcionará como índice da tabela e o campo 'nascimento' tem obrigatoriamente de ser preenchido.

  • CREATE TABLE tabela_nome (id INT NOT NULL AUTO_INCREMENT,
            name VARCHAR(80), nascimento DATE NOT NULL, altura INT,
            curso VARCHAR(120), PRIMARY KEY (id));

Para ver as tabelas definidas numa dada base de dados:

  • SHOW TABLES;

Para ver a decrição duma tabela:

  • SHOW INDEX FROM tabela_nome;

Para ver os índices duma tabela:

  • DESCRIBE FROM tabela_nome;

Para apagar uma tabela:

  • DROP TABLE tabela_nome;

Para acrescentar uma coluna (campo) a uma tabela:

  • ALTER TABLE tabela_nome ADD nova_coluna tipo;
  • ALTER TABLE tabela_nome ADD nova_coluna tipo AFTER coluna_existente;

Para apagar toda a informação de uma tabela:

  • DELETE FROM tabela_nome;

Início

4. Como se introduz, altera e apaga a informação numa tabela

Para inserir dados numa tabela usa-se o comando 'INSERT INTO'. Os dados são introduzidos entre parêntesis e separados por vírgulas. Para a introdução de textos pode usar-se plicas ou aspas. Quando se tem um campo com auto-incremento, é conveniente pô-lo a '0'. Os campos não preenchidos são marcado com 'NULL:

  • INSERT INTO tabela_nome VALUES (0, 'Nome1', '2000-01-01', 170, NULL);

É igualmente possível fazer a introdução a partir de um ficheiro que contém a informação:

  • LOAD DATA LOCAL INFILE "file_name" INTO TABLE tabela_nome;
neste caso, o ficheiro deve ser construído do seguinte modo: entrada na tabela corresponde a uma linha e os campos devem estar separados por TABS

.

Para alterar a informação de um registo de uma tabela usa-se 'UPDATE', em que campo_nome1 é o campo a alterar e campo_nome2 é o campo de referência:

  • UPDATE tabela_nome SET campo_nome1 = novo_valor1 WHERE campo_nome2 = novo_valor2;
  • UPDATE tabela_nome SET nascimento = "1990-01-01" WHERE nome = "Nome1";

Para apagar um registo de uma tabela usa-se 'DELETE FROM', em que 'tabela_nome1' é a tabela a alterar e 'condição' é a condição que os campos do registo a apagar devem satisfazer:

  • DELETE FROM tabela_nome1 WHERE condição;

Início

5. Como pesquisar a informação numa tabela

A leitura da informação contida numa tabela é feita com a instrução "SELECT". O exemplo mais simples corresponde a pedir toda a informação contida uma tabela (em que 'table_name' é o nome da tabela desejada):

SELECT * FROM table_name;

Para obter resultados mais específicos pede restringir-se a informação pedida. Exemplos:

ComandoExplicação
SELECT f1,f2 FROM table_name;Mostra os campos 'f1' e 'f2' de 'table_name'
SELECT * FROM table_name WHERE f1="valor";Mostra as entradas em que o campo 'f1' toma o valor "valor"
SELECT * FROM table_name WHERE f1>v1 AND f1<v2;Mostra as entradas entre v2 < f1 %lt; v1
SELECT * FROM table_name WHERE f1>v1 AND f2>v2;Mostra as entradas os campos f1 > v1 e f2 > v2
SELECT * FROM table_name ORDER BY f1;Mostra as entradas ordenadas de acordo com o campo 'f1'
SELECT * FROM table_name ORDER BY f1 DESC;Mostra as entradas ordenadas de acordo com o campo 'f1' por ordem descrescente
SELECT DISTINCT f1 FROM table_name;Mostra apenas as entradas diferentes do campo 'f1'
SELECT * FROM table_name LIMIT N;Mostra as 'N' primeiras entradas de 'table_name'
SELECT * FROM table_name LIMIT N OFFSET M;Mostra as 'N' primeiras entradas de 'table_name' tirando as 'M' primeiras
Nota: No caso do nome do campo ter caracteres não literais (hifens, espaços, etc.) o nome do campo deve ficar entre acentos graves (exemplo: se o campo se chamar campo-f1, então deve escrever-se: `campo-f1`).
Início

6. Curingas (wildcards) em SQL. Instrução 'LIKE'

A instrução 'LIKE' permite a especifição de apenas partes do campo a pesquisar. O conteúdo da pesquisa fica entre plicas ('...').
Existem dois tipos de curingas (wildcards):

CuringaExplicação
% (percentagem)Representa nenhum, um ou mais caracteres
_ (sublinhado)Representa um caracter

Exemplos:

ComandoExplicação
WHERE f1 LIKE 'a%';Todas as entradas do campo 'f1' que começam por 'a'
WHERE f1 LIKE '%a';Todas as entradas do campo 'f1' que terminam por 'a'
WHERE f1 LIKE '%a%';Todas as entradas do campo 'f1' em que existe pelo menos um 'a'
WHERE f1 LIKE '_a%';Todas as entradas do campo 'f1' que têm 'a' como segundo caracter
WHERE f1 LIKE '_a_';Todas as entradas do campo 'f1' que têm 3 caracteres e um 'a' na segunda posição
Início

7. Como pesquisar diversos valores para um campo. Instrução 'IN'. Equivalente a uma sucessão de 'OR'

A instrução 'IN' permite especificar um conjunto de valores. É equivalente a um conjunto de 'OR' a ligar os valores indicados. Exemplo:
SELECT * FROM table1 WHERE f1 IN (v1, v2, ..., vN);
Selecciona todos os valores que satisfazem 'f1 = v1 OR f1 = v2 OR ... OR f1 = vN'.
Início

8. Como pesquisar valores dum campo num certo intervalo. Instrução 'BETWEEN'

A instrução 'BETWEEN' permite especificar um intervalo de pesquisa. Os limites estão incluídos. Exemplo:

SELECT * FROM table1 WHERE f1 BETWEEN v1 AND v2;

Obtêm-se assim todos as entradas de 'f1' contidos no intervalo [v1, v2].

Início

9. Funções predefinidas -- alguns exemplos

Existem diversas funções definidas em MySQL. Seguem-se alguns exemplos

Comando ExplicaçãoExemplo
COUNT(f1)Conta o número de entradas. 'f1' pode pode ser '*' ou um camposelect *, COUNT(*) from table_name;
CURDATE()Dá a data actualselect *, CURDATE() from table_name;
DAY()Recebe como argumento uma data e retorna o respectivo diaselect *, DAY(f1) from table_name;
MAX(f1)Retorna o valor máximo do campo 'f1'select MAX(f1) from table_name;
MIN(f1)Retorna o valor mínimo do campo 'f1'select MIN(f1) from table_name;
MONTH()Recebe como argumento uma data e retorna o respectivo mêsselect *, MONTH(f1) from table_name;
YEAR()Recebe como argumento uma data e retorna o respectivo anoselect *, YEAR(f1) from table_name;
Início

10. Como executar sequências de comando a partir de um ficheiro

Para executar um ficheiro com instruções de SQL usando a linha de comandos:
$ mysql -h host -u user -p < 'batch-file'
Enter password: ******
Se se deseja que, em caso de erro, o MySQL continue a execução, acrescentar "--force":
$ mysql --force -h host -u user -p < 'batch-file'
Enter password: ******
Início

11. Como pesquisar em mais do que uma tabela

aaa
Início

12. Como juntar duas pesquisas. Instrução 'UNION'

A instrução 'UNION' serve para juntar duas ou mais pesquisas. O número de colunas de cada pesquisa deve ser o mesmo e elas devem ter o mesmo tipo. A 'UNION' selecciona apenas valores diferentes, assim, se se quer que apareçam todos deve fazer-se 'UNION ALL'. Exemplos:
SELECT f1, f2 FROM table1 UNION SELECT f3, f4 FROM table2;
Início

13. Como ver e apagar dados de uma tabela com certo tempo

  • Como mostrar os dados de uma tabela
Início