Flávio Silveira Programação & Desenvolvimento

  • BLOG
  • SOBRE
  • PORTFOLIO
  • CONTATO

Limitando o SELECT do SQL em diferentes Bancos de Dados

February 27th, 2009  |  Published in Banco de Dados, Programação SQL  |  1 Comment

Olá pessoal…

Atualmente tenho tido o privilégio de trabalhar com vários data bases, e com isso está dando para ver as diferenças de sintaxe, performance, ferramentas e demais coisas de um para outro.

Tenho mexido com Microsoft SQL, Postgres e Oracle.

Uma coisa que me chamou a atenção foi a maneira de limitar a consulta em cada um deles. Tenho feito bastante consultas limitadas pois ainda estou conhecendo a base de dados da empresa e não sei ao certo quantos registros tem certas tabelas. Para evitar que a coisa caia ou trave, faço consultas limitadas.

Repare as diferenças de um banco para outro abaixo:

SELECT * FROM tabela LIMIT 20


Essa é a sintaxe para o postgres, que acho que deve ser a mais conhecida por ser software livre e etc.
Basta adicionar o parâmetro LIMIT e passar o valor de máximo de registros que você quer.

SELECT TOP 20 * FROM tabela

Essa é a maneira como o Microsoft limita sua consulta.
Você adiciona o parâmetro TOP passando o valor do máximo de registros que você quer. Isso deve vir logo após o SELECT.

SELECT * FROM tabela WHERE ROWNUM < 20

E por último o Oracle.
Você deve usar o parâmetro ROWNUM junto a um operador (<, >, <=, >=, =) e em seguida o valor máximo de registros que você quer para sua consulta.
Traduzindo este exemplo acima ficaria mais ou menos assim:
Selecione tudo da tabela chamada ‘tabela’ onde o número de tuplas seja menor que 20

Por hoje é isso ai rapaziada. Valeu !

Compartilhe
  • Print
  • del.icio.us
  • Facebook
  • Google Bookmarks
  • LinkedIn
  • Live
  • MySpace
  • PDF
  • RSS
  • Twitter
  • email

Posts Relacionados

  • Tratando CPF, CNPJ, Primeiro nome e Data pelo SQL (Postgre)
  • Função para contar Palavras (Padrão de caracteres) em uma String Microsoft SQL Server
  • Formatando CPF no SQL com Expressões Regulares – RegexReplace

Comentários

Feed
Trackback
  1. Mozart Petter disse:

    March 6th, 2009 at 19:01 (#)

    Bacana cara, uma coisa que me ferrou bastante quando comecei a mexer em multíplos DBs, foi não só a forma que tu define o LIMIT, mas também a maneira que tu define o INIT, se tu quiser consultar a partir de um determinado registro.

    No MySQL usa-se o LIMIT inicio, limite, já no PGSQL fica OFFSET inicio LIMIT limite.

    O DB2 então nem se fala, é uma confusão sem fim. Pra tu ter uma idéia, se tu quiser consultar a partir da primeira linha:
    FETCH FIRST limite ROWS ONLY.

    Enfim, cada banco tem suas particularidades. Uma pena, poderiam todos seguir uma padrão, facilitaria um bocado.

Deixe um comentário

Flávio Silveira

Programação & Desenvolvimentominha foto

Rss Logo Twitter Logo

Blogroll

  • Aurélio Marinho Jargas
  • Fábio Tomio
  • Mozart Petter
  • Renie Siqueira
  • Willian Rodriguez

Tags & Categorias

add-ons Adobe Air Adobe Flash Builder Adobe Flex Apache apple arrays Banco de Dados CodeIgniter complementos Configuração PHP debug Desenvolvimento Mobile erro 500 erros de servidor Expressões Regulares facilidade formatação via sql Forms framework php geração de cadastros Geração de formulários Internet Explorer não salva session iphone ipod touch Jquery Mobile Layouts mozart petter mozilla firefox multiple site múltiplos sites com codeIgniter Php PHP Sc Conf PodCast postgres Programação em geral reestruturando CodeIgniter Regex Replace Shell Site Mobile smarty SQL Sql Server Template engine Tempo de sessão codeIgniter Adobe (1)
Adobe Air (1)
Adobe Flash Builder (1)
Apache (1)
Banco de Dados (4)
Browsers (2)
CodeIgniter (7)
Expressões Regulares (1)
IPhone – Desenvolvimento (2)
JavaScript (1)
Mobile (1)
Php (10)
Podcast (1)
Programação em geral (12)
Programação SQL (4)
Screencast (1)
Servidor (1)
Shell Script (1)

WP Cumulus Flash tag cloud by Roy Tanck and Luke Morton requires Flash Player 9 or better.



©2010 Flávio Silveira
Powered by WordPress adapted of Gridline Lite of author Graph Paper Press.