O que é linguagem de consulta estruturada (SQL)?

Detalhe de mãos trabalhando em um computador de mesa em uma sala de controle de monitoramento.

Autores

Alexandra Jonker

Staff Editor

IBM Think

Tim Mucci

IBM Writer

Gather

O que é linguagem de consulta estruturada?

A linguagem de consulta estruturada (SQL) é uma linguagem de programação padronizada e específica de domínio usada para interagir com sistemas de gerenciamento de banco de dados relacionais (RDBMS), como MySQL, SQL Server, IBM Db2, PostgreSQL e Oracle Database.

As consultas SQL (também conhecidas como comandos ou instruções SQL) permitem aos usuários adicionar, recuperar, atualizar, excluir, agregar e gerenciar dados com facilidade em um banco de dados relacional (ou banco de dados SQL). Nesses sistemas, os dados estruturados são organizados em linhas e colunas, que juntas formam tabelas. Os dados normalmente estão distribuídos em várias tabelas relacionadas que podem ser vinculadas por meio de chaves primárias ou estrangeiras.

Diferentemente de outras linguagens de programação, SQL é uma linguagem declarativa, o que significa que descreve o que o usuário deseja que o computador faça, em vez de como fazer isso.Isso contrasta com linguagens imperativas ou procedurais (como Java e COBOL), que exigem instruções passo a passo.

Por exemplo, ao escrever uma consulta SQL para buscar dados, o usuário não precisa detalhar os passos que o banco de dados deve seguir para coletar esses dados; ele apenas descreve como o resultado deve ser:

SELECT nome, e-mail
FROM clientes
WHERE city = 'New York' ;

SQL é uma ferramenta fundamental e versátil no stack tecnológico moderno, conhecida por seus recursos de manipulação de dados, processamento rápido de consultas e recursos avançados de segurança. Também oferece compatibilidade entre diferentes sistemas, escalabilidade para lidar com demandas crescentes de dados e suporte robusto de código aberto e comunidade.

A história do SQL

Na década de 1970, os cientistas da IBM Donald Chamberlin e Raymond Boyce desenvolveram e introduziram SQL. Ela surgiu a partir do conceito de modelos relacionais e foi inicialmente chamada de Structured English Query Language (SEQUEL), antes de ser abreviada para SQL. Tornou-se comercialmente disponível em 1979 e, desde então, tornou-se o padrão global para sistemas de gerenciamento de banco de dados relacionais.

O SQL foi padronizado pelo American National Standards Institute (ANSI) em 1986 e pela Organização Internacional de Normalização (ISO) em 1987.Apesar de ser um padrão, o SQL possui diversos dialetos, como T-SQL para o Microsoft SQL Server e PL/SQL para o Oracle Database. Esses dialetos atendem a necessidades específicas de cada sistema, mantendo conformidade com os comandos essenciais do padrão ANSI, como SELECT, UPDATE, DELETE, INSERT e WHERE.

As mais recentes notícias de tecnologia, corroboradas por insights de especialistas.

Mantenha-se atualizado sobre as tendências mais importantes e fascinantes do setor em IA, automação, dados e muito mais com o boletim informativo da Think. Consulte a declaração de privacidade da IBM.

Agradecemos a você! Você se inscreveu.

Sua inscrição será entregue em inglês. Você pode encontrar um link para cancelar a inscrição em todos os boletins informativos. Você pode gerenciar suas inscrições ou cancelar a inscrição aqui. Consulte nossa declaração de privacidade da IBM para obter mais informações.

Por que o SQL é importante?

Desde seu desenvolvimento na década de 1970, o SQL tornou-se a espinha dorsal dos sistemas de banco de dados modernos.

Diferentemente de linguagens de programação de uso geral, o SQL foi criado especificamente para bancos de dados relacionais — e os bancos de dados relacionais, por sua vez, são otimizados para o SQL. Essa concepção mútua torna o SQL uma ferramenta altamente eficiente para gerenciamento de dados.

A natureza declarativa do SQL o torna acessível até mesmo para usuários com pouca experiência em programação, sendo uma linguagem ideal para iniciantes. Seu uso amplo e integração com outras linguagens, como Python e Java, também fazem do SQL uma habilidade valiosa em ambientes de programação e dados em geral.

Analistas de dados, cientistas de dados e administradores de banco de dados utilizam SQL regularmente, pois ele se destaca em tarefas como processamento de dados, definição de dados, controle de acesso, compartilhamento de dados, integração de dados e análise de big data.

Na ciência de dados, o SQL é usado para criar bancos de dados que armazenam grandes conjuntos de dados necessários para análises. Sua capacidade de manipular e recuperar dados desses grandes conjuntos estruturados também é essencial no desenvolvimento de aplicações de inteligência artificial (IA) e aprendizado de máquina (ML), que dependem de dados de alta qualidade para treinamento.

Ao aderir às propriedades ACID — atomicidade, consistência, isolamento e durabilidade — o SQL ajuda a garantir um processamento de transações confiável para casos críticos e manipulação de dados sensíveis. Também oferece suporte a uma tomada de decisões baseada em dados mais precisa, análises avançadas e maior capacidade de business intelligence.

AI Academy

O gerenciamento de dados é o segredo para a IA generativa?

Explore por que é essencial ter dados de alta qualidade para utilizar a IA generativa com qualidade.

Quais são as vantagens de usar SQL?

O SQL oferece diversas vantagens, razão pela qual permanece uma das linguagens de programação mais utilizadas e duradouras.

Fácil manipulação de dados

Seus comandos simples (como GROUP BY, ORDER BY, GRANT e REVOKE) permitem que usuários de todos os níveis de habilidade trabalhem com bancos de dados.

Processamento rápido de consultas

Índices e técnicas de otimização de consultas em SQL melhoram a velocidade de recuperação de dados, o que aumenta o desempenho dos bancos de dados.

Segurança de dados robusta

Bancos de dados SQL incluem recursos de segurança como autenticação de usuários, controles de acesso e criptografia para proteger os dados.

Recursos comuns e compatibilidade

O SQL segue os padrões ANSI e ISO, o que ajuda a garantir compatibilidade com diversos sistemas e plataformas, incluindo ambientes em nuvem e ferramentas de big data.

Escalabilidade

O SQL pode gerenciar com eficácia tanto bancos de dados pequenos quanto grandes, adaptando-se às crescentes necessidades de dados sem perda significativa de desempenho.

Suporte para software livre

Muitos bancos de dados SQL são de código aberto e contam com o suporte de uma comunidade grande e ativa, que contribui continuamente para melhorias e resolução de problemas.

Como funciona uma SQL query?

Um banco de dados relacional organiza os dados em formato tabular (linhas e colunas) e facilita os relacionamentos entre diferentes tabelas. Por exemplo, um banco de dados de atendimento ao cliente pode usar tabelas separadas para informações de clientes, compras, códigos de produtos e contatos, ligadas por chaves como um ID de cliente exclusivo.

O SQL permite que os usuários escrevam consultas (e subconsultas) para manipular esses dados. Esses comandos passam por vários componentes de software durante o processo SQL:

Um analisador (parser) verifica a correção das instruções SQL e as converte em um formato que o banco de dados possa entender, como símbolos tokenizados. Esta etapa envolve a análise sintática e a verificação semântica. O analisador também ajuda a garantir que o usuário esteja autorizado a executar a operação.

Em seguida, um motor relacional — também conhecido como otimizador de consultas — planeja as estratégias mais eficientes para recuperação, modificação ou adição de dados. Ele faz isso avaliando diferentes planos de execução de consulta. Escreve o plano em bytecode, que é uma linguagem de máquina virtual. Esta etapa é crucial para otimizar o desempenho do banco de dados e o uso de recursos.

Por fim, um motor de armazenamento processa o bytecode, executa a instrução SQL e gerencia o armazenamento físico de dados. Ele lida com a representação física dos dados, incluindo formatos de arquivo e bufferização. Também retorna o resultado ao usuário ou aplicativo. Esta etapa ajuda a garantir acesso e atualizações eficientes aos dados no disco. Esse vínculo geralmente envolve relacionamentos, como um para muitos ou muitos para muitos, estabelecidos por meio de chaves primárias e estrangeiras para garantir a integridade dos dados.

Principais componentes de sistemas SQL

Os sistemas de gerenciamento de bancos de dados relacionais (também chamados de sistemas SQL) consistem em diversos componentes, incluindo:

  • Bancos de dados: repositórios digitais para armazenar, gerenciar e proteger coleções organizadas de dados.

  • Tabelas de banco de dados: dados formatados em linhas e colunas; cada uma contém informações sobre um tipo de entidade.

  • Consultas SQL: instruções escritas em SQL usadas para manipular dados em um banco de dados relacional.

  • Restrições SQL: regras que controlam os dados em colunas ou tabelas do banco de dados para manter a integridade dos dados.

  • Procedimentos armazenados: comandos SQL armazenados para reutilização contínua.

  • Transações: um ou mais comandos SQL agrupados como uma única unidade de trabalho ou operação.

  • Tipos de dados: regras que definem os tipos de dados que podem ser armazenados em uma coluna.

  • Índices: objetos do banco de dados que aceleram a recuperação de dados, reduzindo o número de acessos ao disco necessários para uma consulta.

  • Visões: tabelas virtuais baseadas em consultas SQL que simplificam consultas complexas e melhoram a segurança ao restringir o acesso aos dados subjacentes.

  • Segurança e permissões: funções para gerenciar o acesso de usuários, enquanto mecanismos de backup e recuperação protegem os dados contra perda ou corrupção.

Tipos de comandos SQL: DDL, DML, DQL, DCL e TCL

Os comandos SQL são tradicionalmente divididos nas seguintes categorias:

  • Linguagem de definição de dados (DDL)
  • Linguagem de manipulação de dados (DML)
  • Linguagem de controle de dados (DCL)
  • Linguagem de consulta de dados (DQL)
  • Linguagem de controle de transações (TCL)

Linguagem de definição de dados (DDL)

A linguagem de definição de dados gerencia objetos do banco de dados, como tabelas, visões e índices. Ela define a estrutura e a organização dos dados armazenados, bem como os relacionamentos entre os itens de dados armazenados. 

Linguagem de manipulação de dados (LMD)

A linguagem de manipulação de dados gerencia os dados dentro dos bancos de dados por meio de operações como INSERT, UPDATE e OUTER JOIN — que adicionam, modificam e combinam dados.

Linguagem de controle de dados (DCL)

A linguagem de controle de dados controla o acesso aos dados por meio de comandos como GRANT (para conceder permissões) e REVOKE (para remover permissões). Ela pode restringir a capacidade de um usuário de recuperar, adicionar e modificar dados.

Linguagem de consulta de dados (DQL)

A linguagem de consulta de dados executa consultas para recuperar informações, geralmente usando o comando SELECT. Ela pode recuperar itens de dados específicos ou um intervalo de itens.

Linguagem de controle de transações (TCL)

A linguagem de controle de transações gerencia alterações em transações para ajudar a garantir a integridade dos dados, oferecendo suporte às operações ROLLBACK e COMMIT para desfazer ou armazenar alterações, respectivamente. Ela é usada para coordenar o compartilhamento de dados por usuários simultâneos.

Quais são os comandos SQL mais comuns?

Os bancos de dados SQL oferecem suporte a várias instruções SQL para operações com dados. No entanto, os comandos SQL podem variar dependendo do banco de dados, que pode usar sua própria sintaxe SQL.

Comandos SQL básicos incluem:

SELECT

Recupera dados de uma ou mais tabelas.

SELECT nome, e-mail

FROM clientes

WHERE city = 'New York' ;
Essa instrução recupera o nome e o e-mail de todos os clientes que moram em Nova York da tabela customers .

INSERT

Adiciona novas linhas a uma tabela.

INSERT INTO clientes (nome, e-mail, cidade)
VALUES ("Jane Doe", "jane.doe@exemplo.com", "Los Angeles") ;

Essa instrução adiciona uma nova linha à tabela de clientes com o nome "Jane Doe", e-mail "jane.doe@exemplo.com" e a cidade "Los Angeles".

UPDATE

Modifica os dados de uma tabela.

UPDATE clientes 
SET e-mail = 'novo.email@exemplo.com' 
WHERE name = 'John Doe' ;

Esta instrução atualiza o e-mail do cliente chamado "John Doe" na tabela de clientes para "novo.email@exemplo.com".

DELETE

Remove linhas de uma tabela com base em uma condição.

DELETE FROM clientes 
WHERE city = "Boston" ;

Esta instrução remove todas as linhas da tabela de clientes onde a cidade é "Boston".

CREATE TABLE

Define uma nova tabela e sua estrutura.

CREATE TABLE products (
product_id INT PRIMARY KEY,
name VARCHAR(100),
price DECIMAL(10, 2)
) ;

Essa instrução cria uma nova tabela chamada products com três colunas: product_id como chave primária inteira, name como uma cadeia de caracteres variável de até 100 caracteres e price como decimal com dez dígitos e duas casas decimais.

ALTER TABLE

Modifica a estrutura de uma tabela existente.

ALTER TABLE clientes 
ADD COLUMN birthday DATE ;

Essa instrução adiciona uma nova coluna birthday do tipo DATE à tabela customers existente.

DROP TABLE

Exclui uma tabela e todos os seus dados.

DROP TABLE old_customers ;

Essa instrução exclui a tabela old_customers juntamente com todos os seus dados.

JOIN

Combina linhas de duas ou mais tabelas com base em uma coluna relacionada.

SELECT c.name, p.name AS product_name
FROM customers c
JOIN orders o ON c.customer_id = o.customer_id
JOIN products p ON o.product_id = p.product_id
WHERE c.city = 'New York' ;

A instrução JOIN do SQL recupera os nomes dos clientes e os nomes dos produtos que eles encomendaram. Ela une as tabelas de clientes, pedidos e produtos com base em customer_id e product_id, selecionando apenas aqueles clientes que moram em Nova York.

Bancos de dados SQL vs. NoSQL

Bancos de dados SQL são bancos de dados relacionais, nos quais dados estruturados são armazenados em linhas e tabelas que se vinculam de diversas maneiras. O SQL é a linguagem padrão para interagir com esses bancos de dados.

Bancos de dados NoSQL (ou bancos de dados não relacionais) surgiram no final dos anos 2000 para lidar com dados com menos estrutura. Esses tipos de bancos de dados (como o MongoDB) oferecem modelos de dados mais flexíveis em comparação aos bancos de dados SQL.

As principais diferenças incluem:

  • Escalabilidade
  • Estrutura
  • Desempenho
  • Casos de uso
  • Conhecimento e comunidade
  • Manutenção e gerenciamento

Escalabilidade

Bancos de dados NoSQL são escaláveis horizontalmente, gerenciando tráfego elevado por meio da adição de mais servidores. Em contraste, bancos de dados SQL são tradicionalmente escaláveis verticalmente, exigindo hardware mais potente para lidar com o aumento de carga.

Estrutura

Bancos de dados SQL utilizam uma estrutura baseada em tabelas, ideal para transações com múltiplas linhas e consultas complexas em dados relacionados, graças a recursos robustos de indexação e junção. Já o NoSQL oferece várias estruturas, como armazenamento em chave-valor, documentos, grafos ou colunas largas, atendendo a diferentes necessidades e permitindo maior flexibilidade com dados semiestruturados ou não estruturados.

Desempenho

Bancos de dados SQL são otimizados para consultas complexas com consistência rígida de dados, seguindo os princípios ACID. Bancos de dados NoSQL, que seguem os princípios BASE (basicamente disponíveis, estado suave, consistência eventual), oferecem desempenho mais rápido para tipos específicos de dados, mas com diferentes garantias de consistência.

Casos de uso

Bancos de dados SQL são frequentemente escolhidos para aplicações que exigem transações complexas, dados consistentes e aderência estrita ao esquema, como sistemas financeiros, plataformas de e-commerce ou bancos de dados de CRM. O NoSQL é preferido para dados de grande escala, em rápida mudança ou semiestruturados, como em redes sociais, análises em tempo real ou sistemas de gerenciamento de conteúdo.

Conhecimento e comunidade

Bancos de dados SQL possuem uma gama mais ampla de recursos, como tutoriais de SQL e suporte comunitário, devido à sua longa história e ampla adoção. NoSQL geralmente requer menos design inicial e pode ser mais fácil de escalar, mas muitas vezes exige mais desenvolvimento personalizado para consultas complexas e consistência de dados.

Manutenção e gerenciamento

Bancos de dados SQL requerem um design de esquema cuidadoso e podem demandar bastante manutenção ao realizar alterações de esquema. Um SGBD NoSQL oferece maior facilidade de escalabilidade e adaptabilidade para mudanças de esquema, sem necessidade de downtime longo ou reestruturação extensiva.

O que é injeção de SQL?

Apesar das vantagens de segurança de muitos bancos de dados SQL, outras aplicações corporativas podem ser vulneráveis a problemas de segurança — como autenticação fraca, design inseguro e configurações incorretas. Devido a essas vulnerabilidades, a injeção de SQL continua sendo uma ameaça real para as organizações.

A injeção de SQL ocorre quando invasores manipulam consultas SQL para acessar ou corromper informações em um banco de dados. Compreender essas vulnerabilidades e implementar medidas de segurança robustas é fundamental para proteger dados em SQL.

Soluções relacionadas
IBM StreamSets

Crie e gerencie pipelines de dados de streaming inteligentes por meio de uma interface gráfica intuitiva, facilitando a integração sem dificuldades dos dados em ambientes híbridos e de multinuvem.

Explore o StreamSets
IBM watsonx.data™

O watsonx.data permite escalar a análise de dados e a IA com todos os seus dados, onde quer que estejam, por meio de um armazenamento de dados aberto, híbrido e governado.

Conheça o watsonx.data
Serviços de consultoria de dados e análise de dados

Libere o valor dos dados empresariais com a IBM Consulting, construindo uma organização baseada em insights, que traz vantagem para os negócios.

Conheça os serviços de análise de dados
Dê o próximo passo

Crie uma estratégia de dados que elimine silos de dados, reduza a complexidade e melhore a qualidade de dados para proporcionar experiências excepcionais para clientes e funcionários.

Explore soluções de gerenciamento de dados Conheça o watsonx.data