O SQL serve para criar bases de dados re­la­ci­o­nais e para realizar diversas operações em bases de dados já exis­ten­tes, incluindo consultas de dados. Trata-se de uma linguagem fun­da­men­tal no re­per­tó­rio padrão de fer­ra­men­tas para de­sen­vol­ve­do­res web, analistas de dados e in­ves­ti­ga­do­res. O SQL destaca-se pelas suas ca­rac­te­rís­ti­cas par­ti­cu­la­res quando comparado com outras lin­gua­gens de pro­gra­ma­ção, as quais são de­ta­lha­das a seguir.

O que é SQL?

SQL, cuja sigla significa «Struc­tu­red Query Language» (Linguagem de Consulta Es­tru­tu­rada em português), é utilizada para fazer consultas em bases de dados que contêm dados es­tru­tu­ra­dos ou re­la­ci­o­nais. É uma linguagem baseada na «Álgebra Re­la­ci­o­nal», uma teoria ma­te­má­tica que permite es­tru­tu­rar dados e calcular os re­sul­ta­dos das consultas. Muitas das ca­rac­te­rís­ti­cas dis­tin­ti­vas do SQL como linguagem de pro­gra­ma­ção derivam dessa teoria ma­te­má­tica. O SQL foi de­sen­vol­vido na década de 70 e atu­al­mente é a linguagem de pro­gra­ma­ção padrão para apli­ca­ções de bases de dados.

Um detalhe im­por­tante do SQL é que se trata de uma linguagem puramente de consulta ou pro­gra­ma­ção, não sendo um Sistema de Gestão de Bases de Dados (SGBD) completo. Alguns SGBDs populares que im­ple­men­tam o SQL são o MySQL, o Oracle SQL e o SQLite. No entanto, esses SGBDs costumam utilizar dialetos do SQL que podem in­cor­po­rar comandos adi­ci­o­nais ou apre­sen­tar variações.

SQL como linguagem de domínio es­pe­cí­fico e de­cla­ra­tiva

Em com­pa­ra­ção com a maioria das outras lin­gua­gens de pro­gra­ma­ção, o SQL destaca-se por ser uma linguagem es­pe­cí­fica de domínio (Domain-Specific Language, DSL). Ao contrário das lin­gua­gens de propósito geral (General Purpose Languages, GPL), que são versáteis e apli­cá­veis em diversas situações, o SQL é limitado apenas a bases de dados.

Além disso, o SQL é ca­rac­te­ri­zado como uma linguagem de pro­gra­ma­ção de­cla­ra­tiva. Ou seja, o pro­gra­ma­dor introduz o resultado desejado como comando e o sistema encarrega-se de executar as ações ne­ces­sá­rias para alcançar esse resultado. Existe também a pro­gra­ma­ção im­pe­ra­tiva, na qual o código define ex­pli­ci­ta­mente todos os passos a serem re­a­li­za­dos para atingir os objetivos.

Para que serve o SQL?

O SQL serve prin­ci­pal­mente como interface para interagir com Sistemas de Gestão de Bases de Dados Re­la­ci­o­nais (SGBDR). Uma base de dados re­la­ci­o­nal pode ser re­pre­sen­tada como uma tabela em que cada linha tem um conjunto pre­de­fi­nido de atributos pre­en­chi­dos com valores. O código SQL pode ser in­tro­du­zido por um ser humano através de uma interface baseada em texto ou pode ser in­tro­du­zido por um acesso API.

Vantagens e des­van­ta­gens do SQL

Vantagens do SQL

A principal vantagem do SQL reside na sua grande no­to­ri­e­dade e uso ge­ne­ra­li­zado. Desde a sua origem na década de 70, o SQL tem sido o padrão da indústria para apli­ca­ções de bases de dados. Por isso, é re­la­ti­va­mente fácil encontrar pro­gra­ma­do­res com ex­pe­ri­ên­cia em SQL, bem como in­te­gra­ções com outras tec­no­lo­gias e lin­gua­gens populares.

Além disso, o SQL tornou-se o padrão do setor por uma razão: a linguagem baseia-se numa base ma­te­má­tica sólida que permite um ar­ma­ze­na­mento ideal dos dados. No entanto, as bases de dados re­la­ci­o­nais exigem uma boa com­pre­en­são da tec­no­lo­gia e da teoria, bem como a ca­pa­ci­dade de modelar e planear. Agora, um esquema de base de dados bem concebido permite obter novas pers­pe­ti­vas dos dados através de consultas adequadas.

Des­van­ta­gens do SQL

Uma des­van­ta­gem inerente ao SQL e às bases de dados re­la­ci­o­nais em geral é a grande com­ple­xi­dade da sua tec­no­lo­gia. O SQL consiste em centenas de comandos e cláusulas, muitos deles es­pe­cí­fi­cos para cada aplicação, o que re­pre­senta um desafio sig­ni­fi­ca­tivo para aqueles que estão menos fa­mi­li­a­ri­za­dos.

Além disso, para criar a estrutura de uma base de dados re­la­ci­o­nal, é ne­ces­sá­rio assumir uma série de su­po­si­ções sobre os dados que serão ar­ma­ze­na­dos. O objetivo é garantir a qualidade dos dados ar­ma­ze­na­dos, mas essas su­po­si­ções também in­tro­du­zem uma série de li­mi­ta­ções que podem gerar problemas ir­re­ver­sí­veis se o esquema for mal projetado. Realizar al­te­ra­ções no esquema durante o fun­ci­o­na­mento da base de dados pode acarretar sérios problemas. Além dessa falta de fle­xi­bi­li­dade, dis­tri­buir ge­o­gra­fi­ca­mente um banco de dados SQL costuma ser muito difícil. Portanto, otimizar o de­sem­pe­nho de um banco de dados por meio da des­cen­tra­li­za­ção está longe de ser fácil.

Outra des­van­ta­gem do SQL é a sua in­com­pa­ti­bi­li­dade com a pro­gra­ma­ção orientada a objetos, uma me­to­do­lo­gia que ganha cada vez mais re­le­vân­cia. Na pro­gra­ma­ção orientada a objetos, os dados e o «com­por­ta­mento» (métodos) são en­cap­su­la­dos em objetos, que são herdados através de hi­e­rar­quias de classes. A abordagem re­la­ci­o­nal é com­ple­ta­mente diferente, uma vez que os dados podem estar dis­tri­buí­dos em várias tabelas e é im­pos­sí­vel modelar o com­por­ta­mento de um objeto. Portanto, trans­fe­rir os objetos 1:1 para es­tru­tu­ras de bases de dados re­la­ci­o­nais não é viável.

Al­ter­na­ti­vas ao SQL

Desde a sua criação, no início da revolução digital, o SQL não perdeu re­le­vân­cia. No entanto, nesse período, surgiram alguns esquemas al­ter­na­ti­vos que podem ser mais adequados para de­ter­mi­na­das apli­ca­ções.

Sistemas de Gestão de Bases de Dados Objeto-Re­la­ci­o­nais

Os Sistemas de Gestão de Bases de Dados Objeto-Re­la­ci­o­nais (Object–Re­la­ti­o­nal Database Ma­na­ge­ment System, ORDBMS), como o Post­greSQL , utilizam SQL como linguagem de consulta e, ao mesmo tempo, in­cor­po­ram conceitos es­sen­ci­ais da pro­gra­ma­ção orientada a objetos. As hi­e­rar­quias de objetos, a herança e o com­por­ta­mento dos objetos podem ser uti­li­za­dos sem a ne­ces­si­dade de ma­pe­a­men­tos objeto-re­la­ci­o­nais (Object-Re­la­ti­o­nal Mapping, ORM). A inclusão de dados compostos e per­so­na­li­za­dos reduz a com­ple­xi­dade dos esquemas e das consultas.

NoSQL

Os Sistemas de Gestão de Bases de Dados (SGBD) baseados em SQL são pro­je­ta­dos prin­ci­pal­mente para armazenar dados es­tru­tu­ra­dos, mas nem todos os dados se ajustam a um esquema fixo. Nesses casos, entram em jogo as bases de dados NoSQL. O termo NoSQL refere-se a uma categoria de SGBD não re­la­ci­o­nais. Em vez de modelar os dados como campos numa tabela, são aplicadas diversas abor­da­gens.

Uma me­to­do­lo­gia popular é o ar­ma­ze­na­mento de dados baseado em do­cu­men­tos: em vez de armazenar os dados numa tabela, eles são ar­ma­ze­na­dos em do­cu­men­tos in­di­vi­du­ais. Uma vantagem da abordagem baseada em do­cu­men­tos é que os dados podem evoluir de forma in­de­pen­dente. Ou seja, o esquema dos dados é in­de­pen­dente para cada documento e não é o mesmo para toda a base de dados, per­mi­tindo que as entradas de dados se ajustem a esquemas di­fe­ren­tes.

Em geral, as soluções NoSQL são menos complexas e oferecem vantagens em termos de es­ca­la­bi­li­dade e oti­mi­za­ção do de­sem­pe­nho. Além disso, costuma ser mais fácil modificar o esquema durante o fun­ci­o­na­mento da base de dados ou armazenar os dados de forma flexível em com­pa­ra­ção com o SQL. No entanto, no caso do NoSQL, pode haver menos garantias quanto à qualidade dos dados.

Ir para o menu principal