Fundamentos de Consultas SQL no MySQL

Para iniciar, criamos um banco de dados para armazenar nossas informações:

mysql> CREATE DATABASE loja_virtual;
Query OK, 1 row affected (0.00 sec)

Para visualizar todos os bancos de dados existentes no servidor:

mysql> SHOW DATABASES;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| loja_virtual       |
| performance_schema |
+--------------------+
4 rows in set (0.00 sec)

Selecionando o banco de dados e criando uma tabela para armazenar clientes:

mysql> USE loja_virtual;
Database changed

mysql> CREATE TABLE clientes (
    -> cod INT PRIMARY KEY AUTO_INCREMENT,
    -> nome VARCHAR(200) NOT NULL,
    -> senha VARCHAR(200) NOT NULL,
    -> email VARCHAR(150)
    -> );
Query OK, 0 rows affected (0.10 sec)

Inserção e Recuperação de Dados

Listando as tabelas do banco selecionado:

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

Inserindo registros e consultando:

mysql> INSERT INTO clientes (nome, senha, email) VALUES ('root', 'r00t', 'root@loja.com');
Query OK, 1 row affected (0.00 sec)

mysql> SELECT * FROM clientes;
+-----+-------+-------+---------------+
| cod | nome  | senha | email         |
+-----+-------+-------+---------------+
|   1 | root  | r00t  | root@loja.com |
+-----+-------+-------+---------------+
1 row in set (0.00 sec)

Filtragem com Cláusula WHERE

A cláusula WHERE permite filtrar registros específicos:

mysql> SELECT * FROM clientes WHERE cod = 1;
+-----+-------+-------+---------------+
| cod | nome  | senha | email         |
+-----+-------+-------+---------------+
|   1 | root  | r00t  | root@loja.com |
+-----+-------+-------+---------------+
1 row in set (0.00 sec)

É possível utilizar operadores lógicos para criar condições mais complexas:

mysql> SELECT * FROM clientes WHERE cod = 1 OR 1=1; 
-- A expressão 1=1 é sempre verdadeira, retornando todos os registros

mysql> SELECT * FROM clientes WHERE cod = 1 OR 1=0;
-- 1=0 é falso, então retorna apenas o registro onde cod = 1
+-----+-------+-------+---------------+
| cod | nome  | senha | email         |
+-----+-------+-------+---------------+
|   1 | root  | r00t  | root@loja.com |
+-----+-------+-------+---------------+
1 row in set (0.00 sec)

mysql> SELECT * FROM clientes WHERE cod = 1 AND 1=0;
-- AND com uma condição falsa resulta em conjunto vazio
Empty set (0.01 sec)

Busca com Padrões usando LIKE

O operador LIKE permite realizar buscas por padrões de texto:

mysql> SELECT * FROM clientes WHERE senha LIKE 'r%';
+-----+-------+-------+---------------+
| cod | nome  | senha | email         |
+-----+-------+-------+---------------+
|   1 | root  | r00t  | root@loja.com |
|   2 | rick  | r1ck  | rick@loja.com |
|   3 | ray   | r4y   | ray@loja.com |
+-----+-------+-------+---------------+
3 rows in set (0.00 sec)

O caractere % representa zero ou mais caracteres, enquanto _ (underline) corresponde a exatamante um único caractere.

Consultas por Intervalo e Conjuntos

-- Buscar registros com códigos específicos
SELECT * FROM clientes WHERE cod IN (1, 3, 5);

-- Buscar registros dentro de um intervalo com condição adicional
SELECT * FROM clientes WHERE (cod BETWEEN 2 AND 6) AND email IS NOT NULL;

Ordenação de Resultados

-- Ordenar pelos valores da primeira coluna (cod)
SELECT * FROM clientes ORDER BY 1;

-- Ordenar de forma decrescente pelo nome
SELECT * FROM clientes ORDER BY nome DESC;

Tags: MySQL SQL select WHERE LIKE

Publicado em 7-1 21:37