Comandos básicos mysql

Alan Victor Quarta, 17 de Dezembro de 2014


Criar usuário no mysql
create user alan identified by 'senha';

Remover usuário
DROP USER 'alan';

Configurar permissões no banco/tabelas e senha do usuário
grant all privileges on banco.* TO 'alan'@'localhost' identified by 'senha';

Configurar usuário como somente leitura SELECT
GRANT SELECT ON minha_base.* TO 'alan'@'%' IDENTIFIED BY 'senha';

Alterando a senha do usuário:
SET PASSWORD FOR 'alan' = PASSWORD('nova_senha');

Atualizar privilégios do MySQL:
FLUSH PRIVILEGES;

Recuperar senha de root:
/etc/init.d/mysql stop
mysqld_safe --skip-grant-tables &
mysql -u root
use mysql;
update user set password=PASSWORD("mynewpassword") where User='root';
flush privileges;

Copiando estrutura e registros de uma tabela:
CREATE TABLE teste2 SELECT * FROM teste1;

Copiando registros da tabela:
INSERT INTO teste2 SELECT * FROM teste1;

Apagar uma base de dados:
DROP DATABASE nomedobanco;

Apagar uma tabela:
DROP TABLE nomedatabela;

Apagar todos os dados de um tabela:
TRUNCATE nomedatabela;

Consultar campos específicos com o valor 'teste' e com o limite de 20 linhas:
SELECT * FROM nomedatabela WHERE nomedocampo = 'teste' LIMIT 20;

Consultar todas as entradas que contenham o nome 'Alan' e o valor do campo idade seja '29':
SELECT * FROM nomedatabela WHERE name = 'Alan' AND idade = '29';

Consultar todas as entradas que Não contenham o nome 'jose' e que o telefone seja '8388128374' ordenando pelo campo telefone:
SELECT * FROM nomedatabela WHERE name != 'Jose' AND telefone = '8388128374' order by telefone;

Consultar todas as entradas que comecem pelas letras 'joao' e pelo telefone '8388128374':
SELECT * FROM nomedatabela WHERE name like 'joao' AND telefone = '8388128374â';

Consultar utilizando uma expressão regular para encontrar entradas. Utilizar 'REGEXP BINARY' para forçar case-sensitivity. Neste caso procura qualquer entrada começada por ‘a':
SELECT * FROM nomedatabela WHERE campo/coluna RLIKE '^eae';

Mostrar entradas Únicas, não repetidas:
SELECT DISTINCT nomedacoluna FROM nomedatabela;

Mostrar entradas selecionadas por ordem ascendente (asc) ou descendente (desc):
SELECT coluna1,coluna2 FROM nomedatabela ORDER BY coluna1 DESC;

Retorna o numero de colunas:
SELECT COUNT(*) FROM nomedatabela;

Soma as colunas:
SELECT SUM(*) FROM nomedatabela;

Mostra de 1 até 50 caracteres da campo texto e coluna dicas
SELECT SUBSTRING(texto, 1, 50) FROM dicas;

Mostra a caluna texto maiúscula ou minuscula da tabela dicas SELECT UPPER(texto) FROM dicas;
SELECT LOWER(texto) FROM dicas;

Atualizar a informação de uma ou mais colunas, entrada/dados:
UPDATE nomedatabela SET nome = 'nome', idade = 'idade' WHERE cpf = '9372498374';

Apagar linhas/dados de uma tabela:
DELETE from nomedatabela WHERE vencimento = 'data';

Adicionar uma chave primária numa tabela existente:
ALTER TABLE nomedatabela ADD PRIMARY KEY (email);

Adicionar coluna ID com auto increment e chave primaria
ALTER TABLE XXX add column Id INT NOT NULL AUTO_INCREMENT FIRST, ADD primary KEY Id(Id);

Apagar uma Coluna:
ALTER TABLE nomedatabela DROP column nomedacoluna;

Adicionar uma coluna a uma Base de Dados:
ALTER TABLE nomedatabela ADD column novacoluna varchar (20);

Mudar o nome de uma coluna:
ALTER TABLE nomedacoluna CHANGE nomecolunaantiga nomenovacoluna varchar (50);

Mudar o nome de uma tabela:
RENAME TABLE nome_tabela TO novo_nome_tabela;

Altera o tipo de um campo/coluna:
ALTER TABLE nomedatabela MODIFY nomedacoluna VARCHAR(3);

Altera a ordem de um campo/coluna:
ALTER TABLE table MODIFY COLUMN coluna tipo AFTER | BEFORE | FIRST coluna_referencia

Apagar unica de uma tabela:
ALTER TABLE nomedatabela DROP index nomedacoluna;

Criar Tabela Exemplo 1:
CREATE TABLE `posts` ( `id` int(12) NOT NULL AUTO_INCREMENT, `email` varchar(50) NOT NULL DEFAULT '', `data_criacao` datetime DEFAULT NULL, `data_alteracao` datetime DEFAULT NULL, `post` longtext, `titulo` varchar(100) DEFAULT NULL, `categoria` varchar(50) DEFAULT NULL, `status` int(1) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1;

Juntando informações de 2 tabelas:
SELECT column_name(s) FROM table1 INNER JOIN table2 ON table1.column_name=table2.column_name;

Listando valores por intervalos:
SELECT data_gravada FROM tabela WHERE data_gravada BETWEEN '2014-01-01' AND '2014-05-01';