# Suporte do Derby às funcionalidades do SQL-92

Existem quatro níveis de suporte ao SQL-92:

- SQL92E

  Entrada (entry)

- SQL92T

  Transicional (transitional), um nível definido pelo NIST em uma publicação chamada FIPS 127-2

- SQL92I

  Intermediário (intermediate)

- SQL92F

  Completo (full)

Tabela 1. Suporte às funcionalidades do SQL-92: Tipos básicos
Funcionalidade | Origem | Derby
--- | --- | ---
SMALLINT | SQL92E | sim
INTEGER | SQL92E | sim
DECIMAL(p,s) | SQL92E | sim
NUMERIC(p,s) | SQL92E | sim
REAL | SQL92E | sim
FLOAT(p) | SQL92E | sim
DOUBLE PRECISION | SQL92E | sim
CHAR(n) | SQL92E | sim

Tabela 2. Suporte às funcionalidades do SQL-92: Operações matemáticas básicas
Funcionalidade | Origem | Derby
--- | --- | ---
+, *, -, /, + unário, - unário | SQL92E | sim

Tabela 3. Suporte às funcionalidades do SQL-92: Comparações básicas
Funcionalidade | Origem | Derby
--- | --- | ---
<, >, <= ,>=, <>, = | SQL92E | sim

Tabela 4. Suporte às funcionalidades do SQL-92: Predicados básicos
Funcionalidade | Origem | Derby
--- | --- | ---
BETWEEN, LIKE, NULL | SQL92E | sim

Tabela 5. Suporte às funcionalidades do SQL-92: Predicados quantificados
Funcionalidade | Origem | Derby
--- | --- | ---
IN, ALL/SOME, EXISTS | SQL92E | sim

Tabela 6. Suporte às funcionalidades do SQL-92: Definição do esquema
Funcionalidade | Origem | Derby
--- | --- | ---
tabelas | SQL92E | sim
visões | SQL92E | sim
privilégios | SQL92E | sim

Tabela 7. Suporte às funcionalidades do SQL-92: Atributos das colunas
Funcionalidade | Origem | Derby
--- | --- | ---
valor padrão | SQL92E | sim
nulo | SQL92E | sim

Tabela 8. Suporte às funcionalidades do SQL-92: Restrições (não-postergáveis)
Funcionalidade | Origem | Derby
--- | --- | ---
NOT NULL | SQL92E | sim (não armazenada em SYSCONSTRAINTS)
UNIQUE/PRIMARY KEY | SQL92E | sim
FOREIGN KEY | SQL92E | sim
CHECK | SQL92E | sim
Visão com WITH CHECK OPTION | SQL92E | não, uma vez que as visões não são atualizáveis

Tabela 9. Suporte às funcionalidades do SQL-92: Cursores
Funcionalidade | Origem | Derby
--- | --- | ---
DECLARE, OPEN, FETCH, CLOSE | SQL92E | realizadas através do JDBC
UPDATE, DELETE CURRENT | SQL92E | sim

Tabela 10. Suporte às funcionalidades do SQL-92: SQL dinâmico 1
Funcionalidade | Origem | Derby
--- | --- | ---
ALLOCATE / DEALLOCATE / GET / SET DESCRIPTOR | SQL92T | realizadas através do JDBC
PREPARE / EXECUTE / EXECUTE IMMEDIATE | SQL92T | realizadas através do JDBC
Cursor dinâmico DECLARE, OPEN, FETCH, CLOSE, UPDATE, DELETE | SQL92T | realizadas através do JDBC
Saída DESCRIBE | SQL92T | realizadas através do JDBC

Tabela 11. Suporte às funcionalidades do SQL-92: Esquema de informações básico
Funcionalidade | Origem | Derby
--- | --- | ---
TABLES | SQL92T | SYS.SYSTABLES, SYS.SYSVIEWS, SYS.SYSCOLUMNS
VIEWS | SQL92T | SYS.SYSTABLES, SYS.SYSVIEWS, SYS.SYSCOLUMNS
COLUMNS | SQL92T | SYS.SYSTABLES, SYS.SYSVIEWS, SYS.SYSCOLUMNS

Tabela 12. Suporte às funcionalidades do SQL-92: Manipulação básica de esquema
Funcionalidade | Origem | Derby
--- | --- | ---
CREATE / DROP TABLE | SQL92T | sim
CREATE / DROP VIEW | SQL92T | sim
GRANT / REVOKE | SQL92T | não
ALTER TABLE ADD COLUMN | SQL92T | sim
ALTER TABLE DROP COLUMN | SQL92T | não

Tabela 13. Suporte às funcionalidades do SQL-92: Tabela juntada
Funcionalidade | Origem | Derby
--- | --- | ---
INNER JOIN | SQL92T | sim
junção natural | SQL92T | não
LEFT, RIGHT OUTER JOIN | SQL92T | sim
condição de junção | SQL92T | sim
junção de colunas nomeada | SQL92T | sim

Tabela 14. Suporte às funcionalidades do SQL-92: Tabela juntada
Funcionalidade | Origem | Derby
--- | --- | ---
DATE, TIME, TIMESTAMP, INTERVAL simples | SQL92T | sim, menos INTERVAL
constantes data/hora | SQL92T | sim
matemática data/hora | SQL92T | pode ser feito com métodos Java
comparações de data/hora | SQL92T | sim
predicados: OVERLAPS | SQL92T | pode ser feito com métodos Java

Tabela 15. Suporte às funcionalidades do SQL-92: VARCHAR
Funcionalidade | Origem | Derby
--- | --- | ---
LENGTH | SQL92T | sim
concatenação (||) | SQL92T | sim

Tabela 16. Suporte às funcionalidades do SQL-92: Isolamento de transação
Funcionalidade | Origem | Derby
--- | --- | ---
READ WRITE / READ ONLY | SQL92T | através do JDBC, propriedades do banco de dado e meio de armazenamento.
RU, RC, RR, SER | SQL92T | sim

Tabela 17. Suporte às funcionalidades do SQL-92: Vários esquemas por usuário
Funcionalidade | Origem | Derby
--- | --- | ---
Visão SCHEMATA | SQL92T | SYS.SYSSCHEMAS

Tabela 18. Suporte às funcionalidades do SQL-92: Privilégios em tabelas
Funcionalidade | Origem | Derby
--- | --- | ---
TABLE_PRIVILEGES | SQL92T | não
COLUMNS_PRIVILEGES | SQL92T | não
USAGE_PRIVILEGES | SQL92T | não

Tabela 19. Suporte às funcionalidades do SQL-92: Operações de tabela
Funcionalidade | Origem | Derby
--- | --- | ---
Relaxamento de UNION | SQL92I | sim
EXCEPT | SQL92I | sim
INTERSECT | SQL92I | sim
CORRESPONDING | SQL92I | não

Tabela 20. Suporte às funcionalidades do SQL-92: Instrução de definição de esquema
Funcionalidade | Origem | Derby
--- | --- | ---
CREATE SCHEMA | SQL92I | sim, parcialmente

Tabela 21. Suporte às funcionalidades do SQL-92: Autorização de usuário
Funcionalidade | Origem | Derby
--- | --- | ---
SET SESSION AUTHORIZATION | SQL92I | usado SET SCHEMA
CURRENT_USER | SQL92I | sim
SESSION_USER | SQL92I | sim
SYSTEM_USER | SQL92I | não

Tabela 22. Suporte às funcionalidades do SQL-92: Restrições de tabela
Funcionalidade | Origem | Derby
--- | --- | ---
TABLE CONSTRAINTS | SQL92I | SYS.SYSCONSTRAINTS
REFERENTIAL CONSTRAINTS | SQL92I | SYS.SYSFOREIGNKEYS
CHECK CONSTRAINTS | SQL92I | SYS.SYSCHECKS

Tabela 23. Suporte às funcionalidades do SQL-92: Esquema de documentação
Funcionalidade | Origem | Derby
--- | --- | ---
SQL_FEATURES | SQL92I/FIPS 127-2 | usado JDBC DatabaseMetaData
SQL_SIZING | SQL92I/FIPS 127-2 | usado JDBC DatabaseMetaData

Tabela 24. Suporte às funcionalidades do SQL-92: DATETIME completo
Funcionalidade | Origem | Derby
--- | --- | ---
precisão para TIME e TIMESTAMP | SQL92F | sim

Tabela 25. Suporte às funcionalidades do SQL-92: Funções de caractere completa
Funcionalidade | Origem | Derby
--- | --- | ---
Expressão POSITION | SQL92F | usado métodos Java ou LOCATE
Funções UPPER/LOWER | SQL92F | sim

Tabela 26. Suporte às funcionalidades do SQL-92: Diversas
Funcionalidade | Origem | Derby
--- | --- | ---
Identificadores delimitados | SQL92E | sim
Subconsultas correlacionadas | SQL92E | sim
Instruções de inserção, atualização e exclusão | SQL92E | sim
Junções | SQL92E | sim
Qualificações no WHERE | SQL92E | sim
GROUP BY | SQL92E | sim
HAVING | SQL92E | sim
Funções de agregação | SQL92E | sim
ORDER BY | SQL92E | sim
Expressões de seleção | SQL92E | sim
SELECT * | SQL92E | sim
SQLCODE | SQL92E | não, em obsolescência no SQL-92
SQLSTATE | SQL92E | sim
UNION, INTERSECT e EXCEPT em visões | SQL92T | sim
Conversão numérica implícita | SQL92T | sim
Conversão de caractere implícita | SQL92T | sim
Obter diagnóstico | SQL92T | usado JDBC SQLException
Operações agrupadas | SQL92T | sim
* qualificado na lista de seleção | SQL92T | sim
Identificadores em minúsculas | SQL92T | sim
PRIMARY KEY com nulo | SQL92T | não
Suporte a vários módulos | SQL92T | não (não é requerido e não faz parte do JDBC)
Ações de exclusão referencial | SQL92T | CASCADE, SET NULL, RESTRICT e NO ACTION.
Funções CAST | SQL92T | sim
Expressões INSERT | SQL92T | sim
Padrões explícitos | SQL92T | sim
Relaxamento de palavra chave | SQL92T | sim
Definição de domínio | SQL92I | não
Expressão CASE | SQL92I | suporte parcial
Constantes cadeia de caracteres compostas | SQL92I | usado concatenação
Melhorias no LIKE | SQL92I | sim
Predicado UNIQUE | SQL92I | não
Utilização de tabelas | SQL92I | SYS.SYSDEPENDS
Esquema de informação intermediário | SQL92I | usado JDBC DatabaseMetaData e tabelas do sistema do Derby
Suporte a subprograma | SQL92I | não é relevante para o JDBC, que é muito mais rico
Sinalização SQL intermediária | SQL92I | não
Manipulação de esquema | SQL92I | sim
Identificadores longos | SQL92I | sim
Junção externa completa | SQL92I | não
Especificação de zona horária | SQL92I | não
Cursores rolados | SQL92I | parcial (rolagem não sensível ao conjunto de resultados através do JDBC 2.0)
Suporte a funções de conjunto intermediário | SQL92I | parcial
Definição de conjunto de caracteres | SQL92I | suporta idiomas do Java
Conjuntos de caracteres nomeados | SQL92I | suporta idiomas do Java
Valores de subconsulta escalar | SQL92I | sim
Predicado nulo expandido | SQL92I | sim
Gerenciamento de restrições | SQL92I | sim (ADD/DROP CONSTRAINT)
Tipos FOR BIT DATA | SQL92F | sim
Restrições de asserção | SQL92F | não
Tabelas temporárias | SQL92F | somente sintaxe específica da IBM
SQL dinâmico completo | SQL92F | não
Expressões de valor completa | SQL92F | sim
Testes de valor verdade | SQL92F | sim
tabelas derivadas no FROM | SQL92F | sim
Sublinhado no final | SQL92F | sim
Tipos de dado indicador | SQL92F | não é relevante para o JDBC
Ordem de nome referencial | SQL92F | não
Sinalização SQL completa | SQL92F | não
Construtores de linha e de tabela | SQL92F | sim
Qualificadores de nome de catálogo | SQL92F | não
Tabelas simples | SQL92F | não
Subconsultas no CHECK | SQL92F | não, mas pode ser feito com métodos Java
Junção de união | SQL92F | não
Agrupamento e tradução | SQL92F | Suportados os idiomas do Java
Ações de atualização referenciais | SQL92F | RESTRICT e NO ACTION. As demais podem ser feitas com gatilhos.
ALTER domínio | SQL92F | não
INSERT privilégios em colunas | SQL92F | não
Tipos MATCH referenciais | SQL92F | não
Melhorias de CHECK em visões | SQL92F | não, as visões não são atualizáveis
Gerenciamento de sessão | SQL92F | usado JDBC
Gerenciamento de conexão | SQL92F | usado JDBC
Operações de auto-referenciamento | SQL92F | sim
Cursores não sensíveis | SQL92F | Sim, através do JDBC 2.0
Função de conjunto completa | SQL92F | parcialmente
Sinalização de catálogo | SQL92F | não
Referências a tabela local | SQL92F | não
Atualização de cursor completa | SQL92F | não