Vamos dar uns toques em queries SQL?
No âmbito de um projecto que estou a acompanhar, para desenvolvimento de um serviço Web desenvolvido em PHP e base de dados MySQL , lembrei-me que nunca tínhamos criado artigos com dicas sobre a linguagem SQL (Structured Query Language) no pplware. Nesse sentido, decidi arregaçar as mangas e, quem sabe, este não será o primeiro artigo de uma rubrica sobre SQL.
Para quem não sabe, o SQL é uma das linguagens mais usadas no âmbito de aplicações que assentam em bases de dados. De uma forma muito simples, dentro de uma base de dados temos tabelas e dentro das tabelas temos registos. Imaginem por exemplo que têm uma base de dados com uma tabela que possui registos sobre pessoas. Essa tabela tem os campos (id_pessoa, nome, telefone, cor do cabelo, idade, morada). Através da linguagem SQL podemos efectuar queries (consultas) e saber por exemplo quantos registos temos na tabela, quantas pessoas têm o cabelo preto, quantas pessoas têm idade superior a 25 e inferior a 30, etc.
A linguagem SQL foi desenvolvida pela IBM em meados dos anos 70 e depois foi regulada por normas ANSI e ISO.De uma forma geral, através do SQL podemos eliminar, inserir e modificar registos numa base de dados relacional.
Está percebido para que serve a linguagem SQL? Espero que sim! Vamos agora começar por ensinar como usar o comando SELECT.
O comando SELECT permite seleccionar informação de uma ou várias tabelas.
Sintaxe de utilização
SELECT nome_campo FROM nome_tabela; |
Para o presente exemplo, decidi criar uma base de dados com o nome db_pplware e com uma tabela com o nome tbl_pplware com os seguintes campos e dados:
Alguns exemplos
EXEMPLO 1
Objectivo: Seleccionar todos os dados
Query:
SELECT * FROM tbl_pplware; |
Resultado: o resultado é o mesmo da tabela apresentada anteriormente.
EXEMPLO 2
Objectivo: Seleccionar apenas os nomes
Query:
SELECT nome FROM tbl_pplware; |
Resultado
EXEMPLO 3
Objectivo: Seleccionar nome e morada
Query
SELECT nome, morada FROM tbl_pplware; |
Resultado
Deu para perceber? Se calhar, então o melhor mesmo para agora experimentar numa base de dados a sério. Para tal, o site w3schools.com disponibiliza um pequeno serviço onde podemos por em prática alguns comandos sobre SQL. Para testarem ó comando SELECT basta aceder ao serviço aqui e têm disponível a seguinte tabela para testarem as vossas queires.
Para finalizar, apenas gostava de saber qual a vossa opinião sobre esta rubrica. Parece-vos útil e importante? O objecto é começar do “zero” e ir apresentando alguns dos muitos comandos que a linguagem SQL disponibiliza. Aguardo o vosso feedback.
Artigos relacionados
Homepage: Try SQL
Este artigo tem mais de um ano
Tem programas que fazem essas passos todos, poupa muito mais tempo, quando a base de dados é grande, como a que uso num programa que fiz.
E mostra, como podemos integrar SQL e PHP, que é uma coisa incrível.
Há aplicações que fazem isto sim, e depois o utilizador quando tem um problema não sabe como resolver :).
Quando desenvolvemos algo, é importante saber o que estamos a fazer.
Concordo absolutamente.
Verdade mas como disse, para bases de dados grandes, assim perde-se muito tempo.
perde-se mais tempo com essas aplicações…. uma query, desde que se conheça bem a base de dados, faz-se em segundos…….. se se demora mais do que alguns segundos a construir a query, das duas uma, ou não conhecemos a BD e é melhor estar-mos quietos, ou é uma query demasiado complexa e pesada, logo, deverá ser substituída por um programa….
as vezes mais vale estar calado … Eu trabalho com sql server e passo um dia a construir uma query se for preciso
Não há programa que substitua uma query!!!
Essa foi engraçada…
…um programa “chama” uma query e apresenta os dados dessa query… chama-lhe view… Query… chama-lhe o que quiseres… Um programa invoca uma View/query…
…isso é uma afirmação de quem nao percebe muito da coisa 😀
Se perder tempo equivale a ganhar flexibilidade então é certamente uma mais valia saber usar correctamente o SQL.
Não sei qual a sua definição de “base de dados grandes”, mas uma base de dados media pode andar à volta de varias centenas de tabelas e algumas delas com vários milhões de registos. Trabalhei numa empresa em que os programadores nunca tinham de mexer na base de dados ou fazer queries. Havia dois fulanos com experiência em base de dados oracle que eram responsáveis por criar tabelas e fornecerem as queries necessárias durante o desenvolvimento de um produto. Não faço ideias o que as queries faziam ao certo, mas algumas que nos eram enviadas tinham váreias dezenhas de linhas. Julgo que eram em PL/SQL. Neste caso acho que não deve haver editor que produza este tipo de código estruturado. Para para coisas simples esses editores safam.
concordo plenamento, existem querys muito complexas de criar nessa dimensão de mases de dados, e temos sempre que ter em atenção o output gerado, caso contrario o sistema “atasca” e ficamos perndurados nos e todos os utilizadores ligados no servidor.
cmps
Em grandes “base de dados” (como to dizes), em grande aplicações. As querys são desenvolvidas por o programador e ou a pessoal responsável pela parte de base de dados.
Existem querys muito complexas, que por melhor que seja o programa que falas não pode fazer, e querys que precisam de bastante rendimento, que esses programas por vezes não conseguem fazer a query da melhor maneira.
Uma query para sacar o mesmo tipo de dados, mal feita pode demorar infinito, 40seg, 1 seg.
Por isso é sempre bom que seja feito por uma pessoa que percebe do assunto.
Não depende tanto do tamanho da BD, mas do fim a que se destina a query. Uma BD pode ser enorme mas, se estiver num servidor “XPTO” pode ser fornecido ao utilizador o resultado dum query em muitíssimo pouco tempo.
A questão prende-se mais com a organização dos dados e a sua finalidade: para consultar muita informação de forma mais ordenada, por exemplo (sem ser numa lista de valores corridos), pode criar-se um programa que exibe informação no ecrã, como facturas ou fichas de clientes e, dessa forma, através dum melhor aspecto gráfico facilitar a leitura e entendimento dos dados.
Ou, se o objectivo for tirar listagens muito longas para papel, um programa a correr durante a noite pode tratar disso. E o resultado dessa query também podia ser rápido a aparecer no ecrã se estivesse um utilizador a correr o SQL.
Da mesma forma que um empregado a trabalhar numa loja de roupa podia saber SQL e introduzir dados “à unha” com INSERT’s na base de dados cada vez que faz uma venda, mas é mais simples ter um ecrã com um formulário para preencher. E, além do mais, assim restringe-se a “tralha” que qualquer pessoa podia carregar na BD 😉
Força nisso! Que venham muitos mais rubricas sobre esse tipo de informação. Nunca se sabe quando pode dar jeito para um trabalho na faculdade 🙂
Penso que seja mesmo muito importante esta rubrica, pois sem SQL, não havia quase nada, e se ainda dão aulas de graça, ainda melhor!
Boa introdução ao tema do SQL.
Boa Tarde
Fiquei interessado em saber uma pouco mais sobre SQL por isso a rubrica é uma excelente ideia.
Continuem o bom trabalha que têm feito. 🙂
Acho a ideia fantástica, agradeço imenso esta rubrica.
Melhores cumprimentos
Jorge
Boa ideia Pedro Pinto. De facto já cá faltava algo deste género.
eh eh eh..Tive excelentes professores nesta área 🙂
Gosto muito de ver o pplware a fazer estas rubricas. Acho que assim ficamos utilizadores mais cultos e pode ajudar a trazer novos utilizadores para a programação!
Cumps.
Boa ideia.. tambem tenho plenos conhecimentos de bases de dados, gostava de te ajudar a fazer uns artigos sobre SQL.. se estiveres interessado avisa 🙂
Excelente!!!! Entra em contacto comigo ppinto @ pplware .com.
Espetaculo! Acabei à cerca de duas semanas de dar esta linguagem… Vão aprofundar mais, em próximos posts? (restrições, order by’s, joins, sum, count, avg, max, min, os drops, os updates, os operadores relecionais, etc. etc.?)
Acerca deste artigo, não seria também útil explicar, antes das pesquisas, o create table?
Espero que para a frente existam mais posts destes 🙂
CREATE TABLE não é SQL, é DDL – Data Definition Language
O teu professor vai-te bater 😛
O DDL é uma das tres sub-linguagens do SQL. Está relacionado.
Tens razão, my bad….
Já agora, são 5 sub-linguagens, e não 3 🙂
Pois, aí já não sei… só dei 3 😀
A mim dava jeito é saber como criar um frontend de utilizadores para colocação de dados numa BD em SQL, isso sim 🙂
Claro que dicas em SQL tais como, evitar o sql injection, nunca são demais.
Tutorial a desenvolver 😉
O front end, é uma coisa simples, com um connnector a base de dados fazes tudo, isso por exemplo em java é muito simples.
cmps
Tive de lidar com PHP + MySQL no âmbito de uma cadeira também.
É muito mais porreiro fazer o código para tudo do que usar frameworks, aprende-se mais no entanto é mais lento.
Boa Tarde Pedro Pinto, acho muito interessante o artigo em SQL, acho que deves continuar a partilhar os teus conhecimentos de SQL. Estou a iniciar me na area, da sempre jeito o conhecimentos das outras pessoas. O meu obrigado
Óptima ideia! Eu irei acompanhar estes tutoriais de certeza!
Apesar de ainda ser muito simples, já dá para ajudar algumas pessoas. Se este tipo de post’s continuarem será produtivo para a evolução de quem percebe pouco e quer perceber mais.
Apesar de já ter bastante experiência em SQL, acho que deviam haver mais tutoriais como este!
UI já estou a ver. Daqui a uns tempos explicas as junções de tabelas e só acabas nas subqueries 😛
Acho bastante interessante este tipo de artigos. Pessoas como tu, com vontade e sem medo de partilhar conhecimentos é que fazem falta a este mundo. Parabéns Pedro.
Gostei muito de ler o teu comentario. Obrigado
Xii..o meu professor não ia gostar dessa tua tabela de exemplo. “Nunca se põe um campo com idade, é sempre a data de nascimento. Os anos calculam-se depois na aplicação.”
Até tirava pontos no exame com isso lol
Mas ya, boa ideia, SQL é excelente.
E realmente há programas em que é só fazer o desenho das nossas tabelas e das relações entre elas que eles geram o código todo (uso o Visual Paradigm: http://www.visual-paradigm.com/), mas depois convém saber trabalhar com esta linguagem porque há sempre um erro ou outro que surge.
Só depois de se conhecer a linguagem é que se pode entrar por esses programas, seja em que linguagem for.
Abraço
Sempre um post importante.
Continua.
Boa 🙂
Eu concordo com a rubrica. Ando agora a aprender SQL no meu curso e vai-me dar um jeitão estar um passo à frente dos outros. Força pplware! 8D
Acho extremamente importante este tipo de POSTs. Continuem assim. 🙂
foi uma boa introdução ao sql, Mais á frente quando acabem de dar os minimos podiam era colocar como fazer ligação a uma base dados em java e ja agora agora tambem php(ja que tem aqui uma rubrica se bem que o java é que ta a dar, digo eu). 😉
boas..
tens que usar um conector, aconselho um di tipo 4…usas jdbc, tens montes disponiveis, avalia a licença deles.
cmps
Força com esta rubrica, este assunto é bastante interessante…
Continuem assim.
Venham as subqueries, left outter joins e 30 por uma linhas que isso é que me da jeito 😀
Boas Pedro,
Antes de aprofundares mais esta pequena introdução à linguagem, seria interessante as pessoas entenderem primeiro o modelo relacional que é a base de gestão de BD. Explicar a lógica por trás da teoria de conjuntos, para melhor compreensão dos Joins.
Se as pessoas não compreendem o conceito de entidade-relacionamento, dificilmente compreenderam as bases para uma programação sql correcta.. e daí muita gente não compreender a importância da correcta construção de modelos de dados e atribuição correcta de PK’s e FK’s.
Deixo aqui os meus dois centimos. 😉
Abraço
secalhar antes disso seria muito bom falar no modelo entidade -associação, e que a malta não gosta, mas que é o unico que define na integra um modelo relacional de bases de dados…
cmps
truncate tbl_pplware
Sendo esta a área em que trabalho, só posso incentivar esta iniciativa.
Muito bem!
Obrigada.
O SQL está cada vez mais presente nos dois lados da informática “empresarial”: do lado do desenvolvimento, em que é usado desde a geração/testes de dados até à forma “embebida” no próprio código de muitas aplicações, e do lado do utilizador que pretende fazer algumas consultas nas bases de dados e obter alguma informação sem “chatear” o pessoal da informática.
Nesta última óptica (do utilizador), este tutorial vai dar muito jeito. No sítio onde trabalho a maior base de dados é DB2 (em AS400), e os utilizadores têm acesso a consultas (restrito, claro) de dados reais. Podem usar queries para consultar alguns dados de forma autónoma. Para tudoo resto há programas, ecrãs, operações em fim de dia, etc…
Por isso, na parte do desenvolvimento muito havia a ser dito sobre o SQL e as suas funções, a sua aplicabilidade e todo o universo relacionado.