Ação | Comando |
Instalação do MySQL, Obs.:Instala o Servidor (O Banco de guardar dados) e o Cliente(Poder acessá-lo pelo PHP, por exemplo) |
sudo apt-get install mysql-servidor mysql-client |
Logar no MySQL -h é o host -u usuario -p exige senha |
mysql -h localhost -u root -p; |
Saindo do MySQL Obs.:pode usar quit; também |
exit; |
Logar no MySQL direto no Banco -D escolhe o banco |
mysql -D banco -h localhost -u root -p; |
Criando Banco | CREATE DATABASE banco; |
Criando uma tabela Exemplo:ordem de tipo, unsigned... |
CREATE TABLE tabela(id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, campo2 TEXT NOT NULL, campo3 CHAR(10) NOT NULL); |
Inserindo dados numa tabela |
INSERT INTO tabela VALUES (NULL, 'Livre Xpert', 'MySQL'); |
Apagando uma tabela Deletando uma tabela |
DROP TABLE tabela; |
Apagando um banco deletando um banco de dados |
DROP DATABASE banco; |
Selecionando o banco | USE banco; |
Descrevendo uma tabela | DESCRIBE tabela; |
Selecionando tudo de uma tabela |
SELECT * FROM tabela; |
Criando usuarios com todos os privilegios tem de selecionar o banco de dados antes è preciso usar o comando FLUSH PRIVILEGES depois para as alterações terem efeitos |
GRANT ALL PRIVILEGES ON *.* TO usuario@host IDENTIFIED BY 'senha' WITH GRANT OPTION; |
Criando usuarios sem privilegios tem de selecionar o banco de dados antes è preciso usar o comando FLUSH PRIVILEGES depois para as alterações terem efeitos |
GRANT USAGE PRIVILEGES ON *.* TO usuario@host IDENTIFIED BY 'senha' WITH GRANT OPTION; |
Deletando um usuario do mysql | DROP USER usuario; |
Deletando uma linha de uma tabela |
DELETE FROM tabela WHERE id = '1'; |
Alterando um campo de uma tabela Exemplo caso seja um campo numérico: update dados set idade=idade+1 where dadosid=6; |
UPDATE tabela SET campo_que será_alterado = novo_dado WHERE campo = referencia |
Deletando uma coluna de uma tabela |
ALTER TABLE tabela DROP COLUMN nome_da_coluna; |
Inserindo uma coluna numa tabela Coluna qualquer |
ALTER TABLE tabela ADD nova_coluna VARCHAR(20) NOT NULL AFTER coluna_existente |
Inserindo uma coluna numa tabela Primary Keys |
ALTER TABLE tabela ADD nova_coluna INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY FIRST |
Left Join | SELECT tabela1.id, tabela1.coluna1, tabela2.coluna2
FROM tabela1 LEFT JOIN tabela2
ON tabela1.id = tabela2.id; Exemplo: SELECT form.id, form.nome, dados.id FROM form LEFT JOIN dados ON form.id = dados.id; |
Listar todos os usuarios do MySQL |
SELECT * FROM mysql.user; SELECT host, user, password, select_priv FROM mysql.user; |
Revogando todos os privilégios | REVOKE ALL ON banco_de_dados.* FROM usuario; |
Criando usuario com alguns privilegios |
GRANT SELECT, INSERT, UPDATE, DELETE, INDEX, ALTER, CREATE, DROP ON tabela.* TO usuario; |
Revogando alguns privilégos | REVOKE UPDATE, DELETE, INDEX, ALTER, CREATE, DROP ON banco_de_dados.* FROM usuario; |
Concedendo todos os privilegios para todas as tabelas |
GRANT ALL PRIVILEGES ON *.* TO usuario; |
Alterando o nome de uma coluna |
ALTER TABLE tabela CHANGE coluna_que_será_modificada novo_nome_da coluna TEXT NOT NULL; |
Utilizando Aliases Cláusula de apelido |
SELECT t1.campo1 FROM tabela1 AS t2, tabela2 AS t1 WHERE t2.campo1 = t1.campo1 AND t1.campo2 LIKE '%termo%'; |
Exibindo a consulta por ordem alfabética utilizar a cláusula ASC resultaria no mesmo Exemplo: SELECT t.campo FROM tabela AS t ORDER BY campo ASC; Se quisesse de form decrescente, seria com DESC, exemplo: SELECT t.campo FROM tabela AS t ORDER BY campo DESC; |
SELECT t.campo FROM tabela AS t ORDER BY campo; |
Média ponderada | SELECT AVG(campo) FROM tabela; |
Agrupando a consulta | SELECT AVG(campo) FROM tabela GROUP BY campo; |
Especificando Consultas | SELECT AVG(campo) FROM tabela GROUP BY campo HAVING AVG(campo) > 50; |
Limitando os Resultados Pode-se usar também de forma simplificada,Exemplo: SELECT campo FROM tabela LIMIT 3; |
SELECT campo FROM tabela LIMIT 3, 4; |
Fazendo SubConsultas Os Operadores de SubConsulta são: IN, SOME, ALL, ANY, EXISTS e NOT EXISTS. |
SELECT campo1, campo2 FROM formtabela1 WHERE campo2 = (SELECT MAX(campo2) FROM tabela2); |
Modificando o tipo de dados mudou de char(10) para char(15) |
ALTER TABLE tabela MODIFY campo CHAR(15) NOT NULL; |
Excluindo registros do banco de dados com cuidados necessário Analise as cláusulas do protótipo |
DELETE LOW_PRIORITY QUICK IGNORE FROM tabela WHERE ORDER BY LIMIT; |
alterando a senha root Parar o serviço do MySQL (service mysqld stop, /etc/init.d/mysqld stop, matando o processo – conforme sua distribuição); |
mysqladmin -u root password 'nova_senha' mysqladmin flush-privileges OU UPDATE user SET Password=PASSWORD('nova_senha') WHERE User='root'; FLUSH PRIVILEGES; |
Exibindo colunas | SHOW COLUMNS FROM tabela; |
Exibindo privilégios | SHOW GRANTS FOR usuario; para root basta:SHOW GRANTS; |
Otimizando uma tabela | OPTIMIZE TABLE tabela |
Exportando um banco de dados ALgumas distro Linux só permite se for o usuario ROOT o arquivo irá pro diretório que vc estiver no shell. Ex.:/home , o arquivo será salvo na pasta home |
mysqldump -u root -p --opt BANCO > arquivo.sql |
Importando um banco de dados se vc salvar o arquivo .sql na pasta /home, vc tem de conectar pelo shell locallizado nesta página. Ex.:livrexpert@debian:/home$ mysql -D livrexpert -u root -p < dampe.sql |
mysql -D BANCO_DE_DADOS -u root -p < dampe.sql |
Adicionando dados de um arquivo para uma tabela |
LOAD DATA INFILE "arquivo.txt" INTO TABLE BOOKS; |
Tipos de tabelas MyISAM, ISAM, MEMORY, MERGE, BDB e InnoDB |
CREATE TABLE tabela TYPE=tipo; ou ALTER TABLE tabela TYPE=tipo; |
Criando Chaves Primárias para strings |
CREATE TABLE tabela (campo1 VARCHAR(20), campo2 VARCHAR(40), PRIMARY KEY (campo1)); |
Inserindo dados no MySQL com Encriptação SHA1 Secure Hash Algorithm 1(SHA1) Message Digest 5(MD5) Unix Crypt(crypt()). |
INSERT INTO auth VALUES ('teste', sha1('testesenha')); |
alterando o tipo de campo | ALTER TABLE tabela MODIFY campo CHAR(13) NOT NULL; |
Criando ou alterando campos com valor padrão |
ALTER TABLE tabela MODIFY campo INT DEFAULT '0'; |
Renomeando tabelas | RENAME TABLE tabela TO novo_nome; |
Agrupando por categoria, nao exibe resultados repetidos |
SELECT DISTINCT campo FROM tabela |
Referir a qualquer coluna ou alias definido na expressão_select SELECT id FROM lx_dados HAVING id > 1; |
SELECT usuario,MAX(salario) FROM usuarios GROUP BY usuario HAVING MAX(salario)>10; |
Verificar onde campos são nulos select lx_remetente, lx_assunto, lx_data from lx_tickets where lx_assunto IS NULL; |
SELECT * FROM nome_tabela WHERE auto_col IS NULL |
Usando a Expressão IN select lx_data from lx_tickets where lx_remetente IN ('2'); |
SELECT 'wefwf' IN (0,3,5,'wefwf'); -> 1 |
Verificando a Versão do MySQL | SELECT VERSION(), CURRENT_DATE; |
Efetuando cálculo no MySQL | SELECT (4+4)*4; |
Comandos múltiplos de uma só vez o \c cancela um comando |
SELECT NOW(), USER(); |
Inserindo arquivo que contem dados separados por tabulações(tab) para uma tabela Deletando: DELETE FROM pet; LOAD DATA LOCAL INFILE "pet.txt" INTO TABLE pet; |
LOAD DATA LOCAL INFILE "pet.txt" INTO TABLE pet; |
Inserindo data e hora automaticamente | CURDATE(); -- CURTIME(); -- NOW(); |
Fazendo consultas complexas | SELECT * FROM pet WHERE (species = "cat" AND sex = "m") OR (species = "dog" AND sex = "f"); |
selecionando o nome e a diferença dos 5 caracteres a esquerda data atual pelo aniversario e exibindo um campo apelido(idade) para exibir o resultado |
SELECT nome, LEFT(CURDATE(),5)-LEFT(aniversario,5) AS idade FROM estudos; |
Selecionado somente campos não nulos isso é diferente de usar != NULL |
SELECT * FROM tabela WHERE campo IS NOT NULL; |
Trabalhando com datas: YEAR(), MONTH() e DAYOFMONTH(); |
SELECT MONTH(campo) FROM tabela; |
Expressões Regulares numeros de 3 a 8 palavra que começam com a letra 'b' SELECT * FROM tabela WHERE campo REGEXP "^b"; Palavras que terminam com fp SELECT * FROM tabela WHERE campo REGEXP "fy$"; |
SELECT * FROM tabela WHERE campo REGEXP "[3-8]"; |
Contando Registros (quantidade de rows/linhas de uma tabela) |
SELECT COUNT(*) FROM tabela; |
SELECT campo1, campo2, COUNT(*) FROM tabela WHERE campo1 IS NOT NULL GROUP BY campo1, campo2; | |
Selecionando campos de duas tabelas diferentes | SELECT tabela1.campo1, tabela2.campo2 FROM tabela1, tabela2 WHERE campo1 IS NOT NULL |
Consulta Avançada exemplo: SELECT t1.nome, t2.nome FROM lx_dados AS t1, lx_info AS t2 WHERE t1.nome = t2.nome; |
SELECT t1.campoX, t2.campoY FROM tabela1 AS t1, tabela2 AS t2 WHERE t1.campoX = t2.campoY; |
Descobrindo o Banco de Dados caso esqueça o nome do mesmo |
SELECT DATABASE(); |
O Valor Máximo para uma Coluna | SELECT MAX(campo) AS campo FROM tabela; |
Criando tabelas temporarias | CREATE TEMPORARY TABLE tabela (campo INT(4) UNSIGNED ZEROFILL DEFAULT '0000' NOT NULL, campo DOUBLE(16,2) DEFAULT '0.00' NOT NULL); |
Bloqueando uma tabela | LOCK TABLES tabela READ; |
Desbloqueando uma tabela | UNLOCK TABLES; |
Inserindo dados numa tabela a partir de um SELECT de outra tabela |
INSERT INTO tabela1 SELECT campo, MAX(campo2) FROM tabela2 GROUP BY campo; |
Consulta Avançada(estudar) | SELECT campo, SUBSTRING( MAX( CONCAT(LPAD(campo2,6,'0'),campo3) ), 7) AS campo3, 0.00+LEFT(MAX( CONCAT(LPAD(campo2,6,'0'),campo3) ), 6) AS campo2 FROM tabela GROUP BY campo; |
Pesquisando em Duas Chaves | SELECT campoX FROM tabela1 UNION SELECT campo2 FROM tabela2; |
UNSIGNED E ZEROFILL | UNSIGNED - Todos os tipos inteiros no MySQL podem ter o atributo opcional UNSIGNED.Esse atributo é usado para permitir somente valores não negativos em uma coluna, gerando uma faixa numérica maior de numeros positivos nessa coluna.Faixa UNSIGNED: de 0 a 4294967295. ZEROFILL - O atributo opcional ZEROFILL, preenche espaços em uma coluna, substituindo por zeros. Por exemplo, uma coluna declarada como INT(4) ZEROFILL, o valor 5 é recuperado como 0005. Se você especificar para uma coluna numérica ZEROFILL, automaticamente o MySQL adiciona o atributo UNSIGNED a coluna. |
Verificando o Password do usuário mysql | SELECT PASSWORD('minha_senha'); |
verificar se um servidor mysqld em execução suporta OpenSSL se retornar YES está ativado, ao contrário retorna DISABLE |
SHOW VARIABLES LIKE 'have_openssl'; |
Criando um usuario com todos os privilegios e com suporte a SSL a biblioteca OPENSSL tem que estar instalada |
GRANT ALL PRIVILEGES ON *.* TO usuario@localhost IDENTIFIED BY 'senha' REQUIRE SSL; |
Checando e Recuperando tabelas REPAIR só funciona em tabelas MyISAM, o myisamchk é executado no Shell(myisamchk --help) |
CHECK TABLE tabela; REPAIR TABLE tabela; |
Optimizando e Analisando tabelas só funciona em tabelas MyISAM |
OPTIMIZE TABLE tabela ANALYZE TABLE tabela |
Reiniciando, parando e iniciando o Servidor | /etc/init.d/mysql start /etc/init.d/mysql stop /etc/init.d/mysql restart |
Comando úteis (ver os logs, processos, privilegios, erros, avisos, tipos...) SELECT CURRENT_USER() (mostra o usuario em uso) |
SHOW BDB LOGS SHOW PROCESSLIST SHOW GRANTS FOR usuario@localhost; SHOW WARNINGS LIMIT 10 SHOW ERRORS LIMIT 10 SHOW TABLE TYPES; SHOW PRIVILEGES |
+Comandos úteis | SELECT LAST_INSERT_ID();(retorna o último ID inserido com auto_increment) SELECT FORMAT(12332.4,1);(formata as casas da saida) |