Artigo SQL
Artigo SQL
2.1 Contexto histórico e evolucional Tal como mencionado previamente, os standards para SQL publicados
Cronologicamente a história do desenvolvimento de SQL inicia-se em pela primeira vez em 1986, sofreram várias revisões ao longo dos anos,
Junho de 1970 aquando da publicação do artigo científico do cientista nomeadamente: 1989, 1992, 1999, 2003, 2008, 2011, 2016 e 2019.
Britânico Dr Codd, “A Relational Model of data for large Shared Data De salientar que no início dos anos 90 uma das grandes diferenças
Banks”. A publicação deste artigo na revista da Association of Computer prendeu-se com a aceitação de que linguagem puramente relacional não
Machinery (ACM) descrevia como se consegue guardar e manipular era suficiente e, para responder às necessidades reais e novos desafios,
dados utilizando uma estrutura tabular e utilizando o modelo matemático foram incorporadas funcionalidades object-oriented. Já em 2003 o
como base conceptual (Groff & Weinberg, 1999). Neste artigo estão standard publicado incluía suporte XML, em 2016 suporte JSON (Ja-
descritos conceitos base fundamentais relativos a bases de dados relacio- vaScript Object Notation) e mais recentemente, em 2019, incorporação
nais e, ao que viria a ser, a linguagem SQL. de machine learning (Brookshear, 2012).
Esta foi a ignescência necessária para o estudo e investigação sobre Atualmente a linguagem SQL é utilizada em diversos âmbitos e por
bases de dados relacionais tendo a empresa IBM um papel fundamental. diferentes tipos de empresas: Análise de Dados (Adobe Systems ®, Dell
Assim, entre 1974 e 1975 acontece a primeira fase do projeto System/R Technologies ®, Microsoft ®), Data Science, no Marketing, Finanças,
que cria um protótipo de um Sistema de Gestão de Base de Dados Cibersegurança, nas Redes Sociais (Facebook ®, Instagram ® , LinkedIn
(SGBD) em que se incluí o desenvolvimento da Structured English ® , Twitter ® ), na Indústria de Entretenimento (Amazon Prime ® ,
Query Language ou SEQUEL (Oppel & Sheldon, 2009). Netflix ® , Spotify ® ) e na área da Saúde (Project Pro, 2023).
O interesse no projecto System/R motiva, em 1977, a criação de um Nesta última é aplicada na gestão dos registos eletrónicos (para recuperar
SGBS relacional baseado em linguagem SQL com clara intenção comer- e atualizar dados de utentes/doentes e gerar relatórios sobre os cuidados
cial. Assistia-se assim ao nascimento na empresa precursora da atual prestados); na gestão dos cuidados aos utentes/doentes (para monitorizar
Oracle. dados de utentes/doentes e identificar padrões suscetíveis de intervenção
Nos seguintes anos continua o desenvolvimento do System/R com inú- clínica) e na investigação clínica (gerir dados da pesquisa clínica, tanto
meras alterações e melhorias. Em 1979 o projeto System/R termina com a para extrair dados dos registos clínicos eletrónicos e ensaios clínicos,
IBM a concluir a mais valia das bases de dados relacionais e a reconhe- assim como analisar os dados).
cer o potencial enquanto produto comercial (Groff & Weinberg, 1999). De salientar, também, a capacidade de aceder e analisar dados de saúde,
Pelo final da década de 70 um conjunto de Professores da Universidade o que permite reconhecer tendências e, eventualmente identificar padrões
de Berkeley – Califórnia, desenvolve um protótipo de um SGBD relaci- de utilização de serviços e, por fim, também na administração em saúde
onais que denominam de Ingres. Este protótipo incluía linguagem a linguagem SQL é uma mais valia como ferramenta de gestão de recur-
QUEL, considerada por alguns autores como mais estruturada embora sos humanos, materiais e financeiros (ProjectPro, 2023).
menos intuitiva (Oppel & Sheldon, 2009).
A década de 80 inicia-se com vários professores de Berkeley a fundarem
2.2 Conceitos-chave em SQL
a Relational Technology, Inc. com o objetivo de desenvolver uma versão
comercial de Ingres. Apesar de todo o esforço perante a agressividade de O conceito de base de dados é fundamental para compreender a lingua-
mercado da empresa Oracle este projeto acaba por não vingar, tendo sido gem SQL. De forma genérica trata-se de um conjunto de dados organi-
vendida na década de 90 à Computer Associates, uma empresa do setor zados de forma estruturada. Sendo que, neste contexto iremos abordar as
de software. bases de dados relacionais e, por consequência o modelo relacional
Apesar de alguma resistência dos mercados no início da década de 80 (Beaulieu, 2009).
quanto aos benefícios dos produtos disponíveis pelos três maiores forne- O modelo relacional baseia-se em princípios matemáticos que explicitam
cedores: IBM, Oracle e Ingres; pelo final desta década as bases de dados a relação entre os diferentes dados (Oppel & Sheldon, 2009).
relacionais e a linguagem SQL passou a ser aceite como uma tecnologia Assim, os dados são representados através de uma relação que consiste
inovadora e de futuro, principalmente devido à melhoria de performance
numa tabela. Cada tabela tem múltiplas colunas, e cada coluna tem um
dos produtos disponíveis no mercado (Beaulieu, 2009; Oppel & Sheldon,
nome único - atributo. O domínio do atributo é utilizado para restringir
2009).
os valores que este atributo pode assumir.
A popularidade da linguagem SQL continuou a crescer, em muito impul-
sionada pelo marketing da IBM com o programa DB2. A tabela tem vários registos, também denominados de tuplos, e cada
Em 1986 dá-se a publicação dos standards de SQL pela American Natio- registo tem exatamente o mesmo número de valores que todos os outros
nal Standards Institute (ANSI) e pela International Standards Organiza- registos da tabela. O número de tuplos da tabela denomina-se de cardina-
tion (ISO). lidade da relação e o número de atributos corresponde ao seu grau de
A crescente evolução e utilização de computadores pessoais (PC) fez relação (Taylor, 2003).
com que as necessidades dos SGBD fossem exponenciais, sendo que na O design de bases de dados relacionais implica a normalização de forma
década de 90 a linguagem SQL é assumida como um standard na indús- a salvaguardar a integridade dos dados e reduzir a redundância. Este
tria de PC (Groff & Weinberg, 1999). processo de normalização implica a definição de regras ou normal forms
A linguagem SQL foi-se adaptando, sendo o denominador base perante
(NF) que definem como devem ser os dados organizados de forma a
as necessidades, cada vez mais complexas, dos SGBD. Nomeadamente,
atingir os objetivos supramencionados.
no final da década de 90 surgem três nichos de interesse: data warehou-
sing com o objetivo de permitir que sejam encontradas novas tendências Tabela 2. Normalização de dados: as 3 principais forms
e padrões através do acesso a diversas bases de dados; a incorporação de
novos tipos de dados multimédia em SQL; e mobile databases com Cada atributo de um tuplo deverá conter apenas um
objetivo de possibilitarem que computadores pessoais portáteis permitam First Normal valor;
o acesso a bases de dados centralizados (Beaulieu, 2009; Groff & Form (1NF) Cada tuplo deverá conter o mesmo número de atribu-
tos;
Weinberg, 1999).
Linguagem SQL
Cada tuplo deverá ser diferente e a combinação de tuplos de uma tabela (por exemplo), como apaga a tabela da base de
todos os atributos para um determinado tuplo não pode dados. Se o pretendido for manter a estrutura da tabela e apagar os dados
ser igual à de outro tuplo na mesma relação.
da mesma a instrução que deverá ser utilizada será a DELETE, que será
Second Cada coluna deverá ser relevante para a chave primá- abordada de seguida (Elmasri & Navathe, 2007).
Normal ria (identificador único). Assim, os dados são organi- DROP TABLE Produtos CASCADE
Form (2NF) zados de forma lógica. DROP TABLE Produtos RESTRICT
Third Nor- Pretende eliminar dependências entre colunas non-key
mal Form de forma a facilitar a obtenção de dados e proteger a 3.1.4 Truncate
(3NF) sua integridade.
Este comando é utilizado para remover todos os registos de uma tabela,
contudo, ao contrário da instrução DELETE, esta é uma operação mais
eficiente, visto que não gera logs para cada registo excluído e não ativa
3 Operações de Base de Dados
triggers de exclusão, então, normalmente só é utilizada quando não é
As operações de base de dados referem-se a tarefas relacionadas com a
necessário manter um histórico dos registos excluídos (Beaulieu, 2009).
gestão da base de dados, que compreende ações como criar, alterar ou
eliminar tabelas, gerir permissões de acesso entre outras. Uma operação
é constituída pela interface, que inclui o nome da operação e os tipos de 3.2 Data Manipulation Language
dados necessários para a sua execução, e pela implementação, que Esta sublinguagem é utilizada para manipular o conteúdo da base de
descreve como é que a operação é realizada. A implementação pode ser dados, ou seja, adicionar, modificar ou apagar dados que se encontram
alterada sem alterar a interface, garantindo a independência entre como na base de dados. As instruções mais utilizadas são INSERT, UPDATE e
as operações são chamadas e como são executadas na base de dados DELETE (Oppel & Sheldon, 2009).
(Elmasri & Navathe, 2007).
É possível dividir a linguagem SQL em subconjuntos, nomeadamente,
3.2.2 Insert
Data Definition Language (DDL), Data Manipulation Language (DML),
Data Control Language (DCL), Transactional Control Language (TCL), A partir desta operação, é possível acrescentar tuplos às tabelas da base
e Data Query Language (DQL). Os quatro primeiros subconjuntos de dados. Para o fazer teremos de especificar a relação e será necessário
mencionados englobam diferentes tipos de operações de base de dados. garantir que os valores se encontram na mesma ordem em que os atribu-
A Data Query Language será abordada mais à frente neste artigo, no tos correspondentes foram especificados (Elmasri & Navathe, 2007). Por
capítulo SQL Queries (Capris et al., 2022). exemplo:
INSERT INTO Produtos VALUES (1, 'Produto A', 10, 7)
INSERT INTO Produtos (ID, Nome, Preço, Quantidade)
3.1 Data Definition Language VALUES (2, 'Produto B', 15, 30)
A DDL permite definir a estrutura da base de dados (Capris et al., 2022), Será necessário garantir a integridade referencial dos dados adicionados.
visto que esta engloba instruções que são utilizadas para criar, modificar Existem diversos tipos de integridade, por exemplo, a integridade de
ou apagar dados (Oppel & Sheldon, 2009). domínio, em que os valores adicionados a um atributo devem pertencer
ao domínio do mesmo, ou seja, não se deve inserir valores DECIMAL
num atributo quando os valores permitidos seriam apenas VARCHAR
3.1.1 Create
(Elmasri & Navathe, 2007).
Comando que pode ser utilizado para criar esquemas, tabelas, domínios,
views, assertions… (Elmasri & Navathe, 2007).
3.2.3 Update
CREATE TABLE Produtos (
ID INT PRIMARY KEY, Utilizada para modificar os valores de atributos numa tabela. Juntamente
Nome VARCHAR(255), com esta terá de ser utilizada uma instrução WHERE, para definir quais
Preço DECIMAL(10, 2) os tuplos a serem alterados e, para além disso, terá de ser utilizada uma
); instrução SET para especificar quais os atributos que devem ser modifi-
cados e quais serão os seus novos valores (Elmasri & Navathe, 2007).
Seguem alguns exemplos:
3.1.2 Alter
Utilizado para alterar propriedades das tabelas criadas anteriormente,
nomeadamente adicionar atributos ou alterar a definição de um atributo Tabela 3. Tabela antes da utilização de operações de base de dados
numa tabela (Elmasri & Navathe, 2007), por exemplo:
ALTER table Produtos ADD column Quantidade DECIMAL(10) ID Nome Preço Quantidade
1 Produto A 10 7
3.1.3 Drop 2 Produto B 15 30
3 Produto C 20 18
Quando se pretende eliminar dados, é possível fazê-lo através desta
UPDATE Produtos SET Preço = 30 WHERE Nome = 'Produto B'
instrução. É possível definir os dados que serão apagados através das
instruções CASCADE e RESTRICT, sendo que o primeiro irá resultar na
exclusão “em cascata” de todos os objetos dependentes, enquanto o Tabela 4. Tabela ilustrativa da utilização da instrução UPDATE
RESTRICT irá levar à exclusão de objetos que não têm qualquer depen-
dência, permitindo que os objetos com dependência fiquem intactos. ID Nome Preço Quantidade
Importante também referir que, a instrução DROP não elimina apenas os 1 Produto A 10 7
Linguagem SQL
2 Produto B 30 30
3 Produto C 20 18
Beaulieu, A. (2009). Learning SQL (M. E. Treseler, Ed. 2nd ed.). O’Reilly Media,
Apresentando-se, por fim, um exemplo simplificado do output dos dados
solicitados. Inc.
Brookshear, J. G. (2012). Computer Science: an overview (M. Hirsch, Ed. 11th
ed.). Pearson.
Capris, T., et al. (2022). Comparison of SQL and NoSQL databases with different
workloads: MongoDB vs MySQL evaluation. International Conference
on Data Analytics for Business and Industry.
Elmasri, R. and S. B. Navathe (2007). Fundamentals of Database Systems,
estratificam o acesso, podendo permitir o acesso a todos os objetos, ou Industries. ProjectPro. Retrieved 19/10/2023 from
por outro lado, impedir o acesso a uma tabela, ou a dados que a inte- https://www.projectpro.io/article/applications-of-sql/834
gram, caso o utilizador não possua os privilégios adequados. Taylor, A. (2003). SQL for Dummies (M. Corder, Ed. 5th edition ed.). Wiley
Os identificadores de autorização podem definir que o acesso de um Plublishing, Inc.
utilizador seja para a visualização dos dados, enquanto outros identifica-
dores possibilitam a visualização e modificação desses dados
(ProjectPro, 2023).
Em SQL existem dois tipos de identificadores de autorização: utilizador
(users) e funções (roles).
Também podem ser aplicados outros tipos de segurança, nomeadamente
pela utilização de consultas parametrizadas, que não associam a estrutura
da consulta de entrada, ao utilizador, impedindo que códigos maliciosos
sejam executados na base de dados; encriptação de dados confidenciais,
para proteção em caso de acesso indevido à rede ou violação de dados;
ligações seguras, através de senhas de autenticação e certificados, que
permitem autenticar e confirmar identidades, para além de restrições de
acesso à base de dados, com firewall, VPNs ou proxies.
Para efetuar auditorias existem ferramentas, como SQLMap, Nmap e
Auditoria do SQL Server que permitem, de modo geral, efetuar testes
para identificar atividades, alterações ou eventos ocorridos na base de
dados, tais como tentativas de acesso ou modificação de dados ou aces-
sos privilegiados. (LinkedIn, 2023).
7 Conclusão
Após a conclusão deste trabalho podemos referir que a linguagem SQL
se apresenta como muito relevante, ainda nos dias de hoje, tendo vindo a
sofrer diversas evoluções que lhe permitiram a adaptação às demandas
do mundo moderno.
Assim, consideramos que com este trabalho exploramos conceitos
fundamentais da linguagem SQL, salientando as demonstrações práticas
da sua utilização o que permite a consolidação dos diferentes conceitos e
conteúdos descritos.