Linguagens de Banco de Dados
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_profidentifica unicamente cada professor)
- Chave primária (
- 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;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:
- Extensões de linguagem que permitem SQL embutido
- 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.