Atenção: esse artigo tem um vídeo complementar. Clique e assista!
Este artigo apresenta algumas alternativas para se trabalhar com arrays em SQL. Apresentamos também alguns exemplos de consulta acessando o array que simulamos em nossas tabelas.
Em que situação o tema útil
A discussão deste tema é importante para aqueles que trabalham com a linguagem SQL em seu dia a dia.
Resumo DevMan
Por um longo tempo, linguagens procedurais têm feito uso de arrays para manter e manipular dados, assim, programadores estão acostumados com este tipo de estrutura de dados. Em algumas situações, também pode haver a necessidade de fazer uso desta estrutura de dados em comandos SQL. Este é justamente o tema discutido neste artigo.
Este artigo foi baseado no texto “Arrays in SQL that Avoid Repeated Groups” de autoria de Joe Celko.
É possível simular arrays na linguagem SQL (ler Nota DevMan 1). Entretanto, são poucas as ocasiões em que seu uso é realmente a melhor opção na prática. Na maioria das vezes, a necessidade em simular o uso de arrays decorre de dados normalizados de forma incorreta.
Em 1986 o American National Standard Institute (ANSI) publicou a SQL como linguagem padrão para os bancos de dados relacionais, chamando-o de SQL-86. Assim, a partir de 1986, os sistemas gerenciadores de bancos de dados relacionais passaram a adotar a SQL como linguagem padrão. A SQL é subdividida em três sub-linguagens, que são:
• DDL (Data Definition Language): que apresenta uma série de comandos que permitem a definição dos dados. Dentre os principais comandos, podemos destacar o CREATE, que é destinado à criação do banco de dados e das tabelas que o compõe, além das relações existentes entre as tabelas. Outros exemplos de comandos DDL que podemos citar neste momento são: ALTER e DROP;
• DML (Data Manipulation Language): que apresenta uma série de comandos destinados à manipulação de dados, tais como: consultas, inserções, exclusões e alterações, para um ou mais registros de uma ou mais tabelas de maneira simultânea. Dentre alguns exemplos de comandos DML destacam-se: SELECT, INSERT, UPDATE e DELETE;
• DCL (Data Control Language): que apresenta uma série de comandos para controlar o acesso aos dados, usuários e grupos. Dentre alguns exemplos de comandos DCL, destaca-se o comando GRANT.
Após a primeira versão do padrão SQL-86, tivemos algumas variações que originaram a SQL-92 e atualmente várias características foram incorporadas à linguagem, tendo já sido publicado o SQL-3. Foram adicionados recursos relacionados à orientação a objetos, dentre várias outras características.
Além do padrão SQL, cada fabricante de SGBD pode acrescentar funcionalidades exclusivas ao SGBD. Isto ocorre freqüentemente, principalmente com alguns dos principais fabricantes, como Microsoft (SQL Server), Oracle (atualmente com o Oracle11g) e IBM (DB2).