0% acharam este documento útil (0 voto)
15 visualizações7 páginas

Artigo SQL

1) O documento descreve a linguagem SQL, sua história e aplicações na área da saúde. 2) SQL permite organizar e obter dados armazenados em bancos de dados relacionais, tendo evoluído desde a década de 1970. 3) A linguagem SQL é amplamente utilizada na área da saúde, por exemplo, para gerir registros médicos eletrônicos e dados de pesquisas clínicas.

Enviado por

tjmvq5cjhr
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
0% acharam este documento útil (0 voto)
15 visualizações7 páginas

Artigo SQL

1) O documento descreve a linguagem SQL, sua história e aplicações na área da saúde. 2) SQL permite organizar e obter dados armazenados em bancos de dados relacionais, tendo evoluído desde a década de 1970. 3) A linguagem SQL é amplamente utilizada na área da saúde, por exemplo, para gerir registros médicos eletrônicos e dados de pesquisas clínicas.

Enviado por

tjmvq5cjhr
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
Você está na página 1/ 7

18º Mestrado em Informática Médica

Faculdade de Medicina da Universidade do Porto, FMUP


Faculdade de Ciências da Universidade do Porto, FCUP
Unidade Curricular: Introdução à Informática
2023/2024

Structured Query Language - SQL


1
Ana Catarina Antunes – [email protected];
1
Jéssica Rocha – [email protected];
1
Patrícia Homem-Silva – [email protected]
1
Ms Student of Medical Informatics, FMUP, FCUP, Porto, Portugal.

1 Introdução Tabela 1. Diferentes utilizações de SQL (Groff & Weinberg, 1999).


O presente trabalho académico surge no contexto da Unidade Curricular
de Introdução à Informática do primeiro ano do 18º Curso de Mestrado A utilização de linguagem SQL permite definir a
Definição de
em Informática Médica da Faculdade de Medicina do Porto (FMUP) em estrutura e organização dos dados guardados,
dados
parceria com a Faculdade de Ciências da Universidade do Porto (FCUP). bem como a relação entre estes.
A escolha do tema: Linguagem SQL (Structured Query Language) surge Obtenção de O uso de SQL permite solicitar ao SGBD o
pelo interesse em aprofundar conhecimento por esta área específica, bem dados output de dados guardados na base de dados.
como, pela relevância desta área de conhecimento e sua aplicação na Recorrendo a linguagem SQL é possível a atuali-
área da saúde. Manipulação
zação de dados, adição, remoção ou modificação
Pretendemos com este trabalho definir SQL, enquadrar a sua evolução de dados
de dados
histórica, explorar conceitos básicos em SQL, exemplificar as diferentes A linguagem SQL pode ser utilizada para restrin-
funcionalidades, explicitar um exemplo prático que permita demonstrar a Controlo de gir a capacidade de o utilizador aceder, adicionar
utilidade e aplicabilidade da linguagem SQL no contexto dos cuidados acesso ou modificar dados. Desta forma fica protegido o
de saúde e, por fim, salientar algumas considerações relativas à seguran- acesso indevido a dados guardados
ça e privacidade de dados. A linguagem SQL pode ser usada para coordenar
Partilha de dados que são partilhados por vários utilizadores
dados de forma a não existirem interferências indesejá-
2 SQL: Structured Query Language
veis.
A linguagem SQL permite organizar, gerir e obter dados guardados A linguagem SQL permite a definição de crité-
numa base de dados. Ou seja, através da utilização da linguagem SQL, Integridade de
rios de integridade, protegendo assim os dados
esta interage com um Sistema de Gestão de Base de Dados (SGBD), dados
armazenados
permitindo o acesso aos dados aí guardados (Oppel & Sheldon, 2009).
Ao contrário de outras linguagens, SQL não é particularmente estrutura- Perante a necessidade de obter dados, o pedido em linguagem SQL é
da especialmente quando comparada a linguagens como C ou Java. No submetido ao SGBD que processa este pedido e retorna os dados solici-
entanto, apesar de algumas inconsistências apresenta-se como uma tados ao utilizador. O processo de solicitar dados, de uma base de dados,
linguagem de fácil aprendizagem e com claro valor para ser usada nas e de os receber denomina-se de database query (Brookshear, 2012).
bases de dados relacionais. Alguns dos fatores mais relevantes para o sucesso e utilização dissemi-
Uma das mais valias da linguagem SQL prende-se com o facto de se nadas de SQL, são: a portabilidade entre sistemas, a definição de SQL
assemelhar a frases que podem ser mais facilmente interpretadas fazendo standards, a base relacional, a potencialidade para consultar dados ad
com que seja mais intuitivo interpretar e aprender a linguagem (Groff & hoc e a visualização de dados cuja interpretação é mais intuitiva (Groff
Weinberg, 1999). & Weinberg, 1999).
Nos dias de hoje, podemos dizer que SQL é uma sublinguagem dado que
Assim sendo, podemos afirmar que a linguagem SQL pode ser utilizada frequentemente se utiliza em combinação com outro tipo de linguagem,
para várias funções disponibilizadas pelos SGBD aos seus utilizadores. como C+ e Java, entre outros (Oppel & Sheldon, 2009).
Linguagem 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

3.2.4 Delete 3.4.1 Commit


DELETE é uma instrução que remove tuplos de uma relação. Inclui uma A instrução COMMIT é utilizada para confirmar uma transação na base
instrução WHERE, a partir da qual são selecionados os tuplos que irão de dados, sendo que após esta ter sido realizada, todas as transações
ser removidos. Quando se utiliza esta instrução deveremos ter em aten- tornam-se permanentes (Beaulieu, 2009).
ção a integridade referencial visto que, não poderemos apagar um tuplo
que se refere a uma chave estrangeira de outros tuplos da base de dados. 3.4.2 Rollback
Para impedir que tal aconteça podemos utilizar duas instruções, a
Instrução utilizada quando algo inesperado acontece e não permite
RESTRICT cujo comando DELETE será recusado se existirem referên-
terminar a transação que foi iniciada. O ROLLBACK anula todas as
cias à tupla que pretendemos excluir ou a CASCADE, em que as tuplas
alterações realizadas desde que a transação começou (Beaulieu, 2009).
que se encontram relacionadas com a tupla que pretendemos eliminar
também são eliminadas (Elmasri & Navathe, 2007). Exemplo utilizando
a tabela referenciada anteriormente: 3.4.3 Savepoint
O SAVEPOINT é utilizado como um ponto de salvaguarda dentro de
DELETE FROM Produtos WHERE ID=2
uma transação, ou seja, um ponto para qual a transação deverá ser rever-
tida caso algo aconteça após esta ter sido iniciada. É utilizado quando se
Tabela 5. Tabela ilustrativa da utilização da instrução DELETE pretende reverter apenas uma parte da transação (Beaulieu, 2009).

ID Nome Preço Quantidade 4 Query


1 Produto A 10 7
3 Produto C 20 18 SQL queries são instruções que permitem aos utilizadores consultarem
dados armazenados numa base de dados. Apesar de uma query ser
expressa em SQL de forma imperativa, na verdade, estas são descrições
3.3 Data Control Language de informação que se pretende obter, não um conjunto de atividades que
As operações associadas a este subconjunto da linguagem SQL, permi- devem ser realizadas com uma determinada ordem. Assim, o SQL permi-
tem controlar quem ou o quê tem acesso a determinados objetos numa te que os utilizadores, em vez de desenvolverem algoritmos para mani-
base de dados (estes tanto podem ser pessoas como aplicações), sendo pular relações, basta descreverem a informação que desejam obter (Bro-
que é possível definir quem consegue visualizar uma informação especí- okshear, Brylow 2015). Portanto, apesar de ser o utilizador a definir os
fica e quem tem permissão para a alterar. As instruções GRANT e inputs e os outputs que necessita, a forma como estes comandos são
REVOKE são as mais utilizadas (Oppel & Sheldon, 2009). executados é definido pelo otimizador da base de dados que, a partir da
query e das tabelas e índices disponíveis, define qual o caminho mais
3.3.1 Grant eficiente para a execução da query. Contudo, a maior parte dos otimiza-
dores de base de dados permite que o utilizador o “influencie”, como por
Utilizada para conceder permissões, principalmente através de instruções
exemplo, sugerindo que um determinado índice deva ser utilizado (Bro-
do tipo SELECT, INSERT, UPDATE e DELETE (Elmasri & Navathe,
okshear, Brylow 2015).
2007). No último exemplo está explicitado que, para além da conceção
da permissão de SELECT, o utilizador consegue dar esta mesma permis-
são a outros utilizadores: 4.1 Data Query Language
GRANT SELECT ON Produto TO utilizador
A sublinguagem mais diretamente relacionada com as SQL queries é a
GRANT INSERT, DELETE ON Produtos TO utilizador Data Query Language (DQL). Assim, esta é utilizada para consultar
GRANT SELECT ON Produtos TO utilizador WITH GRANT dados numa base de dados, sendo que os comandos mais comuns são
OPTION
SELECT, FROM, WHERE. GROUP BY, HAVING e ORDER BY. As
únicas expressões obrigatórias são a SELECT e a FROM, sendo que as
3.3.2 Revoke restantes são utilizadas dependendo dos dados que o utilizador pretende
Nos casos em que o objetivo é atribuir uma permissão de forma temporá- obter (Oppel & Sheldon, 2009).
ria, por exemplo, quando queremos dar uma permissão para um utiliza-
dor realizar uma determina tarefa e, quando esta estiver terminada, retirar 4.1.1 Select
a permissão, podemos fazê-lo através da permissão REVOKE (Elmasri
Instrução utilizada para obter informação de uma base de dados. É
& Navathe, 2007):
possível nomear quais os atributos onde queremos obter a informação,
REVOKE SELECT, DELETE ON Produtos FROM utilizador contudo, também poderá ser utilizado o asterisco (*). Dessa forma
selecionamos todos os atributos e não apenas as que foram nomeadas.
3.4 Transactional Contral Language Seguem alguns exemplos (Elmasri & Navathe, 2007):
SELECT atributo
Este tipo de sublinguagem é utilizado para gerir transações na base de
SELECT atributo1, atributo2, atributo3
dados. Uma transação consiste numa sequência de uma ou mais opera-
SELECT *
ções que são tratadas como uma unidade lógica de trabalho, ou seja,
numa lógica de “all or none of the statements succeed” (Beaulieu, 2009).
4.1.2 From
Linguagem SQL

Esta instrução especifica quais as tabelas onde se deve ir procurar a


informação especificada na instrução SELECT (Elmasri & Navathe,
2007):
SELECT Preço FROM Produtos
4.1.4 Having
Esta instrução é empregue juntamente com o GROUP BY, permitindo
filtrar os resultados obtidos através de uma query, à semelhança do que
Tabela 6. Tabela ilustrativa da utilização da instrução SELECT acontece com o comando WHERE.
A principal diferença entre estes é que, enquanto o WHERE filtra antes
Preço da pesquisa na base de dados ocorrer, o HAVING só realiza esse proces-
10 so à posteriori. Também é possível associar esta instrução a funções de
30 agregação, tal como com a instrução GROUP BY (Elmasri & Navathe,
20
2007):
SELECT Nome, SUM(Quantidade) AS Quantidade_Total FROM
4.1.3 Where Produtos GROUP BY Nome HAVING Sum(Quantidade)<30
Este comando permite restringir a informação que pretendemos obter da
base de dados, na medida em que possibilita a inserção de condições
para associar à query. Esta instrução é associada a operadores (=, <, <=, Tabela 9. Tabela ilustrativa da utilização da instrução GROUP BY e
>, >= e <>) que permitem a criação de condições (Elmasri & Navathe, HAVING
2007):
SELECT Nome FROM Produtos WHERE Preço>15 ID Nome Quantidade_Total
1 Produto A 22
3 Produto C 23
Tabela 7. Tabela ilustrativa da utilização da instrução WHERE
4.1.5 Order By
Nome A ORDER BY é utilizada para organizar os tuplos que resultam de uma
Produto B query. A ordem pré-definida é a ordem ascendente, contudo, é possível
Produto C especificar com DESC se o pretendido for uma ordem descendente
(Elmasri & Navathe, 2007):
SELECT ID, Nome, Quantidade
4.1.4 Group by
FROM Produtos
Esta instrução é utilizada quando se pretende agrupar os resultados de ORDER BY Quantidade
uma pesquisa, com base nos valores de uma ou mais colunas (Elmasri &
Navathe, 2007), sendo que os grupos especificados neste comando
deverão estar previamente mencionados na instrução SELECT. Para Tabela 10. Tabela ilustrativa da utilização da instrução ORDER BY
além disso, a GROUP BY pode ter funções de agregação associadas
(AVG, SUM, COUN), sendo que estas tanto podem estar nomeadas ID Nome Quantidade
juntamente com o SELECT como com o GROUP BY (Elmasri & Nava- 5 Produto B 1
the, 2007): 6 Produto C 5
1 Produto A 7
4 Produto A 15
Tabela 7. Tabela inicial 3 Produto C 18
2 Produto B 30

ID Nome Preço Quantidade


1 Produto A 10 7 4.1.6 Join
2 Produto B 30 30 Instrução utilizada para combinar dados de duas ou mais tabelas. Ex-
3 Produto C 20 18 istem diferentes tipos de JOIN, incluindo o INNER JOIN, LEFT JOIN,
4 Produto A 10 15
RIGHT JOIN e FULL JOIN (Beaulieu, 2009).
5 Produto B 30 1
6 Produto C 20 5
 O INNER JOIN devolve uma tabela com os registos das tabe-
las utilizadas que têm correspondência entre si.
SELECT Nome, SUM(Quantidade) AS Quantidade_Total FROM  O LEFT JOIN devolve todos os registos da tabela que se en-
Produtos GROUP BY Nome contra à esquerda (ou seja, a primeira tabela que foi listada) e os registos
que apresentam correspondência da tabela da direita. Se não existirem
correspondência, as colunas são preenchidas com valores nulos.
Tabela 8. Tabela ilustrativa da utilização da instrução GROUP BY  O RIGHT JOIN é o mesmo processo do que aquele que foi
explicitado no LEFT JOIN, diferindo que em vez da tabela da esquerda
ID Nome Quantidade_Total como referência é utilizada a tabela da direita.
1 Produto A 22  O FULL JOIN devolve todos os registos das tabelas nomea-
2 Produto B 31 das e preenche com NULL quando não existem correspondências.
3 Produto C 23
Linguagem SQL

Fig. 3. Função INSERT


Apresentamos, então, a seguinte tabela relacional que contem informa-
ção relativa ao nome do dador (PATIENT_NAME), número do processo
Tabela 11. Tabela ilustrativa da utilização da instrução FULL JOIN (MRN), data de nascimento (DATE_OF_BIRTH) e grupo sanguíneo
(ABO_GROUP).
ID Tabela A Tabela B
1 Valor 1 NULL
2 Valor 2 Valor 2 DONOR_TABLE
NULL NULL Valor 3

5 SQL: Aplicação prática


Com base nos conceitos teóricos já abordados, iremos proceder à explici-
tação de um exemplo em que a linguagem SQL pode ser aplicada no
contexto da saúde de forma a facilitar o acesso e visualização de dados.
Iremos considerar para efeitos deste exercício uma base de dados onde se
encontra registada a informação de dadores de sangue.

TABELA_DISTRITO Fig. 4. Display exemplificativo dos dados introduzidos


 MRN
 CENTRO_DE_DOAÇÃO TABELA_SNS
 MRN Perante situações de baixa disponibilidade ou inexistência de unidades
TABELA_CONTACTO  CSP_ID de sangue de determinado tipo, por eventos que podem ir desde a dimi-
 MRN nuição do número de dádivas até eventos de emergência e catástrofe; é
 CONTACTO_TLM necessário identificar dadores do grupo sanguíneo O+ para que sejam
contactados.
Utilizaremos SELECT para indicar a nossa intenção de selecionar;
Fig. 1. Exemplo simplificado do conjunto de tabelas existentes na base de dados.
identificamos onde se localiza esta informação, FROM; e estabelecemos
a característica que estamos a procurar, WHERE.
Recorrendo a linguagem SQL iremos introduzir os dados de forma a
criar uma tabela relacional.
Algumas considerações prévias: escolhemos a denominação da tabela
‘DONORS’, definimos as diferentes colunas através de identificadores
únicos e definimos o limite de caracteres associado a cada coluna –
definido por VARCHAR(#).
Fig. 5. Query para obter informação sobre todos os dadores O+
Utilizamos a função CREATE TABLE definido como um statement da
categoria de Data Definition Language (DDL).
Desta forma será obtida a informação dos dadores a serem contactados.

Fig. 2. Função CREATE TABLE

Fig. 6. Display da informação dos dadores cujo ABO_GROUP é O+.

Posteriormente, queremos adicionar dados e para isso procedemos à


introdução dos dados recorrendo ao statement INSERT, pertencente à Após obtenção do MRN dos dadores a serem contactados queremos
categoria de Data Manipulation Language (DML). obter os seus respetivos números de telemóvel. Portanto, queremos
selecionar o contacto de telemóvel, da TABELA_CONTACTO onde o
MRN é 00001 e 00004.
Linguagem SQL

Fig. 7. Query para obter informação do contacto telefónico Bibliografia

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,

Fig. 8. Display da informação de contacto telefónico Pearson.


Groff, J., & Weinberg, P. (1999). SQL: The complete Reference
(Osborne/McGraw-Hill, Ed.). Brandon A. Nordin.
6 Segurança de dados Linkedin. (2023). Como você protege suas consultas e dados SQL? Retrieved
Uma base de dados tem de garantir o acesso aos dados, a quem deles 17/10/2023 from https://www.linkedin.com/advice/0/how-do-you-
necessita e tem permissão para o fazer, enquanto impede acessos indevi- secure-your-sql-queries-data
dos, daqueles que não os devem visualizar ou alterar (Beaulieu, 2009; Oppel, A., & Sheldon, R. (2009). SQL: A Beginner's Guide (J. Seymour, Ed. 3rd
Oppel & Sheldon, 2009). Em SQL é possível conceder e revogar privilé-
ed.). McGraw-Hill. https://doi.org/10.1036/0071548645
gios, assim como conceder e revogar funções (roles) (Oppel & Sheldon,
Programiz. Online SQL Editor. Retrieved 21/10/2023 from
2009).
https://www.programiz.com/sql/online-compiler/
Os identificadores de autorização providenciam um suporte de segurança
para a base de dados (Oppel & Sheldon, 2009). Esses identificadores ProjectPro. (2023, 12/10/2023). 7 Real-World Applications of SQL Across

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.

Você também pode gostar