Voltar para a lista de artigos Artigos
8 minutos de leitura

SQL é uma linguagem de programação?

SQL é uma ferramenta poderosa para a comunicação com sistemas de gerenciamento de bancos de dados. Quando você escreve consultas SQL, você dá instruções ao computador, e ele executa estas instruções - soa como programação. Entretanto, não se pode construir uma aplicação com SQL como se pode com Python ou Java. Então, SQL é uma linguagem de programação?

O que é SQL?

Vamos começar com a definição básica. SQL, ou Structured Query Language, é uma linguagem utilizada para a comunicação com bancos de dados relacionais. Apesar da importância deste papel, esta é uma tarefa bastante estreita em comparação com o que Python, Java, C++, etc. são utilizados. Naturalmente, há um longo debate em torno da questão - SQL é uma linguagem de programação? Você não pode criar uma aplicação ou construir uma página web com SQL, mas definitivamente parece programação quando você usa SQL para falar com seus bancos de dados.

Para abordar esta questão controversa, sugiro começar com o reconhecimento das diferenças entre vários conceitos-chave. Não teremos problemas em responder se SQL for uma linguagem de programação depois de definirmos o termo "linguagem de programação" e termos uma clara compreensão das diferenças entre as linguagens de programação de propósito geral e as linguagens de programação de domínio específico.

Linguagem de Programação vs. Linguagem de Programação de Propósito Geral

De acordo com a Webopedia, "uma linguagem de programação é um vocabulário e um conjunto de regras gramaticais para instruir um computador ou dispositivo de computação a realizar tarefas específicas". SQL é definitivamente uma linguagem de programação dada esta definição.

Ela tem certo vocabulário e uma sintaxe rigorosa que deve ser seguida. Por exemplo, todas as instruções SQL começam com palavras-chave específicas (por exemplo, SELECT, INSERT, CREATE, UPDATE, DELETE) e terminam com um ponto-e-vírgula. A ordem das cláusulas também é importante. Por exemplo, GROUP BY deve seguir a cláusula WHERE e preceder a cláusula ORDER BY:

SELECT column_one, column_two
FROM table
WHERE column_one > 2000
GROUP BY column_one, column_two
ORDER BY column_one;

Além disso, mensagens que são escritas usando este vocabulário e sintaxe instruem seu computador a realizar tarefas específicas, como acessar certos dados no banco de dados; criar, atualizar ou apagar tabelas no banco de dados; etc.

Então por que temos toda esta controvérsia em torno do reconhecimento do SQL como uma linguagem de programação? O problema é que as pessoas muitas vezes significam "linguagem de programação de propósito geral" quando dizem "linguagem de programação". E há uma grande diferença entre estes termos.

A Wikipedia diz que "uma linguagem de programação de propósito geral é uma linguagem de programação projetada para ser usada para escrever software nos mais variados domínios de aplicação". Basicamente, você pode criar todos os tipos de aplicações usando uma linguagem de programação de propósito geral, incluindo aplicações desktop, móveis ou web. As linguagens de programação mais utilizadas nesta categoria incluem Java, JavaScript, Python, C++, e Ruby.

Em contraste com estas linguagens, SQL tem um papel de nicho na comunicação com bancos de dados relacionais. Assim, não se pode construir uma aplicação usando apenas SQL. Isto nos leva à conclusão de que SQL não é uma linguagem de programação de propósito geral.

SQL como uma linguagem de domínio específico

Agora sabemos que SQL satisfaz a definição de uma linguagem de programação, mas não de uma linguagem de programação de propósito geral. Então, aonde pertence SQL?

Além das linguagens de programação de propósito geral, existem também linguagens de domínio específico (DSLs). A Wikipedia define uma linguagem específica de domínio como "uma linguagem de computador especializada para um domínio de aplicação particular". HTML, ou Hypertext Markup Language, é uma das mais populares linguagens específicas de domínio usadas para estruturar páginas web.

Da mesma forma, SQL, com seu domínio específico de aplicação, pode ser definida como uma linguagem específica de domínio. A Structured Query Language é uma linguagem altamente direcionada para "falar" com bancos de dados. Apesar de ser uma ferramenta eficaz e poderosa para gerenciamento e acesso a dados, SQL tem uso limitado em comparação com as linguagens de programação de uso geral. No entanto, este inconveniente traz certos benefícios.

Devido a seu domínio de aplicação restrito, SQL é geralmente mais fácil de aprender do que uma linguagem de programação de propósito geral. Você não precisa de uma formação em informática para começar com a SQL para Iniciantes curso. Além disso, mesmo quando se começa com conhecimento zero de programação, você pode se tornar um especialista em SQL em poucos meses após fazer o SQL de A a Z pista.

SQL e Turing Completeness

Se você ainda não está convencido de que SQL é uma linguagem de programação, aqui está outro ponto a considerar.

Para avaliar quão "poderosa" é uma certa linguagem de programação, os cientistas da computação muitas vezes usam o conceito de Turing completude. De acordo com a definição da Wikipedia, uma linguagem de programação "é dita como Turing completa ou computacionalmente universal se puder ser usada para simular qualquer máquina Turing". Em termos simples, uma máquina Turing é uma máquina hipotética, nomeada pelo cientista da computação Alan Turing, que pode pegar qualquer programa de qualquer complexidade e executá-lo.

Portanto, poderíamos dizer que SQL é Turing completo se qualquer programa que possa ser escrito para ser executado em uma máquina Turing também pode ser escrito em SQL. E de fato, SQL, com a adição de consultas recursivas, satisfaz esta condição.

Se estiver interessado, você pode saber mais sobre as consultas recursivas SQL neste guia abrangente. Você também pode aprender como criar consultas recursivas ou expressões comuns de tabela (CTEs) em nosso Consultas Recursivas curso.

Agora você sabe que SQL é Turing completo e, portanto, computacionalmente universal. Mas isto ainda não é o fim da história...

SQL e Linguagens de Procedimentos

O SQL pode ser estendido com linguagens de procedimento que permitem aos usuários definir suas próprias funções e procedimentos. Portanto, as linguagens de procedimento são linguagens de programação em ambos os sentidos do termo.

Todos os sistemas de gerenciamento de banco de dados (SGBD) aceitam um ou mais dialetos de linguagens procedimentais. Vamos dar uma olhada em alguns exemplos.

PL/SQL, ou linguagem de procedimentos para SQL, é uma extensão para SQL no sistema de gerenciamento de banco de dados Oracle. Similar às linguagens de programação de propósito geral, PL/SQL inclui elementos como condições e loops. Com PL/SQL, você também pode declarar constantes, variáveis, tipos de variáveis, procedimentos e funções.

PL/pgSQL, ou Procedureural Language/PostgreSQL, é uma linguagem de procedimento suportada pelo sistema de gerenciamento de banco de dados objeto-relacional PostgreSQL. É muito semelhante ao PL/SQL da Oracle e permite loops e condições, bem como funções definidas pelo usuário. Você pode aprender como criar funções definidas pelo usuário no PostgreSQL com nosso curso abrangente.

O MySQL é um sistema de gerenciamento de banco de dados que não tem um nome separado para extensões SQL que permitem a criação de funções e procedimentos, mas suporta esta funcionalidade. O MySQL tem CREATE PROCEDURE e declarações CREATE FUNCTION que criam rotinas armazenadas. Funções definidas pelo usuário também são suportadas no MySQL - elas são consideradas como funções armazenadas externamente.

Como você pode ver, SQL é uma ferramenta poderosa para gerenciamento e acesso aos dados. Ele pode lidar com enormes consultas analíticas com todos os tipos de dados. Mas, ele também pode ser usado para diversão! Leia sobre como desenhar uma árvore de Natal em SQL.

Está na hora de aprender SQL!

Agora você sabe que SQL é uma poderosa linguagem de programação que merece sua atenção. Embora a Structured Query Language já exista há décadas, ela ainda é a ferramenta de acesso e gerenciamento de dados em todos os tipos de aplicações modernas. Analistas de negócios, analistas de dados, cientistas de dados e muitas outras funções nas empresas de hoje em dia precisam de SQL para realizar seus trabalhos.

Exceto por sua aparente utilidade como uma linguagem específica de domínio, SQL também pode ser o primeiro passo para a programação e aprendizagem de uma linguagem de programação de propósito geral.

Você está entusiasmado sobre onde SQL pode levar sua carreira? Então, confira os seguintes cursos:

  • SQL para Iniciantes é uma introdução fácil de seguir às consultas SQL. Não é necessário ter experiência em ciência da computação!
  • SQL de A a Z é uma faixa projetada para estudantes ambiciosos e dedicados que estão prontos para passar de novatos completos, passando por tópicos intermediários e avançados, a um nível de guru SQL.
  • Escrever Funções Definidas pelo Usuário no PostgreSQL é para aqueles que se sentem confiantes com SQL e estão prontos para dominar a extensão processual de SQL para escrever funções definidas pelo usuário.

Obrigado por ler, e feliz aprendizado!

Resumo: Há um debate duradouro sobre o reconhecimento de SQL como uma linguagem de programação. Com SQL, você dá instruções a seu computador para realizar enormes consultas analíticas, o que parece ser programação. Entretanto, você não pode construir uma aplicação usando apenas SQL. Então, SQL é uma linguagem de programação? Saiba porque a resposta é definitivamente sim.