>_Banco de dados SQL – Select – 1.1

SQL

é sigla inglesa de “Structured Query Language” que significa, em Português, Linguagem de Consulta Estruturada, uma linguagem padrão de gerenciamento de dados que interage com os principais bancos de dados baseados no modelo relacional.

Alguns dos principais sistemas que utilizam SQL são: MySQL, Oracle, Firebird, Microsoft Access, PostgreSQL (código aberto), HSQLDB (código aberto e escrito em Java).

A linguagem SQL surgiu em 1974 e foi desenvolvida nos laboratórios da IBM como interface para o Sistema Gerenciador de Banco de Dados Relacional (SGBDR) denominado SYSTEM R. Esse sistema foi criado com base em um artigo de 1970 escrito por Edgar F. Codd.

Outras linguagens do gênero surgiram, mas a SQL tornou-se a mais utilizada. A criação de um padrão para a SQL foi realizada em 1986 pelo American National Standard Institute (ANSI) e em 1987 pela International Organization for Standards (ISO).

SQL é uma linguagem essencialmente declarativa. Isso significa que o programador necessita apenas indicar qual o objetivo pretendido para que seja executado pelo SGBDR.

Alguns dos principais comandos SQL para manipulação de dados são: INSERT (inserção), SELECT (consulta), UPDATE (atualização), DELETE (exclusão). SQL possibilita ainda a criação de relações entre tabelas e o controle do acesso aos dados.

Toda estrutura deste tutorial será realizada no Banco de Dados MySQL dentro da Database controle_compras na tabela COMPRAS.

Não irei abordar a instalação e configuração do MySQL. Este tutorial tem como objetivo apenas os comandos de SQL.

Download da tabela COMPRAS.

Criando a database controle_compras

create database controle_compras;

Acessando a database controle_compras

mysql> USE controle_compras;

Criando a tabela COMPRAS

mysql> create table `COMPRAS`(
    -> `ID` INT NOT NULL AUTO_INCREMENT,
    -> `VALOR` DOUBLE NULL,
    -> `DATA`DATE NULL,
    -> `OBSERVACOES` VARCHAR(255) NULL,
    -> `RECEBIDO` TINYINT(1) NULL,
    -> PRIMARY KEY(ID));

Verificando a descrição da tabela COMPRAS

mysql> desc COMPRAS;
+-------------+--------------+------+-----+---------+----------------+
| Field       | Type         | Null | Key | Default | Extra          |
+-------------+--------------+------+-----+---------+----------------+
| ID          | int(11)      | NO   | PRI | NULL    | auto_increment |
| VALOR       | double       | YES  |     | NULL    |                |
| DATA        | date         | YES  |     | NULL    |                |
| OBSERVACOES | varchar(255) | YES  |     | NULL    |                |
| RECEBIDO    | tinyint(1)   | YES  |     | NULL    |                |
+-------------+--------------+------+-----+---------+----------------+
5 rows in set (0.03 sec)

Executando o restore da tabela no banco MySQL dentro da database controle_compras

$ mysql -u usuario -psenha crontole_compras < COMPRAS.sql

Acessando a database controle_compras

mysql> USE controle_compras;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Verificando quantas tabelas existem dentro da database controle_compras

mysql> SHOW TABLES;
+----------------------------+
| Tables_in_controle_compras |
+----------------------------+
| COMPRAS                    |
+----------------------------+
1 row in set (0.00 sec)

Usando o operador SELECT para listar os campos/dados da tabela COMPRAS

mysql> SELECT * FROM COMPRAS;
+----+----------+---------------------+------------------------------+----------+
| id | valor    | data                | observacoes                  | recebido |
+----+----------+---------------------+------------------------------+----------+
|  1 |   200.00 | 2008-02-19 00:00:00 | MATERIAL ESCOLAR             |        1 |
|  2 |  3500.00 | 2008-05-21 00:00:00 | TELEVISAO                    |        0 |
|  3 |  1576.40 | 2008-04-30 00:00:00 | MATERIAL DE CONSTRUCAO       |        1 |
|  4 |   163.45 | 2008-12-15 00:00:00 | PIZZA PRA FAMILIA            |        1 |
|  5 |  4780.00 | 2009-01-23 00:00:00 | SALA DE ESTAR                |        1 |
|  6 |   392.15 | 2009-03-03 00:00:00 | QUARTOS                      |        1 |
|  7 |  1203.00 | 2009-03-18 00:00:00 | QUARTOS                      |        1 |
|  8 |   402.90 | 2009-03-21 00:00:00 | COPA                         |        1 |
|  9 |    54.98 | 2009-04-12 00:00:00 | LANCHONETE                   |        0 |
| 10 |    12.34 | 2009-05-23 00:00:00 | LANCHONETE                   |        0 |
| 11 |    78.65 | 2009-12-04 00:00:00 | LANCHONETE                   |        0 |
| 12 |    12.39 | 2009-01-06 00:00:00 | SORVETE NO PARQUE            |        0 |
| 13 |    98.12 | 2009-07-09 00:00:00 | HOPI HARI                    |        1 |
| 14 |  2498.00 | 2009-01-12 00:00:00 | COMPRAS DE JANEIRO           |        1 |
| 15 |  3212.40 | 2009-11-13 00:00:00 | COMPRAS DO MES               |        1 |
| 16 |   223.09 | 2009-12-17 00:00:00 | COMPRAS DE NATAL             |        1 |
| 17 |   768.90 | 2009-01-16 00:00:00 | FESTA                        |        1 |
| 18 |   827.50 | 2010-01-09 00:00:00 | FESTA                        |        1 |
| 19 |    12.00 | 2010-02-19 00:00:00 | SALGADO NO AEROPORTO         |        1 |
| 20 |   678.43 | 2010-05-21 00:00:00 | PASSAGEM PRA BAHIA           |        1 |
| 21 | 10937.12 | 2010-04-30 00:00:00 | CARNAVAL EM CANCUN           |        1 |
| 22 |  1501.00 | 2010-06-22 00:00:00 | PRESENTE DA SOGRA            |        0 |
| 23 |  1709.00 | 2010-08-25 00:00:00 | PARCELA DA CASA              |        0 |
| 24 |   567.09 | 2010-09-25 00:00:00 | PARCELA DO CARRO             |        0 |
| 25 |   631.53 | 2010-10-12 00:00:00 | IPTU                         |        1 |
| 26 |   909.11 | 2010-02-11 00:00:00 | IPVA                         |        1 |
| 27 |   768.18 | 2010-04-10 00:00:00 | GASOLINA VIAGEM PORTO ALEGRE |        1 |
| 28 |   434.00 | 2010-04-01 00:00:00 | RODEIO INTERIOR DE SAO PAULO |        0 |
| 29 |   115.90 | 2010-06-12 00:00:00 | DIA DOS NAMORADOS            |        0 |
| 30 |    98.00 | 2010-10-12 00:00:00 | DIA DAS CRIANÇAS             |        0 |
| 31 |   253.70 | 2010-12-20 00:00:00 | NATAL                        |        0 |
| 32 |   370.15 | 2010-12-25 00:00:00 | NATAL                        |        0 |
| 33 |   434.00 | 2010-12-25 00:00:00 | NATAL                        |        0 |
| 34 |    32.09 | 2011-07-02 00:00:00 | LANCHONETE                   |        1 |
| 35 |   954.12 | 2011-11-03 00:00:00 | SHOW DA IVETE SANGALO        |        1 |
| 36 |    98.70 | 2011-02-07 00:00:00 | LANCHONETE                   |        1 |
| 37 |   213.50 | 2011-09-25 00:00:00 | ROUPAS                       |        0 |
| 38 |  1245.20 | 2011-10-17 00:00:00 | ROUPAS                       |        0 |
| 39 |    23.78 | 2011-12-18 00:00:00 | LANCHONETE DO ZÉ             |        1 |
| 40 |   576.12 | 2011-09-13 00:00:00 | SAPATOS                      |        1 |
| 41 |    12.34 | 2011-07-19 00:00:00 | CANETAS                      |        0 |
| 42 |    87.43 | 2011-05-10 00:00:00 | GRAVATA                      |        0 |
| 43 |   887.66 | 2011-02-02 00:00:00 | PRESENTE PARA O FILHAO       |        1 |
+----+----------+---------------------+------------------------------+----------+
43 rows in set (0.00 sec)

Inserindo somente um único dado dentro da tabela COMPRAS

mysql> INSERT INTO COMPRAS (ID,VALOR,DATA,OBSERVACOES,RECEBIDO) VALUES ('1','10.00','24-05-2014','PIPOCA','1');

Selecionando apenas alguns campos/dados da tabela COMPRAS

Operador LIMIT
Limita a quantidade de dados a serem listada no SELECT

sql> select VALOR DATA,DATA FROM COMPRAS LIMIT 10;
+---------+---------------------+
| DATA    | DATA                |
+---------+---------------------+
|  200.00 | 2008-02-19 00:00:00 |
| 3500.00 | 2008-05-21 00:00:00 |
| 1576.40 | 2008-04-30 00:00:00 |
|  163.45 | 2008-12-15 00:00:00 |
| 4780.00 | 2009-01-23 00:00:00 |
|  392.15 | 2009-03-03 00:00:00 |
| 1203.00 | 2009-03-18 00:00:00 |
|  402.90 | 2009-03-21 00:00:00 |
|   54.98 | 2009-04-12 00:00:00 |
|   12.34 | 2009-05-23 00:00:00 |
+---------+---------------------+
10 rows in set (0.00 sec)

Executando uma expressão aritmética no campo VALOR dentro da tabela COMPRAS

 
mysql> select VALOR * 3, DATA FROM COMPRAS LIMIT 10;
+-----------+---------------------+
| VALOR * 3 | DATA                |
+-----------+---------------------+
|    600.00 | 2008-02-19 00:00:00 |
|  10500.00 | 2008-05-21 00:00:00 |
|   4729.20 | 2008-04-30 00:00:00 |
|    490.35 | 2008-12-15 00:00:00 |
|  14340.00 | 2009-01-23 00:00:00 |
|   1176.45 | 2009-03-03 00:00:00 |
|   3609.00 | 2009-03-18 00:00:00 |
|   1208.70 | 2009-03-21 00:00:00 |
|    164.94 | 2009-04-12 00:00:00 |
|     37.02 | 2009-05-23 00:00:00 |
+-----------+---------------------+
10 rows in set (0.00 sec)

Executando uma expressão aritmética no campo VALOR dentro da tabela COMPRAS em seguida criando um alias do campo VALOR trocando VALOR por TRIPLO

mysql> select VALOR * 3 AS TRIPLO, DATA FROM COMPRAS LIMIT 10;
+----------+---------------------+
| TRIPLO   | DATA                |
+----------+---------------------+
|   600.00 | 2008-02-19 00:00:00 |
| 10500.00 | 2008-05-21 00:00:00 |
|  4729.20 | 2008-04-30 00:00:00 |
|   490.35 | 2008-12-15 00:00:00 |
| 14340.00 | 2009-01-23 00:00:00 |
|  1176.45 | 2009-03-03 00:00:00 |
|  3609.00 | 2009-03-18 00:00:00 |
|  1208.70 | 2009-03-21 00:00:00 |
|   164.94 | 2009-04-12 00:00:00 |
|    37.02 | 2009-05-23 00:00:00 |
+----------+---------------------+
10 rows in set (0.00 sec)

Operador WHERE
Executando um SELECT e retornando somente os valores maiores que 1000 do campo VALOR, repare que para executar o comando foi chamado o operador WHERE

mysql> select VALOR FROM COMPRAS WHERE VALOR > 1000;
+----------+
| VALOR    |
+----------+
|     3500 |
|   1576.4 |
|     4780 |
|     1203 |
|     2498 |
|   3212.4 |
| 10937.12 |
|     1501 |
|     1709 |
|   1245.2 |
+----------+
10 rows in set (0.05 sec)

Utilizando os operadores AND e OR

mysql> select VALOR FROM COMPRAS WHERE VALOR > 1000 AND VALOR < 3000;
+--------+
| VALOR  |
+--------+
| 1576.4 |
|   1203 |
|   2498 |
|   1501 |
|   1709 |
| 1245.2 |
+--------+
6 rows in set (0.00 sec)

Selecionando o campo VALOR cujo VALOR seja maior que 1000 e VALOR menor que 3000 ou que a DATA seja menor que 12-02-2008

mysql> select VALOR FROM COMPRAS WHERE (VALOR > 1000 AND VALOR < 3000) OR DATA < '2008-02-12';

Expressão SELECT e WHERE retornando somente o que contiver ‘COMPRAS DE JANEIRO’ no campo OBSERVACOES

mysql> select * from COMPRAS WHERE OBSERVACOES = 'COMPRAS DE JANEIRO';
+----+-------+------------+--------------------+----------+
| ID | VALOR | DATA       | OBSERVACOES        | RECEBIDO |
+----+-------+------------+--------------------+----------+
| 19 |  2498 | 2009-01-12 | COMPRAS DE JANEIRO |        1 |
+----+-------+------------+--------------------+----------+
1 row in set (0.03 sec)

Operador LIKE
Em alguns momentos será preciso encontrar uma certa palavra que está no meio de algum texto cadastrado no Banco de Dados e por isso não será possível utilizar uma comparação padrão no SELECT com o sinal de igual (=), neste caso, é possível utilizar o operador LIKE

mysql> select * from COMPRAS WHERE OBSERVACOES LIKE 'COMPRAS%';
+----+--------+------------+--------------------+----------+
| ID | VALOR  | DATA       | OBSERVACOES        | RECEBIDO |
+----+--------+------------+--------------------+----------+
|  4 |     10 | 2014-05-24 | compras de maio    |        1 |
|  5 |   10.5 | 2014-05-24 | compras de maio    |        1 |
| 19 |   2498 | 2009-01-12 | COMPRAS DE JANEIRO |        1 |
| 20 | 3212.4 | 2009-11-13 | COMPRAS DO MES     |        1 |
| 21 | 223.09 | 2009-12-17 | COMPRAS DE NATAL   |        1 |
| 37 | 370.15 | 2010-12-25 | COMPRAS DE NATAL   |        0 |
+----+--------+------------+--------------------+----------+
6 rows in set (0.00 sec)

Selecionando o VALOR e OBSERVAÇÕES de todas as compras cuja data seja maior-ou-igual que 15/12/2003

mysql> select VALOR,OBSERVACOES,DATA FROM COMPRAS WHERE DATA >= '2013-12-15';
+-------+-----------------+------------+
| VALOR | OBSERVACOES     | DATA       |
+-------+-----------------+------------+
|    10 | compras de maio | 2014-05-24 |
|  10.5 | compras de maio | 2014-05-24 |
+-------+-----------------+------------+
2 rows in set (0.00 sec)

Selecionando todos os campos da tabela COMPRAS com a condição (WHERE) se a DATA for maior ou igual a 15-12-2010 e menor que a DATA de 15-12-2013

mysql> select * FROM COMPRAS WHERE DATA >= '2010-12-15' AND DATA < '2013-12-15';
+----+--------+------------+------------------------+----------+
| ID | VALOR  | DATA       | OBSERVACOES            | RECEBIDO |
+----+--------+------------+------------------------+----------+
| 36 |  253.7 | 2010-12-20 | NATAL - PRESENTES      |        0 |
| 37 | 370.15 | 2010-12-25 | COMPRAS DE NATAL       |        0 |
| 38 |  32.09 | 2011-07-02 | LANCHONETE             |        1 |
| 39 | 954.12 | 2011-11-03 | SHOW DA IVETE SANGALO  |        1 |
| 40 |   98.7 | 2011-02-07 | LANCHONETE             |        1 |
| 41 |  213.5 | 2011-09-25 | ROUPAS                 |        0 |
| 42 | 1245.2 | 2011-10-17 | ROUPAS                 |        0 |
| 43 |  23.78 | 2011-12-18 | LANCHONETE DO ZÉ       |        1 |
| 44 | 576.12 | 2011-09-13 | SAPATOS                |        1 |
| 45 |  12.34 | 2011-07-19 | CANETAS                |        0 |
| 46 | 887.66 | 2011-02-02 | PRESENTE PARA O FILHAO |        1 |
+----+--------+------------+------------------------+----------+
11 rows in set (0.00 sec)

Selecionando todas as compras cujo VALOR esteja entre R$15,00 e R$35,00 e que o campo OBSERVACOES inicie com a palavra ‘LANCHONETE’

mysql> select * FROM COMPRAS WHERE VALOR >= '15.00' AND VALOR < '35.00' AND OBSERVACOES LIKE 'LANCHONETE%';
+----+-------+------------+-------------------+----------+
| ID | VALOR | DATA       | OBSERVACOES       | RECEBIDO |
+----+-------+------------+-------------------+----------+
| 38 | 32.09 | 2011-07-02 | LANCHONETE        |        1 |
| 43 | 23.78 | 2011-12-18 | LANCHONETE DO ZÉ  |        1 |
+----+-------+------------+-------------------+----------+
2 rows in set (0.00 sec)

Selecionando todas as compras que já foram recebidas, novamente utilizando o parâmetro WHERE

mysql> select * FROM COMPRAS WHERE RECEBIDO = '1';
+----+----------+------------+------------------------------+----------+
| ID | VALOR    | DATA       | OBSERVACOES                  | RECEBIDO |
+----+----------+------------+------------------------------+----------+
|  1 |       10 | 0000-00-00 | PIPOCA                       |        1 |
|  4 |       10 | 2014-05-24 | compras de maio              |        1 |
|  5 |     10.5 | 2014-05-24 | compras de maio              |        1 |
|  6 |      200 | 2008-02-19 | MATERIAL ESCOLAR             |        1 |
|  8 |   1576.4 | 2008-04-30 | MATERIAL DE CONSTRUCAO       |        1 |
|  9 |   163.45 | 2008-12-15 | PIZZA PRA FAMILIA            |        1 |
| 10 |     4780 | 2009-01-23 | SALA DE ESTAR                |        1 |
| 11 |   392.15 | 2009-03-03 | QUARTOS                      |        1 |
| 12 |     1203 | 2009-03-18 | QUARTOS                      |        1 |
| 13 |    402.9 | 2009-03-21 | COPA                         |        1 |
| 18 |    98.12 | 2009-07-09 | HOPI HARI                    |        1 |
| 19 |     2498 | 2009-01-12 | COMPRAS DE JANEIRO           |        1 |
| 20 |   3212.4 | 2009-11-13 | COMPRAS DO MES               |        1 |
| 21 |   223.09 | 2009-12-17 | COMPRAS DE NATAL             |        1 |
| 22 |    768.9 | 2009-01-16 | FESTA                        |        1 |
| 23 |    827.5 | 2010-01-09 | FESTA                        |        1 |
| 24 |       12 | 2010-02-19 | SALGADO NO AEROPORTO         |        1 |
| 25 |   678.43 | 2010-05-21 | PASSAGEM PRA BAHIA           |        1 |
| 26 | 10937.12 | 2010-04-30 | CARNAVAL EM CANCUN           |        1 |
| 30 |   631.53 | 2010-10-12 | IPTU                         |        1 |
| 31 |   909.11 | 2010-02-11 | IPVA                         |        1 |
| 32 |   768.18 | 2010-04-10 | GASOLINA VIAGEM PORTO ALEGRE |        1 |
| 38 |    32.09 | 2011-07-02 | LANCHONETE                   |        1 |
| 39 |   954.12 | 2011-11-03 | SHOW DA IVETE SANGALO        |        1 |
| 40 |     98.7 | 2011-02-07 | LANCHONETE                   |        1 |
| 43 |    23.78 | 2011-12-18 | LANCHONETE DO ZÉ             |        1 |
| 44 |   576.12 | 2011-09-13 | SAPATOS                      |        1 |
| 46 |   887.66 | 2011-02-02 | PRESENTE PARA O FILHAO       |        1 |
+----+----------+------------+------------------------------+----------+
28 rows in set (0.00 sec)

Selecionando tudo que for maior que 5000,00 ou que o campo RECEBIDO esteja com TRUE (1)

mysql> select * FROM COMPRAS WHERE VALOR >= '5000.00' OR RECEBIDO = true;
+----+----------+------------+------------------------------+----------+
| ID | VALOR    | DATA       | OBSERVACOES                  | RECEBIDO |
+----+----------+------------+------------------------------+----------+
|  1 |       10 | 0000-00-00 | PIPOCA                       |        1 |
|  4 |       10 | 2014-05-24 | compras de maio              |        1 |
|  5 |     10.5 | 2014-05-24 | compras de maio              |        1 |
|  6 |      200 | 2008-02-19 | MATERIAL ESCOLAR             |        1 |
|  8 |   1576.4 | 2008-04-30 | MATERIAL DE CONSTRUCAO       |        1 |
|  9 |   163.45 | 2008-12-15 | PIZZA PRA FAMILIA            |        1 |
| 10 |     4780 | 2009-01-23 | SALA DE ESTAR                |        1 |
| 11 |   392.15 | 2009-03-03 | QUARTOS                      |        1 |
| 12 |     1203 | 2009-03-18 | QUARTOS                      |        1 |
| 13 |    402.9 | 2009-03-21 | COPA                         |        1 |
| 18 |    98.12 | 2009-07-09 | HOPI HARI                    |        1 |
| 19 |     2498 | 2009-01-12 | COMPRAS DE JANEIRO           |        1 |
| 20 |   3212.4 | 2009-11-13 | COMPRAS DO MES               |        1 |
| 21 |   223.09 | 2009-12-17 | COMPRAS DE NATAL             |        1 |
| 22 |    768.9 | 2009-01-16 | FESTA                        |        1 |
| 23 |    827.5 | 2010-01-09 | FESTA                        |        1 |
| 24 |       12 | 2010-02-19 | SALGADO NO AEROPORTO         |        1 |
| 25 |   678.43 | 2010-05-21 | PASSAGEM PRA BAHIA           |        1 |
| 26 | 10937.12 | 2010-04-30 | CARNAVAL EM CANCUN           |        1 |
| 30 |   631.53 | 2010-10-12 | IPTU                         |        1 |
| 31 |   909.11 | 2010-02-11 | IPVA                         |        1 |
| 32 |   768.18 | 2010-04-10 | GASOLINA VIAGEM PORTO ALEGRE |        1 |
| 38 |    32.09 | 2011-07-02 | LANCHONETE                   |        1 |
| 39 |   954.12 | 2011-11-03 | SHOW DA IVETE SANGALO        |        1 |
| 40 |     98.7 | 2011-02-07 | LANCHONETE                   |        1 |
| 43 |    23.78 | 2011-12-18 | LANCHONETE DO ZÉ             |        1 |
| 44 |   576.12 | 2011-09-13 | SAPATOS                      |        1 |
| 46 |   887.66 | 2011-02-02 | PRESENTE PARA O FILHAO       |        1 |
+----+----------+------------+------------------------------+----------+
28 rows in set (0.00 sec)

Selecionando todas as compras que o VALOR esteja entre 1.000,00 e 3.000,00 ou seja maior que 5.000,00

mysql> select * FROM COMPRAS WHERE VALOR > '1000.00' AND VALOR < '3000.00' OR VALOR > '5000.00';
+----+----------+------------+------------------------+----------+
| ID | VALOR    | DATA       | OBSERVACOES            | RECEBIDO |
+----+----------+------------+------------------------+----------+
|  8 |   1576.4 | 2008-04-30 | MATERIAL DE CONSTRUCAO |        1 |
| 12 |     1203 | 2009-03-18 | QUARTOS                |        1 |
| 19 |     2498 | 2009-01-12 | COMPRAS DE JANEIRO     |        1 |
| 26 | 10937.12 | 2010-04-30 | CARNAVAL EM CANCUN     |        1 |
| 27 |     1501 | 2010-06-22 | PRESENTE DA SOGRA      |        0 |
| 28 |     1709 | 2010-08-25 | PARCELA DA CASA        |        0 |
| 42 |   1245.2 | 2011-10-17 | ROUPAS                 |        0 |
+----+----------+------------+------------------------+----------+
7 rows in set (0.00 sec)

OPERADOR BETWEEN
Esse operador é usando quando se precisa recuperar as linhas onde os valores estão em um intervalo especificado.

mysql> select * FROM COMPRAS WHERE VALOR BETWEEN 200 AND 700;
+----+--------+------------+------------------------------+----------+
| ID | VALOR  | DATA       | OBSERVACOES                  | RECEBIDO |
+----+--------+------------+------------------------------+----------+
|  6 |    200 | 2008-02-19 | MATERIAL ESCOLAR             |        1 |
| 11 | 392.15 | 2009-03-03 | QUARTOS                      |        1 |
| 13 |  402.9 | 2009-03-21 | COPA                         |        1 |
| 21 | 223.09 | 2009-12-17 | COMPRAS DE NATAL             |        1 |
| 25 | 678.43 | 2010-05-21 | PASSAGEM PRA BAHIA           |        1 |
| 29 | 567.09 | 2010-09-25 | PARCELA DO CARRO             |        0 |
| 30 | 631.53 | 2010-10-12 | IPTU                         |        1 |
| 33 |    434 | 2010-04-01 | RODEIO INTERIOR DE SAO PAULO |        0 |
| 36 |  253.7 | 2010-12-20 | NATAL - PRESENTES            |        0 |
| 37 | 370.15 | 2010-12-25 | COMPRAS DE NATAL             |        0 |
| 41 |  213.5 | 2011-09-25 | ROUPAS                       |        0 |
| 44 | 576.12 | 2011-09-13 | SAPATOS                      |        1 |
+----+--------+------------+------------------------------+----------+
12 rows in set (0.00 sec)
mysql> select * FROM COMPRAS WHERE DATA BETWEEN '2010-12-31' AND '2014-12-31';
+----+--------+------------+------------------------+----------+
| ID | VALOR  | DATA       | OBSERVACOES            | RECEBIDO |
+----+--------+------------+------------------------+----------+
|  4 |     10 | 2014-05-24 | compras de maio        |        1 |
|  5 |   10.5 | 2014-05-24 | compras de maio        |        1 |
| 38 |  32.09 | 2011-07-02 | LANCHONETE             |        1 |
| 39 | 954.12 | 2011-11-03 | SHOW DA IVETE SANGALO  |        1 |
| 40 |   98.7 | 2011-02-07 | LANCHONETE             |        1 |
| 41 |  213.5 | 2011-09-25 | ROUPAS                 |        0 |
| 42 | 1245.2 | 2011-10-17 | ROUPAS                 |        0 |
| 43 |  23.78 | 2011-12-18 | LANCHONETE DO ZÉ       |        1 |
| 44 | 576.12 | 2011-09-13 | SAPATOS                |        1 |
| 45 |  12.34 | 2011-07-19 | CANETAS                |        0 |
| 46 | 887.66 | 2011-02-02 | PRESENTE PARA O FILHAO |        1 |
+----+--------+------------+------------------------+----------+
11 rows in set (0.00 sec)

Operador SET
Um SET é um objeto string que pode ter zero ou mais valores, cada um deve ser escolhido de uma lista de valores permitidos especificados quando a tabela é criada. Valores de colunas SET que consistem de múltiplos membros são espeficados separados por virgula (‘,’). Uma consquência distop é que valores dos membros de SET não podem, eles mesmos, conter vírgula.
Usando o comando UPDATE com o operador SET
Atualizando a tabela COMPRAS alterando todos os dados que estão no campo OBSERVACOES para ‘COMPRAS EMERGENCIAIS’

mysql> UPDATE COMPRAS SET OBSERVACOES = 'COMPRAS EMERGENCIAIS';
Query OK, 46 rows affected (0.10 sec)
Rows matched: 46  Changed: 46  Warnings: 0

Atualizando a tabela COMPRAS alterando todos os dados que estão no campo OBSERVACOES se a DATA for diferente do intervalo BETWEEN 01-12-2010 e 31-12-2010

mysql> UPDATE COMPRAS SET OBSERVACOES = 'COMPRAS COMUM' WHERE DATA NOT BETWEEN '2010-12-01' AND '2010-12-31';
Query OK, 44 rows affected (0.08 sec)
Rows matched: 44  Changed: 44  Warnings: 0

Selecionando a tabela COMPRAS com a condição DATA igual a 25-12-2010 ou 12-10-2010 ou 12-06-2010

mysql> SELECT * FROM COMPRAS WHERE DATA = '2010-12-25' OR DATA = '2010-10-12' OR DATA = '2010-06-12';
+----+--------+------------+----------------------+----------+
| ID | VALOR  | DATA       | OBSERVACOES          | RECEBIDO |
+----+--------+------------+----------------------+----------+
| 30 | 631.53 | 2010-10-12 | COMPRAS COMUM        |        1 |
| 34 |  115.9 | 2010-06-12 | COMPRAS COMUM        |        0 |
| 35 |     98 | 2010-10-12 | COMPRAS COMUM        |        0 |
| 37 | 370.15 | 2010-12-25 | COMPRAS EMERGENCIAIS |        0 |
+----+--------+------------+----------------------+----------+
4 rows in set (0.00 sec)
mysql> SELECT * FROM COMPRAS WHERE DATA = '2010-12-25' OR DATA IN ('2010-10-12' , '2010-06-12');
+----+--------+------------+----------------------+----------+
| ID | VALOR  | DATA       | OBSERVACOES          | RECEBIDO |
+----+--------+------------+----------------------+----------+
| 30 | 631.53 | 2010-10-12 | COMPRAS COMUM        |        1 |
| 34 |  115.9 | 2010-06-12 | COMPRAS COMUM        |        0 |
| 35 |     98 | 2010-10-12 | COMPRAS COMUM        |        0 |
| 37 | 370.15 | 2010-12-25 | COMPRAS EMERGENCIAIS |        0 |
+----+--------+------------+----------------------+----------+
4 rows in set (0.00 sec)
mysql> SELECT * FROM COMPRAS WHERE DATA IN ('2010-12-25', '2010-10-12' , '2010-06-12');
+----+--------+------------+----------------------+----------+
| ID | VALOR  | DATA       | OBSERVACOES          | RECEBIDO |
+----+--------+------------+----------------------+----------+
| 30 | 631.53 | 2010-10-12 | DATAS FESTIVAS       |        1 |
| 34 |  115.9 | 2010-06-12 | DATAS FESTIVAS       |        0 |
| 35 |     98 | 2010-10-12 | DATAS FESTIVAS       |        0 |
| 37 | 370.15 | 2010-12-25 | COMPRAS EMERGENCIAIS |        0 |
+----+--------+------------+----------------------+----------+
4 rows in set (0.00 sec)

Selecionando todos os campos da tabela COMPRAS cuja condição DATA seja menor que 01-01-2009

mysql> SELECT * FROM COMPRAS WHERE DATA < '2009-01-01';
+----+--------+------------+---------------+----------+
| ID | VALOR  | DATA       | OBSERVACOES   | RECEBIDO |
+----+--------+------------+---------------+----------+
|  1 |     10 | 0000-00-00 | COMPRAS COMUM |        1 |
|  2 |     10 | 0000-00-00 | COMPRAS COMUM |        0 |
|  3 |     10 | 0000-00-00 | COMPRAS COMUM |        0 |
|  6 |    200 | 2008-02-19 | COMPRAS COMUM |        1 |
|  7 |   3500 | 2008-05-21 | COMPRAS COMUM |        0 |
|  8 | 1576.4 | 2008-04-30 | COMPRAS COMUM |        1 |
|  9 | 163.45 | 2008-12-15 | COMPRAS COMUM |        1 |
+----+--------+------------+---------------+----------+
7 rows in set (0.00 sec)
>_Banco de dados SQL – Select – 1.1
Tagged on:

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

%d blogueiros gostam disto: