SQL
Origem: Wikipédia, a enciclopédia livre.
Structured Query Language, ou Linguagem de Consulta Estruturada ou SQL, é uma linguagem de pesquisa declarativa para banco de dados relacional (base de dados relacional). Muitas das características originais do SQL foram inspiradas na álgebra relacional.
O SQL foi desenvolvido originalmente no início dos anos 70 nos laboratórios da IBM em San Jose, dentro do projeto System R, que tinha por objetivo demonstrar a viabilidade da implementação do modelo relacional proposto por E. F. Codd. O nome original da linguagem era SEQUEL, acrônimo para "Structured English Query Language" (Linguagem de Consulta Estruturada em Inglês) [1], vindo daí o fato de, até hoje, a sigla, em inglês, ser comumente pronunciada "síquel" ao invés de "és-kiú-él", letra a letra. No entanto, em português, a pronúncia mais corrente é a letra a letra: "ése-quê-éle".
A linguagem SQL é um grande padrão de banco de dados. Isto decorre da sua simplicidade e facilidade de uso. Ela se diferencia de outras linguagens de consulta a banco de dados no sentido em que uma consulta SQL especifica a forma do resultado e não o caminho para chegar a ele. Ela é uma linguagem declarativa em oposição a outras linguagens procedurais. Isto reduz o ciclo de aprendizado daqueles que se iniciam na linguagem.
Embora o SQL tenha sido originalmente criado pela IBM, rapidamente surgiram vários "dialectos" desenvolvidos por outros produtores. Essa expansão levou à necessidade de ser criado e adaptado um padrão para a linguagem. Esta tarefa foi realizada pela American National Standards Institute (ANSI) em 1986 e ISO em 1987.
O SQL foi revisto em 1992 e a esta versão foi dado o nome de SQL-92. Foi revisto novamente em 1999 e 2003 para se tornar SQL:1999 (SQL3) e SQL:2003, respectivamente. O SQL:1999 usa expressões regulares de emparelhamento, queries recursivas e gatilhos (triggers). Também foi feita uma adição controversa de tipos não-escalados e algumas características de orientação a objeto. O SQL:2003 introduz características relacionadas ao XML, seqüências padronizadas e colunas com valores de auto-generalização (inclusive colunas-identidade).
Tal como dito anteriormente, o SQL, embora padronizado pela ANSI e ISO, possui muitas variações e extensões produzidos pelos diferentes fabricantes de sistemas gerenciadores de bases de dados. Tipicamente a linguagem pode ser migrada de plataforma para plataforma sem mudanças estruturais principais.
Outra aproximação é permitir para código de idioma procedural ser embutido e interagir com o banco de dados. Por exemplo, o Oracle e outros incluem Java na base de dados, enquanto o PostgreSQL permite que funções sejam escritas em Perl, Tcl, ou C, entre outras linguagens.
Índice |
[editar] Exemplo
Table 'T' | Query | Result | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
Select * from T |
|
||||||||||||
|
Select C1 from T |
|
||||||||||||
|
Select * from T where C1=1 |
|
Inserindo dados numa tabela T, a pesquisa Select * from T terá como resultado todos os elementos de todas as linhas da tabela.
Partindo da mesma tabela, a pesquisa Select C1 from T terá como resultado todos os elementos da coluna C1.
O resultado da pesquisa Select * from T where C1=1 será todos os elementos de todas as filas onde o valor de coluna C1 é '1'.
[editar] Palavras-chaves em SQL
[editar] DML - Linguagem de Manipulação de Dados
Primeiro há os elementos da DML (Data Manipulation Language - Linguagem de Manipulação de Dados). A DML é um subconjunto da linguagem usada para selecionar, inserir, atualizar e apagar dados.
- SELECT é o comumente mais usado do DML, comanda e permite ao usuário especificar uma query como uma descrição do resultado desejado. A questão não especifica como os resultados deveriam ser localizados.
- INSERT é usada para somar uma fila (formalmente uma tupla) a uma tabela existente.
- UPDATE para mudar os valores de dados em uma fila de tabela existente.
- DELETE permite remover filas existentes de uma tabela.
[editar] DDL - Linguagem de Definição de Dados
O segundo grupo é a DDL (Data Definition Language - Linguagem de Definição de Dados). Uma DDL permite ao usuário definir tabelas novas e elementos associados. A maioria dos bancos de dados de SQL comerciais tem extensões proprietárias no DDL.
Os comandos básicos da DDL são poucos
- CREATE cria um objeto (uma Tabela, por exemplo) dentro da base de dados.
- DROP apaga um objeto do banco de dados.
Alguns sistemas de banco de dados usam o comando ALTER, que permite ao usuário alterar um objeto, por exemplo, adicionando uma coluna a uma tabela existente.
outros comandos DDL:
- ALTER TABLE
- CREATE INDEX
- ALTER INDEX
- DROP INDEX
- CREATE VIEW
- DROP VIEW
[editar] DCL - Linguagem de Controle de Dados
O terceiro grupo é o DCL (Data Control Language - Linguagem de Controle de Dados). DCL controla os aspectos de autorização de dados e licenças de usuários para controlar quem tem acesso para ver ou manipular dados dentro do banco de dados.
Duas palavras-chaves da DCL:
- GRANT - autoriza ao usuário executar ou setar operações.
- REVOKE - remove ou restringe a capacidade de um usuário de executar operações.
outros comandos DCL:
- ALTER PASSWORD
- CREATE SYNONYM
[editar] DTL - Linguagem de Transação de Dados
- BEGIN WORK (ou START TRANSACTION, dependendo do dialeto SQL) pode ser usado para marcar o começo de uma transação de banco de dados que pode ser completada ou não.
- COMMIT envia todos os dados das mudanças permanentemente.
- ROLLBACK faz com que as mudanças nos dados existentes desde que o último COMMIT ou ROLLBACK sejam descartadas.
COMMIT e ROLLBACK interagem com áreas de controle como transação e locação. Ambos terminam qualquer transação aberta e liberam qualquer cadeado ligado a dados. Na ausência de um BEGIN WORK ou uma declaração semelhante, a semântica de SQL é dependente da implementação.
[editar] DQL - Linguagem de Consulta de Dados
Embora tenha apenas um comando, a DQL é a parte da SQL mais utilizada. O comando SELECT é composta de várias cláusulas e opções, possibilitando elaborar consultas das mais simples as mais elaboradas. Exemplos:
SELECT nome FROM pessoas; SELECT aP. aP.nome, aP.data_nascimento, aO.nome, aO.local FROM pessoas aP, objetos aO, WHERE aP.codigo = aO.codigo_pessoa and aP.codigo = ( SELECT codigo_pessoa FROM catalogo WHERE cod_catalogo = 5 );
Obs.: O SELECT também é considerado um comando DML.
[editar] Cláusulas
As cláusulas são condições de modificação utilizadas para definir os dados que deseja selecionar ou modificar em uma consulta.
FROM
Descrição – Utilizada para especificar a tabela que se vai selecionar os registros.
WHERE
Descrição – Utilizada para especificar as condições que devem reunir os registros que serão selecionados.
GROUP BY
Descrição – Utilizada para separar os registros selecionados em grupos específicos.
HAVING
Descrição – Utilizada para expressar a condição que deve satisfazer cada grupo.
ORDER BY
Descrição – Utilizada para ordenar os registros selecionados com uma ordem especifica.
DISTINCT
Descrição – Utilizada para selecionar dados sem repetição.
[editar] Operadores Lógicos
AND
Descrição – E lógico. Avalia as condições e devolve um valor verdadeiro caso ambos sejam corretos.
OR
Descrição – OU lógico. Avalia as condições e devolve um valor verdadeiro se algum for correto.
NOT
Descrição – Negação lógica. Devolve o valor contrário da expressão.
[editar] Operadores de Comparação
<
Descrição – Menor que
>
Descrição – Maior que
<>
Descrição – Diferente de
<=
Descrição – Menor ou Igual que
>=
Descrição – Maior ou Igual que
=
Descrição – Igual que
BETWEEN
Descrição – Utilizado para especificar um intervalo de valores.
LIKE
Descrição – Utilizado na comparação de um modelo e para especificar registros de um banco de dados."Like" + extensão % vai significar buscar todos resultados com o mesmo início da extensão.
[editar] Funções de Soma
As funções de soma se usam dentro de uma cláusula SELECT em grupos de registros para devolver um único valor que se aplica a um grupo de registros.
AVG
Descrição – Utiliza para calcular a media dos valores de um campo determinado.
COUNT
Descrição – Utilizada para devolver o número de registros da seleção.
SUM
Descrição – Utilizada para devolver a soma de todos os valores de um campo determinado.
MAX
Descrição – Utilizada para devolver o valor mais alto de um campo especificado.
MIN
Descrição – Utilizada para devolver o valor mais baixo de um campo especificado.
[editar] Sistemas de Banco de Dados que usam SQL
- Apache Derby
- Caché
- DB2
- Firebird
- HSQLDB , banco de dados implementado em Java
- Informix
- Ingres
- InterBase
- Microsoft SQL Server
- MySQL
- Oracle
- PointBase PointBase, banco de dados relacional implementado em Java
- PostgreSQL
- SQLite
- LiteBase Mobile Dedicado a plataformas móveis tais como: Palm OS, Pocket PC, WinCE, Symbian
- Sybase Adaptive Server Enterprise
- Teradata Primeiro RDBMS com arquitetura paralela do mercado
[editar] Ligações externas
- (en) Padrão SQL 2003
- (en) BiteSize Inc.'s Learn SQL tutorial
- (en) Jupitermedia Corporation's online SQL tutorial
- (en) A Gentle Introduction to SQL by Andrew Cumming
- (en) Database Debunking
- (en) SQL for beginners
- (en) Oracle SQL FAQ
- (pt) LiteBase [1]
Referências
- ↑ Chamberlin, D. D., Astrahan, M. M., Blasgen, M. W., Gray, J. N., King, W. F., Lindsay, B. G., Lorie, R., Mehl, J. W., Price, T. G., Putzolu, F., Selinger, P. G., Schkolnick, M., Slutz, D. R., Traiger, I. L., Wade, B. W., and Yost, R. A. 1981. A history and evaluation of System R. Commun. ACM 24, 10 (Oct. 1981), 632-646. http://doi.acm.org/10.1145/358769.358784
- Celso Henrique Poderoso de Oliveira, SQL - Curso Prático. Novatec Editora. ISBN 8575220241.