Revisando sintaxes SQL e criando programa de pesquisa. Prof. Vitor H. Migoto de Gouvêa Colégio IDESA – 2011 Edição 5 – SELECT * FROM Minha_memoria – Revisando Sintaxes SQL e Criando programa de Pesquisa Ano: 04/2011 Nesta Edição Introdução ......................................................................................................................................................................... 1 As sentenças SQL .............................................................................................................................................................. 1 Sentença de Inserção de Dados .................................................................................................................................... 1 Sentença de Alteração de Dados .................................................................................................................................. 1 Sentença de Deleção de Dados..................................................................................................................................... 2 Sentença de Pesquisa de Dados.................................................................................................................................... 2 Parâmetro WHERE .................................................................................................................................................... 2 Parâmetro LIKE.......................................................................................................................................................... 3 Parâmetro Order By .................................................................................................................................................. 3 Criando o programa .......................................................................................................................................................... 4 Codificando nosso projeto ................................................................................................................................................ 6 Programação do Form .................................................................................................................................................. 6 Programação do Button “Pesquisar” ............................................................................................................................ 7 Arquivos Anexos................................................................................................................................................................ 8 Veja nas próximas edições ................................................................................................................................................ 9 Introdução Para trabalharmos com banco de dados SQL é necessário que saibamos trabalhar com suas sintaxes e aqui nesta edição vamos revisar as sentenças SQL uma a uma, para podermos evoluir nossos trabalhos e nossos programas a fim de obtermos o máximo desta ferramenta tão grandiosa de Banco de Dados. As sentenças SQL Vamos falar agora das sentenças básicas que devemos saber para trabalhar com o banco de dados MySQL. Vamos dividir em 4 partes , Inserção , Alteração, Deleção e Pesquisa. Abaixo vamos seguir cada uma delas. Sentença de Inserção de Dados A sentença SQL de inserção de dados segue a seguinte sintaxe abaixo: INSERT INTO nome_da_tabela (campos,campos,...) VALUES (valores,valores,...); Na sintaxe acima onde se lê nome_da_tabela , seria o nome da tabela onde serão acrescentados os valores desejados. Onde se lê campos seriam os nomes dos campos, separados por vírgula, que receberão os dados, que devem ser digitados idênticos como foram definidos na tabela. Os valores a serem adicionados seguem respectivamente a posição definida anteriormente na digitação do campo em que irá ser incluído. Os valores serão colocados entre aspas quando necessários, dependendo do tipo de dado que o campo possui na tabela. Sentença de Alteração de Dados A sentença de alteração de dados é a seguinte: UPDATE nome_da_tabela SET campo='valor alterado' WHERE campo=valor; Na sentença de alteração definimos o nome_da_tabela e logo depois a sintaxe SET colocamos os campos que queremos alterar seguido do valor alterado e por ultimo colocamos uma condição para a alteração acontecer, por exemplo, definimos que a alteração será feita para um código especifico, evitando assim que todos os dados do banco de dados sejam alterados. Vejamos um exemplo: UPDATE alunos SET nome='Mateu' WHERE codigo=5; No exemplo acima vemos que na tabela alunos o dado do campo nome receberá uma alteração para Mateu sendo que a condição é que o dado que será alterado é o dado que possui o código de valor 5, assim somente o dado que tem o código 5 será alterado no campo nome para Mateu. 1 Sentença de Deleção de Dados A sentença de deleção ou exclusão é a seguinte: DELETE FROM nome_da_tabela WHERE campo1=’x’ Quando vamos excluir um registro especificado de um campo precisamos identificar que campo queremos remover, para isso usamos novamente a condição com a sentença where que significa quando. Vejamos um exemplo. DELETE FROM alunos WHERE codigo=5; Na sentença acima podemos dizer que ele irá apagar da tabela alunos todos os registros quando o campo codigo for igual ao valor 5, dessa maneira somente o aluno de código 5 será excluído. Sem a sentença where definindo uma condição, acabaremos por deletar todos os dados da tabela. Sentença de Pesquisa de Dados A sintaxe da sentença de pesquisa é a seguinte: SELECT campo1,campo2,... FROM nome_das_tabelas OPÇÕES A sintaxe do SELECT define em primeiro lugar os campos da tabela que serão mostrados no resultado (se precisar exibir todos os campos é só utilizar o * no lugar do nome dos campos), logo depois, após a sentença FROM define-se as tabelas que serão utilizadas na pesquisa. Depois da tabela vêm as opções de pesquisa, ou seja, definiremos a condição que será respeitada para a pesquisa ser executada. Podemos usar aqui o WHERE para identificar um determinado valor especifico de um campo, ou então podemos usar o parâmetro LIKE que irá pesquisar por valores que começam, terminam ou possuem o valor definido no meio do dado, se quisermos também podemos ordenar nossa pesquisa usando a propriedade ORDER BY e definindo a partir de qual campo será ordenado o resultado da pesquisa. Vamos ver um exemplo de cada caso. Parâmetro WHERE O parâmetro where define uma condição única, ou seja, o valor especificado deverá ser idêntico ao dado que se quer conseguir. Vejamos um exemplo: SELECT * FROM alunos WHERE nome='Carlos'; Neste exemplo serão pesquisados na tabela alunos os dados do aluno que possui o nome idêntico a Carlos, nesta pesquisa se existir algum aluno com o nome Carlos Alessandro não será retornado como resultado, pois a pesquisa é especifica somente ao nome Carlos. Este parâmetro é útil quando se deseja fazer a pesquisa de um valor cujo dado é único, como um código ou RG ou CPF, por exemplo, em que os resultados têm de ser um único valor exato. 2 Parâmetro LIKE O parâmetro like ,que é uma variação do parâmetro where, define uma condição onde o valor pesquisado pode estar no começo, no fim ou no meio de qualquer palavra do campo, ou seja, o valor pesquisado não necessariamente poderá ser idêntico ao dado que se quer conseguir. Vejamos um exemplo: SELECT * FROM alunos WHERE nome LIKE "Ca%"; Neste exemplo serão pesquisados na tabela alunos os dados dos alunos que os nomes começam com as letras Ca e podem ter qualquer terminação, nesta pesquisa se existir algum aluno com o nome Carlos Alessandro será retornado como resultado, pois a pesquisa restringe que o dado comece com as letras Ca podendo ter qualquer terminação posteriormente. O parâmetro like pode ser usado de 3 maneiras com o operador %, vejamos estas maneiras: %texto – Desta maneira os dados pesquisados deverão terminar com o texto definido texto% – Desta maneira os dados pesquisados deverão começar com o texto definido %texto% – Desta maneira os dados pesquisados podem conter o texto definido no meio, no inicio ou no final deles. Este parâmetro é útil quando se deseja fazer pesquisas de informações aproximadas, onde se possui parte da informação apenas. Parâmetro Order By Já fora das pesquisas, temos o parâmetro Order by que serve como ordenador dos resultados. Ele ordena de maneira ascendente ou decrescente os resultados pelo campo definido pelo usuário. Vejamos um exemplo: SELECT * FROM alunos ORDER BY codigo ASC; Esta pesquisa irá retornar todos os dados da tabela ordenados pelo código de maneira ascendente, ou seja, do menor código para o maior código. Para ordenar de maneira ascendente utiliza-se o parâmetro ASC logo após o campo que se deseja ordenar, e para ordenar de maneira decrescente utiliza-se o parâmetro DESC logo após o campo que se deseja ordenar. Pode-se também ordenar em função de mais de um campo apenas separando as opções de ordenação com vírgula. SELECT * FROM alunos ORDER BY codigo ASC, nome DESC; 3 Criando o programa Agora que já temos relembrado o uso das sentenças SQL podemos criar um programa em que iremos fazer uma pesquisa das informações que possuímos no nosso banco de dados. O objetivo deste nosso programa é pesquisar nomes de alunos no nosso banco de dados e para isso precisaremos então preparar nosso Form. Siga a imagem abaixo para ver a disposição dos objetos no Form e logo depois veja as propriedades que deverão ser alteradas seguindo a numeração disposta em cada objeto. Ao criar o seu projeto lembre-se de salvá-lo seguindo os procedimentos ensinados anteriormente nas outras edições. 9 1 2 3 8 4 5 6 7 4 Agora altere as propriedades referentes a cada objeto, para tudo seguir corretamente, altere primeiro as propriedades Name de cada objeto e depois siga alterando as outras propriedades: 1. Label a. Caption Pesquisa: 2. Edit a. Text deixar em branco b. Name pesq 3. Button a. Caption Pesquisar 4. SQL Connection a. Name con b. DatabaseName escola c. HostName 127.0.0.1 d. UserName root e. Password A senha que você definiu na instalação do Appserv f. Connected True 5. SQL Query a. Name query b. Database con c. Transaction trans 6. SQL Transaction a. Name trans b. Database con 7. Data Source a. Name source b. Dataset query 8. DBGrid ( Palheta Data Control) a. Name grid b. DataSource source 9. Form a. Caption Pesquisa de Alunos 5 Codificando nosso projeto Para que o sistema funcione então precisamos agora incluir alguns comandos de programação no nosso projeto. Primeiro vamos inserir uma pequena linha de programação no evento FormCreate que irá fazer a ligação do nosso DB Grid com o banco de dados para que possamos visualizar todos os dados que estão cadastrados. Programação do Form Para isso clique duas vezes no formulário para ir para a tela de edição de código diretamente no evento FormCreate. Veja os comandos digitados e digite-os em seu projeto. ATENÇÃO: PARA EVITAR PROBLEMAS EM NOSSO PROJETO, DIGITE O CÓDIGO QUE VOCÊ VERÁ EM NOSSO MATERIAL, POIS CASO OS COMANDOS SEJAM COPIADOS E COLADOS NO LAZARUS, ELES PODEM CONTER FORMATAÇÕES QUE SERÃO VISTAS COMO ERRO NO PROGRAMA NA HORA DA DEPURAÇÃO. Nesta programação estamos dizendo ao programa que no instante em que for criado o Form (Evento FormCreate) o programa irá incluir na nossa query uma sintaxe SQL “SELECT * FROM alunos ORDER BY codigo” que faz uma pesquisa no banco de dados por todos os dados da tabela alunos e ordena o resultado pelo código. Na segunda linha ele faz executar o script anterior através da função Open da query. Este código fará com que os dados que tivermos no nosso banco sejam mostrados no DB Grid do nosso form , tudo isso devido a ligação entre o Data Source a Query e o DB Grid. 6 Programação do Button “Pesquisar” Para fazer a parte da pesquisa vamos precisar codificar o botão de Pesquisar, para isso volte ao form e dê dois cliques no botão Pesquisar para irmos à janela de edição de código no evento Click do nosso Button. Após isso digite o código que verá na imagem abaixo: No código do botão a primeira coisa que fazemos é criar uma variável do tipo STRING que irá armazenar o texto a ser pesquisado. ( a criação da variável você observa na linha em que adicionamos entre a Procedure e o Begin um comando Var e logo abaixo colocamos sql:string;) Depois do Begin o que se vê é que pegamos o valor da propriedade text do edit pesq, que possuirá o valor digitado pelo usuário, e armazenamos dentro da variável SQL. Após isso finalizamos a conexão anterior do Query através do comando query.close; e então na linha abaixo iniciamos a sintaxe de pesquisa. A sintaxe de pesquisa adicionada na propriedade SQL.text do objeto query fará a pesquisa do nome dos alunos que possuem o texto digitado pelo usuário em qualquer parte do nome. Dentro da sintaxe SQL precisamos incluir o texto digitado pelo usuário, por ser texto deve ser apresentado entre aspas então para isso digitamos primeiro as aspas duplas, pois se usarmos as aspas simples significa que estamos encerrando a instrução do text da query. Porem precisamos adicionar o conteúdo que será digitado dentro da caixa de texto e para fazer isso não podemos estar entre as aspas simples, então fechamos as aspas simples depois do parâmetro % do comando LIKE, dizendo ao programa que iremos encerrar o texto da propriedade text da query, mas adicionamos logo depois o + que irá fazer com que algo seja juntado/concatenado ao conteúdo. Então adicionamos depois do sinal de + a variável que possui o valor da caixa de texto. Para encerrar o script SQL usamos então outro + e depois abrimos as aspas simples de novo e continuamos como se estivéssemos no mesmo texto de antes, assim encerrando o parâmetro % e depois a instrução SQL. Dessa forma quando o computador executar ele verá como se tudo fosse um texto só substituindo o conteúdo da caixa entre os sinais de + que nós inserimos. Veja um exemplo de como o computador iria ler esta linha de código se fosse digitado o nome Jo dentro da caixa de texto: Na programação ‘SELECT * FROM alunos WHERE nome LIKE "%’ +sql+'% ");’ 7 Quando Executado SELECT * FROM alunos WHERE nome LIKE "%Jo%"); Observe que quando executado é como se o programa retirasse as aspas simples e substituísse o conteúdo da caixa de texto no meio das aspas duplas com os parâmetros %. Continuando a explicação das outras linhas, logo em seguida do script SQL temos a função Open sendo usada na query, que irá executar a pesquisa. Dessa forma depois de digitado esta programação você pode executar seu projeto e ver que já temos um programa de pesquisa no banco de dados. Nas próximas edições vamos ver outras ações que podemos fazer com os dados, como exclusão e edição. Arquivos Anexos Os arquivos exemplos deste projeto podem ser obtidos pelo link a seguir: http://www.idesa.com.br/vitor/vitor_2010_2semestre/arquivos/edicoes/projetos/ped5.rar O arquivo está compactado no formato RAR, é preciso um descompactador deste tipo de arquivo para extrair os arquivos. Em caso de não conseguir baixar o arquivo RAR no endereço acima, me contate pelo email: [email protected] . 8 Veja nas próximas edições Trabalhando com Edição e Exclusão de Dados no Lazarus – Me altere ou me exclua. 9