Sie sind auf Seite 1von 15

Histria e Implementaes do SQL

No incio dos anos 70, o trabalho produtivo do colega de pesquisa da IBM Dr. E. F. Codd levou ao desenvolvimento de um produto modelo de dado relacional chamado SEQUEL ou Linguagem de Consulta em Ingls Estruturado (em ingls: Strutucred English Query Language).. SEQUEL ultimamente se transformou em SQL ou Linguagem de Consulta Estruturada (em ingls: Structured Query Language). IBM, junto com outros fornecedores de banco de dados relacionais, queria um mtodo padronizado para acessar e manipular dados em um banco de dados relacional. Embora IBM tenha sido a primeira a desenvolver a teoria de banco de dados relacional, a Oracle foi a primeira a comercializar a tecnologia. Atravs do tempo, SQL se provou popular o suficiente no mercado de trabalho para atrair a ateno do American National Standards Institute (ANSI), que lanou padres para SQL em 1986, 1989, 1992, 1999, 2003 e 2006. Este texto cobre o padro ANSI 2003, pois o padro 2006 lida com elementos do SQL fora do escopo dos comandos descritos neste livro. (Em essncia, o padro SQL2006 descreve como o XML deveria ser usado no SQL.) Desde 1986, vrias linguagens concorrentes permitiram programadores e desenvolvedores a acessarem e manipularem dados relacionais. No entanto, poucos foram fceis de aprender ou aceitos universalmente como SQL. Programadores e administradores agora tm o benefcio de serem capazes de aprender uma nica linguagem que, com pequenos ajustes, aplicvel a uma vasta variedade de plataformas de banco de dados, aplicaes e produtos. SQL - O Guia Eessencial, Terceira Edio, fornece a sintaxe para cinco implementaes comuns de SQL2003 (SQL3): O padro ANSI SQL MySQL verso 5.1 Oracle Database 11g PostgreSQL verso 8.3 SQL Server 2008 da Microsoft

O Modelo Relacional e ANSI SQL


Sistemas gerenciadores de banco de dados relacionais (SGBDRs) como aqueles apresentados neste livro so os motores principais de sistemas de informao mundial e particularmente de aplicaes na web e sistemas computacionais distribudos cliente/servidor. Eles capacitam uma multido de usurios para acessar, criar, editar e manipular dados rapidamente e simultaneamente sem impactar outros usurios. Tambm permitem desenvolvedores escreverem aplicaes teis para acessar seus recursos e fornecem aos administradores as habilidades que eles precisam para manter, assegurar e aperfeioar recursos de dados organizacionais. Um SGBDR definido como um sistema que usurios observam dados como uma coleo de tabelas relacionadas entre si atravs de valores de dados comuns. Dados so armazenados em tabelas, que so compostas por linhas e colunas. Tabelas de dados independentes podem ser unidas (ou relacionadas) umas as outras, se cada uma delas tiver colunas de dados nicas e identificadas (chamadas chaves) que representam valores de dados tidos em comum. E. F. Codd descreveu primeiro a teoria de banco de dados relacional em seu ponto de referncia Um Modelo Relacional de Dados para Grandes Bancos de Dados Compartilhados, publicado em Comunicaes da ACM (Association for Computing Machinery) em Junho, 1970. Sob o novo modelo de dados relacionais de Codd, dados foram estruturados (em tabelas de linhas e colunas); manipulveis usando operaes como selees, projees, e junes e consistentes como resultado de regras de integridade como chaves e integridade referencial. Codd tambm articulou regras que governaram como os bancos de dados relacionais deveriam ser criados. O processo para aplicar estas regras agora conhecido como normalizao.

Regras de Codd para Sistemas de Banco de Dados Relacional


Codd aplicou teorias matemticas rigorosas (primeiramente teoria de conjunto) na administrao de dados, e ele obedeceu a uma lista de critrios que um banco de dados deve encontrar para ser considerada relacional. Em sua parte mais importante, os ncleos (em ingls: core) de conceitos de base de dados relacionais sobre armazenar dados em tabelas. Este conceito agora to comum que parece trivial, no entanto, no muito tempo atrs o objetivo de criar um sistema capaz de sustentar o modelo relacional foi considerado um tiro distante com utilidade limitada. A seguir esto os Doze Princpios de Banco de Dados Relacionais de Codd: 1. Informao representada logicamente em tabelas. 2. Dados devem ser logicamente acessveis por tabelas, chaves primrias e colunas. 3. Valores NULLs devem ser tratados uniformemente como informao perdida, no como strings vazias, espaos ou zeros. 4. Metadados (dados sobre o banco de dados) devem ser armazenados no banco de dados assim como so os dados regulares. 5. Uma nica linguagem deve ser capaz de definir dados, exibies ou visualizaes (em ingls: view), restries de integridade, autorizao, transaes e manipulao de dados. 6. Exibies ou visualizaes (em ingls: view) devem mostrar as atualizaes de suas tabelas de base e vice versa. 7. Uma nica operao deve ser disponvel para fazer cada uma das operaes seguintes: recuperar, inserir, atualizar ou remover dados. 8. Lotes (em ingls: Batch) e operaes do usurio final so logicamente separados do armazenamento fsico e mtodos de acesso. 9. Lotes (em ingls: Batch) e operaes do usurio final podem mudar o esquema do banco de dados sem ter que recri-lo ou as aplicaes construdas por meio dele.
2 Captulo 1: Histria e Implementaes do SQL

10. Restries de integridade devem ser disponveis e armazenados em metadados, no em um programa de aplicao. 11. A linguagem de manipulao de dados do sistema relacional no deveria se importar onde ou como dados fsicos so distribudos e no deveria requerer alterao se dados fsicos so centralizados ou distribudos. 12. Qualquer processamento de linha feito no sistema deve obedecer s mesmas regras de integridade e restries que os grupos de operaes de processamento obedecem. Estes princpios continuam sendo decises usadas para validar as caractersticas relacionais de uma plataforma de banco de dados; um banco de dados que no encontra todas estas regras no totalmente relacional. Enquanto estas regras no se aplicam ao desenvolvimento de aplicaes, elas determinam se o prprio motor (em ingls: engine) do banco de dados pode ser considerado realmente relacional. Recentemente, a maiorias dos produtos comerciais SGBDR passam no teste de Codd. Entre as plataformas discutidas em SQL O Guia Essencial, Terceira Edio, somente MySQL fracassou em suportar todos estes requisitos, e somente ento em lanamentos prvios ao cobertos neste livro. Entender os princpios de Codd ajuda programadores e desenvolvedores no desenvolvimento adequado e no projeto de bancos de dados relacionais (RDBs). As sees seguintes detalham como alguns destes requisitos so encontrados em SQL usando RDBs.

Histria do SQL

Estruturas de dados (Regras 1,2, e 8)


As regras 1 e 2 de Codd relatam que informao representada logicamente em tabelas e que dados devem ser logicamente acessveis por tabela, chaves primrias e colunas. Assim, o processo de definir uma tabela para um banco de dados relacional no exige que os programas instruam o banco de dados em como interagir com estruturas de dados fsicos. Alm disso, SQL logicamente isola os processos de acessar dados e manter fisicamente aquele dado, como requerido pela regra 8: lote (em ingls: batch) e operaes do usurio final so logicamente separados de armazenamento fsico e mtodos de acesso. No modelo relacional, dados so mostrados logicamente como uma tabela em duas dimenses que descreve uma nica entidade (por exemplo, gastos de negcios). Acadmicos se referem s tabelas como entidades e s colunas como atributos. Tabelas so compostas por linhas, ou registros (acadmicos os chamam de tuplas) e colunas (chamadas de atributos, pois cada coluna de uma tabela descreve um atributo especfico da entidade). A interseco de um registro e de uma coluna fornece um nico valor. A coluna ou colunas de quais valores identificam unicamente cada registro podem agir como uma chave primria. Ultimamente esta representao parece elementar, mas era na verdade um tanto inovadora quando foi proposta primeiramente. SQL3 define toda uma hierarquia de estrutura de dados alm de tabelas simples, embora tabelas sejam as estruturas de dados mais importantes. O padro relacional lida com dados em uma base de tabela por tabela, no em uma base de registro por registro. Esta orientao de tabela central o corao do conjunto de programao. Consequentemente, quase todos os comandos SQL operam com muito mais eficincia contra conjuntos de dados dentro ou atravs de tabelas do que contra registros individuais. Dito de outro jeito, uma programao de SQL efetiva requer que voc pense em termos de conjuntos de dados, do que em linhas individuais.

O Modelo Relacional e ANSI SQL

Figura 1-1 uma descrio da terminologia SQL3 usada para descrever a estrutura de dados hierrquica usada por um banco de dados relacional: clusters contm conjuntos de catlogos; catlogos contm conjuntos de esquemas; esquemas contm conjuntos de objetos, como tabelas e exibies ou visualizaes (em ingls: view); e tabelas so compostas por conjuntos de colunas e registros.
CLUSTER
Contm um ou muitos Um cluster um conjunto de catlogos unicamente denominados disponveis para uma seo SQL. Isto rudemente comparvel a instalao de um produto SGBDR. De acordo com o padro ANSI, cluster tambm controlam quem tem acesso a dados e que tipo de permisses os usurios podem ter. No entanto, a maioria das implementaes, como Oracle e Microsoft SQL Server, localizam permisses na camada do catlogo. Catlogo um conjunto de esquemas unicamente denominado. Se um usurio do Oracle ou do Microsoft SQL Server, voc pode estar mais a vontade com o termo instncia.

CATLOGOS
Contm um ou muitos

ESQUEMAS
Contm um ou muitos OBJETOS

Esquema um conjunto de objetos unicamente denominados e dados pertencentes a um determinado usurio. Todo catlogo deve conter um SCHEMA_INFORMATION, que contm metadados sobre todos os outros objetos armazenados no catlogo. Um esquema o equivalente bruto a um banco de dados.

Um objeto um conjunto de dados unicamente denominados ou funcionalidade do SQL. Objetos de esquema incluem tabelas, exibies, mdulos e rotinas, por exemplo, procedimentos armazenados (em ingls: stored Se o objeto uma tabela ou procedure) e funes uma exibio, pode conter uma ou muitas

COLUNAS
Contm um ou muitos

Uma coluna um conjunto de valores unicamente denominados que definem um atributo especfico de uma entidade de tabela.

DOMNIOS e TIPOS DEFINIDOS PELOS USURIOS REGRAS e ASSERES

Estes identificam o grupo de valores vlidos e permitidos para uma determinada coluna.

Estas identificam regras extras que definem valores vlidos e permitidos para uma coluna dada. Por exemplo, um gatilho (em Ingls trigger) uma regra SQL.

Figura 1-1. Hierarquia do conjunto de dados do SQL3

Por exemplo, em uma tabela Business_Expense, uma coluna chamada Expense_Date pode mostrar quando uma despesa foi includa. Cada registro na tabela descreve uma entidade especfica, neste caso, tudo que cria uma despesa de negcio (quando aconteceu; quanto custou; quem fez a despesa; para que foi e assim por diante).

Captulo 1: Histria e Implementaes do SQL

Cada atributo de uma despesa em outras palavras, cada coluna deve ser atmico, isto , cada coluna deve conter um, e somente um, valor. Se uma tabela construda de modo que a interseco de uma linha e uma coluna pode conter mais de um valor distinto, um dos padres primitivos de design do SQL foi violado. (Algumas plataformas de banco de dados discutidas neste livro permitem voc a colocar mais de um valor em uma coluna, atravs dos tipos de dados VARRAY ou TABLE). Regras de comportamento so especificadas para valores de colunas. Para a maioria,valores de coluna devem compartilhar um domnio comum, mais conhecido como um tipo de dado. Por exemplo, se o campo Expense_date definido como tendo um tipo de dado de DATE, o valor ELMER no deve ser substitudo por aquele campo porque um texto, no uma data e o campo Expense_date s pode conter datas. Alm disso, o SQL3 permite mais controle de valores de colunas atravs da aplicao de restries (em ingls: constraints) (discutido em detalhe no captulo 2) e e asseres (em ingls: assertions). Uma restrio do SQL3 deve, por exemplo, limitar Expense_date em despesas com menos de um ano. Tambm, acessos de dados para todos os indivduos e processos computacionais so controlados no nvel de esquema por um Identificador de Autorizao (em ingls: AuthorizationID) ou usurio. Permisses para acessar ou modificar conjuntos especficos de dados podem ser concedidos ou restritos em uma base por usurio. Bancos de dados SQL tambm empregam conjuntos de caracteres e comparaes. Conjuntos de caracteres so os smbolos ou alfabetos usados pela linguagemdo dado. Por exemplo, o conjunto de caracteres em ingls americano no contm o caractere especial para no conjunto de caractere espanhol. Comparaes so conjuntos de certas regras que operam em um conjunto de caracteres. Uma comparao define como uma operao de manipulao de determinados dados os classificam. Por exemplo, um conjunto de caracteres em ingls americano pode ser classificado tanto como ordem de caractere, sensvel ou no ao tamanho da letra (em ingls: character-order, case-insensitive, ou case-sensitive). O padro ANSI no diz como classificaes devem ser feitas, somente plataformas devem fornecer comparaes comuns encontradas em uma lngua particular. importante saber qual comparao voc est usando quando escreve um cdigo SQL contra uma plataforma de banco de dados, pois pode ter um impacto direto em como consultas se comportam, e particularmente no comportamento de clusulas de WHERE e ORDER BY de instrues SELECT. Por exemplo, uma consulta que classifica dados usando uma comparao binria retornar dados em uma ordem bem diferente daquela que classifica dados usando, digamos, uma comparao em ingls americano.

Histria do SQL

Nulo (em ingls: Null) (Regra 3)


A maioria dos bancos de dados permite que qualquer um de seus tipos de dados suportados armazenem valores NULLs. Programadores e desenvolvedores de SQL inexperientes tendem a pensar em NULL como zero ou espaos em branco. De fato, NULL no nenhum destes. Em SQL3, NULL literalmente significa que o valor desconhecido ou indeterminado (Esta questo sozinha se NULL deve ser considerado desconhecido ou indeterminado o assunto de muitos debates acadmicos). Esta diferenciao capacita um projetista de banco de dados distinguir entre estas entradas que representam um zero deliberadamente colocado, por exemplo, e aquelas onde cada dado no gravado no sistema ou um NULL entrou explicitamente. Como uma ilustrao desta diferena semntica, considere um sistema que localiza pagamentos. Se um produto

O Modelo Relacional e ANSI SQL

tem um preo NULL que no significa que o produto grtis; pelo contrrio, um preo NULL indica que a quantidade desconhecida ou talvez no foi ainda determinada. H uma grande quantidade de diferenciao entre a plataforma de banco de dados em termos de como elas lidam com valores NULLs. Isto leva a alguns grandes problemas de conexo entre aquelas plataformas relacionadas com NULLs. Por exemplo, uma string vazia (em outras palavras, uma string NULL) inserida como uma valor NULL no Oracle. Todas as outras bases de dados cobertas neste livro permitem a insero de uma string vazia em colunas VARCHAR e CHAR. Um efeito colateral de natureza indeterminada de um valor NULL que no pode ser usado em um clculo ou comparao. Aqui esto algumas regras breves mais muito importantes, de um padro ANSI, para lembrar sobre o comportamento de valores NULLs quando lidar com NULLs em instrues do SQL: Um valor NULL no pode ser inserido em uma coluna definido como NOT NULL. Valores NULLs no so iguais aos outros. Este um erro frequente para comparar duas colunas que contm NULL e esperam que valores NULLs combinem. (O jeito apropriado de identificar um valor NULL pela clusula WHERE ou em uma expresso booleana usar frases como o valor IS NULLe o valor IS NOT NULL) Uma coluna contendo um valor NULL ignorada no clculo de valores agregados como AVG, SUM, ou COUNT MAX. Quando colunas que contm valores NULL so listadas na clusula GROUP BY de uma consulta, a consulta emissora contm uma nica linha de valores NULL. Em essncia, o padro ANSI considera todos os NULLs em um nico grupo. Clusulas DISTINCT e ORDER BY, como GROUP BY, tambm vem valores NULLs como indistinguveis uns dos outros. Com a clusula ORDER BY, o fornecedor livre para escolher se os valores NULL so ordenados acima (por primeiro, ou no inicio, no conjunto de resultados) ou abaixo (ltimo no conjunto de resultados) por padro.

Metadados (regras 4 e 10)


A quarta regra de Codd para os bancos de dados relacionais declara que dados sobre o banco de dados devem ser armazenados em tabelas padres, assim como todos os outros dados so. Dados que descrevem o prprio banco de dados so chamados metadados. Por exemplo, toda vez que voc criar uma nova tabela ou ou uma exibio (em ingls: view) em um banco de dados, registros so criados e armazenados que descrevem a nova tabela. Registros adicionais so necessrios para armazenar quaisquer colunas, chaves ou restries na tabela. Esta tcnica implementada na maioria dos bancos de dados fonte aberta (em ingls: open source) e comerciais. Por exemplo, o SQL Server usa as chamadas tabelas de sistemas (em ingls: system tables) para localizar toda a informao sobre o banco de dados, tabelas e objetos de banco de dados, em qualquer banco de dados. Tambm tem sistemas de banco de dados (em ingls: system databases) que rastream a informao sobre o servidor em qual o banco de dados instalado e configurado.
6 Captulo 1: Histria e Implementaes do SQL

A linguagem (regras 5 e 11)


Histria do SQL

As regras de Codd no requerem que o SQL seja usado com um banco de dados relacional. Suas regras, particularmente as regras 5 e 11, somente especificam como a linguagem deve se comportar quando acoplada com um banco de dados relacional. Em certo momento SQL competiu com outras linguagens (como RDO da Digital e Fox/ PRO) que podem ter encaixado na conta relacional, mas o SQL venceu, por trs razes. Primeiro, o SQL uma linguagem relativamente simples, intuitiva, assim como uma lngua como o ingls que lida com a maioria dos aspectos de manipulao de dados. Segundo, o SQL de um satisfatrio alto nvel. Um programador ou administrador de banco de dados (DBA) no tem que perder tempo assegurando que dados so armazenados no registro apropriado de memria ou que dados so ocultados no disco; o sistema de administrao de banco de dados (DBMS) lida com esta tarefa automaticamente. Finalmente, devido a nenhum fornecedor sozinho possuir um SQL, ele foi adotado atravs de vrias plataformas.

Exibies ou Visualizaes (em ingls: View)


Uma exibio ou visualizao (em ingls: view) uma tabela virtual que no existe como um repositrio fsico de dados, mas pelo contrrio construdo simultaneamente a partir de uma instruo SELECT sempre que a exibio executada ou consultada (em ingls: queried). Exibies ou visualizaes (em ingls: view) capacitam voc a construir diferentes representaes da mesma fonte de dados para uma variedade de pblicos sem ter que alternar a forma em que os dados so armazenados. Alguns fornecedores suportam objetos de banco de dados chamados Exibies materializadas (em ingls: materialized views). No deixe a similiaridade dos itens confundir voc; que exibies materializadas (em ingls: materialized views) no so governadas pelas mesmas regras que views do padro ANSI.

Operaes em conjuntos (regras 7 e 12)


Outras linguagens de manipulao de dados, assim como a venervel Xbase, realizam suas operaes de dados bem diferentemente do SQL. Estas linguagens requerem que voc diga ao programa exatamente como tratar o dado, um registro por vez. Como os programas circulam atravs de uma lista de registros, realizando sua lgica, um registro de cada vez, este estilo de programao frequentemente chamado de processamento de linha ou programao procedural. Em contraste, os programas do SQL operam em conjuntos de dados lgicos. A teoria de conjunto aplicada em quase todas as instrues SQL, incluindo instrues de SELECT, INSERT, UPDATE e DELETE. Em efeito, dados so selecionados por um conjunto chamado de tabela. Diferente do estilo de processamento de linhas, processamento de conjunto permite os programadores a dizerem ao banco de dados simplesmente o que requerido, e no como cada pedao individual de dado deve ser lidado. Algumas vezes processamento de conjunto referido como um processamento declarativo, desde que um programador declare somente qual dado desejado (como em, Me d o nome de todos os empregados na regio sudeste que ganham mais que $70,000 por ano) ao invs de descrever o procedimento exato a ser usado para recuperar ou manipular dados.

O Modelo Relacional e ANSI SQL

Teoria de conjunto foi a ideia original do matemtico Georg Cantor, que a desenvolveu no fim do sculo dezenove. Naquela poca, a teoria de conjunto (e a teoria de Cantor sobe o infinito) foi bem controversa. Hoje, a teoria de grupo uma parte to comum da vida que aprendida no ensino fundamental. Coisas como catlogos de cartes, o sistema decimal de Dewey e as listas telefnicas em ordem alfabtica so exemplos simples e comuns de teoria de conjunto aplicada. Exemplos de teoria de conjunto juntamente com bancos de dados relacionais esto detalhados na seo a seguir.

Regras de Codd em ao: Exemplos simples de SELECT


At este ponto, este captulo focou nos aspectos individuais de uma plataforma de dados relacional assim como definida por Codd e implementada atravs do SQL ANSI. Esta seo apresenta uma viso de alto nvel de instrues SQL mais importantes, SELECT, e alguns dos seus pontos salientes especialmente, as operaes relacionais conhecidas como projees (projections), selees (selections), e junes (joins): Projeo (Projection) Recupera colunas de dados especficas Seleo (Selection) Recupera linhas de dados especficas Juno (Join) Retorna colunas e linhas de duas ou mais tabelas em um nico conjunto de resultados Embora a primeira vista isso parea como se a instruo SELECT lidasse somente com operaes de seleo relacional, na realidade, SELECT lida com todas as trs operaes. A instruo a seguir incorpora a operao de projeo por selecionar os primeiros e ltimos nomes de um autor, mais seu estado natal, pela tabela de autores:
SELECT FROM au_prname, au_ulname, state authors

Os resultados de qualquer instruo SELECT so apresentados como outra tabela de dados:


au_prname ---------------Johnson Marjorie Cheryl Michael Meander Morningstar Reginald Innes au_ulname ------------------------------White Green Carson OLeary Smith Greene Blotchet-Halls del Castillo state --------------------CA CA CA CA KS TN OR MI

Os dados resultantes so s vezes chamados de conjunto de resultado (em ingls: result set), tabela de trabalho (em ingls: work table) ou tabela derivada (em ingls: derived table), diferenciando-o de uma tabela base (em ingls: base table) no banco de dados que o alvo da instruo SELECT.

Captulo 1: Histria e Implementaes do SQL

importante notar que a operao relacional de projeo, no de seleo, especificada usando a clusula SELECT (que a palavra-chave SELECT seguida por uma lista de expresses a serem recuperadas) de uma instruo SELECT. Seleo a operao de recuperar linhas especficas de dados determinada usando a clusula WHERE em uma instruo SELECT. WHERE filtra as linhas de dados indesejadas recuperando somente as linhas requeridas. Continuando com o exemplo anterior, a instruo a seguir selecionam autores de estados diferentes da Califrnia:
SELECT FROM WHERE au_prname, au_ulname, state authors state <> CA

Histria do SQL

Enquanto a primeira consulta recupera todos os autores, o resultado desta segunda consulta um subconjunto de registros muito menor:
au_prname ----------------Meander Morningstar Reginald Innes au_ulname -----------------------------------Smith Greene Blotchet-Halls del Castillo state -----KS TN OR MI

Combinando as capacidades de projeo e seleo em uma nica consulta, voc pode usar o SQL para recuperar somente colunas e registros que voc precisar em qualquer momento. Junes so as operaes relacionais seguintes e as ltimas que iremos falar nesta seo. Uma juno relaciona uma tabela outra para devolver um conjunto de resultados feito de dados relacionais das duas tabelas. Diferentes fornecedores permitem voc a juntar nmeros variveis de tabela em uma nica operao de juno. Por exemplo, o Oracle no estabelece limite no nmero de tabelas em uma juno, enquanto o Microsoft SQL Server permite at 256 em uma operao de juno. O mtodo padro ANSI de junes realizadas usar a clusula JOIN em uma instruo SELECT. Em um mtodo mais antigo, conhecido como uma juno theta (em ingls: theta join), realiza a anlise de juno na clusula WHERE. O exemplo a seguir mostra ambas as abordagens. Cada instruo recupera informaes de empregados da tabela de base de empregados assim como descries de emprego da tabela de base de empregos. O primeiro SELECT usa a mais nova clusula do JOIN ANSI, enquanto o segundo SELECT usa uma juno tetha (em ingls: theta join):
-- ANSI style SELECT FROM JOIN WHERE a.au_fname, a.au_lname, t.title_id authors AS a titleauthor AS t ON a.au_id = t.au_id a.state <> CA

-- Theta style SELECT a.au_fname, a.au_lname, t.title_id FROM authors AS a, titleauthor AS t WHERE a.au_id = t.au_id AND a.state <> CA

Para mais informaes sobre junes, veja a seo de Subclusula JOIN no Captulo 3.
O Modelo Relacional e ANSI SQL 9

Histria do Padro SQL


Em resposta a proliferao dos dialetos do SQL, ANSI publicou seu primeiro padro SQL em 1986 para trazer maior conformidade entre fornecedores. Isto foi seguido por um segundo padro, adotado amplamente em 1989. A International Standards Organization (ISO) tambm aprovou o padro SQL. ANSI lanou uma atualizao em 1992, conhecida como SQL92 ou SQL2 e outra em 1999, chamada de SQL99 ou SQL3. A prxima atualizao feita em 2003, tambm referida como SQL3 (ou SQL2003). Quando ns usamos este termo neste livro, estamos nos referindo reviso 2003 do padro. Cada vez que ele revisa o padro SQL ANSI, o ANSI adiciona novos atributos e incorpora novos comandos e capacidades na linguagem. Por exemplo, o padro SQL99 adicionou um grupo de capacidades de extenses de tipos de dados que manipulam orientao a objeto.

O Que H de Novo no SQL2006


O corpo de padro ANSI que regulariza o SQL lanou um novo padro em 2006, em que as maiores melhorias do SQL3 foram retidas e aumentadas. O lanamento do ANSI SQL2006 foi evoludo em relao ao lanamento de SQL3, mas no incluiu qualquer mudana significativa para os comandos e funes do SQL3 que so descritos na segunda edio deste livro. Ao invs disso, SQL2006 descreveu uma nova rea totalmente funcional de comportamento para o padro SQL. Brevemente, o SQL2006 descreve como SQL e XML (eXtensible Markup Language) interagem. Por exemplo, o padro SQL descreve como importar e armazenar dados XML em um banco de dados do SQL, manipular os dados, e ento, publicar os dados em formas nativas de XML e como dados SQL convencionais empacotados na forma XML. O padro SQL2006 fornece um meio de integrar cdigos de aplicao SQL com XQuery, a XML Query Language padronizada pelo World Wide Web Consortium (W3C). Porque XML e XQuery so disciplinas em seus direitos, elas so consideradas alm do escopo deste livro e no esto cobertas aqui.

O Que H de Novo no SQL2003 (SQL3)


O SQL99 tinha duas partes principais, Fundamental (em ingls: Foundation): 1999 e Vnculos (em ingls: Binding): 1999. A Seo Funtamental do SQL3 inclui todos os padres fundamentais e de vnculo do SQL99, assim como uma nova seo chamada esquemata (em ingls: schemata). Os requisitos mais importantes do SQL3 no mudaram do ncleo do SQL99, ento as plataformas de banco de dados que se adequaram ao SQL99 se adequaram automaticamente ao SQL3. Embora o Ncleo (em ingls: Core) do SQL3 no tenha adies (exceto por algumas palavras reservadas recentemente), vrias instrues individuais e comportamentos tm sido atualizados ou modificados. Pelo fato destas atualizaes serem refletidas nas descries de sintaxe individuais de cada instruo no Capitulo 3, no perderemos tempo com elas aqui. Alguns elementos do ncleo do SQL99 foram deletados no SQL3, incluindo: Os tipos de dados BIT E BIT VARYING A clusula UNION JOIN A instruo UPDATE... SET ROW

10

Captulo 1: Histria e Implementaes do SQL

Vrios outros atributos, a maioria que foram ou so um pouco obscuros, tambm foram adicionados, deletados ou renomeados. Muitos destes novos atributos do padro SQL3 so atualmente interessantes principalmente de um ponto de vista acadmico, pois nenhuma das plataformas de banco de dados suportam eles ainda. No entanto, alguns novos atributos se tornam interessantes: Funes OLAP elementares O SQL3 adiciona uma emenda de Online Analytical Processing (OLAP), incluindo vrias funes de exibio parcial para suportar clculos amplamente usados como mdias de mudana e somas acumulativas. Funes de exibio parcial so agregadas, computadas atravs de uma janela de dados: ROW_NUMBER, RANK, DENSE_RANK, PERCENT_RANK e CUME_DIST. Funes OLAP so totalmente descritas no T611 do padro. Algumas plataformas de banco de dados esto comeando a suportar as funes OLAP. Consulte o Capitulo 4 para detalhes. Amostragem O SQL3 adiciona a clusula TABLESAMPLE clusula FROM. Isto til para consultas de estatstica em bancos de dados grandes, como um data warehouse. Funes numricas aprimoradas O SQL3 adiciona um grande nmero de funes numricas. Neste caso, o padro, pois principalmente alcanando a tendncia na indstria, pelo fato de que uma ou mais plataformas de banco de dados j suportavam as funes novas. Consulte o Capitulo 4 para mais detalhes.

Histria do SQL

Nveis de Conformidade
O SQL99 foi construdo sobre nveis de conformidade do SQL92. O SQL92 primeiro introduziu nveis de conformidade definindo trs categorias: Principiante, Intermedirio e Completo (em ingls: Entry, Intermediate e Full). Fornecedores tiveram que alcanar pelo menos adaptaes do nvel de Entrada para reivindicar a adaptao ANSI SQL. O U.S. National Institute of Standards and Technology (NIST) adicionaram mais tarde o nvel transacional entre os nveis de Entrada e Intermedirio, ento os nveis de adaptao NIST eram de Entrada, Transacional, Intermedirio e Completo, enquanto os ANSI eram somente de Entrada, Intermedirio e Completos. Cada nvel mais alto do padro foi um super conjunto do nvel subordinado, significando que cada nvel mais alto incluiu todos os atributos dos nveis mais baixos de conformidade. Mais tarde, o SQL99 alterou a base de nveis de adaptao, se livrando dos nveis de Entrada, Intermedirio e Completo. Com o SQL99, fornecedores devem implementar todos os atributos dos nveis mais baixos de adaptao, A Parte mais importante do SQL99, com o intuito de reivindicar (e publicar) que eles esto prontos para SQL99. A Parte mais importante do SQL99 inclui o grupo de atributos da antiga entrada do SQL92, atributos de outros nveis de SQL92, e alguns atributos novos. Um fornecedor pode tambm escolher implementar pacotes de atributos adicionais descritos no padro SQL99.

Pacotes de Caractersticas Suplementares no Padro SQL3


O padro SQL3 representa o ideal, mas poucos fornecedores frequentemente encontram ou excedem os requisitos do ncleo (em ingls: core)do SQL3. O padro do ncleo (em ingls: core) como o limite de velocidade interestadual: alguns motoristas vo alm e outros vo abaixo, mas poucos vo exatamente no limite de velocidade. Similarmente, implementaes de fornecedores podem variar muito.

Histria do Padro SQL

11

Dois comits um sobre ANSI, o outro sobre ISO, e ambos compostos de representantes de cada fornecedor SGBDR virtualmente rascunhou as definies de atributos suplementares descritas nesta seo. Neste ambiente colaborativo e um tanto poltico, fornecedores se comprometeram em quais atributos exatos propostos e implementaes poderiam ser incorporados no novo padro. Novos atributos no padro ANSI frequentemente so derivados de um produto existente ou so o crescimento da nova pesquisa e desenvolvimento na comunidade acadmica. Consequentemente, adoo de fornecedores de padres ANSI especficos podem ser instveis. A nova adio relativa do padro SQL SQL/XML (largamente expandido no SQL2006). As outras partes do padro SQL99 continuam no SQL3, embora seus nomes podem ter sido trocados e eles podem ter sido levemente reorganizados. Os nove pacotes de atributos suplementares, representando diferentes subconjuntos de comandos, so de implementao opcional. Alguns atributos podem aparecer em mltiplos pacotes, enquanto outros no aparecem em nenhum outro pacote. Estes pacotes e seus atributos so descritos na lista seguinte: Parte 1, SQL/Framework Inclui definies comuns e conceitos usados atravs do padro. Define a forma que o padro estruturado e como as vrias partes se relacionam umas com as outras, e descreve os requerimentos de adaptao determinados pelo comit do padro. Parte 2, SQL/Fundamental (em ingls: Foundation) Inclui o ncleo, uma argumentao da parte mais importante do SQL99. Isto a maior e mais importante do padro. Parte3, SQL/CLI (Interface de Nvel de Chamada) em ingls, Call-Level Interface Define a interface do nvel de chamada para instrues SQL invocada dinamicamente de um programa de aplicao externa. Tambm inclui mais de 60 especificaes de rotina para facilitar o desenvolvimento de um software protegido e realmente portvel. Parte 4, SQL/PSM (Mdulos armazenados de persistncia) em ingls, Persistent Stored Modules Padroniza a ideia de linguagem procedural similar aquelas encontradas em dialetos SQL especficos para plataformas de banco de dados como PL/SQL e Transact-SQL. Parte 9, SQL/MED (Gerenciamento de Dados Externos) em ingls, Management of External Data Define o gerenciamento de dados localizados fora do banco de dados (atual) usando ligao de dados (em ingls: datalink) e interfaces wrapper. Parte 10, SQL/OBJ (Vnculo de Linguagem de Objetos) em ingls, Object Language Binding Descreve como embutir instrues SQL em programas Java. extremamente relacionado com JDBC, mas oferece algumas vantagens. Tambm muito diferente da linguagem vinculada de um hospedeiro (em ingls: host) tradicional disponvel em verses iniciais do padro. Parte 11, SQL/Esquemata (em ingls: Schemata) Define mais de 85 exibies (em ingls: views) (trs a mais que o SQL99) usadas para descrever os metadados de cada banco de dados e armazenados em um esquema especial chamado INFORMATION_SCHEMA. Atualiza vrias views que existiam no SQL99.

12

Captulo 1: Histria e Implementaes do SQL

Parte 12, SQL/JRT (Rotinas e Tipos Java) em ingls, Java Routine and Types Define vrias rotinas e tipos SQL usando a linguagem de programao Java. Vrias caractersticas do Java, como classes e mtodos estticos, so suportados agora. Parte 14, XML/SQL Adiciona um novo tipo chamado XML, quatro novas operaes (XMLPARSE, XMLSERIALIZE, XMLROOT e XMLCONCAT), vrias novas funes (descritas no Captulo 4) e o novo predicado IS DOCUMENT. Tambm inclui regras para mapeamento de elementos relacionados SQL (como identificadores, esquemas e objetos) para elementos relacionados XML. Note que as partes 5,6,7 e 8 no existem pelo projeto. Esteja consciente que uma plataforma SGBDR pode reivindicar obedincia ao SQL3 ao encontrar padres do ncleo do SQL99, ento leia as especificaes do fornecedor para uma descrio completa do seu atributo de conformidade do ANSI. Entendendo o que atributos cobrem os nove pacotes, o usurio pode ter uma clara ideia das capacidades de um SGBDR particular e de como os vrios atributos se comportam quando um cdigo SQL transportado para outros produtos de banco de dados. Os padres ANSI que cobrem recuperao, manipulao e gerenciamento de dados em comandos como SELECT, JOIN, ALTER TABLE e DROP formalizam muitos comportamentos SQL e estruturas de sintaxe pela variedade de plataformas. Estes padres se tornaram ainda mais importantes que produtos de banco de dados de fonte aberta, como MySQL e PostgreSQL, cresceram em popularidade e comearam a ser desenvolvidos por equipes virtuais que por grandes corporaes. SQL O Guia Essencial, Terceira Edio, explica a implementao SQL de quatro populares SGBDR. Estes fornecedores no atendem todos os padres SQL3; alis, todas as plataformas SGBDR mantm contato constante com os membros responsveis pelo padro. Frequentemente, assim que os fornecedores fecham o padro, os corpos de padres atualizam, refinam ou de outra forma alteram o benchmark. Mutuamente, os fornecedores frequentemente implementam novos atributos que no so ainda uma parte do padro mas que incentivam a efetividade dos seus usurios.

Histria do SQL

Classes de Instrues SQL


Comparando classes seguintes de instrues delineia SQL do SQL92. No entanto, os termos antigos ainda so usados, ento leitores precisam conhec-los. SQL92 agrupou instrues em trs amplas categorias: Linguagem de manipulao de dados (DML), em ingls, Data Manipulation Language Fornece comandos de manipulao de dados especficos como SELECT, INSERT, UPDATE e DELETE. Linguagem de definio de dados (DDL), em ingls, Data Definition Language Contm comandos que lidam com a acessibilidade e manipulao de objetos de anco de dados, incluindo CREATE e DROP Linguagem de Controle de dados (DCL), em ingls, Data Control Language Contm os comandos relacionados com permisses GRANT e REVOKE

Histria do Padro SQL

13

Em contraste, SQL3 fornece sete categorias mais importantes, agora chamadas de classes, que fornecem um framework geral para os tipos de comandos disponveis no SQL. Estas instrues tentam identificar as instrues em cada classe mais exatamente e logicamente, e eles fornecem para o desenvolvimento de novos atributos e classes de instrues. Alm disso, as novas classes de instrues agora permitem algumas instrues rfs que no se encaixam bem em quaisquer das categorias antigas a serem devidamente classificadas. A tabela 1-1 identifica as clusulas de instrues SQL e lista alguns dos comandos em cada classe, cada a qual completamente discutida mais tarde. Neste ponto, a chave lembrar os ttulos de classes de instrues.
Tabela 1-1. Classes de instrues SQL3

Classe

Descrio

Exemplos de comandos
CONNECT, DISCONNECT CALL, RETURN SELECT, INSERT, UPDATE, DELETE GET DIAGNOSTICS ALTER, CREATE, DROP SET instrues, como SET CONSTRAINT COMMIT, ROLLBACK

Instrues de conexo SQL Inicializa e finaliza uma conexo de cliente Instrues de controle SQL Controla a execuo de um conjunto de instrues SQL Instrues de dados SQL Instrues de diagnstico SQL Instrues de esquema SQL Instrues de seo SQL Instrues de transao SQL Pode ter um efeito persistente e duradouro nos dados Fornece informao de diagnstico e aumenta excees e erros Pode ter um efeito persistente e duradouro no esquema de banco de dados nos objetos em cada esquema Controla comportamento defeituoso e outros parmetros para uma seo Define o ponto inicial e final de uma transao

Aqueles que trabalham com SQL regularmente deveriam se tornar familiar com ambos as classes antigas (SQL92) e as novas (SQL3), pelo fato que ambas nomenclaturas ainda so usadas para se referir aos atributos e instrues SQL.

Dialetos do SQL
A natureza constantemente envolvente do padro SQL deu um aumento para vrios dialetos SQL entre os vrios fornecedores e plataformas. Estes dialetos comumente evoluem, pois um determinado banco de dados de uma comunidade de usurio do fornecedor requer habilidades no banco de dados antes do comit ANSI criar um padro aplicvel. Ocasionalmente, porm, as comunidades acadmicas e de pesquisa introduzem um atributo novo em resposta a presses de tecnologias concorrentes. Por exemplo, muitos fornecedores de banco de dados esto aumentando suas recentes ofertas programticas tanto com Java (como no caso com DB2, Oracle e Sybase) quanto VBScript (como no caso com Microsoft). No futuro, programadores e desenvolvedores usaro estas linguagens de programao em conjunto com SQL para construir programas SQL.

14

Captulo 1: Histria e Implementaes do SQL

Muitos destes dialetos incluem habilidades de processamento condicional (assim como aquelas controladas por instrues IF...THEN), funes de controle de fluxo (assim como laos WHILE), variveis e habilidades de manipulao de erros. Porque ANSI no desenvolveu ainda um padro para estes atributos importantes no tempo que usurios comeam a exigir que eles, desenvolvedores e fornecedores de SGBDR criaram seus prprios comandos e sintaxe. De fato, alguns dos fornecedores mais antigos dos anos 80 tem varincias nos comandos mais elementares, como SELECT, pois suas implementaes antecedem os padres. ANSI est agora refinando padres que endeream estas inconsistncias. Alguns destes dialetos introduziram comandos procedurais para suportar a funcionalidade de uma linguagem de programao mais completa. Por exemplo, estas implementaes procedural contm comandos para lidar com erros, linguagem de controle de fluxo, comandos condicionais, comandos para manipular variveis, suporte para arrays e muitas outras extenses. Embora estas sejam implementaes procedurais tecnicamente divergentes, so chamadas dialetos aqui. O pacote SQL/PSM (Persitent Stored Module) fornece muitos atributos associados com procedimentos armazenados de programao e incorpora muitas das extenses oferecidas por estes dialetos. Alguns dialetos populares de SQL incluem: PL/SQL Encontrado no Oracle. PL/SQL significa Procedural Language/SQL e contm muitas similaridades com a linguagem Ada. Transact-SQL Usados por ambos Microsoft SQL Server e Sybase Adaptive Server como Microsoft e Sybase mudaram de uma plataforma comum que eles compartilhavam no inicio dos anos 90, suas implementaes de Transact-SQL tambm divergiram. PL/pgSQL Dialeto e extenses SQL implementadas no PostgreSQL. As iniciais significam Procedural Language/PostgreSQL. Usurios que planejam trabalhar extensivamente com um nico sistema de banco de dados deveriam aprender as complicaes de seus dialetos ou plataformas SQL preferidas.

Histria do SQL

Dialetos do SQL

15

Das könnte Ihnen auch gefallen