Linguagens de Banco de Dados

Autor

Douglas Braga

DDL — Data Definition Language

Notação de especificação para definir o schema do banco de dados. Exemplo:

CREATE TABLE professor (
    id_prof    INTEGER,
    nome       VARCHAR(50),
    id_escola  INTEGER,
    ch_semanal INTEGER,
    salario    NUMERIC(10,2)
);

O compilador DDL gera um conjunto de templates de tabelas armazenados em um dicionário de dados (data dictionary). O dicionário de dados contém metadados (dados sobre dados):

  • Schema do banco de dados
  • Restrições de integridade
    • Chave primária (id_prof identifica unicamente cada professor)
  • Autorizações — quem pode acessar o quê

DML — Data Manipulation Language

Linguagem para acessar e atualizar os dados organizados pelo modelo de dados apropriado. A DML também é conhecida como linguagem de consulta. Existem dois tipos básicos:

Tipo Característica
DML Procedural Requer que o usuário especifique quais dados são necessários e como obtê-los
DML Declarativa Requer que o usuário especifique quais dados são necessários, sem especificar como obtê-los

DMLs declarativas são geralmente mais fáceis de aprender e usar. DMLs declarativas também são chamadas de DMLs não-procedurais. A parte da DML que envolve recuperação de informações é chamada de linguagem de consulta (query language).

SQL

A linguagem de consulta SQL é não-procedural. Uma consulta recebe como entrada uma ou mais tabelas e sempre retorna uma única tabela. Exemplo para encontrar todos os professores da ESETI (id_escola = 31):

SELECT nome
FROM professor
WHERE id_escola = 31;
Nota

SQL não é equivalente a uma Máquina de Turing. Para computações complexas, SQL é geralmente embutido em alguma linguagem de mais alto nível.

Programas de aplicação geralmente acessam bancos de dados por meio de:

  1. Extensões de linguagem que permitem SQL embutido
  2. Interface de programa de aplicação (ex.: ODBC/JDBC) que permite enviar consultas SQL para um banco de dados

Acesso a Banco de Dados a partir de Programas

Linguagens de consulta não-procedurais como SQL não são tão poderosas quanto uma Máquina de Turing universal. SQL não suporta ações como entrada de dados pelo usuário, saída para monitores ou comunicação em rede. Tais computações devem ser escritas em uma linguagem hospedeira (host language), como C/C++, Java ou Python, com consultas SQL embutidas que acessam os dados no banco. Programas de aplicação são programas que interagem com o banco de dados dessa forma.