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