QuickSQL no Oracle APEX: Criando Esquemas de Banco de Dados de Forma Rápida e Eficiente
Table of contents
- Introdução
- Casos de Uso do QuickSQL
- Como Acessar o QuickSQL no Oracle APEX
- Sintaxe do QuickSQL
- Tipos de Dados no QuickSQL
- Diretivas de Tabela no QuickSQL
- Definição de Relacionamentos e Constraints
- Diretivas de Colunas no QuickSQL
- Criando Views com QuickSQL
- Geração Automática de Triggers, Sequências e PL/SQL
- Como Configurar os Settings no QuickSQL?
- Exemplo: Usando object_prefix
- Visualizar o Diagrama do Modelo
- Criando os Objetos no Banco de Dados
- Conclusão
Introdução
Criar um modelo de banco de dados relacional pode ser um processo trabalhoso, exigindo a definição manual de tabelas, relacionamentos, índices e triggers. O QuickSQL, uma ferramenta integrada ao Oracle APEX, simplifica essa tarefa ao transformar uma especificação textual simples em um conjunto completo de comandos SQL.
Com mínimo esforço, é possível gerar scripts SQL para criar tabelas, views, triggers, índices e até mesmo dados de exemplo. Embora não substitua uma modelagem formal de dados, o QuickSQL é uma maneira rápida e eficiente de gerar um modelo inicial que pode ser refinado conforme necessário.
Casos de Uso do QuickSQL
O QuickSQL é útil em diversas situações, como:
Criação rápida de modelos de dados – Ideal para prototipagem e desenvolvimento ágil.
Reutilização de modelos – Permite salvar e reutilizar estruturas para futuras adaptações.
Geração de dados fictícios – Útil para testes e demonstrações.
Aprendizado de SQL – Facilita o entendimento da sintaxe SQL através de exemplos práticos.
Como Acessar o QuickSQL no Oracle APEX
Para começar a usar o QuickSQL, siga estes passos:
Acesse o Oracle APEX.
Vá até SQL Workshop → QuickSQL.
No editor do QuickSQL, insira a estrutura do seu banco de dados usando uma sintaxe simplificada.
O SQL é gerado automaticamente na aba lateral.
Clique em Review and Run para executar os scripts e criar os objetos no banco de dados.
Se desejar, você pode salvar o modelo para reutilização futura ou baixar os scripts gerados para refinamento posterior.
Sintaxe do QuickSQL
O QuickSQL usa uma notação baseada em texto simples. Basta declarar os nomes das tabelas e listar suas colunas com indentação. O sistema infere os tipos de dados automaticamente e gera as primary keys por padrão.
Exemplo básico
customers
id /pk
name vc100 not null
email unique
created_at timestamp default sysdate
orders
id /pk
customer_id /fk customers
order_date date default sysdate
total number(10,2)
Esse pequeno bloco de código gera:
✔ Tabelas customers
e orders
.
✔ Chave primária automática para id
.
✔ Chave estrangeira customer_id
referenciando customers
.
✔ email
como uma coluna única.
✔ created_at
e order_date
com valores padrão.
Tipos de Dados no QuickSQL
O QuickSQL reconhece uma série de tipos de dados que podem ser especificados diretamente na definição das colunas. Caso o tipo não seja informado, ele tenta deduzir automaticamente com base no nome da coluna.
Alias | Tipo SQL Gerado | Descrição |
num , number | NUMBER | Número genérico de precisão variável. |
int , integer | INTEGER | Número inteiro. |
d , date | DATE | Data sem informação de horário. |
ts , timestamp | TIMESTAMP | Data e hora sem fuso horário. |
tstz , tswtz , timestamp with local time zone | TIMESTAMP WITH LOCAL TIME ZONE | Data e hora com fuso horário. |
char , vc , varchar , varchar2 , string | VARCHAR2(4000) | Texto de até 4000 caracteres. |
vcNNN | VARCHAR2(NNN) | Define um tamanho específico de VARCHAR2 , onde NNN varia de 1 a 32.767. |
vc(NNN) | VARCHAR2(NNN) | Alternativa ao formato vcNNN . |
vc32k | VARCHAR2(32.767) | Texto de até 32.767 caracteres (somente para Oracle 12c+). |
clob | CLOB | Armazena grandes quantidades de texto. |
blob | BLOB | Armazena dados binários, como imagens e arquivos. |
json | CLOB CHECK (<Column Name> IS JSON) | Define um campo CLOB com validação JSON. |
file | BLOB + Metadata | Cria uma coluna BLOB com colunas adicionais _FILENAME , _CHARSET , _MIMETYPE e _LASTUPD para manipulação de arquivos. |
Exemplo Prático
documents
id /pk
title vc255 not null
content clob
created_at timestamp default sysdate
file_attachment file
Esse exemplo cria uma tabela documents
com:
✅ Um campo CLOB
para armazenar textos extensos.
✅ Um campo BLOB
para anexar arquivos, com colunas auxiliares para manipulação.
✅ Um TIMESTAMP
com data de criação padrão.
Diretivas de Tabela no QuickSQL
O QuickSQL permite adicionar funcionalidades extras às tabelas utilizando diretivas especiais. Essas diretivas são prefixadas por /
e podem ser usadas para ativar APIs, auditoria, compressão de dados, geração automática de registros e muito mais.
Diretiva | Descrição | Exemplo |
/api | Gera automaticamente um pacote PL/SQL para manipulação dos dados (insert, update, delete, query). | /api |
/audit | Habilita auditoria do Oracle para registrar todas as operações na tabela. | /audit |
/auditcols , /audit cols , /audit columns | Adiciona colunas created, created_by, updated, updated_by e cria um trigger para preencher automaticamente. | /auditcols |
/colprefix <prefixo> | Adiciona um prefixo a todas as colunas da tabela. | /colprefix usr_ |
/compress , /compressed | Ativa a compactação dos dados para economizar espaço. | /compress |
/insert NN | Insere NN linhas de dados de exemplo (máximo de 1000). | /insert 20 |
/rest | Habilita acesso Auto-REST via ORDS (Oracle REST Data Services). | /rest |
/unique <colunas> | Define uma restrição UNIQUE para as colunas informadas. | /unique state, city |
Exemplo Prático
users /api /auditcols /insert 10 /rest
id /pk
name vc100 not null
email vc200 not null unique
created_at timestamp default sysdate
Neste exemplo, além das colunas normais, o QuickSQL irá:
✅ Criar um pacote PL/SQL para manipular a tabela (/api
).
✅ Adicionar colunas de auditoria (created
, created_by
, updated
, updated_by
) e um trigger para preenchê-las (/auditcols
).
✅ Inserir 10 registros de exemplo automaticamente (/insert 10
).
✅ Ativar acesso REST à tabela via ORDS (/rest
).
Com essas diretivas, é possível gerar tabelas preparadas para auditoria, APIs REST e até mesmo incluir dados de teste.
Definição de Relacionamentos e Constraints
Para definir relações entre tabelas, basta indentar a tabela filha abaixo da tabela pai ou usar a diretiva /fk
.
Exemplo com chaves estrangeiras
departments
id /pk
name vc100
employees
id /pk
name vc100 not null
department_id number /fk departments
Diretivas de Colunas no QuickSQL
Além das Diretivas de Tabela, o QuickSQL permite especificar diretivas de colunas para personalizar comportamentos, como criação de índices, valores padrão, constraints e até mesmo formatação automática dos dados.
Diretiva | Descrição | Exemplo |
/idx , /index , /indexed | Cria um índice na coluna para melhorar a performance de busca. | email vc200 /index |
/unique | Define uma constraint UNIQUE, impedindo valores duplicados. | email vc200 /unique |
/cascade | Ativa deleção em cascata quando a linha pai for excluída. | order_id int /fk orders /cascade |
/check <valores> | Restringe valores aceitos a uma lista específica. | status vc10 /check Open, Closed, Pending |
/constant <valor> | Usa um valor fixo ao gerar dados de exemplo. | city vc50 /constant NYC |
/default <valor> | Define um valor padrão se o campo for nulo ou omitido. | created_at timestamp /default sysdate |
/values <lista> | Define uma lista de valores sugeridos para geração de dados. | size vc10 /values Small, Medium, Large |
/upper | Converte valores para maiúsculas automaticamente. | state vc2 /upper |
/lower | Converte valores para minúsculas automaticamente. | email vc200 /lower |
/nn , /not null | Adiciona a constraint NOT NULL, tornando o campo obrigatório. | name vc100 /not null |
/between <min> and <max> | Restringe valores a um intervalo numérico. | age int /between 18 and 65 |
/hidden , /invisible | Oculta a coluna em SELECT * . | internal_notes clob /hidden |
/references , /reference , /fk <tabela> | Cria uma chave estrangeira apontando para outra tabela. | customer_id int /fk customers |
/pk | Define a chave primária explicitamente. | uuid varchar2(36) /pk |
-- Comentário ou [ Comentário ] | Adiciona comentários ao modelo QuickSQL. | [Este campo armazena o status do pedido] |
📌 Se nenhuma coluna estiver com a diretiva /pk, um campo id será automaticamente criado na tabela como chave primária.
Exemplo Prático
orders
id /pk
customer_id int /fk customers
order_date date /default sysdate
status vc20 /check Pending, Shipped, Delivered, Cancelled
total_amount number /nn
O que esse modelo faz?
✅ customer_id
cria uma chave estrangeira referenciando customers
.
✅ order_date
assume o valor padrão sysdate
se não for informado.
✅ status
só pode ter valores Pending, Shipped, Delivered ou Cancelled (/check
).
✅ total_amount
não pode ser nulo (/nn
).
Com essas diretivas, é possível criar tabelas robustas com menos esforço.
Criando Views com QuickSQL
Além da criação rápida de tabelas e relacionamentos, o QuickSQL permite gerar Views automaticamente. As Views são úteis para consolidar dados de múltiplas tabelas e facilitar consultas complexas.
Sintaxe
view [view_name] [table_name] [table_name] ...
Regras importantes:
O nome da View não pode conter espaços.
Os nomes das tabelas referenciadas também não podem conter espaços.
As tabelas devem ser separadas por um espaço ou vírgula.
Exemplo Prático
Modelo QuickSQL
dept
dname
loc
emp
ename
job
view dept_emp emp dept
SQL Gerado
create or replace view dept_emp as
select
emp.id emp_id,
emp.ename ename,
emp.job job,
dept.id dept_id,
dept.dname dname,
dept.loc loc
from
emp,
dept
where
emp.dept_id(+) = dept.id
Explicação
✅ A View dept_emp
foi criada para consolidar dados das tabelas emp
(funcionários) e dept
(departamentos).
✅ A estrutura define ename
e job
da tabela emp
, e dname
e loc
da tabela dept
.
✅ O QuickSQL gera a SQL automaticamente, permitindo que você foque na modelagem dos dados.
Geração Automática de Triggers, Sequências e PL/SQL
Além das tabelas, o QuickSQL pode gerar automaticamente:
✔ Triggers → Para preencher automaticamente chaves primárias baseadas em sequência.
✔ Sequências → Para auto incremento de IDs.
✔ PL/SQL API → Pacotes com procedimentos para INSERT
, UPDATE
, DELETE
e SELECT
.
Exemplo com PL/SQL API ativada
Ao gerar o SQL no QuickSQL, a opção Generate PL/SQL API cria automaticamente um pacote PL/SQL com operações CRUD para cada tabela.
Como Configurar os Settings no QuickSQL?
1️⃣ Abra o QuickSQL dentro do Oracle APEX.
2️⃣ Clique no botão "Settings" localizado na interface do QuickSQL.
3️⃣ Configure as opções desejadas, como:
object_prefix: Define um prefixo para todos os objetos criados, garantindo uma organização consistente.
schema: Especifica o esquema onde os objetos serão criados.
primary key strategy: Define o tipo de chave primária (identity, sequence, SYS_GUID, etc.).
audit columns: Adiciona colunas de auditoria automaticamente.
4️⃣ Salve as configurações e veja a geração do SQL sendo ajustada automaticamente.
Exemplo: Usando object_prefix
Se você deseja que todas as tabelas geradas tenham um prefixo "HR_" para identificar que pertencem ao módulo de Recursos Humanos, basta configurar:
No diálogo "Settings", defina:
object_prefix:
HR_
schema:
corporate
Isso garantirá que tabelas como EMPLOYEES
e DEPARTMENTS
sejam criadas como HR_EMPLOYEES
e HR_DEPARTMENTS
, mantendo um padrão organizacional no banco de dados.
Ao aplicar essas configurações pela interface, o SQL gerado já refletirá essas definições sem precisar alterar manualmente o código.
Visualizar o Diagrama do Modelo
É possível visualizar o diagrama do modelo que criado apenas clicando no botão “Diagram". Isso facilita a validação do modelo que está sendo criado.
Criando os Objetos no Banco de Dados
Após definir o modelo no QuickSQL, siga estes passos para executar os scripts:
Clique em Save Model para salvar a especificação do QuickSQL.
Clique em Save SQL Script para armazenar o SQL gerado.
Clique em Review and Run para revisar e executar os comandos no banco.
Após a execução, verifique possíveis erros e ajuste se necessário.
Opcionalmente, clique em Create App from Script para gerar uma aplicação APEX baseada nas tabelas criadas.
Conclusão
O QuickSQL é uma ferramenta essencial para desenvolvedores Oracle APEX, permitindo criar modelos de banco de dados com velocidade e eficiência. Com sua sintaxe simples, ele automatiza a criação de tabelas, relacionamentos e até APIs PL/SQL, otimizando o processo de desenvolvimento.
Se você ainda não experimentou o QuickSQL, teste no seu ambiente APEX e descubra como ele pode transformar sua modelagem de dados!