Cerrito 0 Denunciar post Postado Julho 19, 2004 Pessoal estive dando uma olhada na net e achei esse material interessante espero que possa ajudar nosso crescimento... abraços a todos Marcio Algumas dicas para Consultas no MySQL Algumas funções são importantes de serem conhecidas por um programador iniciante que queira usar o MySQL como servidor de banco de dados. É algo simples, mas que vai facilitar a vida dos iniciantes e colocá-los no caminho para pegar mais experiência com o MySQL. Considere a seguinte Tabela Pessoal com os valores abaixo: Código Nome Time 01 Fabricio Corinthians 02 Felipe São Paulo 03 Gustavo Corinthians 04 Daniel Palmeiras 05 Leonardo Palmeiras DISTINCT: retorna apenas uma linha de dados para todo o grupo de linhas que tenha o mesmo valor. Exemplo: SELECT DISTINCT time FROM pessoal; Corinthians (estava duas vezes só que só retornou uma única linha) São Paulo Palmeiras ALL: Retorna todos os dados, oposto de DISTINCT. Exemplo: SELECT ALL time FROM pessoal; Corinthians São Paulo Corinthians Palmeiras Palmeiras WHERE: Dá uma condição para os dados serem buscados. Exemplo: SELECT nome FROM pessoal WHERE time = 'São Paulo'; Felipe ORDER BY: Retorna os comandos em ordem ascendente (ASC) ou descendente (DESC). O padrão é ascendente. Exemplo: SELECT nome FROM pessoal ORDER BY nome DESC; Leonardo Gustavo Felipe Fabrício Daniel LIMIT [início,] linhas: Retorna o número de linhas especificado. Se o valor início for fornecido, aquelas linhas são puladas antes do dado ser retornado. A primeira linha é 0. Exemplo: SELECT * FROM pessoal LIMIT 3,1; 04 Daniel Palmeiras FUNÇÕES: 1. ABS: Valor absoluto do número, ou seja, só considera a parte numérica não se importando com o sinal positivo ou negativo do mesmo. Exemplo: ABS(-145) retorna 145 2. BIN: Binário de número decimal Exemplo: BIN(8) retorna 1000 3. CURDATE() / CURRENTDATE(): Data atual na forma YYYY/MM/DD Exemplo: CURDATE() retorna 2002/04/04 4. CURTIME() / CURRENTTIME(): Hora atual na forma HH:MM:SS Exemplo: CURTIME() retorna 13:02:43 5. DATABASE: Nome do banco de dados atual Exemplo: DATABASE() retorna bdteste 6. DAYOFMONTH: Dia do mês para a data dada, na faixa de 1 a 31 Exemplo: DAYOFMONTH('2004-04-04') retorna 04 7. DAYNAME: Dia da semana para a data dada Exemplo: DAYNAME('2004-04-04') retorna Sunday 8. DAYOFWEEK: Dia da semana em número para a data dada, na faixa de 1 a 7, onde o 1 é domingo. Exemplo: DAYOFWEEK('2004-04-04') retorna 1 9. DAYOFYEAR: Dia do ano para a data dada, na faixa de 1 até 366 Exemplo: DAYOFYEAR('2004-04-04') retorna 95. 10. FORMAT(NÚMERO, DECIMAIS): Formata o número nitidamente com o número de decimais dado. Exemplo: FORMAT(5543.00245,2) retorna 5.543.002,45 11. LIKE: faz uma busca sofisticada por uma substring dentro de uma string informada. Temos, dentro da função LIKE, os seguintes caracteres especiais utilizados em substrings: % - Busca zero ou mais caracteres; _ - Busca somente um caractere. Exemplo 1: SELECT nome From pessoal Where nome like ‘F%’; Fabricio Felipe O caracter ‘%’ na consulta acima indica que estamos procurando nomes que possuem a incial F. Exemplo 2: SELECT nome From pessoal Where nome like ‘_a%’; Daniel Fabricio O caracter ‘_’ na consulta acima indica que estamos procurando nomes nos quais a letra A é a segunda letra do nome. Exemplo 3: SELECT nome From pessoal Where nome like ‘%o’; Fabrício Gustavo Leonardo A consulta acima buscou nomes em que a última letra é o caractere ‘O’. 12. A função Left retorna os primeiros caracteres à esquerda de uma string. Sintaxe: LEFT(string,tamanho) Exemplo: SELECT LEFT(nome,3) from pessoal Fab Fel Gus Dan Leo Esta consulta retornará os 3 primeiros caracteres à esquerda dos registros da coluna nome. 13. A função Right retorna os últimos caracteres à direita de uma string. Sintaxe: RIGHT(string1,tamanho) Exemplo: SELECT RIGHT(nome,4) From pessoal; icio lipe tavo niel ardo Artigo escrito por Adriana Ferreira http://www.sqlmagazine.com.br/ Pessoal incrementando o arquivo da Adriana vamos ver mais alguns exemplos... digamos que queremos trazer como resultado da nossa pesquisa apenas os nomes que contenham 05 letras... para isso é simples... usamos o curinga "_" que significa qualquer caracter... seria algo assim: mysql> SELECT * FROM clientes WHERE nomes LIKE"_____"; note que usamos cinco vezes o coringa "_" para retornar todos dados da coluna nome que contenham apenas 05 caracteres... Bom e se quisessemos listar todos os nomes que tenham "w" no nome... tambem é simples usamos o "%" da seguinte maneira: mysql> SELECT * FROM clientes WHERE nomes LIKE"%w%"; Encontrando nomes finalizados com "os" por exemplo mysql> SELECT * FROM clientes WHERE nomes LIKE "os%"; Compartilhar este post Link para o post Compartilhar em outros sites
Cesar E. Fassura 0 Denunciar post Postado Junho 14, 2006 Cerrito, Legal, Isso Ajuda Bastante, exatamente por estar em um unico lugar a parte dos principais comandos.(e não um pouco em cada lugar com comentários enormes.) :lol: Compartilhar este post Link para o post Compartilhar em outros sites
skimo-solar 0 Denunciar post Postado Setembro 30, 2006 Encontrando nomes finalizados com "os" por exemplomysql> SELECT * FROM clientes WHERE nomes LIKE "os%";Não seria ao contrário?SELECT * FROM clientes WHERE nomes LIKE "%os";Artigo legal para iniciantes (tipo eu), gostei bastante, um resumo legal das funções básicas. Compartilhar este post Link para o post Compartilhar em outros sites
Darkk 1 Denunciar post Postado Outubro 30, 2006 Muito legal, Cerrito!!! Valeu a iniciativa!!! http://forum.imasters.com.br/public/style_emoticons/default/clap.gif http://forum.imasters.com.br/public/style_emoticons/default/clap.gif http://forum.imasters.com.br/public/style_emoticons/default/clap.gif Compartilhar este post Link para o post Compartilhar em outros sites
Rafael Macedo 0 Denunciar post Postado Novembro 24, 2006 Tenho uma colaboração a fazer ao tópico do cerrito. Usando a função INNER JOIN em três tabelas. Digamos que temos três tabelas a saber: Cliente, Profissão e TipoDeTelefones. Na primeira tabela temos o cadastro completo de todos os clientes. Sendo que temos um campo para profissão com múltipla escolhas e três campos TipoDeFone com múltiplas escolhas. E ainda! As tabelas profissão e TipoDeTelefones armazenam nome que possam alimentar esses campos especiais da tabela clientes. Será q fui claro? Vamos continuar... Tabela Cliente > Cod - int > Nome - varchar > DataDeNasc - date > Profissao - int > NumTelefone1 - int > TipoDeFone1 - int > NumTelefone2 - int > TipoDeFone2 - int > NumTelefone3 - int > TipoDeFone3 - int Tabela Profissao > Cod - int > Profissao - varchar Tabela TipoDeTelefones > Cod - int > Tipo - varchar OK! Digamos que temos um formulário para cadastrarmos os clientes e nos campos, que discuto, são do tipo select. Os valores e label devem ser $cod e $profissao para campo profissão e $cod e $tipo para os campos de tipos de telefones. Se alguém não entendeu levante o braço... :D OK! Quando o formulário é executado nesses campos especiais aparecem os registros vindos da tabela Profissão e TipoDeTelefones. E após inserir desejamos recuperar estes valores numa página de detalhes/visualização de clientes. OK! Agora quando montamos a instrução SQL é óbvio que pensamos assim: mysql_query('select * from cliente where cod = codigo') E montamos a página para visualizar os dados, mas tem o seguinte. Na tabela clientes os campos profissão e tipos de telefones armazenam apenas o código do profissão ou tipodetelefone vindo dos campos select. Lembra do parâmetro value que leva o código? Agora temos que adaptar essa instrução para além de recuperar os dados do cliente e também fazer as combinações com as duas tabelas para pegar o valor correto ao invés do código. Instrução: select Cod,Nome,DataDeNasc,NumTelefone1,NumTelefone2,NumTelefone3,profissao.Profissao,Tipo1.Descricao as Tel01,Tipo2.Descricao as Tel02,Tipo3.Descricao as Tel03from clienteINNER JOINTipoDeTelefones as Tipo1,TipoDeTelefones as Tipo2,TipoDeTelefones as Tipo3,profissaoWHEREcliente.Cod = $codigoAND cliente.Profissao = profissao.CodAND cliente.TipoDeFone01 = Tipo1.CodAND cliente.TipoDeFone02 = Tipo2.CodAND cliente.TipoDeFone03 = Tipo3.CodPronto! Agora o SQL é executado e onde aparece um código dos campos profissão e dos telefones aparece a descrição vindo dos outros campos através de uma combinação de três tabela pelo INNER JOIN. Um abraço a todos! Compartilhar este post Link para o post Compartilhar em outros sites
Sergio R 0 Denunciar post Postado Fevereiro 6, 2007 Muito bom esse tópico, mas mesmo assim estou com dúvidas.Alguém poderia explicar melhor como funciona o INNER JOIN. Também gostaria de saber se dá para fazer uma consulta a duas tabelas ao mesmo tempo, e mostrar o resultado das duas.Muito grato! Compartilhar este post Link para o post Compartilhar em outros sites
::..Hunter..:: 1 Denunciar post Postado Fevereiro 8, 2007 tá pra nascer o cara que vai me explicar direito como funciona o inner join, pra mim ele não passa de um WHERE. Aliás nessa explicação acima acho que não tá certo não, cadê o ON? Sergio R, fazer a consulta em 2 tabelas isso se chama "relacionamento", é muito simples: Digamos que tenho 2 tabelas: TABELA1 cod nome TABELA2 cod profissao O campo cod da tabela1 vira chave estrangeira na tabela2, ou seja, são iguais. "SELECT tabela1.nome, tabela2.profissaoFROM tabela1, tabela2WHERE tabela1.cod = tabela2.cod"vai mostrar o nome do cara e a profissão que ele tem. ^_^ Compartilhar este post Link para o post Compartilhar em outros sites
Verena 0 Denunciar post Postado Março 12, 2007 $sql = "SELECT PtsAtd.Nome_UO, PtsAtd.Sigla, PtsAtd.Endereço, PtsAtd.Bairro, PtsAtd.Municipio, PtsAtd.CEP, PtsAtd.UF, PtsAtd.NúmeroTelefone, PtsAtd.Fax, PtsAtd.EmailInstitucional, PtsAtd.Usercode_1, PtsAtd.Usercode_2, PtsAtd.Usercode_3, Responsaveis.Cargo, Responsaveis.Titular, Responsaveis.MatriculaT, Responsaveis.CelularT, Responsaveis.EmailT, Responsaveis.Substituto, Responsaveis.MatriculaS, Responsaveis.CelularS, Responsaveis.EmailS, FROM PtsAtd, Responsaveis WHERE PtsAtd.Codigo_UO = Responsaveis.Codigo_UO LIKE '$nome%'"; isso funciona? Compartilhar este post Link para o post Compartilhar em outros sites
neo_soro 0 Denunciar post Postado Julho 8, 2007 Olá pessoal... sou novo aqui. Estou com um probleminha e preciso de ajuda. POR FAVOR. Tenho essa tabela em um Banco de Dados. ============================= CREATE TABLE `cadpro` ( `id` INTEGER NOT NULL AUTO_INCREMENT, `nome` VARCHAR( 255 ) NOT NULL , `email` VARCHAR( 60 ) NOT NULL , `rua` VARCHAR( 255 ) NOT NULL , `bairro` VARCHAR( 255 ) NOT NULL , `cidade` VARCHAR( 255 ) NOT NULL , `estado` VARCHAR( 5 ) NOT NULL , `cep` VARCHAR( 30 ) NOT NULL , `telfixo` VARCHAR( 15 ) NOT NULL , `telmovel` VARCHAR( 15 ) NOT NULL , `dia` TINYTEXT NOT NULL, `mes` TINYTEXT NOT NULL, PRIMARY KEY (`Id`) ) TYPE=MyISAM; ============================= Pergunto: [como é possível desenvolver algum script que envie mensagem de parabéns a aniversariantes do dia?] Obrigado Werber Werber, tenta isso: link.Vai ter que adaptar um pouquinho, até mesmo porque essa mensagem que você fala seria enviada por e-mail, ou quando ele entrasse no site/ aplicação, né? Espero ter ajudado, RodrigoC Compartilhar este post Link para o post Compartilhar em outros sites
marina toda 0 Denunciar post Postado Dezembro 13, 2007 MUITO BOM!! CERRITO Para quem começou a mexer agora com o SQL , é um pé de guerra..... Muito bom, vai me ajudar muitooooo Compartilhar este post Link para o post Compartilhar em outros sites
dyggos 0 Denunciar post Postado Agosto 7, 2008 oLÁ Galera.... Estou com a seguinte situação, TENHO ESSA TABELA (arSantododia) Dentro dessa tabela tenho os seguintes campos: arCod arName arTexto arDia arMes Quero fazer um SELECT e que me mostre na pagina somente o que está na data de hj, exemplo: 06/agosto, quero que me mostre tudo o que tem nessa data! e somente nessa data. Poderia me ajudar? Ahh otimo post! Abraço, Rodrigo Compartilhar este post Link para o post Compartilhar em outros sites
pepe288 0 Denunciar post Postado Março 18, 2009 Olá galera, tudo certo? Gostei muito do tópico do Cerrito (acho q é isso), mais estou com um problema, acredito que seja bem simples, mais eu não estou conseguindo fazer (deve ser p q não sou muito bom em MySQL http://forum.imasters.com.br/public/style_emoticons/default/grin.gif)... Bem, é o seguinte: Tenho uma tabela de cadastro de dados pessoais, mais ja foral excluidos e inseridos diversos nomes, agora estou precisando fazer uma contagem, preciso saber quantas entradas tem nesta tabela. Como monto essa query? Compartilhar este post Link para o post Compartilhar em outros sites
Teacher Nick 0 Denunciar post Postado Julho 31, 2009 Olá galera, tudo certo? Gostei muito do tópico do Cerrito (acho q é isso), mais estou com um problema, acredito que seja bem simples, mais eu não estou conseguindo fazer (deve ser p q não sou muito bom em MySQL http://forum.imasters.com.br/public/style_emoticons/default/grin.gif )... Bem, é o seguinte: Tenho uma tabela de cadastro de dados pessoais, mais ja foral excluidos e inseridos diversos nomes, agora estou precisando fazer uma contagem, preciso saber quantas entradas tem nesta tabela. Como monto essa query? usa select count(nome) from tabela tabela = nome da sua tabela nome = um campo que vai o nome do cadastrado flw Compartilhar este post Link para o post Compartilhar em outros sites
Airton_Filho 0 Denunciar post Postado Março 28, 2014 tá pra nascer o cara que vai me explicar direito como funciona o inner join, pra mim ele não passa de um WHERE. Aliás nessa explicação acima acho que não tá certo não, cadê o ON? Sergio R, fazer a consulta em 2 tabelas isso se chama "relacionamento", é muito simples: Digamos que tenho 2 tabelas: TABELA1 cod nome TABELA2 cod profissao O campo cod da tabela1 vira chave estrangeira na tabela2, ou seja, são iguais. "SELECT tabela1.nome, tabela2.profissao FROM tabela1, tabela2 WHERE tabela1.cod = tabela2.cod"vai mostrar o nome do cara e a profissão que ele tem. Meu caro Hunter, boa noite. Também sempre tive esse problema com a diferenciação entre inner e left. Mas agora tá molezinha, olha isso aqui e vê se te ajuda em algo nessa diferença. Vamos ao inner join nesse momento: SELECT T01.CODIGO, T02.CODIGO FROM ALUNO T01 INNER JOIN TURMA T02 ON T01.CODIGO = T02.CODIGO O resultado proveniente dessa consulta sempre existirá valores em quais quer colunas que queira observar, nesse caso as colunas T01.CODIGO e T02.CODIGO sempre terão valores, Agora vamos ao left join AGORA: SELECT T01.CODIGO, T02.CODIGO FROM ALUNO T01 LEFT JOIN TURMA T02 ON T01.CODIGO = T02.CODIGO Neste caso, observando a ligação T01.CODIGO = T02.CODIGO, isso nos diz que a coluna T01.CODIGO SEMPRE terá valores e a coluna T02.CODIGO apresentará valores nulos e não nulos. Caso a ligação fosse ao contrário, T02.CODIGO = T01.CODIGO, isso nos diz que a coluna T02.CODIGO SEMPRE terá valores e a coluna T01.CODIGO apresentará valores nulos e não nulos. Compartilhar este post Link para o post Compartilhar em outros sites