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 &amp;&amp; mysql_affect_rows() &gt; 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 ). - 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: $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: $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 disponivel n"; } echo " blob: $meta-&gt;blob max_length: $meta-&gt;max_length multiple_key: $meta-&gt;multiple_key name: $meta-&gt;name 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”; } - 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_usuario password - 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: $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. 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()); 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; } $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”; $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”); 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 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ásica Select * 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 consulta SELECT 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 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 distintos Para 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 consulta Limitar 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. 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-log Type '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. 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. 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 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; 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 casesensitivity. 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 lookup left 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; 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 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), groups VARCHAR(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 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 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 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 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 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 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 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 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 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 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 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