1. Histórico e evolução 2. Paradigma

Propaganda
SQL
Leandro Sorgetz, Roberto Pretto
Faculdades de Informática de Taquara – Curso de Sistemas de Informação
Fundação Educacional Encosta Inferior do Nordeste
Av. Oscar Martins Rangel, 4500 – Taquara – RS – Brasil
[email protected], [email protected]
Resumo. Este artigo descreve, em linhas gerais, as características e
funcionalidades da linguagem SQL (Structure Query Language - Linguagem
de Consulta Estruturada). Serão descritos histórico, evolução, paradigma,
características técnicas, aplicabilidade e exemplos desta linguagem.
1. Histórico e evolução
Em 1970 E. F. Codd propôs “A Relational Model o Data for Large Share Data Banks”,
cuja primeira implementação foi comercializada pela IBM com o nome de Sequel usada
para a definir, modificar e consultar banco de dados relacionais. Esta deu origem à SQL,
inicialmente comercializada pela Relational Software Inc., hoje denominada Oracle
Corporation [CAR].
Através dos anos, SQL foi se atualizando de acordo com os recursos dos bancos
de dados que surgiam. Os fabricantes de bancos de dados criaram extensões para
explorar os recursos de seus produtos [RAM].
Algumas variações da SQL são encontradas em PL/SQL, da Oracle, DB2 da
IBM, SQL da Microsoft, entre outras. Todos esses exemplos são SGBD's – Sistemas de
Gerenciamento de Banco de Dados).
Essas variações tendem dificultar trabalhos como migração de um banco de
dados para outro. Um comitê ANSI (American National Standards Institute) foi formado
para amenizar esses problemas através da padronização da SQL no intuito de torná-la
independente de plataforma [RAM].
Este comitê normatizou a SQL e produziu versões como SQL-86, SQL-89, SQL2 e
SQL3, sendo que esta última prevê mecanismos voltados a Orientação a Objetos [CAR].
2. Paradigma
SQL não é uma linguagem procedural e sim declarativa. Ela pertence ao paradigma
imperativo interpretado. Pode ser usada interativamente ou embutida em um programa.
Na forma interativa é usada para operar diretamente no banco de dados através
de comandos digitados diretamente no prompt. Na outra maneira os comandos SQL são
embutidos em um programa [RAM]. A linguagem deve ter suporte para SQL, por
exemplo, PHP, C, Delphi, Java, etc.
Abaixo temos o trecho de um programa em Java que seleciona todas colunas da
tabela Autor, de um banco de dados, através de um SELECT embutido.
private void getTable()
{
Statement statement;
ResultSet resultSet;
try {
String query = "SELECT * FROM Autor";
statement = connection.createStatement();
resultSet = statement.executeQuery( query );
displayResultSet( resultSet );
statement.close();
}
}
O mesmo comando na forma interativa é usado da seguinte maneira:
SELECT * FROM Autor
Evidentemente, nos dois casos, é necessário estabelecer uma conexão com o
banco de dados, que deve estar previamente criado, preferencialmente tendo dados
inseridos.
3. Características Técnicas
3.1 Grupos de comandos
Tanto no uso interativo ou embutido, SQL é subdividida em três grupos de comandos,
de acordo com a finalidade.
3.1.1 DDL (Data Definition Language – Linguagem de Definição de Dados)
Esses comandos são responsáveis pela criação de objetos como tabelas, índices e outros:
Create Table
Cria uma tabela
Create Index
Cria um índice
Alter Table
Altera ou insere uma coluna em uma tabela
Drop Table
Elimina uma tabela do banco de dados
3.1.2. DML (Data Manipulation Language – Linguagem de Manipulação de
Dados)
Através destes comandos são executadas consultas e alterações nos dados:
Select
É o principal comando da SQL. Com ele o usuário obtém
dados de uma tabela ou view.
Update
Altera o conteúdo de colunas da tabela
Delete
Exclui linhas da tabela
Commit
Grava as alterações feitas
RoolBack
Desfaz as alterações feitas após o último commit
3.1.3. DCL (Data Control Language – Linguagem de Controle de Dados)
A segurança do dados está relacionada com essa divisão. Através dela são atribuídas
tarefas e privilégios para os usuários.
Grant
Concede privilégios de acesso para um usuário
Revoke
Revoga privilégios de acesso para um usuário
3.2 O comando SELECT
O comando Select é considerado, de acordo com Ramalho, a essência da linguagem
SQL. Em muitas publicações sobre SQL existem extensos e diversos capítulos que
tratam exclusivamente da sintaxe e aplicabilidade deste comando de consulta.
O objetivo e finalidade do Select é encontrar, recuperar e mostrar dados que
satisfaçam à uma determinada consulta solicitada por um usuário [RAM].
Uma consulta deve especificar as tabelas a serem procuradas no banco de
dados, as condições de procura e a seqüência e ordem na qual os dados serão mostrados.
3.3 Rotinas em SQL
Um DBA (Data Base Administrator – Administrador de Banco de Dados) utiliza-se de
comandos SQL diariamente e sua rotina de trabalho. Abaixo serão relacionados alguns
destes comandos com o intuito de exemplificar um a pequena parte desta rotina.
Pode-se criar uma tabela da seguinte maneira:
CREATE TABLE estoque (
codigo INT(4) UNSIGNED ZEROFILL
DEFAULT '0000' NOT NULL,
descr CHAR(20)
DEFAULT ''
preco DOUBLE(16,2)
DEFAULT '0.00' NOT NULL,
NOT NULL,
PRIMARY KEY(codigo, descr));
Neste exemplo foi criada uma tabela chamada “estoque” tendo como colunas:
- codigo: inteiro de tamanho 4
- descr: campo de caracteres de tamanho 20
- preco: campo numérico de tamanho 16 e 2 casas decimais
Foram definidas como chaves primárias a coluna “codigo” e a coluna “descr” .
Para inserir dados nesta tabela pode-se usar o seguinte comando:
INSERT INTO estoque VALUES (1,'A',3.45),(1,'B',3.99),
(2,'A',10.99),(3,'B',1.45),(3,'C',1.69), (3,'D',1.25),(4,'D',19.95);
Se quisermos verificar o conteúdo da tabela, basta executar o comando:
SELECT * FROM estoque
que teremos o seguinte resultado:
+---------+--------+-------+
| codigo | descr | preco |
+---------+--------+-------+
|
0001 | A
| 3.45 |
|
0001 | B
| 3.99 |
|
0002 | A
| 10.99 |
|
0003 | B
| 1.45 |
|
0003 | C
| 1.69 |
|
0003 | D
| 1.25 |
|
0004 | D
| 19.95 |
+---------+--------+-------+
4. Conclusão
Sabe-se que com SQL não é possível criar programas executáveis, mas sua simplicidade,
facilidade e suficiência no trato com banco de dados, fez com que as melhores e mais
recentes linguagens de programação suportassem esses recursos em todas suas funções.
A Orientação a Objetos tem feito com que os paradigmas em banco de dados
também trilhem os mesmos caminhos. O mesmo acontece com SQL pois, sendo a
Linguagem dos Bancos de Dados, funde-se com eles e caminha lado a lado na escalada
da sua evolução.
5. Referências
[CAR]
Cardoso,
Elsa,
(2004)
SQL
Structure
http://iscte.pt/GSI/doc/SQL_DDL.PDF, Setembro.
Query
Language,
[DEI] Deitel, H. M.; Deitel.P.J., Java: como programa. 4ª Ed. Porto Alegre, Bookman,
2003.
[RAM] Ramalho, José Antônio Alves, SQL: a linguagem dos bancos de dados. São
Paulo, Berkeley, 1999.
[UNI]
Universidade
Castelo
Branco,
(2004)
Tutorial
de
MySql,
http://www.castelobranco.br/projetos/linux/documentacao/mysql.txt, Setembro.
Download