SGBDs e suas linguagens internas
Os Sistemas de Gerenciamento de Banco de Dados Relacionais (SGBDs) podem desempenhar um papel significativo em diversos contextos. Amplamente utilizados para organizar dados de maneira eficiente, esses softwares se destacam por armazenar e organizar os dados em tabelas inter-relacionadas, baseadas no modelo relacional. Assim, cada tabela é composta por linhas (registros) e colunas (atributos), e as relações entre tabelas são estabelecidas através de chaves primárias e estrangeiras.
Para que essa estrutura robusta ofereça uma base sólida para a gestão eficaz das informações, os SGBDs utilizam a linguagem SQL (Structured Query Language) para realizar consultas e manipulação de dados, oferecendo recursos como transações, controle de concorrência, integridade de dados e segurança. No entanto, mesmo sendo uma linguagem poderosa, ela possui limitações, como a ausência nativa da opção de se trabalhar com fluxo de controle, como o IF-ELSE, ou até mesmo a utilização de laços, tais como o FOR ou o WHILE.
Diante dessa questão, e com o objetivo de utilizar estes recursos que normalmente são disponibilizados em linguagens de programação (Python, Java, Javascript, entre outras), os SGBDs criaram suas próprias linguagens internas. Estas são reconhecidas como extensões da linguagem SQL.
Neste artigo, vamos explorar as linguagens internas de quatro SGBDs relacionais: MySQL, Oracle, Postgresql, SQL Server, entendendo as particularidades dessas linguagens e compreendendo as nuances que tornam os SGBDs essenciais para o cenário de gerenciamento de dados.
Vamos lá?
Linguagens internas
Linguagens internas de Sistemas de Gerenciamento de Banco de Dados (SGBDs) referem-se às linguagens de programação específicas utilizadas dentro desses sistemas para definir, manipular, controlar e acessar dados. Estas linguagens são fundamentais para interagir com o banco de dados, permitindo realizar uma variedade de operações, como consulta, inserção, atualização e exclusão de dados.
As características principais das linguagens internas de SGBDs incluem:
Manipulação de Dados: Permitem realizar operações CRUD (Create, Read, Update, Delete) nos dados armazenados no banco de dados.
Definição de Dados: Usadas para definir a estrutura dos dados, como criar, modificar ou excluir tabelas e relações.
Controle de Transações: Proporcionam comandos para gerenciar transações, garantindo a integridade e a consistência dos dados.
Procedimentos Armazenados e Funções: Permitem escrever lógicas complexas que são armazenadas no banco de dados e podem ser reutilizadas.
Controle de Acesso: Oferecem comandos para gerenciar o acesso aos dados, definindo quem pode ver ou modificar os dados.
Exemplos comuns dessas linguagens incluem SQL (usada em muitos SGBDs relacionais), PL/SQL (usada no Oracle), T-SQL (usada no SQL Server), e PL/pgSQL (usada no PostgreSQL). Cada SGBD pode ter sua própria variação ou extensão de linguagem, oferecendo funcionalidades únicas para atender às necessidades específicas de gestão de dados.
Como mencionado, os SGBDs utilizam a linguagem SQL (Structured Query Language) para realizar a consulta e manipulação de dados. Esses sistemas são ideais para aplicações que requerem um forte esquema de dados e operações complexas de consulta, como em sistemas empresariais, financeiros, administrativos, e em muitos outros contextos que necessitam de armazenamento de dados estruturados e confiáveis.
Desse modo, o SQL é considerado uma linguagem declarativa onde você não precisa ter conhecimentos em programação para utilizá-la. Isso se deve ao fato de que as linguagens internas dos Sistemas de Gerenciamento de Banco de Dados (SGBDs) são ferramentas de programação incorporadas, projetadas para executar operações específicas nos bancos de dados. Assim, elas permitem a manipulação eficiente de dados, abrangendo consultas, inserções, atualizações e exclusões. Essas linguagens, fundamentadas na extensão da linguagem SQL, tornam a interação com os bancos de dados mais eficaz e adaptável às necessidades dos usuários.
Linguagens de consulta x Linguagens procedurais
Linguagens de consulta e linguagens procedurais são dois tipos de linguagens usadas em Sistemas de Gerenciamento de Banco de Dados (SGBDs), cada uma com propósitos e características distintas. Perceba essas particularidades na tabela a seguir:
Linguagens | Abordagem | Característica |
---|---|---|
Linguagens de Consulta | Declarativas | O usuário diz o que deseja, |
sem se preocupar com o como. | ||
Linguagens Procedurais | Procedurais | O usuário fornece passo a |
passo como alcançar o | ||
resultado desejado. |
Cada abordagem oferece flexibilidade e eficácia em contextos de desenvolvimento específicos, destacando a importância de escolher a ferramenta adequada para uma respectiva tarefa. Como se pode analisar na tabela, as linguagens de consulta e linguagens procedurais desempenham papéis cruciais no desenvolvimento de software, proporcionando abordagens distintas de acordo com a intenção de cada usuário ao gerenciar os dados.
Neste momento, vamos nos aprofundar na compreensão detalhada de cada uma dessas linguagens, explorando com o objetivo de reconhecer as nuances que as diferenciam.
Linguagens de Consulta
São usadas principalmente para consultar e recuperar dados de bancos de dados. Elas permitem aos usuários especificar o que desejam obter, sem necessariamente descrever como obter esses dados.
Exemplo: SQL (Structured Query Language) é a linguagem de consulta mais comum, utilizada para interagir com bancos de dados relacionais.
Características:
- Focadas em operações de leitura e manipulação de dados (seleção, inserção, atualização, exclusão).
- Menos complexas e mais fáceis de aprender para operações básicas.
Linguagens Procedurais
São usadas para escrever procedimentos mais complexos em um banco de dados, como funções e procedimentos armazenados. Elas permitem aos usuários definir exatamente como realizar uma série de operações, muitas vezes envolvendo lógica condicional, loops e controle de fluxo.
Exemplos:
- PL/SQL (Oracle),
- T-SQL (SQL Server),
- PL/pgSQL (PostgreSQL).
Características:
- Suportam construções típicas de linguagens de programação ( loops e condicionais).
- Mais adequadas para tarefas complexas e operações que requerem lógica de negócios no lado do servidor.
SGBDs
Cada um dos SGBDs apresentados a seguir tem características e usos específicos, adequados para diferentes necessidades e cenários. Oracle e SQL Server são frequentemente escolhidos para aplicações empresariais grandes e complexas, enquanto PostgreSQL e MySQL são populares em aplicações web e projetos open-source.
Oracle
Conhecido por sua robustez, escalabilidade e recursos avançados, como suporte a transações complexas, alta segurança e grande capacidade de armazenamento, o SGDB Oracle destaca-se por ser amplamente utilizado em grandes corporações e aplicações críticas. O SGDB Oracle criou a sua própria linguagem interna em meados de 1989, a PL/SQL (Procedural Language/Structured Query Language), consolidando ainda mais sua posição como uma solução abrangente e poderosa no gerenciamento de bancos de dados.
A PL/SQL é uma linguagem estruturada em blocos de código e, assim como a SQL, ela aceita diversos tipos de dados, como numéricos, strings, datas. Além disso, também é possível trabalhar com alguns outros recursos, como os cursores.
Um bloco PL/SQL é definido pelas palavras-chave DECLARE, BEGIN, EXCEPTION e END, que dividem o bloco em três seções:
DECLARE: Área de declaração de variáveis, constantes e outros elementos de código, que podem ser usados dentro desse bloco.
BEGIN: Instruções que são executadas quando o bloco é executado.
EXCEPTION: Área disponível para se trabalhar com quaisquer exceções que são geradas quando a seção com as instruções(BEGIN) é executada.
Sendo assim, para criar um bloco de código PL/SQL, apenas a seção executável é necessária:
BEGIN
instruções executáveis
END;
Estes blocos são considerados anônimos dentro da linguagem PL/SQL, pois não criamos nomes para eles. Porém, também existem os blocos de códigos nomeados, conhecidos como Functions e Procedures.
Nesse sentido, por exemplo, para criar uma procedure, podemos utilizar o seguinte código:
CREATE PROCEDURE nome_da_procedure
IS
Área de declaração das variáveis
BEGIN
instruções executáveis
END;
Já por outro lado, para criar uma function, podemos utilizar o seguinte código:
CREATE FUNCTION nome_da_function
RETURN tipo de retorno da função
IS
Área de declaração das variáveis
BEGIN
instruções executáveis
RETURN retorno da função
END;
Portanto, diferentemente dos blocos anônimos, os nomeados são armazenados no banco de dados e podem ser acessados em diversos momentos após a sua criação.
PostgreSQL
Conhecido como uma solução de código aberto, evidenciando sua natureza Open-source, suporta recursos avançados de banco de dados como tipos de dados complexos, herança de tabelas, e funções em várias linguagens de programação (PL/pgSQL, Python, Perl, etc.). Sua extensibilidade é notável e o torna uma escolha robusta e adaptável para diversas aplicações.
A PL/pgSQL, ou SQL Procedural Language, é a linguagem interna criada pelo postgreSQL, instalada por padrão a partir da sua versão 10. Esta linguagem é um módulo carregável, o que significa que o DBA pode optar por removê-la quando necessário.
Assim como a PL/SQL do Oracle, a PL/pgSQL é uma linguagem estruturada em blocos, que aceita diversos tipos de dados, declarações de variáveis, atribuições, loops e condicionais.
Os blocos na linguagem PL/pgSQL possuem a seguinte estrutura básica:
DECLARE
Área de declaração das variáveis
BEGIN
instruções executáveis
END ;
Com a PL/pgSQL, também podemos criar blocos dentro de blocos:
DECLARE
Área de declaração das variáveis
BEGIN
DECLARE
Área de declaração das variáveis
BEGIN
instruções executáveis
END ;
END ;
Já para criar uma function com a linguagem PL/pgSQL, podemos utilizar o seguinte código:
CREATE FUNCTION nome_da_function(parametros)
RETURNS tipo de retorno da função
DECLARE
Área de declaração das variáveis
BEGIN
instruções executáveis
RETURN retorno da função
END;
LINGUAGEM plpgsql;
Por fim, a criação de uma procedure na linguagem PL/pgSQL é bem semelhante a uma function. A grande diferença é que as procedures não tem retorno:
CREATE PROCEDURE nome_da_procedure(parametros)
DECLARE
Área de declaração das variáveis
BEGIN
instruções executáveis
END;
SQL Server
Desenvolvido pela Microsoft, destaca-se pela sua eficiente integração com produtos da empresa, garantindo solidez nas áreas de segurança, ferramentas de BI e análise de dados. Além disso, oferece também soluções para ambientes de nuvem com o Azure SQL Database.
Tem como linguagem interna a T-SQL(Transact-SQL), que é uma linguagem de consulta estruturada em transações dividida em lotes, que são coleções de uma ou mais instruções enviadas ao SQL Server. A T-SQL suporta declaração de variáveis, processamento de cadeia de caracteres e dados, loops, condicionais e controle de transação.
Grande parte dos comandos T-SQL são compatíveis com o padrão ANSI seguido pela linguagem SQL. Um programa em T-SQL, normalmente, ao iniciar com uma instrução BEGIN, terminará com uma instrução END:
BEGIN
instruções executáveis
END;
Para identificar o final de um o lote, o SQL Server Management Studio (SSMS) utiliza a palavra GO
CREATE NEW <view_name>
AS ...
GO
CREATE PROCEDURE <procedure_name>
AS ...
GO
Pensando em termos de sintaxe básica, é necessário seguir o seguinte passo para criar uma function com T-SQL:
CREATE FUNCTION nome_da_function(parametros)
RETURNS tipo de retorno da função
AS
BEGIN
instruções executáveis
RETURN retorno da função
END;
A sintaxe básica para criar uma procedure com T-SQL é:
CREATE PROCEDURE nome_da_procedure
AS
BEGIN
instruções executáveis
END;
MySQL
O SGDB MySQL, que faz parte da empresa Oracle Corporation, é Open-source e popular em aplicações web devido à sua facilidade de uso, velocidade e compatibilidade com diversas plataformas.
Diferente dos outros SGBDs, não possui especificamente uma linguagem interna; apenas são chamadas de instruções CREATE PROCEDURE e CREATE FUNCTION.
Assim como em outros SGBDs, dentro dessas instruções, podemos trabalhar com diversos tipos de dados, declaração de variáveis, loops e condicionais.
Para criar uma function no SGBD MySQL, executamos o código abaixo:
CREATE FUNCTION nome_da_function(parametros)
RETURNS tipo de retorno da função
BEGIN
Área de declaração das variáveis
Instruções executáveis
instruções executáveis
RETURN retorno da função
END;
Para criar uma procedure, precisamos executar o seguinte código:
DELIMITER $$
CREATE PROCEDURE nome_da_procedure(parametros)
BEGIN
Área de declaração das variáveis
Instruções executáveis
END $$
DELIMITER ;
Importante destacar que diferente dos outros SGBDs, a área de declaração de variáveis, tanto nas functions, como nas procedures, ficam dentro do bloco de instruções executáveis.
Conclusão
Neste artigo, exploramos as linguagens internas dos Sistemas de Gerenciamento de Banco de Dados (SGBDs), abrangendo tanto as linguagens de consulta quanto as linguagens procedurais. Vimos como cada tipo de linguagem desempenha um papel fundamental no manuseio e na gestão eficiente de dados em ambientes de banco de dados.
As linguagens de consulta, como o SQL, são essenciais para a realização de operações básicas de leitura e manipulação de dados. Sua natureza declarativa simplifica a interação com grandes conjuntos de dados, permitindo aos usuários especificar o que desejam obter, sem se preocupar com os detalhes de como os dados são processados internamente.
Por outro lado, as linguagens procedurais, como PL/SQL, T-SQL e PL/pgSQL, oferecem capacidades mais avançadas. Elas permitem aos usuários definir procedimentos complexos, controlar o fluxo de operações e implementar lógicas de negócios diretamente dentro do banco de dados. Isso é crucial para tarefas que exigem mais do que simples consultas e manipulações de dados, abrangendo desde a automação de processos até a garantia de integridade e segurança dos dados.
Ao entender essas linguagens e suas aplicações, os profissionais de banco de dados podem aproveitar ao máximo as capacidades dos SGBDs, otimizando o desempenho, garantindo a segurança dos dados e desenvolvendo soluções mais eficientes e robustas para o gerenciamento de dados.
A compreensão das nuances em SGBDs e suas linguagens internas é um componente chave para qualquer desenvolvedor, administrador de banco de dados ou analista de dados que busca aprofundar suas habilidades no vasto mundo da gestão de dados.
Se este tema despertou o seu interesse e você deseja explorar ainda mais sobre esse assunto, saiba que pode aprender um pouco mais sobre as linguagens internas de cada SGBD apresentada neste artigo Para isso, confira as seguintes formações e conteúdos disponíveis aqui da Alura:
- SGBD’s Relacionais
- Formação conhecendo SQL
- Formação de SQL com MySQL Server da Oracle
- Formação de Consultas com Oracle Database
- Formação de Microsoft SQL Server 2022
- Formação de SQL com PostgreSQL
Créditos
- Criação Textual: Danielle Oliveira
- Produção técnica: Daniel Siqueira
- Produção didática: Cláudia Machado
- Designer gráfico: Alysson Manso
- Apoio: Rômulo Henrique