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;