IST - Física MEFT - Programação 20:51:04
19 - May - 2024
  Página de entrada  
  Informações  
  Avaliação  
  Sumários  
  Séries Semanais  
  Trabalhos Finais  
  Bibliografia  
  Manuais  
  Links Úteis  
  HowTo  
  Pagina Web (Exemplo)  
  Turmas de Laboratório  
  Notas Finais e Marcações  
  Contacto  

HowTo: MySQL - Exemplos


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

1. 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

2. 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

3. 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

4. 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

5. 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

6. 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

7. 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

8. 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

9. 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

10. Como pesquisar em mais do que uma tabela

aaa
Início

11. 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

12. Mostrar informação do sistema (SHOW)

O comando 'SHOW' permite mostrar informação do sistema.
  • SHOW VARIABLES A seguir mostram-se alguns exemplos com a informação contida nas variáveis:
    • Tipo de caracteres actual
      SHOW VARIABLES LIKE 'character_set_system';
    • Pasta em que são guardadas as bases de dados
      SHOW VARIABLES LIKE 'datadir';
    • Nome do computador
      SHOW VARIABLES LIKE 'hostname';
    • Mostra a versão
      SHOW VARIABLES LIKE 'version';
    • Mostra informações da versão
      SHOW VARIABLES LIKE 'version%';
    Nota: Para ver todas as variáveis fazer:
    SHOW VARIABLES LIKE '%';
  • SHOW WARNINGS
    • Mostra os avisos (warnings):
      SHOW WARNINGS;
Início

13. Mostrar informação dos utilizadores (SHOW)

  • Criar um utilizador
    CREATE USER 'userName'@'%' IDENTIFIED WITH mysql_native_password BY 'password';
  • Atribuir privilégios ('grants') a um utilizador (neste exemplo, todos)
    GRANT ALL ON databaseName.* TO 'userName'@'%';
  • Apagar utilizador. Para apagar um utilizador deve-se primeiro remover os 'grants'
    REVOKE ALL PRIVILEGES, GRANT OPTION FROM 'userName'@'localhost';
    DROP USER 'userName'@'localhost';
  • Mostrar utilizadores
    SELECT user,host FROM mysql.user;
  • Mostrar 'grants' de um utilizador
    SHOW GRANTS FOR 'userName'@'localhost';
  • Mostrar o utilizador actual
    SELECT current_user();
  • Atribuir 'grants' a um utilizador
    SELECT current_user();
Início

14. 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