Comandos MySQL

40
Nas edições anteriores mostramos como criar uma tabela, efetuar inclusões, alterações, exclusões e até mesmo backups. Hoje vamos falar sobre um assunto prático, porém, que pode facilitar a todos os programadores que lêem estas matérias! Não sei se você já passou por isso, mas… eu já passei por situações que apesar de saber programar, não sabia qual comando usar e quando encontrava em algum tutorial, não sabia porque usava (apenas copiava e colava). Hoje vamos dar alguns exemplos de comandos MySQL, criando exemplos práticos de suas definições! Para facilitar sua busca, vamos disponibilizar em ordem alfabética, ok? - mysql_affect_rows: Este comando tem o objetivo de retornar o número de linhas afetadas por uma consulta. Exemplo: $resultado = mysql_query($query); if ($resultado && mysql_affect_rows() > 0){ OBS.: O mysql_affect_rows só será válido quando usado em “querys” que alterem o conteúdo da tabela (exemplo: insert ou update). Para se efetuar consulta simples, indicamos os comandos select ou show, utilizando junto a estes o comando mysql_num_rows. - mysql_close: Este comando tem o objetivo de fechar a conexão com o banco de dados MySQL. Exemplo: $conexao = mysql_connect('servidor', 'usuariohost', 'senhahost');

description

comandos mysql

Transcript of Comandos MySQL

Page 1: Comandos MySQL

Nas edições anteriores mostramos como criar uma tabela, efetuar inclusões, alterações, exclusões e até mesmo backups.

Hoje vamos falar sobre um assunto prático, porém, que pode facilitar a todos os programadores que lêem estas matérias!

Não sei se você já passou por isso, mas… eu já passei por situações que apesar de saber programar, não sabia qual comando usar e quando encontrava em algum tutorial, não sabia porque usava (apenas copiava e colava).

Hoje vamos dar alguns exemplos de comandos MySQL, criando exemplos práticos de suas definições!

Para facilitar sua busca, vamos disponibilizar em ordem alfabética, ok?

- mysql_affect_rows:Este comando tem o objetivo de retornar o número de linhas afetadas por uma consulta.

Exemplo:

$resultado = mysql_query($query);

if ($resultado && mysql_affect_rows() > 0){

OBS.: O mysql_affect_rows só será válido quando usado em “querys” que alterem o conteúdo da tabela (exemplo: insert ou update).

Para se efetuar consulta simples, indicamos os comandos select ou show, utilizando junto a estes o comando mysql_num_rows.

- mysql_close:Este comando tem o objetivo de fechar a conexão com o banco de dados MySQL.

Exemplo:

$conexao = mysql_connect('servidor', 'usuariohost', 'senhahost');

if (!$conexao){ die 'Não pude conectar' . mysql_error()); }else { echo 'conexão ok'; }

mysql_close($conexao);<code>

OBS.: O comando mysql_close não irá fechar conexões persistentes criadas por mysql_pconnect().

- mysql_connect:Este comando tem o objetivo de abrir a conexão com um banco de dados MySQL.

Exemplo: Está disponível no exemplo acima ( mysql_close ).

Page 2: Comandos MySQL

- mysql_create_db:Este comando tem por objetivo criar um banco de dados MySQL.

Exemplo:

$conexao = mysql_connect('servidor', 'usuariohost', 'senhahost');

if (!$conexao){ die 'Não pude conectar' . mysql_error()); }

else {

if(mysql_create_db('basededados')){  echo “base de dados criada com sucesso”; }

else{ echo 'Error creating database: ' . mysql_error() . “n”;

} // fecha else {

OBS.: Indicamos ao invés de utilizar o mysql_create_db, usar o mysql_query, para fazer o comando CREATE DATABASE. Para compatibilidade com versões anteriores, o mysql_create_db também poderá ser utilizado, em todo caso, ela está obsoleta.

- mysql_data_seek:Este comando tem por objetivo mover o ponteiro interno de uma consulta.

Exemplo:

$resultado = mysql_query($query);

for ($i = mysql_num_rows($resultado) – 1; $i >= 0; $i --){if (!mysql_data_seek($resultado, $i)){echo “Não pude mover para a linha $i” . mysql_error() . “n”;continue;} // fecha if (!mysql_data_seek($resultado, $i)){

xxx outros comandos xxx

}// fecha for ($i = mysql_num_rows($resultado) – 1; $i >= 0; $i --){

OBS.: A função mysql_data_seek() pode ser usada somente em conjunto com o mysql_query e não com o mysql_unbuffered_query().

- mysql_db_query:Este comando tem por objetivo enviar uma consulta MySQL para a base de dados.

Exemplo:

Page 3: Comandos MySQL

$resultado = mysql_db_query(“$database”, $query);

OBS.: Esta função está obsoleta desde o PHP 4.0.6. Ao invés dela, aconselhamos utilizar os comandos mysql_select_db() e mysql_query().

- mysql_drop_db:Utilizando este comando, você poderá excluir um banco de dados MySQL.

Exemplo:

$conexao = mysql_connect('servidor', 'usuariohost', 'senhahost');

if (!$conexao){ die 'Não pude conectar' . mysql_error()); }

else { if(mysql_drop_db(“basededados”)){ echo “base de dados excluída com sucesso”;

}// fecha if(mysql_drop_db(“basededados”)){

}// fecha if (!$conexao){

OBS.: Esta função também está obsoleta. Ao invés dela, é aconselhável utilizar o comando mysql_query.

- mysql_errno:Este comando tem por finalidade retornar o número do erro da última chamada MySQL.

Exemplo:

$conexao = mysql_connect("localhost", "mysql_user", "mysql_password");

if (!mysql_select_db("base de dados não existente", $conexao)) {echo mysql_errno($conexao) . ": " . mysql_error($conexao). "n";}

O exemplo acima vai imprimir algo assim: 1049: Unknown database 'base de dados não existente'

- mysql_error:Este comando tem por finalidade retornar a mensagem de erro da última chamada MySQL.

Exemplo:

Page 4: Comandos MySQL

$conexao = mysql_connect("localhost", "mysql_user", "mysql_password");

if (!mysql_select_db("base de dados não existente", $conexao)) {echo mysql_errno($conexao) . ": " . mysql_error($conexao). "n";}

O exemplo acima vai imprimir algo assim: 1049: Unknown database 'base de dados não existente'

- mysql_fetch_array:Este comando tem por finalidade retornar o resultado de uma consulta como array.

Exemplo:

$resultado = mysql_query ($query);

$campo = mysql_fetch_array($resultado);$variavel = $campo['campo'];

- mysql_fetch_field:Este comando tem por finalidade retornar informações sobre um campo da consulta (objeto).

Exemplo:

mysql_connect('localhost:3306', $user, $password) or die ("Não pude conectar: " . mysql_error());

mysql_select_db("database");

$result = mysql_query("select * from table") or die("A query falhou: " . mysql_error());

$i = 0;while ($i < mysql_num_fields($result)) { echo "Informação para a coluna $i:n";$meta = mysql_fetch_field($result,$i);if (!$meta) { echo "Informação não disponiveln"; }echo "

blob:                $meta-&gt;blob

max_length:    $meta-&gt;max_length

multiple_key:  $meta-&gt;multiple_key

name:              $meta-&gt;name

Page 5: Comandos MySQL

not_null:         $meta-&gt;not_null

numeric:         $meta-&gt;numeric

primary_key:  $meta-&gt;primary_key

table:              $meta-&gt;table

type:               $meta-&gt;type

unique_key:   $meta-&gt;unique_key

unsigned:       $meta-&gt;unsigned

zerofill:          $meta-&gt;zerofill

";$i++;}mysql_free_result($result);

- mysql_fetch_lengths:Este comando tem por finalidade retornar o tamanho máximo de cada campo em uma consulta.

Exemplo:

$campo     = mysql_fetch_assoc($resultado);

$lengths = mysql_fetch_lengths($resultado);

print_r($campo);print_r($lengths);

- mysql_fetch_object:Este comando tem por finalidade retornar uma linha da consulta como um objeto.

Exemplo:

while($campo = mysql_fetch_object($resultado)){

echo $campo-&gt;Database . “n”;

}

Page 6: Comandos MySQL

- mysql_fetch_row:Este comando tem por finalidade retornar uma linha da consulta como um array.

Exemplo:

$resultado = mysql_query ($query);

while($campo = mysql_fetch_row($resultado)){$variavel = $campo ['campodatabela'];}

- mysql_field_name:Este comando tem por finalidade retornar o nome de um campo no consulta.

Exemplo:

$query = "select * from usuarios";

$resultado = mysql_query($query);

echo mysql_field_name($resultado, 0) . "n";echo mysql_field_name($resultado, 2);

O exemplo acima retornará algo assim:

id_usuariopassword

- mysql_field_seek:Este comando posiciona o ponteiro para um campo específico da consulta.

Exemplo:

$query = "SELECT * FROM TABELA";

$resultado = mysql_query($query);

mysql_field_seek($resultado,3);print_r(mysql_fetch_field($resultado));

mysql_close($conexao);

- mysql_field_table:Este comando tem por finalidade retornar o nome da tabela à qual o campo pertence.

Exemplo:

Page 7: Comandos MySQL

$query = "SELECT * FROM TABELA";

$resultado = mysql_query($query);

$tabela = mysql_field_table($resultado, 0);echo $tabela;

- mysql_field_type:Este comando é similar ao mysql_field_name(). Quando executado, ele te possibilitar retornar o tipo de dado do campo.

Exemplo:

$query = "SELECT * FROM TABELA";

$resultado = ($query);

$fields = mysql_num_fields($resultado);

$table = mysql_field_table($resultado, 0);echo "Sua '" . $table . "' tabela tem " . $fields . " campo(s)n";for ($i=0; $i < $fields; $i++) {$type = mysql_field_type($resultado, $i);echo $type;}

- mysql_field_flags:Através deste comando você poderá retornar os flags associados a um campo da consulta.

Exemplo:

$query = "SELECT * FROM TABELA";

$resultado = ($query);

$fields = mysql_num_fields($resultado);

$table = mysql_field_table($resultado, 0);echo "Sua '" . $table . "' tabela tem " . $fields . " campo(s)n";for ($i=0; $i < $fields; $i++) {$flags = mysql_field_flags($resultado, $i);echo $flags . "n";}

- mysql_field_len:Utilizando este comando será possível retornar o tamanho de um campo da consulta.

Page 8: Comandos MySQL

Exemplo:

$query = "SELECT * FROM TABELA";

$resultado = ($query);

$fields = mysql_num_fields($resultado);

$table = mysql_field_table($resultado, 0);echo "Sua '" . $table . "' tabela tem " . $fields . " campo(s)n";for ($i=0; $i < $fields; $i++) {$len = mysql_field_len($resultado, $i);echo $len;}

- mysql_free_result:Utilizando este comando, você poderá liberar os recursos alocados a uma consulta.

deve ser chamado somente se você está preocupado em quanto da memória esta sendo usada na query num grande conjunto de resultados.

Exemplo:

$query = "SELECT * FROM TABELA";

$resultado = mysql_query($query);

while($campo = mysql_fetch_array($resultado)) {$id_campo = $campo["id_campo"];$nome = $campo["nome"];$senha = $campo["senha"];}mysql_free_result($resultado);

- mysql_insert_id:Utilizando este comando você poderá retornar o ID da última cláusula INSERT executada.

Exemplo:

$query = "INSERT INTO TABELA (produto) VALUES ('valor');

$resultado = mysql_query($query);

printf("A última inserção foi o id %dn", mysql_insert_id());

Page 9: Comandos MySQL

OBS.:O comando mysql_insert_id() converte o tipo de retorno nativo da API em C do MySQL mysql_insert_id() para um tipo long (chamado int no PHP).

Se a sua coluna AUTO_INCREMENT for uma coluna do tipo BIGINT, o valor retornado por mysql_insert_id() será incorreto. Recomendo ao invés deste comando utilizar a função SQL interna do MySQL LAST_INSERT_ID() em uma consulta SQL.

- mysql_list_fields:Através deste comando será possível retornar a relação de campos de uma consulta.

Exemplo:

$conexao = mysql_connect('localhost', 'usuariodomysql', 'senhadomysql');

$fields = mysql_list_fields("database", "tabela", $conexao);$columns = mysql_num_fields($fields);

for ($i = 0; $i < $columns; $i++) {echo mysql_field_name($fields, $i) . "n";}

- mysql_list_dbs:Através deste comando será possível listar os bancos de dados disponíveis no Servidor.

Exemplo:

$conexao = mysql_connect ('servidor', 'usuariodoservidor', 'senhadoservidor');

$resultado = mysql_list_dbs($conexao);

while($campo = mysql_fetch_object($resultado)){echo $campo->Database . “n”;}

- mysql_list_tables:Através deste comando será possível listar as tabelas existentes em um banco de dados MySQL.

Exemplo:

$nomedobd = 'nomedabasededados';

if (!mysql_connect('servidor', 'usuariodoservidor', 'senhadoservidor')){echo 'Não foi possível conectar com o MySQL';exit;

Page 10: Comandos MySQL

}$resultado = mysql_list_tables($nomedobd);

- mysql_num_fields:Através deste comando será possível retornar o número de campos de uma consulta.

Exemplo:

$query = "SELECT * FROM TABELA";

$resultado = ($query);

$campos = mysql_num_fields($resultado);echo $campos;

- mysql_num_rows:Através deste comando será possível retornar o número de linhas de uma consulta.

Exemplo:

$query = "SELECT * FROM TABELA";

$resultado = ($query);

$linhas = mysql_num_rows($resultado);echo $linhas;

- mysql_pconnect:Utilizando este comando você poderá estabelecer uma conexão persistente com o banco de dados.

Exemplo:

$conexao = mysql_pconnect('servidor', 'usuariohost', 'senhahost');

- mysql_query:Um dos comandos mais utilizados do MySQL. Através deste comando você poderá enviar uma consulta SQL ao banco de dados MySQL.

Exemplo:

$query = “SELECT * FROM DATABASE”;

Page 11: Comandos MySQL

$resultado = mysql_query ($query);

- mysql_result:Através deste comando você poderá retornar os dados de uma consulta.

Exemplo:

$query = "SELECT * FROM TABELA";

$resultado = mysql_query($query);

$dominio = mysql_result($resultado, 0, "nome");

- mysql_select_db:Utilizando este comando, você poderá selecionar um banco de dados MySQL.

Exemplo:

$conexao = mysql_connect('localhost', 'usuariomysql', 'senhamysql');

if (!$conexao) { die('Não conectado : ' . mysql_error()); }

$db_selected = mysql_select_db('tabela', $conexao);if (!$db_selected) { die ('Não pode usar a tabela : ' . mysql_error()); }

- mysql_tablename:Este comando tem por finalidade retornar o nome da Tabela de um campo.

Exemplo:

mysql_connect (“servidor”, “usuariodoservidor”, “senhadoservidor”);

$resultado = mysql_list_tables(“basededados”);

Page 12: Comandos MySQL

for ($i = 0; $i < mysql_num_rows($resultado); $i++)printf (“Tabela: %sn”, mysql_tablename($resultado, $i));

mysql_free_result($resultado);

Espero ter lhe ajudado em algo com esta matéria.

No início como Programador apanhei bastante, por não saber como estes comandos eram utilizados e o que eles faziam exatamente.

Creio que alguns dos exemplos acima certamente lhe serão úteis no dia a dia!

Envie-nos suas dúvidas e dê sugestões para as próximas matérias! Nosso compromisso é lhe ajudar!

Tutorial Seguinte > M

Page 13: Comandos MySQL

O comando select do SQL é usado para efetuar consultas no banco de dados. Neste post veremos como usar este comando nos bancos de dados Mysql, SQL Server e Access. Estes bancos por sua vez apresentam algumas diferenças na maneira de entender o select. Vamos lá?

Estrutura do comando select:

SELECT - Seleciona as colunas da consulta FROM - Seleciona a(s) tabela(s)

WHERE - Permite criar condições para filtrar os dados retornados na consulta

GROUP BY Agrupa dados na consulta.

HAVING Limita o resulta em uma condição estabelecida.

ORDER BY Especifica a coluna ou as colunas que serão ordenadas na consulta

Usando o Select na forma básicaSelect * FROM empregados

No exemplo acima, usamos as cláusulas Select e From. O * (asterisco) indica que todas as colunas da tabela devem ser retornadas.

Em muitos casos é recomendável selecionar algumas colunas apenas e não todas como no exemplo acima, isto deve ser considerado pois quando o tamanho do banco aumentar as consultas poderão ficar lentas em função do grande volume de informações contida nas tabelas.

Selecionando colunas específicas para a consultaSELECT nome,salario, cidade FROM empregados

Para retornar apenas as colunas desejadas, basta indicar os seus nomes na instrução select como no exemplo a seguir, onde selecionamos o nome, salário e cidade.

Renomeando colunas SELECT nome, data_nascimento As Aniversario, cidade As residencia FROM empregados

É importante observar que a coluna foi renomeada apenas nesta consulta, mas não houve alteração no nome da coluna no banco de dados.

Concatenando colunas em uma consulta.Concatenamos colunas quando queremos unir o resultado de dois campos em um só. Imagine que numa determinada tabela exista o campo nome, sobrenome, rua e numero da casa, neste caso ao fazermos uma consulta seria interessante concatenat o nome com o sobrenome e a rua com o numero da casa.

O Mysql trata concatenação de forma diferente do SQL Server e do Access, enquanto que no Mysql usamos a função concat(), no SQL Server e no Access fazemos pelo sinal de adição.

Exemplo de concatenação no Mysql:

SELECT concat(nome, ' mora em ', cidade, '/', estado FROM empregados

Page 14: Comandos MySQL

Exemplo de concatenação em SQL Server ou Access

SELECT nome + ' mora em ' + cidade + '/' + estado FROM empregados

O sinal + (mais) indica concatenação e deve ser usado para concatenar colunas ou uma coluna com um texto. Só poderá ser concatenado colunas do tipo texto, caso for necessário concatenar colunas do tipo data ou numérico, é necessário fazer a conversão dessas colunas para texto.

A função CONVERT() do SQL Server é usada para fazer a conversão de valores de uma coluna.

Exemplo 1:

SELECT nome + ' ganha ' + convert(varchar, salario) FROM empregados

Exemplo 2:

SELECT nome + ' nasceu em ' + Convert(VarChar, data_nascimento, 103) FROM empregados

No primeiro caso, estamos convertendo o valor da coluna salário para texto, já que esta coluna é do tipo Decimal.

No segundo exemplo, estamos convertendo o valor de uma coluna do tipo data para texto. Perceba que neste caso usamos o 103 na função, isto é necessário para informarmos que queremos que a data seja convertida no formato dd/mm/aaaa.

Selecionando valores distintosPara eliminar linhas duplicadas, usamos a palavra-chave DISTINCT na cláusula SELECT.

SELECT distinct cidade FROM empregados

No exemplo acima, usamos a palavra-chave distinct na coluna cidade, mas é possível relacionar mais de uma coluna, por exemplo, cidade e estado. Neste caso a combinação das duas colunas deve ser distinta.

Limitando o nº de linhas em uma consultaLimitar o número de linhas é usado quando não queremos listar todas as linhas de uma tabela, seja pelo volume de linhas ou por não haver necessidade. O Mysql trata esta questão de forma diferente do SQL Server e do Access.

Em SQL Server e Access use o Top para indicar o limite de linhas desejado na consulta.

SELECT top 7 * FROM empregados

Em Mysql use o Limit para indicar o limite de linhas desejado na consulta.

SELECT * FROM empregados limit 0,7

O resultado será o mesmo, porém a leitura pode ser um pouco diferente, já que o top vai pegar as sete primeiras linhas e o limit vai pegar a partir de 0 até 7.

Page 15: Comandos MySQL

Existem muitas interfaces de administração para o MySQL, mas a forma mais elementar é usar o prompt de comando. Para acessar o prompt do MySQL, use o comando :

# mysql -u root -p <enter>

Enter password: <senha>Welcome to the MySQL monitor. Commands end with ; or \g.Your MySQL connection id is 43 to server version: 4.0.15-logType 'help;' or '\h' for help. Type '\c' to clear the buffer.mysql>

Veja que o cabeçalho normal do bash foi substituído por um "mysql>", que lembra onde você está ;). Para sair, pressione "Ctrl+C" ou execute o comando "Bye".

Dentro do prompt do MySQL, use o comando "CREATE DATABASE" (criar base de dados), seguido pelo nome desejado. Neste exemplo, estou criando uma base de dados para usar na instalação do phpBB, que veremos a seguir. Um detalhe importante é que todos os comandos dados dentro do prompt do MySQL devem terminar com ponto-e-vírgula:

mysql> CREATE DATABASE phpbb;Query OK, 1 row affected (0.04 sec)

Para confirmar, use o comando "SHOW DATABASES;", que lista as bases de dados criadas no servidor, como em:

mysql> SHOW DATABASES

+--------+| Database |+--------+| information_schema || mysql || phpbb || test |+--------+

Note que além da base "phpbb" que criamos, existem mais três bases de dados, criadas durante a instalação. As bases "mysql" e "information_schema" são para uso interno do MySQL, incluindo o armazenamento das configurações (sendo um banco de dados, o MySQL usa a sí mesmo para armazenar suas configurações :), enquanto a base "test" é uma DB vazia, que pode ser usada para fins de teste.

Temos em seguida a questão das permissões de acesso. Nada impede que você sempre utilize a conta "root" do MySQL e inclusive configure os scripts instalados para o utilizarem. Entretanto, isso é extremamente inseguro, principalmente se você pretende instalar vários scripts e aplicativos no mesmo servidor, ou se as bases de dados serão acessadas por vários usuários.

O ideal é que cada base de dados tenha um usuário próprio e seja acessível apenas por ele. Se você vai instalar o phpBB (fórum) e o WordPress (gerenciador de conteúdo), por exemplo, crie duas bases de dados ("phpbb" e "wordpress", por exemplo) e dois usuários separados, cada um com permissão para acessar uma das duas bases.

Na configuração de cada um dos gestores, informe a base de dados que será usada e o usuário e senha correspondente. Isso evita que eventuais problemas de segurança em um coloquem em risco também os dados referentes ao outro.

Outra situação comum é ao configurar um servidor com vários virtual hosts. Nesse caso, o webmaster de cada site vai precisar de uma ou mais bases de dados e, naturalmente, cada um vai precisar de um login próprio, com acesso apenas às suas próprias bases de dados.

Page 16: Comandos MySQL

Para criar um usuário "phpbb", com senha "nDPIcqq9" e dar a ele acesso à base de dados "phpbb" que criamos, use (dentro do prompt do MySQL) o comando:

mysql> GRANT ALL ON phpbb.* TO phpbb IDENTIFIED BY 'nDPIcqq9';

(permita tudo na base phpbb para o usuário phpbb, identificado pela senha nDPIcqq9)

mysql> FLUSH PRIVILEGES;

O comando "FLUSH PRIVILEGES" faz com que o servidor MySQL atualize as tabelas de permissões, fazendo com que a alteração entre em vigor automaticamente, em vez de apenas da próxima vez que o servidor for reinicializado. Na verdade, ele não é necessário ao adicionar usuários usando o comando "GRANT" (como no nosso caso) mas é saudável se acostumar a utilizá-lo sempre que usar comandos que modifiquem as permissões de acesso. Você vai notar que a maioria dos tutoriais inclui o comando depois das operações relacionadas a alterações nas permissões de acesso.

Continuando, para trocar a senha posteriormente, use o comando:

mysql> SET PASSWORD FOR phpbb = PASSWORD('JSAm950A');

(defina senha para o usuário phpbb, onde a senha é JSAm950A)

Este mesmo comando pode ser usado para trocar a senha do root, como em:

mysql> SET PASSWORD FOR root = PASSWORD('V5LQSxqL');

Se mais tarde você precisar remover as permissões de acesso de um usuário anteriormente criado (em um site com vários webmasters, onde um se desligou da equipe, por exemplo) use o comando:

mysql> REVOKE ALL ON phpbb.* FROM phpbb;

(remova todos os direitos para a base phpbb, para o usuário phpbb)

mysql> FLUSH PRIVILEGES;

Com isso, o usuário deixará de ter acesso à base de dados especificada, mas ainda continuará existindo no sistema e poderá acessar outras bases de dados a que tenha acesso. Para realmente remover o usuário, usamos o comando "DROP USER", como em:

mysql> DROP USER phpbb

O comando "DROP USER" é suportado apenas pelas versões recentes do MySQL. Caso você esteja usando uma versão antiga, onde ele ainda não seja suportado, você pode usar o comando "DELETE FROM mysql.user WHERE User=", como em:

mysql> DELETE FROM mysql.user WHERE User='phpbb';

Para remover uma base de dados, use o comando "DROP DATABASE", como em:

mysql> DROP DATABASE phpbb;

Todos estes comandos devem ser dado dentro da base de dados "mysql", a base de dados interna usada pelo MySQL, acessada por default ao abrir a interface. Se por acaso você tiver mudado a base de dados de trabalho anteriormente (usando o comando USE) use o comando abaixo para voltar à base administrativa:

mysql> USE mysql;

Veja que os comandos usados dentro do prompt do MySQL seguem uma linguagem literal, usando palavras do inglês. Quem tem uma boa familiaridade com a língua tem bem mais facilidade em dominar os comandos.

Page 17: Comandos MySQL

Outra observação é que os comandos não são case sensitive. Tanto faz escrever "CREATE DATABASE phpbb;" ou "create database phpbb;". Escrever os comandos em maiúsculas é apenas uma forma de dar mais destaque a eles.

1 comentário

Page 18: Comandos MySQL

Segue uma lista dos comandos mais comuns que são utilizados de tempos a tempos.

Para fazer login (de uma shell Unix) utilize -h apenas de necessário.

[mysql dir]/bin/mysql -h hostname -u root -p

Criar uma base de dados em num servidor sql.

create database [databasename];

Listar todas as bases de dados no servidor sql.

show databases;

Mudar de base de dados.

use [db name];

Para ver todas as tabelas da Base de Dados.

show tables;

Para ver os formatos dos campos.

describe [table name];

Para apagar uma base de dados.

drop database [database name];

Para apagar uma tabela.

drop table [table name];

Para ver toda a informação de uma tabela.

SELECT * FROM [table name];

Retornar a informação das colunas e as respectivas colunas da tabela especificada.

show columns from [table name];

Ver campos especificos com o valor “qualquer coisa”.

SELECT * FROM [table name] WHERE [field name] = “qualquer coisa”;

Ver todas as entradas que contenham o nome “Manuel” e o Numero de telefone ‘3444444′.

SELECT * FROM [table name] WHERE name = “Manuel” AND phone_number = ‘3444444′;

Ver todas as entradas que contenham o nome “José” e o número de telefone ‘3444444′ ordenadas pelo campo do telefone.

SELECT * FROM [table name] WHERE name != “José” AND phone_number = ‘3444444′ order by phone_number;

Page 19: Comandos MySQL

Ver todas as entradas que comecem pelas letras ‘joão’ e pelo telefone ‘3444444′.

SELECT * FROM [table name] WHERE name like “joão%” AND phone_number = ‘3444444′;

Utilizar 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 [table name] WHERE rec RLIKE “^a$”;

Mostrar entradas únicas.

SELECT DISTINCT [column name] FROM [table name];

Mostrar entradas seleccionadas por ordem ascendente (asc) ou descentente (desc).

SELECT [col1],[col2] FROM [table name] ORDER BY [col2] DESC;

Retorna o número de colunas.

SELECT COUNT(*) FROM [table name];

Soma as colunas.

SELECT SUM(*) FROM [table name];

Juntar as tabelas em colunas comuns.

select lookup.illustrationid, lookup.personid,person.birthday from lookupleft join person on lookup.personid=person.personid=statement to join birthday in person table with primary illustration id;

Mudar para a mysql db. Criar um novo utilizador.

INSERT INTO [table name] (Host,User,Password) VALUES(’%’,’user’,PASSWORD(’password’));

Mudar a password. (de uma consola unix).

[mysql dir]/bin/mysqladmin -u root -h hostname.blah.org -p password ‘new-password’

Mudar uma password de um utilizador.(da linha de comandos MySQL).

SET PASSWORD FOR ‘user’@’hostname’ = PASSWORD(’passwordhere’);

Autorizar o utilizador “zé” a ligar-se ao servidor do host local utilizando a password “passwd”

grant usage on *.* to zé@localhost identified by ‘passwd’;

Mudar para uma mysql db.Dar previlégios a um utilizador sobre uma db.

INSERT INTO [table name] (Host,Db,User,Select_priv,Insert_priv,Update_priv,Delete_priv,Create_priv,Drop_priv) VALUES (’%’,’databasename’,’username’,’Y’,’Y’,’Y’,’Y’,’Y’,’N’);

or

grant all privileges on databasename.* to username@localhost;

Page 20: Comandos MySQL

Para actualizar a informação de uma tabela.

UPDATE [table name] SET Select_priv = ‘Y’,Insert_priv = ‘Y’,Update_priv = ‘Y’ where [field name] = ‘user’;

Apagar linhas de uma tabela.

DELETE from [table name] where [field name] = ‘whatever’;

Actualizar premissões e previlégios de uma base de dados.

FLUSH PRIVILEGES;

Apagar uma Coluna.

alter table [table name] drop column [column name];

Adicionar uma coluna a uma Base de Dados.

alter table [table name] add column [new column name] varchar (20);

Mudar o nome de uma tabela.

alter table [table name] change [old column name] [new column name] varchar (50);

Criar uma única coluna.

alter table [table name] add unique ([column name]);

Criar uma coluna maior.

alter table [table name] modify [column name] VARCHAR(3);

Apagar unica de uma tabela.

alter table [table name] drop index [colmn name];

Carregar um ficheiro CSV para uma tabela.

LOAD DATA INFILE ‘/tmp/filename.csv’ replace INTO TABLE [table name] FIELDS TERMINATED BY ‘,’ LINES TERMINATED BY ‘\n’ (field1,field2,field3);

Fazer um backup de todas as bases de dados.

[mysql dir]/bin/mysqldump -u root -ppassword –opt >/tmp/alldatabases.sql

Fazer um backup de apenas uma base de dados.

[mysql dir]/bin/mysqldump -u username -ppassword –databases databasename >/tmp/databasename.sql

Fazer o backup de uma tabela de uma base de dados.

[mysql dir]/bin/mysqldump -c -u username -ppassword databasename tablename > /tmp/databasename.tablename.sql

Restaurar uma base de dados (ou tabela) de um backup.

[mysql dir]/bin/mysql -u username -ppassword databasename < /tmp/databasename.sql

Page 21: Comandos MySQL

Criar Tabela Exemplo 1.

CREATE TABLE [table name] (firstname VARCHAR(20), middleinitial VARCHAR(3), lastname VARCHAR(35),suffix VARCHAR(3),officeid VARCHAR(10),userid VARCHAR(15),username VARCHAR(8),email VARCHAR(35),phone VARCHAR(25), groupsVARCHAR(15),datestamp DATE,timestamp time,pgpemail VARCHAR(255));

Criar Tabela Exemplo 2.

create table [table name] (personid int(50) not null auto_increment primary key,firstname varchar(35),middlename varchar(50),lastnamevarchar(50) default ‘bato’);

Clausulas e Declarações MYSQL

ALTER DATABASE

ALTER TABLE

ALTER VIEW

ANALYZE TABLE

BACKUP TABLE

CACHE INDEX

CHANGE MASTER TO

CHECK TABLE

CHECKSUM TABLE

COMMIT

CREATE DATABASE

CREATE INDEX

CREATE TABLE

CREATE VIEW

DELETE

DESCRIBE

DO

DROP DATABASE

DROP INDEX

DROP TABLE

DROP USER

DROP VIEW

EXPLAIN

FLUSH

GRANT

HANDLER

INSERT

Page 22: Comandos MySQL

JOIN

KILL

LOAD DATA FROM MASTER

LOAD DATA INFILE

LOAD INDEX INTO CACHE

LOAD TABLE...FROM MASTER

LOCK TABLES

OPTIMIZE TABLE

PURGE MASTER LOGS

RENAME TABLE

REPAIR TABLE

REPLACE

RESET

RESET MASTER

RESET SLAVE

RESTORE TABLE

REVOKE

ROLLBACK

ROLLBACK TO SAVEPOINT

SAVEPOINT

SELECT

SET

SET PASSWORD

SET SQL_LOG_BIN

SET TRANSACTION

SHOW BINLOG EVENTS

SHOW CHARACTER SET

SHOW COLLATION

SHOW COLUMNS

SHOW CREATE DATABASE

SHOW CREATE TABLE

SHOW CREATE VIEW

SHOW DATABASES

SHOW ENGINES

SHOW ERRORS

Page 23: Comandos MySQL

SHOW GRANTS

SHOW INDEX

SHOW INNODB STATUS

SHOW LOGS

SHOW MASTER LOGS

SHOW MASTER STATUS

SHOW PRIVILEGES

SHOW PROCESSLIST

SHOW SLAVE HOSTS

SHOW SLAVE STATUS

SHOW STATUS

SHOW TABLE STATUS

SHOW TABLES

SHOW VARIABLES

SHOW WARNINGS

START SLAVE

START TRANSACTION

STOP SLAVE

TRUNCATE TABLE

UNION

UNLOCK TABLES

USE

Funções das Strings

AES_ENCRYPT

ASCII

BIN

BINARY

BIT_LENGTH

CHAR

CHAR_LENGTH

CHARACTER_LENGTH

COMPRESS

CONCAT

CONCAT_WS

CONV

Page 24: Comandos MySQL

DECODE

DES_DECRYPT

DES_ENCRYPT

ELT

ENCODE

ENCRYPT

EXPORT_SET

FIELD

FIND_IN_SET

HEX

INET_ATON

INET_NTOA

INSERT

INSTR

LCASE

LEFT

LENGTH

LOAD_FILE

LOCATE

LOWER

LPAD

LTRIM

MAKE_SET

MATCH AGAINST

MD5

MID

OCT

OCTET_LENGTH

OLD_PASSWORD

ORD

PASSWORD

POSITION

QUOTE

REPEAT

REPLACE

REVERSE

Page 25: Comandos MySQL

RIGHT

RPAD

RTRIM

SHA

SHA1

SOUNDEX

SPACE

STRCMP

SUBSTRING

SUBSTRING_INDEX

TRIM

UCASE

UNCOMPRESS

UNCOMPRESSED_LENGTH

UNHEX

UPPER

Funções da data e da hora

ADDDATE

ADDTIME

CONVERT_TZ

CURDATE

CURRENT_DATE

CURRENT_TIME

CURRENT_TIMESTAMP

CURTIME

DATE

DATE_ADD

DATE_FORMAT

DATE_SUB

DATEDIFF

DAY

DAYNAME

DAYOFMONTH

DAYOFWEEK

DAYOFYEAR

Page 26: Comandos MySQL

EXTRACT

FROM_DAYS

FROM_UNIXTIME

GET_FORMAT

HOUR

LAST_DAY

LOCALTIME

LOCALTIMESTAMP

MAKEDATE

MAKETIME

MICROSECOND

MINUTE

MONTH

MONTHNAME

NOW

PERIOD_ADD

PERIOD_DIFF

QUARTER

SEC_TO_TIME

SECOND

STR_TO_DATE

SUBDATE

SUBTIME

SYSDATE

TIME

TIMEDIFF

TIMESTAMP

TIMESTAMPDIFF

TIMESTAMPADD

TIME_FORMAT

TIME_TO_SEC

TO_DAYS

UNIX_TIMESTAMP

UTC_DATE

UTC_TIME

Page 27: Comandos MySQL

UTC_TIMESTAMP

WEEK

WEEKDAY

WEEKOFYEAR

YEAR

YEARWEEK

Funções matemáticas e de agregação

ABS

ACOS

ASIN

ATAN

ATAN2

AVG

BIT_AND

BIT_OR

BIT_XOR

CEIL

CEILING

COS

COT

COUNT

CRC32

DEGREES

EXP

FLOOR

FORMAT

GREATEST

GROUP_CONCAT

LEAST

LN

LOG

LOG2

LOG10

MAX

MIN

Page 28: Comandos MySQL

MOD

PI

POW

POWER

RADIANS

RAND

ROUND

SIGN

SIN

SQRT

STD

STDDEV

SUM

TAN

TRUNCATE

VARIANCE

Funções de controlo de fluxo

CASE

IF

IFNULL

NULLIF

Utilitários da linha de comando

comp_err

isamchk

make_binary_distribution

msql2mysql

my_print_defaults

myisamchk

myisamlog

myisampack

mysqlaccess

mysqladmin

mysqlbinlog

mysqlbug

mysqlcheck

Page 29: Comandos MySQL

mysqldump

mysqldumpslow

mysqlhotcopy

mysqlimport

mysqlshow

perror

Perl API – Utilizando funções e metodos construidos em Perl DBI com MySQL

available_drivers

begin_work

bind_col

bind_columns

bind_param

bind_param_array

bind_param_inout

can

clone

column_info

commit

connect

connect_cached

data_sources

disconnect

do

dump_results

err

errstr

execute

execute_array

execute_for_fetch

fetch

fetchall_arrayref

fetchall_hashref

fetchrow_array

fetchrow_arrayref

fetchrow_hashref

Page 30: Comandos MySQL

finish

foreign_key_info

func

get_info

installed_versions

last_insert_id

looks_like_number

neat

neat_list

parse_dsn

parse_trace_flag

parse_trace_flags

ping

prepare

prepare_cached

primary_key

primary_key_info

quote

quote_identifier

rollback

rows

selectall_arrayref

selectall_hashref

selectcol_arrayref

selectrow_array

selectrow_arrayref

selectrow_hashref

set_err

state

table_info

table_info_all

tables

trace

trace_msg

type_info

Page 31: Comandos MySQL

type_info_all

Atributos para gerir

PHP API – Utilizando funções construidas em PHP com MySQL

mysql_affected_rows

mysql_change_user

mysql_client_encoding

mysql_close

mysql_connect

mysql_create_db

mysql_data_seek

mysql_db_name

mysql_db_query

mysql_drop_db

mysql_errno

mysql_error

mysql_escape_string

mysql_fetch_array

mysql_fetch_assoc

mysql_fetch_field

mysql_fetch_lengths

mysql_fetch_object

mysql_fetch_row

mysql_field_flags

mysql_field_len

mysql_field_name

mysql_field_seek

mysql_field_table

mysql_field_type

mysql_free_result

mysql_get_client_info

mysql_get_host_info

mysql_get_proto_info

mysql_get_server_info

mysql_info

mysql_insert_id

Page 32: Comandos MySQL

mysql_list_dbs

mysql_list_fields

mysql_list_processes

mysql_list_tables

mysql_num_fields

mysql_num_rows

mysql_pconnect

mysql_ping

mysql_query

mysql_real_escape_string

mysql_result

mysql_select_db

mysql_stat

mysql_tablename

mysql_thread_id

mysql_unbuffered_query