?>
1-mysql Básico
Exercícios
?>

4-Introdução à Instrução SELECT em Tabelas

No capítulo anterior estudamos algumas instruções bem básicas, usando SELECT

Nesse capítulo continuamos com a apresentação do SELECT, agora aplicado consultas (básicas) em bancos de dados.

Além da instrução SELECT, vamos ver algumas outras:

  • show databases;
  • use DATABASE-NOME;
  • show tables;
  • describe tabela-nome
  • select ...LIMIT
  • count

Organização do Banco de Dados

A linguagem SQL e o SGBD Mysql trabalham usam banco de dados estruturados em tabelas.

Uma tabela é uma organização formada por linhas e colunas. As tabelas são "as materializações das relações do modelo relacional.

Na terminologia de Banco de Dados as linhas são os registros (record). Cada linha (registro) representa a instância de um item armazenado. Cada coluna uma informação relativa ao item específico. A cada coluna é associado um tipo de dado.

Na figura dada abaixo, temos uma tabela ultra-simples formada por 5 colunas e 5 linhas, sendo 4 linhas de dados (registros) e uma linha que caracteriza as colunas. Cada coluna possui um tipo de dado: numérico, string ou caractere.

A linguagem SQL possui diferentes tipos de dados, como veremos em detalhe adiante no curso.

tab1

Algumas consultas em tabelas

Banco de Dados "empresa"

Exemplo 1: Banco de Dados "empresa"

Nesse primeiro exemplo vamos fazer algumas consultas no banco de dados "empresa". Essa banco contém três tabelas: descontos, pagamentos, empregados.

Para podermos usá-lo nas consulta, temos que defini-lo com o "banco de dados corrente", para isso usamos a instrução use.

Veja:

use empresa;

Podemos usar a instrução show tables para vermos as tabelas do banco.

Opcionalmente, podemos usar a instrução "describe NOME-TABELA" para ver a estrutura de uma tabela (ou seja para "descrever a tabela"). Por exemplo, podemos fazer:

describe descontos;

para ver quais as colunas da tabela "descontos". Ao apresentar o resultado, o mysql apresenta o campo (título da coluna), o tipo de dado que a coluna aceita e características específicas do campo (veremos mais adinte no curso como criar um tabela e definir seus campos).

Usando SELECT

Alguns exemplos do uso da instrução select.
  • para ver todas as colunas e linhas da tabela, faça select * FROM nome-tabela
  • Exemplo: select * from descontos: seleciona (e mostra) todas as colunas (ou campos) da tabela "descontos"
  • Para mostrar as colunas especificadas (c1,c2,...cn) e todas as linhas da tabela, faça select c1,c2,..,cn FROM nome-tabela
  • Exemplo: select * from descontos: seleciona (e mostra) todas as colunas (ou campos) da tabela "descontos"

Observação

Para usar um banco de dados no mysql temos que carregá-lo (a partir de um arquivo externo) ou criá-lo. Para carregar o banco de dados "empresa", veja a explicação aqui.

Vejas nas imagens do Exemplo 1 abaixo, as diversas instruções e os resultados das consultas.

Exemplo 1

                            
mysql> use empresa;
Database changed
mysql> show tables;
+-------------------+
| Tables_in_empresa |
+-------------------+
| descontos         |
| empregados        |
| pagamentos        |
+-------------------+
3 rows in set (0.00 sec)

mysql> describe descontos;
+------------------+---------------+------+-----+---------+-------+
| Field            | Type          | Null | Key | Default | Extra |
+------------------+---------------+------+-----+---------+-------+
| codigo_desconto  | int           | YES  |     | NULL    |       |
| codigo_empregado | int           | YES  |     | NULL    |       |
| valor            | decimal(10,2) | YES  |     | NULL    |       |
+------------------+---------------+------+-----+---------+-------+
3 rows in set (0.01 sec)

mysql> select * from descontos;
+-----------------+------------------+-------+
| codigo_desconto | codigo_empregado | valor |
+-----------------+------------------+-------+
|            NULL |                1 | 50.00 |
|            NULL |                2 | 20.00 |
|            NULL |                5 | 30.00 |
+-----------------+------------------+-------+
3 rows in set (0.00 sec)

mysql> select * from empregados;
+------------------+----------+
| codigo_empregado | nome     |
+------------------+----------+
|                2 | Marina   |
|                3 | Letícia  |
|                1 | Luis     |
|                4 | Gustavo  |
|                5 | Mateus   |
+------------------+----------+
5 rows in set (0.00 sec)

mysql> select * from pagamentos;
+--------------+------------------+--------+
| codigo_pagto | codigo_empregado | valor  |
+--------------+------------------+--------+
|         NULL |                1 | 100.00 |
|         NULL |                1 | 200.00 |
|         NULL |                3 | 300.00 |
|         NULL |                5 | 400.00 |
|         NULL |                5 | 500.00 |
|         NULL |                1 | 100.00 |
|         NULL |                1 | 200.00 |
|         NULL |                3 | 300.00 |
|         NULL |                5 | 400.00 |
|         NULL |                5 | 500.00 |
+--------------+------------------+--------+
10 rows in set (0.00 sec)


mysql> select codigo_empregado, valor from pagamentos;
+------------------+--------+
| codigo_empregado | valor  |
+------------------+--------+
|                1 | 100.00 |
|                1 | 200.00 |
|                3 | 300.00 |
|                5 | 400.00 |
|                5 | 500.00 |
|                1 | 100.00 |
|                1 | 200.00 |
|                3 | 300.00 |
|                5 | 400.00 |
|                5 | 500.00 |
+------------------+--------+
10 rows in set (0.00 sec)

Select com WHERE e LIKE

Usamos a cláusula WHERE para fazer consultas com restrições especificadas. Assim WHERE é seguida de uma expressão lógica.

Quando usamos pesquisa em STRINGS (ou seja campos (colunas) com strings) podemos usar o predicado LIKE para buscar string ou parte delas. Podemos usar o caracter coringa % ou _ para selecionar partes das strings.

Veja alguns exemplos usando o banco de dados empresa.

Exemplo 2 - USANDO LIKE

                            
mysql> select * from empregados where nome ='Mateus';
+------------------+--------+
| codigo_empregado | nome   |
+------------------+--------+
|                5 | Mateus |
+------------------+--------+
1 row in set (0.00 sec)

mysql> select * from empregados where nome LIKE 'Mateus';
+------------------+--------+
| codigo_empregado | nome   |
+------------------+--------+
|                5 | Mateus |
+------------------+--------+
1 row in set (0.00 sec)


mysql> select * from empregados where nome ='Ma%';
Empty set (0.00 sec)


mysql> select * from empregados where nome like 'Ma%';
+------------------+--------+
| codigo_empregado | nome   |
+------------------+--------+
|                2 | Marina |
|                5 | Mateus |
+------------------+--------+
2 rows in set (0.00 sec)

mysql> select * from empregados 
    -> where nome LIKE '%a';
+------------------+----------+
| codigo_empregado | nome     |
+------------------+----------+
|                2 | Marina   |
|                3 | Letícia  |
+------------------+----------+
2 rows in set (0.00 sec)



                            

Select com WHERE, IN e BETWEEN

Podemos usar os predicados IN e BETWEEN para, respectivamente, procurar valores dentro de uma lista ou entre um intervalo.

Veja os exemplos a seguir.

Exemplo 3- USANDO BETWEEN e IN...-0

                            


mysql> select codigo_empregado AS codigo, valor from pagamentos where valor BETWEEN 200 AND 400;
+--------+--------+
| codigo | valor  |
+--------+--------+
|      1 | 200.00 |
|      3 | 300.00 |
|      5 | 400.00 |
+--------+--------+
3 rows in set (0.00 sec)


mysql> select * from empregados 
    -> where nome IN ('Marina','Leticia');
+------------------+----------+
| codigo_empregado | nome     |
+------------------+----------+
|                2 | Marina   |
|                3 | Letícia  |
+------------------+----------+
2 rows in set (0.00 sec)



Usando Banco de Dados no seu mysql

Vimos nesse capítulo algumas poucas instruções de consulta a partir da instrução SELECT.

Usamos um banco de ados muito simples. No nosso exemplo, quando entramos no sistema, o banco de dados já estava lá. Ou seja, ela já havia sido carregado.

Mas caso você não tenha o banco de dados no seu sistema (e caso você não use o mysql do servidor da escola, você não o terá), você terá que criá-lo ou carregá-lo.

Como carregar um banco de Dados

Como carregar um banco de Dados

Uma forma simples de se carregar o banco de dados e fazê-lo no instante que você faz o login no mysql.

Para isso você precisa ter um arquivo texto descrevendo o banco de dados, na linguagem SQL (com os comandos/instruções do mysql). Geralmente damos a extensão .sql para esses arquivos.

Assim, quando vamos carregar o banco de dados empresa, usado no Exemplo 1 acima, fizemos, no prompt do terminal linux:

Comando no terminal do Ubuntu

                            
                            mysql -u fantini -p < empresa.sql 

                            
                        

Para obter o arquivo empresa.sql clique aqui.

Exercício 2

Nesse exercício continuamos apresentando instruções básicas de consulta. Veja no arquivo PDF apresentado abaixo, as diferentes consultas realizadas em alguns bancos de dados criados especificamente para testes.

Atente para as instruções e as explicações.

Nos exemplos apresentados usamos os bancos de dados:

  1. empresa
  2. world. Esse é um banco criado para testes, disponibilzado pela Mysql.com. Baixe o arquivo sql, clicando aqui.
  3. employees (https://dev.mysql.com/doc/employee/en/). Esse também é um banco padrão disponibilzado pela Mysql.com (Sample employee database). Ele faz parte de um tutorial básico. Nesse link apresentado você encontra as explicações de como usar o banco e de como estudar a estrutura do banco e usar alguns comandos avançados. Se desejar apenas obter o arquivo sql desse banco, clique aqui.
No exercício que se segue, temos várias "tarefas" com explicações importantes. Apresentamos novos comandos/instruções e novas palavres chave do SQL/mysql. Dentre as "novidades", apresentamos:
  • uso do AS para criar apelidos (alias)
  • Apresentamos a cláusla WHERE
  • Apresentamos a cláusla GROUP BY (agrupa valores da listagem)
  • Apresentamos a função COUNT() (conta)
  • Apresentamos a função SUM() (soma)
  • Apresentamos a função AVG() (média)
  • Apresentamos a função MAX() (máximo)
  • Apresentamos a função MIN() (mínimo)
  • Apresentamos a cláusla ORDER BY (ordena a listagem)

Observação

Veremos, mais adiante nos curso, como criar consultas mais elaboradas, com SELECT e funções e cláuslas específicas

Tarefa do Exercício: Estude os exemplos e as explicações, executando as consultas apresentadas aqui

voltar ao início da página