MySQL I: Iniciando suas consultas
Tópicos:
- Criando o nosso banco e a tabela
- Inserindo na tabela
- Consultando os dados
- Atualizando dados
- Excluindo dados
- Alterando a tabela
Criando o nosso banco e a tabela
// -u indica o usuário root
// -p é porque digitaremos a senha. Como não há senha, pressione enter.
mysql -u root -p
create database controle_compras; // cria o banco de dados
use controle_compras; // use diz ao MySQL qual é o banco que queremos usar.
CREATE TABLE COMPRAS (
// PRIMARY KEY diz quem é a chave primária da tabela
id int AUTO_INCREMENT PRIMARY KEY, // AUTO_INCREMENT automaticamente o número
valor double,
data date,
observacoes varchar(255),
recebido boolean
);
CREATE TABLE FUNCIONARIOS (
NOME VARCHAR(100) NOT NULL, // NOT NULLnão deixa ser salvo valores nulos
CARGO ENUM('DIRETOR', 'FUNCIONARIO') NOT NULL, // ENUM cria uma lista dos valores aceitáveis na coluna
SALARIO DECIMAL(10,2) DEFAULT '10000' // DEFAULT seta o valor padrão definido
);
Inserindo na tabela
INSERT INTO COMPRAS (VALOR, DATA, OBSERVACOES, RECEBIDO) VALUES (
100.0,
'2007-05-12',
'COMPRAS DE MAIO',
1
);
Consultando os dados
SELECT * FROM COMPRAS;
SELECT VALOR, DATA FROM COMPRAS;
// para projetar o valor
SELECT VALOR, VALOR * 3, DATA FROM COMPRAS;
// AS é usado para dar um apelido a coluna
SELECT VALOR, VALOR * 3 AS TRIPLO, DATA FROM COMPRAS;
Tipos de filtros
SELECT * FROM COMPRAS WHERE VALOR > 1000; // Maior
SELECT * FROM COMPRAS WHERE VALOR >= 1000; //Maior-ou-igual >=
SELECT * FROM COMPRAS WHERE VALOR <= 1000; // Menor-ou-igual <=
SELECT * FROM COMPRAS WHERE VALOR <> 1000; // Diferente <>
SELECT * FROM COMPRAS WHERE DATA IN ('2010-12-25', '2010-10-12', '2010-06-12'); // IN
SELECT * FROM COMPRAS WHERE valor NOT BETWEEN 200 AND 700; // NOT
SELECT * FROM COMPRAS WHERE valor BETWEEN 200 AND 700; // Between
SELECT * FROM COMPRAS WHERE VALOR > 1000 AND VALOR < 3000; // AND
SELECT * FROM COMPRAS WHERE VALOR > 1000 OR VALOR < 3000; // OR
SELECT * FROM COMPRAS WHERE (VALOR > 1000 AND VALOR < 3000) OR (DATA < '2010-02-12'); // AND + OR
SELECT * FROM COMPRAS WHERE VALOR IS NULL; // IS
SELECT * FROM COMPRAS WHERE VALOR IS NOT NULL; // IS + NOT
SELECT * FROM COMPRAS WHERE OBSERVACOES = 'COMPRAS DE JANEIRO'; // texto
SELECT * FROM COMPRAS WHERE OBSERVACOES LIKE 'COMPRAS%'; //texto + coringa
SELECT * FROM COMPRAS WHERE OBSERVACOES LIKE '%COMPRAS%'; // coringa + texto + coringa
Agrupando e ordenando dados
// para somar todos os valores da coluna
SELECT SUM(VALOR) FROM COMPRAS WHERE RECEBIDO = 1;
// para contar quantos valores existe na coluna
SELECT AVG(VALOR) AS MEDIA, SUM(VALOR) AS SOMA FROM COMPRAS WHERE DATA < '2010-01-01';
// para colocar um apelido na coluna
SELECT SUM(VALOR) AS SOMA FROM COMPRAS WHERE RECEBIDO = 1;
// para agrupar compras de acordo com o valor da coluna
SELECT SUM(VALOR) FROM COMPRAS GROUP BY RECEBIDO;
// ordenar de forma decrescente
SELECT RECEBIDO, SUM(VALOR) AS SOMA FROM COMPRAS GROUP BY RECEBIDO ORDER BY SOMA DESC;
//ordenar de forma crescente
SELECT RECEBIDO, COUNT(VALOR) AS TOTAL FROM COMPRAS GROUP BY RECEBIDO ORDER BY SOMA ASC;
Juntando mais de uma tabela JOIN
// COMPRADOR_ID aponta para um ID de COMPRADOR
SELECT * FROM COMPRAS JOIN COMPRADORES ON COMPRAS.COMPRADOR_ID = COMPRADORES.ID;
SELECT COMPRADORES.NOME, SUM(VALOR)
FROM COMPRAS INNER JOIN COMPRADORES ON COMPRAS.COMPRADOR_ID = COMPRADORES.ID
GROUP BY COMPRADORES.NOME
Atualizando dados
UPDATE COMPRAS SET OBSERVACOES = 'compra emergencial' WHERE id = 34;
UPDATE COMPRAS SET OBSERVACOES = 'uma compra comum' WHERE DATA NOT BETWEEN '2010-01-05' AND '2010-06-25';
UPDATE COMPRAS SET
OBSERVACOES = 'entregue antes de 2011',
RECEBIDO = TRUE
WHERE DATA BETWEEN '2009-07-01' AND '2010-07-01';
Excluindo dados
DELETE FROM COMPRAS WHERE id = 34;
DELETE FROM COMPRAS WHERE DATA < '2009-01-01';
DELETE FROM COMPRAS WHERE DATA BETWEEN '2009-03-05' AND '2009-03-20';
Alterando a tabela
ALTER TABLE COMPRAS MODIFY COLUMN OBSERVACOES TEXT NOT NULL; // NOT NULL
ALTER TABLE COMPRAS MODIFY COLUMN RECEBIDO TINYINT(1) DEFAULT '0'; // DEFAULT
ALTER TABLE COMPRAS ADD COLUMN FORMA_PAGT ENUM('CARTAO', 'BOLETO', 'DINHEIRO'); // ENUM
ALTER TABLE COMPRAS CHANGE FORMA_PAGT FORMA_PAGTO ENUM('CARTAO', 'BOLETO', 'DINHEIRO'); // CHANGE
ALTER TABLE COMPRAS ADD FOREIGN KEY (COMPRADOR_ID) REFERENCES COMPRADORES(ID); // FOREIGN KEY