Beruflich Dokumente
Kultur Dokumente
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
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
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.
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.
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).
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
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.
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.
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.
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.
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
10
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.
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
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
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
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