
{"id":3602,"date":"2010-03-01T11:25:35","date_gmt":"2010-03-01T14:25:35","guid":{"rendered":"https:\/\/eliezerladeira.com.br\/blog\/?p=3602"},"modified":"2026-02-09T11:57:59","modified_gmt":"2026-02-09T14:57:59","slug":"o-poder-da-sql","status":"publish","type":"post","link":"https:\/\/eliezerladeira.com.br\/blog\/o-poder-da-sql\/","title":{"rendered":"O poder da\u00a0SQL"},"content":{"rendered":"<div class=\"entry\">\n<p>A linguaguem SQL (Structured Query Language) \u00e9 uma linguagem de alto n\u00edvel para manipula\u00e7\u00e3o de dados dentro do modelo relacional. Seu objetivo \u00e9 fornecer uma interface de alto n\u00edvel ao usu\u00e1rio. \u00c9 uma linguagem n\u00e3o procedural e n\u00e3o cabe ao usu\u00e1rio definir como o gerenciador de banco de dados executar\u00e1 uma tarefa, mas somente o que ele deve fazer.<\/p>\n<p>Uma instru\u00e7\u00e3o SQL consiste de tr\u00eas partes:<\/p>\n<ul>\n<li>As declara\u00e7\u00f5es de par\u00e2metros<\/li>\n<li>A instru\u00e7\u00e3o manipulativa<\/li>\n<li>As declara\u00e7\u00f5es de op\u00e7\u00f5es<\/li>\n<\/ul>\n<p>Para termos uma id\u00e9ia do seu poder, imagine que temos que atualizar o campo valor em 10% de uma tabela com diversos registros. Na abordagem procedural, ter\u00edamos os seguintes passos:<\/p>\n<ol>\n<li>Abrir a tabela<\/li>\n<li>Posicionar o ponteiro no in\u00edcio da tabela<\/li>\n<li>Atualizar o campo valor em 10%<\/li>\n<li>Mover o ponteiro para o pr\u00f3ximo registro<\/li>\n<li>Continuar a atualiza\u00e7\u00e3o do campo valor at\u00e9 o final da tabela<\/li>\n<\/ol>\n<p>O c\u00f3digo poderia ter o seguinte aspecto:<\/p>\n<blockquote><p><strong>Dim db as database<br \/>\nDim tabela as recordset<br \/>\nset db=workspaces(0).Opendatabase(\u201cc:\\base.mdb\u201d)<br \/>\nset tabela=db.Openrecordset(\u201ctabela\u201d)<br \/>\nWhilel not tabela.eof<\/strong><\/p>\n<blockquote><p>tabela.edit<br \/>\ntabela.valor=tabela.valor*1.10<br \/>\ntabela .update<br \/>\ntabela.movenext<\/p><\/blockquote>\n<p><strong>Wend<br \/>\ntabela.close<\/strong><\/p><\/blockquote>\n<p>Agora utilizando uma instru\u00e7\u00e3o SQL, ter\u00edamos o seguinte trecho de c\u00f3digo:<\/p>\n<blockquote>\n<blockquote><p><strong>Dim db as Database<\/strong><br \/>\n<strong>Set db=Workspaces(0).Opendatabase(\u201cc:\\base.mdb\u201d)<\/strong><br \/>\n<strong>db.execute \u201cUPDATE tabela SET valor=valor*1.10\u201d<\/strong><br \/>\n<strong>db.close<\/strong><\/p><\/blockquote>\n<\/blockquote>\n<p>Observe a utiliza\u00e7\u00e3o da instru\u00e7\u00e3o SQL&nbsp;<strong>UPDATE<\/strong>, bem mais simples, n\u00e3o \u00e9?<br \/>\nEnt\u00e3o, se voc\u00ea n\u00e3o est\u00e1 utilizando a SQL, est\u00e1 trabalhando muito e seu c\u00f3digo sofrendo as consequ\u00eancias.<\/p>\n<p>Veja na tabela abaixo um resumo das cl\u00e1usulas manipulativas e suas finalidades:<\/p>\n<table border=\"1\" bgcolor=\"white\">\n<tbody>\n<tr>\n<td><strong>Instru\u00e7\u00e3o<\/strong><\/td>\n<td><strong>Fun\u00e7\u00e3o<\/strong><\/td>\n<\/tr>\n<tr>\n<td>SELECT<\/td>\n<td>Obt\u00e9m um grupo de registros e insere os registros em um&nbsp;<em>dynaset<\/em>&nbsp;ou em uma tabela<\/td>\n<\/tr>\n<tr>\n<td>UPDATE<\/td>\n<td>Define os valores dos campos de uma tabela em uma atualiza\u00e7\u00e3o<\/td>\n<\/tr>\n<tr>\n<td>TRANSFORM<\/td>\n<td>Cria uma tabela de resumo, utilizando o conte\u00fado de um campo como cabe\u00e7alho de cada coluna<\/td>\n<\/tr>\n<tr>\n<td>DELETE FROM<\/td>\n<td>Remove registros de uma tabela<\/td>\n<\/tr>\n<tr>\n<td>INSERT INTO<\/td>\n<td>Acrescenta um grupo de registros a uma tabela.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Veja alguns exemplos da instru\u00e7\u00e3o SELECT:<\/p>\n<p>1) Seleciona os campos \u201cPrimeiro nome\u201d e \u201cSobrenome\u201d de todos os registros da tabela Empregados.<\/p>\n<p><strong>SELECT [Primeiro nome], [Sobrenome] FROM Empregados<\/strong><\/p>\n<p>2) Seleciona todos os campos da tabela Empregados. Note o uso par\u00e2metro (*) indicando todos os campos da tabela indicada.<\/p>\n<p><strong>SELECT Empregados.* FROM Empregados<\/strong><\/p>\n<p>3) Conta o n\u00famero de registros que t\u00eam uma entrada no campo \u201cC\u00f3digo postal\u201d e coloca o t\u00edtulo Contagem no topo da coluna.<\/p>\n<p><strong>SELECT Count([C\u00f3digo postal]) AS Contagem FROM Clientes<\/strong><\/p>\n<p>4) Seleciona os campos \u201cPrimeiro nome\u201d e \u201cSobrenome\u201d de cada registro cujo sobrenome seja Pereira.<\/p>\n<p><strong>SELECT [Primeiro nome], [Sobrenome] FROM Empregados WHERE [Sobrenome] = \u2018Pereira\u2019<\/strong><\/p>\n<p>5) Seleciona os campos \u201cPrimeiro nome\u201d e \u201cSobrenome\u201d para Empregados cujos sobrenomes come\u00e7am pela letra S.<\/p>\n<p><strong>SELECT [Primeiro nome], [Sobrenome] FROM Empregados WHERE [Sobrenome] Like \u2018S*\u2019<\/strong><\/p>\n<p>&nbsp;<\/p>\n<p><strong>FROM \u2013&nbsp;<\/strong>indica as tabelas utilizadas como fonte de dados<\/p>\n<p><strong>WHERE \u2013&nbsp;<\/strong>especifica as condi\u00e7\u00f5es que os registros devem satisfazer para compor o subconjunto de dados.<\/p>\n<p>&nbsp;<\/p>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>A linguaguem SQL (Structured Query Language) \u00e9 uma linguagem de alto n\u00edvel para manipula\u00e7\u00e3o de dados dentro do modelo relacional. Seu objetivo \u00e9 fornecer uma interface de alto n\u00edvel ao usu\u00e1rio. \u00c9 uma linguagem n\u00e3o procedural e n\u00e3o cabe ao usu\u00e1rio definir como o gerenciador de banco de dados executar\u00e1 uma tarefa, mas somente o que ele deve fazer.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"colormag_page_layout":"default_layout","_exactmetrics_skip_tracking":false,"_exactmetrics_sitenote_active":false,"_exactmetrics_sitenote_note":"","_exactmetrics_sitenote_category":0,"ngg_post_thumbnail":0,"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"O poder da\u00a0SQL","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[3508,1079],"tags":[83,249,1544],"class_list":["post-3602","post","type-post","status-publish","format-standard","hentry","category-programacao","category-tecnologia","tag-banco-de-dados","tag-informatica","tag-sql"],"aioseo_notices":[],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_likes_enabled":true,"jetpack-related-posts":[{"id":3604,"url":"https:\/\/eliezerladeira.com.br\/blog\/banco-de-dados-introducao\/","url_meta":{"origin":3602,"position":0},"title":"Banco de Dados:\u00a0Introdu\u00e7\u00e3o","author":"admin","date":"","format":false,"excerpt":"Podemos entender por\u00a0banco de dados\u00a0qualquer sistema que re\u00fana e mantenha organizada uma s\u00e9rie de informa\u00e7\u00f5es relacionadas a um determinado assunto em uma determinada ordem.","rel":"","context":"Em &quot;Programa\u00e7\u00e3o&quot;","block_context":{"text":"Programa\u00e7\u00e3o","link":"https:\/\/eliezerladeira.com.br\/blog\/category\/tecnologia\/programacao\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":317,"url":"https:\/\/eliezerladeira.com.br\/blog\/manipulacao-de-dados-via-php-firebird\/","url_meta":{"origin":3602,"position":1},"title":"Manipula\u00e7\u00e3o de dados via PHP + Firebird","author":"admin","date":"","format":false,"excerpt":"[ratings] O PHP\u00a0\u00e9 uma linguagem com suporte nativo a diversos bancos de dados. Como estamos trabalhando com InterBase\/Firebird, segue um exemplo pr\u00e1tico de como a coisa funciona. Este exemplo foi testado com um servidor Windows 2000 e Firebird 1.0. A princ\u00edpio\u00a0voc\u00ea ter\u00e1 que ter instalado em seu computador o servidor\u2026","rel":"","context":"Em &quot;Inform\u00e1tica&quot;","block_context":{"text":"Inform\u00e1tica","link":"https:\/\/eliezerladeira.com.br\/blog\/category\/informatica\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":445,"url":"https:\/\/eliezerladeira.com.br\/blog\/construa-consultas-com-duas-tabelas-usando-o-access\/","url_meta":{"origin":3602,"position":2},"title":"Construa consultas com duas tabelas usando o Access","author":"admin","date":"","format":false,"excerpt":"[ratings] Admita a seguinte situa\u00e7\u00e3o: Voc\u00ea tem um banco de dados Access no qual existem duas tabelas, uma com a lista de todos os seus arquivos de m\u00fasica MP3 e a outra com uma lista de letras das can\u00e7\u00f5es. Seu problema \u00e9 o seguinte: como gerar uma consulta que d\u00ea\u2026","rel":"","context":"Em &quot;Inform\u00e1tica&quot;","block_context":{"text":"Inform\u00e1tica","link":"https:\/\/eliezerladeira.com.br\/blog\/category\/informatica\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":2875,"url":"https:\/\/eliezerladeira.com.br\/blog\/construa-consultas-com-duas-tabelas-usando-o-access-2\/","url_meta":{"origin":3602,"position":3},"title":"Construa consultas com duas tabelas usando o Access","author":"admin","date":"","format":false,"excerpt":"Admita a seguinte situa\u00e7\u00e3o: Voc\u00ea tem um banco de dados Access no qual existem duas tabelas, uma com a lista de todos os seus arquivos de m\u00fasica MP3 e a outra com uma lista de letras das can\u00e7\u00f5es. Seu problema \u00e9 o seguinte: como gerar uma consulta que d\u00ea como\u2026","rel":"","context":"Em &quot;Software&quot;","block_context":{"text":"Software","link":"https:\/\/eliezerladeira.com.br\/blog\/category\/tecnologia\/software\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":3594,"url":"https:\/\/eliezerladeira.com.br\/blog\/ado-localizando-informacoes\/","url_meta":{"origin":3602,"position":4},"title":"ADO \u2013 Localizando\u00a0informa\u00e7\u00f5es","author":"admin","date":"","format":false,"excerpt":"Quando falamos a n\u00edvel de dados (campos e registros), estamos tratando com o objeto\u00a0Recordset. Vamos mostrar como encontrar dados espec\u00edficos em um\u00a0Recordset ADO. Lembrando que um objeto\u00a0Recordset\u00a0possui muitas fun\u00e7\u00f5es \u00fateis. Entre elas podemos citar as mais usadas:\u00a0Bookmark, Find, Seek, Filter. Usando Bookmarks (marcadores) Um bookmark de um recordset \u00e9 como\u2026","rel":"","context":"Em &quot;Programa\u00e7\u00e3o&quot;","block_context":{"text":"Programa\u00e7\u00e3o","link":"https:\/\/eliezerladeira.com.br\/blog\/category\/tecnologia\/programacao\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/netsysoft.wordpress.com\/wp-content\/uploads\/2010\/02\/ado_sek3.gif?resize=350%2C200&ssl=1","width":350,"height":200},"classes":[]},{"id":2877,"url":"https:\/\/eliezerladeira.com.br\/blog\/use-o-wordpress-para-implantar-um-blog-em-seu-site-na-web-2\/","url_meta":{"origin":3602,"position":5},"title":"Use o WordPress para implantar um blog em seu site na web","author":"admin","date":"","format":false,"excerpt":"Que tal acrescentar um blog ao seu site ou ao da sua empresa? O blog pode ser um canal eficiente e din\u00e2mico para divulgar not\u00edcias e interagir com as pessoas \u2014 amigos, parceiros ou clientes. Uma equipe de desenvolvimento de software, por exemplo, pode publicar nele dados sobre atualiza\u00e7\u00f5es, vers\u00f5es\u2026","rel":"","context":"Em &quot;Internet&quot;","block_context":{"text":"Internet","link":"https:\/\/eliezerladeira.com.br\/blog\/category\/tecnologia\/internet\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]}],"_links":{"self":[{"href":"https:\/\/eliezerladeira.com.br\/blog\/wp-json\/wp\/v2\/posts\/3602","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/eliezerladeira.com.br\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/eliezerladeira.com.br\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/eliezerladeira.com.br\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/eliezerladeira.com.br\/blog\/wp-json\/wp\/v2\/comments?post=3602"}],"version-history":[{"count":1,"href":"https:\/\/eliezerladeira.com.br\/blog\/wp-json\/wp\/v2\/posts\/3602\/revisions"}],"predecessor-version":[{"id":3603,"href":"https:\/\/eliezerladeira.com.br\/blog\/wp-json\/wp\/v2\/posts\/3602\/revisions\/3603"}],"wp:attachment":[{"href":"https:\/\/eliezerladeira.com.br\/blog\/wp-json\/wp\/v2\/media?parent=3602"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/eliezerladeira.com.br\/blog\/wp-json\/wp\/v2\/categories?post=3602"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/eliezerladeira.com.br\/blog\/wp-json\/wp\/v2\/tags?post=3602"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}