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.