Ref Derby

Embed Size (px)

Citation preview

Manual de Referncia do DerbyVersion 10

Derby Document build: September 14, 2011, 7:53:36 PM (UTC)

Version 10 Manual de Referncia do Derby

ContentsDireitos autorais reservados............................................................................................... 8 Licena................................................................................................................................... 9 Sobre este documento....................................................................................................... 13 Finalidade deste documento.................................................................................. 13 Audincia.................................................................................................................. 13 Organizao deste documento...............................................................................13 Referncia da linguagem SQL...........................................................................................15 Letras maisculas e caracteres especiais............................................................ 15 Identificadores SQL................................................................................................. 16 Regras para identificadores SQL92.................................................................... 16 IdentificadorSQL92.............................................................................................. 16 nome-da-coluna................................................................................................... 17 nome-da-correlao.............................................................................................18 novo-nome-da-tabela...........................................................................................18 nome-do-esquema...............................................................................................18 nome-de-coluna-simples......................................................................................19 nome-do-sinnimo............................................................................................... 19 nome-da-tabela....................................................................................................19 nome-da-viso..................................................................................................... 19 nome-do-ndice.................................................................................................... 20 nome-da-restrio................................................................................................20 nome-do-cursor....................................................................................................20 nome-do-gatilho................................................................................................... 21 identificador-de-autorizao.................................................................................21 Instrues................................................................................................................. 21 Interao com o sistema de dependncias........................................................ 21 Instruo ALTER TABLE.....................................................................................23 Instrues CREATE............................................................................................ 26 Instrues DROP.................................................................................................40 Instrues RENAME............................................................................................42 Instrues SET.................................................................................................... 42 CALL (PROCEDIMENTO)................................................................................... 44 Clusula CONSTRAINT...................................................................................... 44 Instruo DECLARE GLOBAL TEMPORARY TABLE........................................ 51 Instruo DELETE...............................................................................................53 Clusula FOR UPDATE...................................................................................... 54 Clusula FROM................................................................................................... 54 Clusula GROUP BY.......................................................................................... 55 Clusula HAVING................................................................................................56 INNER JOIN........................................................................................................ 56 Instruo INSERT................................................................................................57 Operao JOIN....................................................................................................59 LEFT OUTER JOIN.............................................................................................59 Instruo LOCK TABLE...................................................................................... 60 Clusula ORDER BY...........................................................................................61 Consulta...............................................................................................................62 RIGHT OUTER JOIN.......................................................................................... 64 SubconsultaEscalar............................................................................................. 64 ExpressoSeleo............................................................................................... 65 Instruo SELECT...............................................................................................67 i

Version 10 Manual de Referncia do Derby

ExpressoTabela................................................................................................. 69 SubconsultaTabela.............................................................................................. 69 Instruo UPDATE.............................................................................................. 70 VALUES Expresso............................................................................................ 72 Clusula WHERE................................................................................................ 73 Clusula WHERE CURRENT OF....................................................................... 74 Funes nativas....................................................................................................... 74 Funes nativas padro...................................................................................... 74 Agregaes (funes de conjunto)..................................................................... 75 ABS ou ABSVAL................................................................................................. 76 AVG..................................................................................................................... 76 BIGINT................................................................................................................. 77 CAST................................................................................................................... 77 CHAR...................................................................................................................80 LENGTH.............................................................................................................. 82 Concatenao......................................................................................................82 Expresses NULLIF e CASE.............................................................................. 83 COUNT................................................................................................................ 83 COUNT(*)............................................................................................................ 84 CURRENT DATE................................................................................................ 84 CURRENT_DATE................................................................................................84 CURRENT ISOLATION....................................................................................... 85 CURRENT SCHEMA...........................................................................................85 CURRENT TIME................................................................................................. 85 CURRENT_TIME.................................................................................................85 CURRENT TIMESTAMP..................................................................................... 86 CURRENT_TIMESTAMP.................................................................................... 86 CURRENT_USER............................................................................................... 86 DATE................................................................................................................... 86 DAY......................................................................................................................87 DOUBLE.............................................................................................................. 87 HOUR.................................................................................................................. 88 IDENTITY_VAL_LOCAL...................................................................................... 88 INTEGER............................................................................................................. 90 LOCATE...............................................................................................................90 LCASE ou LOWER............................................................................................. 91 LTRIM.................................................................................................................. 91 MAX..................................................................................................................... 91 MIN...................................................................................................................... 92 MINUTE............................................................................................................... 93 MOD.....................................................................................................................93 MONTH................................................................................................................93 RTRIM..................................................................................................................94 SECOND..............................................................................................................94 SESSION_USER................................................................................................. 94 SMALLINT........................................................................................................... 95 SQRT................................................................................................................... 95 SUBSTR.............................................................................................................. 95 SUM..................................................................................................................... 96 TIME.................................................................................................................... 97 TIMESTAMP........................................................................................................ 97 UCASE ou UPPER............................................................................................. 98 USER................................................................................................................... 98 VARCHAR........................................................................................................... 98 YEAR................................................................................................................... 99 Funes do sistema nativas...................................................................................99 ii

Version 10 Manual de Referncia do Derby

SYSCS_UTIL.SYSCS_CHECK_TABLE..............................................................99 SYSCS_UTIL.SYSCS_GET_RUNTIMESTATISTICS......................................... 99 SYSCS_UTIL.SYSCS_GET_DATABASE_PROPERTY................................... 100 Procedimentos do sistema nativos..................................................................... 100 SYSCS_UTIL.SYSCS_COMPRESS_TABLE....................................................100 SYSCS_UTIL.SYSCS_INPLACE_COMPRESS_TABLE.................................. 101 SYSCS_UTIL.SYSCS_SET_RUNTIMESTATISTICS........................................103 SYSCS_UTIL.SYSCS_SET_STATISTICS_TIMING......................................... 104 SYSCS_UTIL.SYSCS_SET_DATABASE_PROPERTY....................................104 SYSCS_UTIL.SYSCS_FREEZE_DATABASE.................................................. 105 SYSCS_UTIL.SYSCS_UNFREEZE_DATABASE............................................. 105 SYSCS_UTIL.SYSCS_CHECKPOINT_DATABASE......................................... 105 SYSCS_UTIL.SYSCS_BACKUP_DATABASE..................................................106 SYSCS_UTIL.SYSCS_EXPORT_TABLE..........................................................106 SYSCS_UTIL.SYSCS_EXPORT_QUERY........................................................ 107 SYSCS_UTIL.SYSCS_IMPORT_TABLE.......................................................... 108 SYSCS_UTIL.SYSCS_IMPORT_DATA............................................................ 110 Tipos de dado........................................................................................................ 111 Viso geral dos tipos de dado nativos..............................................................111 Tipos numricos................................................................................................ 111 Tipo de dado - atribuies e comparao, classificao e ordenao.............. 114 BIGINT............................................................................................................... 117 BLOB................................................................................................................. 118 CHAR.................................................................................................................118 CHAR FOR BIT DATA...................................................................................... 119 CLOB................................................................................................................. 119 DATE................................................................................................................. 121 DECIMAL........................................................................................................... 121 DOUBLE ...........................................................................................................122 DOUBLE PRECISION....................................................................................... 122 FLOAT............................................................................................................... 123 INTEGER........................................................................................................... 124 LONG VARCHAR..............................................................................................124 LONG VARCHAR FOR BIT DATA................................................................... 125 NUMERIC.......................................................................................................... 125 REAL..................................................................................................................125 SMALLINT......................................................................................................... 126 TIME.................................................................................................................. 126 TIMESTAMP...................................................................................................... 127 VARCHAR......................................................................................................... 128 VARCHAR FOR BIT DATA...............................................................................128 Expresses SQL.....................................................................................................129 Precedncia das expresses............................................................................ 132 Expresso booleana.......................................................................................... 132 Parmetros dinmicos....................................................................................... 134 Palavras reservadas do SQL........................................................................................... 138 Suporte do Derby s funcionalidades do SQL-92......................................................... 142 Tabelas do sistema Derby............................................................................................... 150 SYSALIASES...........................................................................................................150 SYSCHECKS........................................................................................................... 150 SYSCOLUMNS........................................................................................................ 151 SYSCONGLOMERATES......................................................................................... 152 SYSCONSTRAINTS................................................................................................ 153 SYSDEPENDS......................................................................................................... 153 iii

Version 10 Manual de Referncia do Derby

SYSFILES................................................................................................................ 154 SYSFOREIGNKEYS................................................................................................ 154 SYSKEYS................................................................................................................ 155 SYSSCHEMAS........................................................................................................ 155 SYSSTATISTICS..................................................................................................... 156 SYSSTATEMENTS.................................................................................................. 156 SYSTABLES............................................................................................................ 157 SYSTRIGGERS....................................................................................................... 157 SYSVIEWS...............................................................................................................159 Mensagens de exceo e estados SQL do Derby.........................................................160 Referncia de SQLState e mensagem de erro....................................................160 Referncia do JDBC......................................................................................................... 192 Classes, interfaces e mtodos java.sql do ncleo do JDBC.............................192 java.sql.Driver......................................................................................................... 192 java.sql.DriverManager.getConnection................................................................ 193 Sintaxe da URL de conexo com banco de dados Derby................................ 193 Sintaxe da URL de conexo com banco de dados para aplicativos com bancos de dados incorporados......................................................................................194 Sintaxe SQL adicional....................................................................................... 194 Atributos da URL de conexo com o banco de dados Derby........................... 194 java.sql.Driver.getPropertyInfo............................................................................. 195 java.sql.Connection .............................................................................................. 196 java.sql.Connection.setTransactionIsolation .................................................... 196 java.sql.Connection.setReadOnly .....................................................................196 java.sql.Connection.isReadOnly .......................................................................196 Funcionalidades de conexo no suportadas...................................................196 java.sql.DatabaseMetaData................................................................................... 196 Conjuntos de resultados DatabaseMetaData....................................................196 getProcedureColumnsgetProcedureColumns................................................... 197 Parmetros para getProcedureColumns........................................................... 197 Colunas do ResultSet retornado por getProcedureColumns............................ 197 Funcionalidades de DatabaseMetaData no suportadas..................................198 java.sql.Statement .................................................................................................198 Objetos ResultSet..............................................................................................198 java.sql.PreparedStatement.................................................................................. 199 Instrues preparadas e colunas de fluxo........................................................ 199 java.sql.CallableStatement ...................................................................................200 CallableStatement e parmetros OUT.............................................................. 200 CallableStatement e parmetros INOUT...........................................................201 java.sql.ResultSet ................................................................................................. 202 ResultSets e colunas de fluxo.......................................................................... 202 java.sql.ResultSetMetaData...................................................................................203 java.sql.SQLException...........................................................................................203 java.sql.SQLWarning............................................................................................. 203 Mapeamento de java.sql.Types em tipos SQL....................................................203 java.sql.Blob e java.sql.Clob.................................................................................204 Notas..................................................................................................................206 java.sql.Connection............................................................................................... 207 java.sql.ResultSet...................................................................................................207 java.sql.Statement.................................................................................................. 208 java.sql.PreparedStatement.................................................................................. 209 java.sql.CallableStatement ...................................................................................209 java.sql.DatabaseMetaData................................................................................... 209 java.sql.ResultSetMetaData...................................................................................210 java.sql.BatchUpdateException............................................................................ 210 iv

Version 10 Manual de Referncia do Derby

Pacote JDBC para Connected Device Configuration/Foundation Profile (JSR169).................................................................................................................. 210 Funcionalidades apenas do JDBC 3.0.................................................................210 java.sql.Connection .............................................................................................. 211 java.sql.DatabaseMetaData .................................................................................. 211 java.sql.ParameterMetaData..................................................................................212 java.sql.PreparedStatement.................................................................................. 212 java.sql.Savepoint.................................................................................................. 212 Definir e desfazer at um ponto de salvamento............................................... 213 Liberao de ponto de salvamento...................................................................213 Regras para pontos de salvamento.................................................................. 213 Restries dos pontos de salvamento.............................................................. 213 java.sql.Statement.................................................................................................. 214 Chaves autogeradas......................................................................................... 214 Sintaxe de escape do JDBC................................................................................. 214 Palavra chave de escape do JDBC para instrues call.................................. 215 Sintaxe de escape do JDBC.............................................................................215 Sintaxe de escape do JDBC para clusulas LIKE............................................ 216 Sintaxe de escape do JDBC para a palavra chave fn...................................... 216 Sintaxe de escape do JDBC para junes externas.........................................218 Sintaxe de escape do JDBC para formatos de hora........................................ 218 Sintaxe de escape do JDBC para formatos de carimbo do tempo................... 219 Definio de atributos para a URL de conexo com o banco de dados..................... 220 bootPassword=chave............................................................................................ 220 create=true.............................................................................................................. 220 databaseName=nomeBancoDados...................................................................... 221 dataEncryption=true.............................................................................................. 221 encryptionProvider=nomeProvedor..................................................................... 221 encryptionAlgorithm=algoritmo............................................................................222 territory=ll_CC........................................................................................................ 222 logDevice=caminhoDiretorioLog.......................................................................... 223 password=senhaUsuario.......................................................................................224 rollForwardRecoveryFrom=Caminho................................................................... 224 createFrom=Caminho............................................................................................ 224 restoreFrom=Caminho...........................................................................................224 shutdown=true........................................................................................................225 user=nomeUsurio.................................................................................................225 (nenhum atributo).................................................................................................. 226 Conformidade com o J2EE: API de transao Java e extenses javax.sql................ 227 JVM e bibliotecas para as funcionalidades do J2EE......................................... 228 A API do JTA..........................................................................................................228 Notas sobre o comportamento do produto....................................................... 228 javax.sql: Extenses JDBC...................................................................................229 API do Derby..................................................................................................................... 230 Ferramentas e utilitrios autnomos...................................................................230 Classes de implementao do JDBC.................................................................. 230 Driver de JDBC................................................................................................. 230 Classes de fonte de dados............................................................................... 230 Utilitrios e interfaces diversas........................................................................... 231 Territrios suportados......................................................................................................232 Limitaes do Derby.........................................................................................................233 Limitaes do comprimento de identificador..................................................... 233 Limitaes numricas........................................................................................... 233 v

Version 10 Manual de Referncia do Derby

Limitaes das cadeias.........................................................................................234 Limitaes de DATE, TIME e TIMESTAMP.......................................................... 234 Limitaes dos valores do gerenciador de banco de dados............................ 235 Marcas registradas............................................................................................................237

vi

Manual de Referncia do Derby

Apache Software FoundationManual de Referncia do DerbyApache Derby

7

Manual de Referncia do Derby

Direitos autorais reservadosCopyright 2004, 2006 The Apache Software Foundation Licenciado sob a Licena Apache, Verso 2.0 (doravante chamada apenas de "Licena"); este arquivo no pode ser utilizado a no ser em conformidade com a Licena. Pode ser obtida uma cpia da Licena emhttp://www.apache.org/licenses/LICENSE-2.0

Informaes relacionadas Licena

8

Manual de Referncia do Derby

LicenaLicena Apache, Verso 2.0Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 1. Definitions. "License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. "Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. "Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. "You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. "Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. "Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. "Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). "Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. "Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems

9

Manual de Referncia do Derby

that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." "Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. 2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. 3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. 4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: (a) You must give any other recipients of the Work or Derivative Works a copy of this License; and (b) You must cause any modified files to carry prominent notices stating that You changed the files; and (c) You must retain, in the Source form that You distribute, all copyright, attribution notices from the Source excluding those notices that do not the Derivative Works; and of any Derivative Works patent, trademark, and form of the Work, pertain to any part of

(d) If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications

10

Manual de Referncia do Derby

and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. 5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. 6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. 7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. 8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. 9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. END OF TERMS AND CONDITIONS APPENDIX: How to apply the Apache License to your work. To apply the Apache License to your work, attach the following boilerplate notice, with the fields enclosed by brackets "[]" replaced with your own identifying information. (Don't include the brackets!) The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a file or class name and description of purpose be included on the same "printed page" as the copyright notice for easier identification within third-party archives.

11

Manual de Referncia do Derby

Copyright [yyyy] [name of copyright owner] Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

12

Manual de Referncia do Derby

Sobre este documentoPara obter informaes gerais sobre a documentao do Derby, como a relao completa de documentos, convenes e leitura adicional, deve ser consultada a Introduo ao Derby.

Finalidade deste documentoEste documento, o Manual de Referncia do Derby, fornece informaes de referncia sobre o Derby. Cobre a linguagem SQL do Derby, a implementao do JDBC do Derby, os catlogos do sistema do Derby, as mensagens de erro do Derby, as propriedades do Derby, e as palavras chave do SQL.

AudinciaEste documento a referncia para os usurios do Derby, que so tipicamente desenvolvedores de aplicativos. Os usurios do Derby no familiarizados com o padro SQL, ou com a linguagem de programao Java, sero beneficiados pela consulta a livros sobre estes tpicos. Os usurios do Derby que desejarem uma abordagem para trabalhar com o Derby do tipo como fazer, ou uma introduo aos conceitos do Derby, devem consultar o Guia do Desenvolvedor do Derby.

Organizao deste documentoEste documento inclui as seguintes sees: Referncia da linguagem SQL Informaes de referncia sobre a linguagem SQL do Derby, incluindo pginas de manual para instrues, funes e outros elementos da sintaxe. Palavras reservadas do SQL Palavras chave do SQL alm das palavras chave do padro SQL-92. Suporte do Derby s funcionalidades do SQL-92 Uma lista de funcionalidades do SQL-92 que o Derby d suporte e no d suporte. Tabelas do sistema Derby Informaes de referncia sobre os catlogos do sistema do Derby. Mensagens de exceo e estados SQL do Derby Informaes sobre as mensagens de exceo do Derby. Referncia do JDBC Informaes sobre a implementao da interface de JDBC do Derby, incluindo suporte a funcionalidades do JDBC 2.0. Definio de atributos para a URL de conexo com o banco de dados Informaes sobre os atributos suportados pela URL de conexo com o banco de dados do JDBC do Derby. Conformidade com o J2EE: API de transao Java e extenses javax.sql Informaes sobre os atributos suportados pelo suporte do Derby API de Transao Java. API do Derby

13

Manual de Referncia do Derby

Notas sobre as APIs proprietrias para o Derby.

14

Manual de Referncia do Derby

Referncia da linguagem SQLO Derby implementa um subconjunto do ncleo do SQL-92, assim como algumas funcionalidades do SQL-99. Esta seo fornece uma viso geral da linguagem SQL corrente, atravs da descrio das instrues, funes nativas, tipos de dado, expresses e caracteres especiais presentes na linguagem.

Letras maisculas e caracteres especiaisAo utilizar classes e mtodos do JDBC, so submetidas instrues SQL ao Derby na forma de cadeias. O conjunto de caracteres permitido nas cadeias contendo instrues SQL o Unicode. Nestas cadeias se aplicam as seguintes regras: Aspas delimitam os identificadores especiais, referidos no SQL-92 como identificadores delimitados. Apstrofos delimitam cadeias de caracteres. Na cadeia de caracteres, para representar um apstrofo (tambm chamado de aspas simples) so usados dois apstrofos (Em outras palavras, o apstrofo o caractere de escape do apstrofo). As aspas no necessitam de caractere de escape. Para representar aspas deve-se, simplesmente, utilizar aspas. Entretanto, deve ser observado que no programa Java as aspas necessitam do caractere de escape contrabarra (\). Exemplo:-- o apstrofo o caractere de escape do apstrofo VALUES 'Maria D''Almeida' -- no ij no h necessidade de caractere de escape para aspas VALUES 'Ele disse, "Bom dia!"' -- no programa Java aspas necessitam de escape n = stmt.executeUpdate( "UPDATE minhaTabela SET stringCol = 'Ele disse, \"Bom dia!\"'");

As palavras chave do SQL no so sensveis a letras maisculas e minsculas. Por exemplo, a palavra chave SELECT pode ser escrita como SELECT, Select, select, ou sELECT. Os identificadores no estilo SQL-92 no so sensveis a letras maisculas e minsculas (consulte IdentificadorSQL92), a menos que estejam delimitados. Os identificadores no estilo Java so sensveis a letras maisculas e minsculas. O * um caractere curinga na ExpressoSeleo. Consulte O curinga *. Tambm pode ser o operador de multiplicao. Em todos os outros casos um meta-smbolo da sintaxe, sinalizando itens que podem ser repetidos zero ou mais vezes. % e _ so caracteres curinga quando utilizados nas cadeias de caracteres aps o operador LIKE (exceto quando precedidos pelo caractere de escape). Consulte Expresso booleana. De acordo com o padro SQL-92, dois hfens (--) e o caractere de nova-linha delimitam um comentrio. Os dois hfens iniciam o comentrio, e o caractere de nova-linha termina o comentrio.

15

Manual de Referncia do Derby

Identificadores SQLO identificador a representao dentro da linguagem de itens criados pelos usurios, em oposio s palavras chave e comandos da linguagem. Alguns identificadores representam objetos do dicionrio, que so objetos criados pelo usurio (como tabelas, vises, ndices, colunas e restries), que so armazenados no banco de dados. So chamados de objetos do dicionrio porque o Derby armazena as informaes sobre estes objetos nas tabelas do sistema, algumas vezes chamado de dicionrio de dados. O padro SQL tambm define maneiras de criar aliases para estes objetos em certas instrues. Cada tipo de identificador deve estar em conformidade com um conjunto diferente de regras. Os identificadores que representam objetos do dicionrio devem estar em conformidade com as regras de identificador do SQL-92, sendo portanto chamados de IdentificadorSQL92.

Regras para identificadores SQL92Identificadores comuns so identificadores no envoltos por aspas. Os identificadores delimitados so identificadores envoltos por aspas. Um identificador comum deve comear por uma letra, e conter apenas letras, caracteres de sublinhado (_) e dgitos. As letras e dgitos permitidos incluem todas as letras e dgitos do Unicode, mas o Derby no tenta garantir que os caracteres do identificador sejam vlidos no idioma do banco de dados. Um identificador delimitado pode conter qualquer caractere entre as aspas. As aspas envoltrias no fazem parte do identificador; servem apenas para marcar seu comeo e seu fim. Os espaos no final do identificador delimitado no so significativos (so truncados). O Derby traduz duas aspas consecutivas no interior do identificador delimitado como uma aspas, ou seja, as duas aspas "traduzidas" se tornam um caractere do identificador delimitado. Os pontos dentro do identificador delimitado no so separadores, so parte do identificador (o nome do objeto do dicionrio sendo representado). Portanto, no exemplo a seguir:"A.B"

um objeto do dicionrio, enquanto"A"."B"

um objeto do dicionrio qualificado por outro objeto do dicionrio (como uma coluna chamada "B" pertencente tabela "A").

IdentificadorSQL92Um IdentificadorSQL92 um identificador de objeto do dicionrio em conformidade com as regras do SQL-92. O padro SQL-92 declara que os identificadores dos objetos do dicionrio esto limitados a 128 caracteres, e no so sensveis a letras maisculas e minsculas (a menos que estejam delimitados por aspas), porque so traduzidos automaticamente para letras maisculas pelo sistema. No permitido utilizar palavras reservadas como identificadores para os objetos do dicionrio, a menos que estejam delimitadas. Se for tentado utilizar um nome com mais de 128 caracteres, ser lanada a SQLException X0X11.

16

Manual de Referncia do Derby

O Derby define palavras chave alm das especificadas pelo padro SQL-92 (consulte Palavras reservadas do SQL). Exemplo-- o nome da viso armazenado nos -- catlogos do sistema como UMIDENTIFICADOR CREATE VIEW UmIdentificador (RECEBIDO) AS VALUES 1 -- o nome da viso armazenado nos -- catlogos do sistema intacto CREATE VIEW "UmIdentificadorComMaisculasEMinsculas" (RECEBIDO) AS VALUES 1

Esta seo descreve as regras para utilizar IdentificadorSQL92 para representar os objetos do dicionrio que se seguem.Qualificao dos objetos do dicionrio

Uma vez que alguns objetos do dicionrio podem estar contidos em outros objetos, os nomes destes objetos do dicionrio podem ser qualificados. Cada componente separado do componente seguinte por um ponto. O IdentificadorSQL92 "separado-por-ponto". O nome do objeto do dicionrio qualificado para evitar ambiguidade.

nome-da-colunaNa sintaxe do SQL, em muitos lugares o nome da coluna pode ser representado qualificado pelo nome-da-tabela ou pelo nome-da-correlao. Em algumas situaes, no se pode qualificar o nome-da-coluna com o nome-da-tabela ou com o nome-da-correlao. Em vez disso, utilizado um nome-de-coluna-simples. Estas situaes so: criao da tabela (Instruo CREATE TABLE) especificao das colunas atualizveis no cursor no nome de correlao da coluna em uma expresso SELECT (consulte ExpressoSeleo) no nome de correlao da coluna em uma ExpressoTabela (consulte ExpressoTabela) No pode ser utilizado o nome-da-correlao em colunas atualizveis; a utilizao do nome-da-correlao desta maneira causa exceo SQL. Por exemplo:SELECT C11 AS COL1, C12 AS COL2, C13 FROM T1 FOR UPDATE OF C11, C13

Neste exemplo, o nome-da-correlao COL1 para C11 no permitido, porque C11 aparece na lista de colunas FOR UPDATE. Pode ser utilizado o nome-da-correlao COL2 para C12, porque C12 no aparece na lista de colunas de FOR UPDATE. Sintaxe[ { nome-da-tabela | nome-da-correlao } . ] IdentificadorSQL92

Exemplo-- P.PAS o nome da coluna qualificado pelo nome-da-correlao. SELECT P.PAS FROM APP.PASES P

17

Manual de Referncia do Derby

nome-da-correlaoO nome-da-correlao atribudo expresso de tabela na clusula FROM como sendo o novo nome, ou alis, para a tabela. O nome-da-correlao no qualificado pelo nome-do-esquema. No permitido utilizar o nome-da-correlao em colunas atualizveis; a utilizao do nome-da-correlao desta maneira causa uma exceo SQL. Por exemplo:SELECT C11 AS COL1, C12 AS COL2, C13 FROM T1 FOR UPDATE OF C11, C13

Neste exemplo, o nome-da-correlao COL1 para C11 no permitido, porque C11 aparece na lista de colunas de FOR UPDATE. Pode ser utilizado o nome-da-correlao COL2 para C12, porque C12 no aparece na lista de colunas de FOR UPDATE. SintaxeIdentificadorSQL92

Exemplo-- F o nome-da-correlao SELECT F.NOME FROM SAMP.FUNCIONRIOS F

novo-nome-da-tabelaO novo-nome-da-tabela representa uma tabela renomeada. No permitido qualificar o novo-nome-da-tabela com o nome-do-esquema. SintaxeIdentificadorSQL92

Exemplo-- VOS_DISPONVEIS o novo-nome-da-tabela que no inclui o nome-do-esquema RENAME TABLE VOS_DISPONIBILIDADE TO VOS_DISPONVEIS

nome-do-esquemaO nome-do-esquema representa o esquema. Os esquemas contm outros objetos do dicionrio, como tabelas e ndices. Os esquemas fornecem uma maneira de dar nomes a um subconjunto de tabelas e outros objetos do dicionrio no banco de dados. Os esquemas podem ser criados e removidos explicitamente. O esquema de usurio padro o esquema APP (se no for especificado nenhum nome de usurio no momento da conexo). No permitido criar objetos nos esquemas que comeam por SYS. Portanto, as referncias a tabelas podem ser qualificadas pelo nome do esquema. Quando o nome-do-esquema no especificado, o nome de esquema padro inserido implicitamente. As tabelas do sistema so colocadas no esquema SYS. Todas as referncias a tabelas do sistema devem ser qualificadas pelo identificador de esquema SYS. Para obter mais informaes sobre as tabelas do sistema deve ser consultado Tabelas do sistema Derby. 18

Manual de Referncia do Derby

O esquema o objeto de dicionrio no nvel mais alto da hierarquia, portanto o nome-do-esquema no pode ser qualificado. SintaxeIdentificadorSQL92

Exemplo-- RH.FUNCIONRIOS o nome-da-tabela qualificado pelo nome-do-esquema SELECT COUNT(*) FROM RH.FUNCIONRIOS -- Os nomes dos catlogos do sistema devem ser qualificados pelo seu esquema, SYS SELECT COUNT(*) FROM SYS.SYSCOLUMNS

nome-de-coluna-simplesO nome-de-coluna-simples utilizado para representar a coluna quando seu nome no pode ser qualificado pelo nome-da-tabela ou pelo nome-da-correlao. Este o caso quando a qualificao fixa, como na definio da coluna na instruo CREATE TABLE. SintaxeIdentificadorSQL92

Exemplo-- NOME_PAS um nome-de-coluna-simples CREATE TABLE CONTINENTE ( NOME_PAS VARCHAR(26) NOT NULL PRIMARY KEY, COD_ISO_PAS CHAR(2), REGIO_PAS VARCHAR(26))

nome-do-sinnimoO nome-do-sinnimo representa um sinnimo para a tabela ou a viso. O nome-do-sinnimo pode ser qualificado pelo nome-do-esquema. Sintaxe[ nome-do-esquema. ] IdentificadorSQL92

nome-da-tabelaO nome-da-tabela representa a tabela. O nome-da-tabela pode ser qualificado pelo nome-do-esquema. Sintaxe[ nome-do-esquema. ] IdentificadorSQL92

Exemplo-- ENG.PROJETO um nome de tabela que inclui o nome-do-esquema SELECT COUNT(*) FROM ENG.PROJETO

19

Manual de Referncia do Derby

nome-da-visoO nome-da-viso representa uma tabela ou uma viso. O nome-da-viso pode ser qualificado pelo nome-do-esquema. Sintaxe[ nome-do-esquema. ] IdentificadorSQL92

Exemplo-- Esta uma viso qualificada pelo nome-do-esquema SELECT COUNT(*) FROM RH.EMP_CURRICULUM

nome-do-ndiceO nome-do-ndice representa um ndice. Os ndices residem em esquemas, portanto seus nomes podem ser qualificados pelo nome-do-esquema. Os ndices das tabelas do sistema residem no esquema SYS. Sintaxe[ nome-do-esquema . ] IdentificadorSQL92

ExemploDROP INDEX APP.NDICE_ORIGEM; -- NDICE_ORIGEM o nome-do-ndice sem o nome-do-esquema CREATE INDEX NDICE_ORIGEM ON VOS (AEROPORTO_ORIGEM)

nome-da-restrioOs nomes das restries no podem ser qualificados. SintaxeIdentificadorSQL92

Exemplo-- FK2_PAS o nome da restrio CREATE TABLE MAPAS_DETALHADOS ( COD_ISO_PAS CHAR(2) CONSTRAINT FK2_PAS REFERENCES PASES )

nome-do-cursorO nome-do-cursor faz referncia a um cursor. No existe nenhum comando na linguagem SQL para atribuir nome a um cursor. Em vez disso, deve ser utilizada a API do JDBC para atribuir nomes a cursores ou obter os nomes gerados pelo sistema. Para obter mais informaes deve ser consultado o Guia do Desenvolvedor do Derby. Se for atribudo nome a um cursor, poder ser feita referncia a este nome nas instrues SQL. O nome-do-cursor no pode ser qualificado. SintaxeIdentificadorSQL92

20

Manual de Referncia do Derby

Exemplostmt.executeUpdate("UPDATE SAMP.EQUIPES SET COMISS = " + "COMISS + 20 " + "WHERE CURRENT OF " + ResultSet.getCursorName());

nome-do-gatilhoO nome-do-gatilho faz referncia a um gatilho criado pelo usurio. Sintaxe[ nome-do-esquema . ] IdentificadorSQL92

ExemploDROP TRIGGER GATILHO1

identificador-de-autorizaoOs nomes de usurio no sistema Derby so conhecidos por identificadores de autorizao. O identificador de autorizao representa o nome do usurio, caso tenha sido fornecido o nome do usurio na requisio de conexo. O esquema padro para o usurio idntico ao identificador de autorizao. No sistema de autenticao pode haver diferena entre letras maisculas e minsculas nos nomes dos usurios, mas no h diferena entre letras maisculas e minsculas no sistema de autorizao do Derby, a no ser que o nome esteja delimitado. Para obter mais informaes deve ser consultado o Guia do Desenvolvedor do Derby. SintaxeIdentificadorSQL92

ExemploCALL SYSCS_UTIL.SYSCS_SET_DATABASE_PROPERTY( 'derby.database.fullAccessUsers', 'Amber,FRED')

InstruesEsta seo fornece pginas de manual tanto para as construes de alto nvel da linguagem, como para partes desta. Por exemplo, a instruo CREATE INDEX uma instruo de alto nvel que pode ser executada diretamente atravs da interface de JDBC. Esta seo tambm inclui as clusulas, que no so instrues de alto nvel, e no podem ser executadas diretamente, mas apenas como parte das instrues de alto nvel. As clusulas ORDER BY e WHERE so exemplos deste tipo de clusula. Por fim, esta seo tambm inclui algumas partes de instrues sintaticamente complexas chamada de expresses como, por exemplo, ExpressoSeleo e SubconsultaTabela. As clusulas e expresses possuem suas prprias pginas de manual para facilitar a referncia. A menos que esteja explicitamente declarado o contrrio, as instrues de alto nvel, todas assinaladas com a palavra instruo, podem ser executadas, ou preparadas e executadas, atravs das interfaces fornecidas pelo JDBC. Este manual indica se a expresso pode ser executada como uma instruo de alto nvel. As sees fornecem informaes gerais sobre a utilizao de instrues, e descries de instrues especficas.

21

Manual de Referncia do Derby

Interao com o sistema de dependnciasO Derby acompanha internamente as dependncias das instrues preparadas, que so instrues SQL pr-compiladas antes de serem executadas. So tipicamente preparadas (pr-compiladas) uma vez, e executadas vrias vezes. As instrues preparadas dependem de objetos do dicionrio, e de instrues referenciadas pelas mesmas (Os objetos do dicionrio incluem tabelas, colunas, restries, ndices, vises e gatilhos). A remoo ou modificao de objetos do dicionrio ou de instrues que a instruo preparada depende a invalida internamente, significando que o Derby vai tentar recompilar automaticamente a instruo quando esta for executada. Se a recompilao da instruo no for bem-sucedida, o pedido de execuo falhar. Entretanto, se for tomada alguma ao para restaurar a dependncia quebrada (como a restaurao da tabela que falta), a instruo preparada poder ser executada, porque o Derby ir recompil-la automaticamente no prximo pedido de execuo. As instrues dependem umas das outras; uma instruo UPDATE WHERE CURRENT depende da instruo referenciada. Remover a instruo da qual esta depende, invalida a instruo UPDATE WHERE CURRENT. Alm disso, as instrues preparadas no permitem a execuo de certas instrues de DDL quando existem conjuntos de resultados abertos para as mesmas. As pginas do manual de cada instruo detalham quais aes invalidam a instruo, caso esteja preparada. Abaixo segue um exemplo utilizando a ferramenta ij do Derby:ij> CREATE TABLE MINHA_TABELA (MINHA_COLUNA INT); 0 rows inserted/updated/deleted ij> INSERT INTO MINHA_TABELA VALUES (1), (2), (3); 3 rows inserted/updated/deleted -- este exemplo utiliza o comando prepare do ij, -- que prepara a instruo ij> prepare p1 AS 'INSERT INTO MINHA_TABELA VALUES (4)'; -- p1 depende de MINHA_TABELA; ij> execute p1; 1 row inserted/updated/deleted -- O Derby executa sem recompilar ij> CREATE INDEX I1 ON MINHA_TABELA(MINHA_COLUNA); 0 rows inserted/updated/deleted -- p1 est temporariamente invlido por causa do novo ndice ij> execute p1; 1 row inserted/updated/deleted -- O Derby recompila automaticamente e executa p1 ij> DROP TABLE MINHA_TABELA; 0 rows inserted/updated/deleted -- O Derby permite remover a tabela -- porque o conjunto de resultados de p1 est fechado, -- entretanto a instruo p1 est temporariamente invlida ij> CREATE TABLE MINHA_TABELA (MINHA_COLUNA INT); 0 rows inserted/updated/deleted ij> INSERT INTO MINHA_TABELA VALUES (1), (2), (3); 3 rows inserted/updated/deleted ij> execute p1; 1 row inserted/updated/deleted -- Como p1 est invlida, o Derby tenta recompilar -- antes de executar. -- bem-sucedido e executa. ij> DROP TABLE MINHA_TABELA; 0 rows inserted/updated/deleted -- a instruo p1 agora est invlida, -- e desta vez a tentativa de recompilar -- na hora de executar vai falhar ij> execute p1;

22

Manual de Referncia do Derby

ERROR 42X05: Table/View 'MINHA_TABELA' does not exist.

Instruo ALTER TABLEA instruo ALTER TABLE permite: adicionar coluna tabela adicionar restrio tabela remover da tabela uma restrio existente aumentar o comprimento de coluna VARCHAR, CHAR VARYING e CHARACTER VARYING sobrepor o bloqueio no nvel de linha para a tabela (ou remover a sobreposio) SintaxeALTER TABLE nome-da-tabela { ADD COLUMN definio-da-coluna | ADD CONSTRAINT clusula | DROP { PRIMARY KEY | FOREIGN KEY nome-da-restrio | UNIQUE nome-da-restrio | CHECK nome-da-restrio | CONSTRAINT nome-da-restrio } ALTER alterao-da-coluna | LOCKSIZE { ROW | TABLE } }

definio-da-colunanome-de-coluna-simplestipo-de-dado [ restrio no nvel-de-coluna ]* [ [ WITH ] DEFAULT {ExpressoConstante | NULL } ]

alterao-da-colunanome-da-coluna SET DATA TYPE VARCHAR(inteiro) | nome-da-coluna SET INCREMENT BY constante-inteira

Na alterao-da-coluna, SET INCREMENT BY constante-inteira especifica o intervalo entre valores consecutivos da coluna de identidade. O prximo valor a ser gerado para a coluna de identidade ser determinado a partir do ltimo valor atribudo e o incremento a ser aplicado. A coluna deve ter sido definida com o atributo IDENTITY. ALTER TABLE no afeta nenhuma viso que faz referncia tabela sendo alterada. Isto inclui as vises que possuem "*" na lista do SELECT. Estas vises devem ser removidas e recriadas para que retornem a nova coluna. Adio de colunas A sintaxe para a definio-da-coluna de uma nova coluna a mesma que para a coluna na instruo CREATE TABLE. Isto significa que pode ser colocada uma restrio de coluna para a nova coluna na instruo ALTER TABLE ADD COLUMN. Entretanto, somente pode ser adicionada uma coluna com a restrio NOT NULL a uma tabela existente se for fornecido um valor padro; caso contrrio, lanada uma exceo ao ser executada a instruo ALTER TABLE. Assim como em CREATE TABLE, se a definio da coluna incluir uma restrio de unicidade ou de chave primria, a coluna no poder conter valores nulos e, portanto, tambm deve ser especificado o atributo NOT NULL (SQLState 42831). Note: Se a tabela possuir um gatilho de UPDATE sem uma lista de colunas explcita, adicionar uma coluna tabela adicionar esta coluna lista de colunas de atualizao implcita sobre a qual o gatilho est definido, e todas as referncias a variveis de transio sero invalidadas para que incluam a nova coluna.

23

Manual de Referncia do Derby

Adio de restries ALTER TABLE ADD CONSTRAINT adiciona restrio no nvel-de-tabela a uma tabela existente. Pode ser adicionado atravs de ALTER TABLE qualquer tipo de restrio no nvel-de-tabela suportado. Existem as seguintes limitaes para adicionar restrio a uma tabela existente: Ao adicionar uma restrio de chave estrangeira ou de verificao a uma tabela existente, o Derby verifica a tabela para ter certeza que as linhas existentes satisfazem a restrio. Se alguma linha for invlida, o Derby lanar uma exceo de instruo, e a restrio no ser adicionada. Todas as colunas includas na chave primria devem conter dados no nulos e serem nicas. ALTER TABLE ADD UNIQUE e PRIMARY KEY dispem de um mtodo resumido para definir uma chave primria formada por uma nica coluna. Se for especificado PRIMARY KEY na definio da coluna C, o efeito ser o mesmo de especificar a clusula PRIMARY KEY(C) como uma clusula em separado. A coluna no pode conter valores nulos, portanto o atributo NOT NULL tambm deve ser especificado. Para obter informaes sobre a sintaxe das restries deve ser consultada a Clusula CONSTRAINT. Ao se adicionar restries com a sintaxe ALTER TABLE ADD CONSTRAINT, deve ser utilizada a sintaxe para restrio no nvel-de-tabela. Remoo de restries ALTER TABLE DROP CONSTRAINT remove uma restrio de uma tabela existente. Para remover uma restrio sem nome, deve ser especificado o nome gerado para a restrio armazenado em SYS.SYSCONSTRAINTS na forma de um identificador delimitado. A remoo da restrio de chave primria, de unicidade ou de chave estrangeira remove o ndice fsico que impe a restrio (tambm conhecido por ndice de apoio). Modificao de colunas A alterao-da-coluna permite alterar a coluna especificada das seguintes maneiras: Aumentar o comprimento de uma coluna VARCHAR existente. Pode ser utilizado CHARACTER VARYING ou CHAR VARYING como sinnimo para a palavra chave VARCHAR. Para aumentar o comprimento de uma coluna deste tipo, deve ser especificado o tipo de dado e o novo tamanho aps o nome da coluna. No permitido diminuir o tamanho ou mudar o tipo de dado. No permitido aumentar o comprimento de uma coluna que faz parte de uma chave primria ou chave de unicidade referenciada por uma restrio de chave estrangeira, ou que seja parte de uma restrio de chave estrangeira. Especificao do intervalo entre valores consecutivos da coluna de identidade. Para definir o intervalo entre valores consecutivos da coluna de identidade deve ser especificada uma constante-inteira. A coluna deve ter sido definida anteriormente com o atributo IDENTITY (SQLState 42837). Caso existam linhas na tabela, os valores na coluna para a qual o padro para SET INCREMENT foi adicionado no mudam. Definio de padro Pode ser especificado um valor padro para a nova coluna. O valor padro o valor inserido na coluna se no for especificado nenhum outro valor. Quando no especificado explicitamente, o valor padro da coluna NULL. Se for especificado valor padro para uma nova coluna, as linhas existentes na tabela recebero o valor padro na nova coluna.

24

Manual de Referncia do Derby

Para obter mais informaes sobre valor padro deve ser consultada a Instruo CREATE TABLE. Alterao da granularidade do bloqueio da tabela A clusula LOCKSIZE permite sobrepor o bloqueio no nvel-de-linha para uma determinada tabela, se o sistema utilizar a definio padro de bloqueio no nvel-de-linha (Se o sistema estiver definido com bloqueio no nvel-de-tabela, no ser possvel alterar a granularidade do bloqueio, embora o Derby permita utilizar a clusula LOCKSIZE nesta situao sem lanar uma exceo). Para sobrepor o bloqueio no nvel-de-linha de uma determinada tabela, deve ser definido o bloqueio da tabela como TABLE. Se a tabela tiver sido criada com a granularidade de bloqueio no nvel-de-tabela, o bloqueio poder passar a ser no nvel-de-linha especificando ROW na clusula LOCKSIZE da instruo ALTER TABLE. Para obter informaes sobre porque algumas vezes esta alterao til, deve ser consultado o Ajuste do Derby. Exemplos-----Adicionar uma nova coluna com restrio no nvel-de-coluna a uma tabela existente. Se a tabela tiver alguma linha ser lanada uma exceo, uma vez que a nova coluna ser inicializada com NULL em todas as linhas da tabela.

ALTER TABLE CIDADES ADD COLUMN REGIO VARCHAR(26) CONSTRAINT NOVA_RESTRIO CHECK (REGIO IS NOT NULL); -- Adicionar uma restrio de unicidade a uma tabela existente. -- Ser lanada uma exceo se forem encontradas chaves duplicadas. ALTER TABLE SAMP.DEPARTAMENTOS ADD CONSTRAINT NOVA_UNICIDADE UNIQUE (NUM_DEP); -----Adicionar uma restrio de chave estrangeira tabela cidades. Cada linha de cidades verificada para ter certeza que satisfaz a restrio. Se alguma linha no satisfizer a restrio, a restrio no ser adicionada

ALTER TABLE CIDADES ADD CONSTRAINT FK_PASES FOREIGN KEY (PAS) REFERENCES PASES (PAS); -- Adicionar uma restrio de chave primria tabela. -- Primeiro, criar a tabela. CREATE TABLE ATIVIDADES (ID_CIDADE INT NOT NULL, ESTAO CHAR(2), ATIVIDADE VARCHAR(32) NOT NULL); -- No ser possvel adicionar esta restrio se as -- colunas que compem a chave primria possurem -- dados nulos ou valores duplicados. ALTER TABLE ATIVIDADES ADD PRIMARY KEY (ID_CIDADE, ATIVIDADE); -- Remover a restrio de chave primria da tabela cidades. ALTER TABLE CIDADES DROP CONSTRAINT PK_CIDADES; -- Remover a restrio de chave estrangeira da tabela cidades. ALTER TABLE CIDADES DROP CONSTRAINT FK_PASES; -- Adicionar a coluna NUM_DEP com valor padro igual a 1. ALTER TABLE SAMP.ATIV_EMP ADD COLUMN NUM_DEP INT DEFAULT 1; -- Aumentar o comprimento da coluna VARCHAR. ALTER TABLE SAMP.EMP_FOTO ALTER FORMATO_FOTO SET DATA TYPE VARCHAR(30); -- Alterar a granularidade do bloqueio da tabela. ALTER TABLE SAMP.VENDAS LOCKSIZE TABLE;

25

Manual de Referncia do Derby

Resultados A instruo ALTER TABLE faz com que todas as instrues que dependem da tabela sendo alterada sejam recompiladas antes de sua prxima execuo. A instruo ALTER TABLE no permitida caso existam cursores abertos fazendo referncia tabela sendo alterada.

Instrues CREATEAs instrues CREATE so utilizadas com funes, ndices, procedimentos, esquemas, sinnimos, tabelas, gatilhos e vises.Instruo CREATE FUNCTION

A instruo CREATE FUNCTION permite criar funes Java que podem ser utilizadas em expresses. SintaxeCREATE FUNCTION nome-da-funo ( [ parmetro-da-funo [, parmetro-da-funo] ] * ) RETURNS tipo-de-dado [ elemento-da-funo ] *

nome-da-funo[ nome-do-esquema. ] IdentificadorSQL92

Se o nome-do-esquema no for fornecido, o esquema corrente se tornar o esquema padro. Se for especificado um nome de procedimento qualificado, o nome do esquema no poder comear por SYS. parmetro-da-funo[ nome_do_parmetro ] tipo-de-dado

O nome_do_parmetro deve ser nico na funo. A sintaxe do tipo-de-dado est descrita em Tipos de dado. Note: Os tipos-de-dado longos, como LONG VARCHAR, LONG VARCHAR FOR BIT DATA, CLOB e BLOB, no so permitidos como parmetros da instruo CREATE FUNCTION. elemento-da-funo{ | | | | | } LANGUAGE { JAVA } EXTERNAL NAME cadeia-de-caracteres PARAMETER STYLE JAVA { NO SQL | CONTAINS SQL | READS SQL DATA } { RETURNS NULL ON NULL INPUT | CALLED ON NULL INPUT }

LANGUAGE JAVA- o gerenciador de banco de dados chama a funo como um mtodo esttico pblico de uma classe Java. EXTERNAL NAME cadeia-de-caracteres A cadeia-de-caracteres descreve o mtodo Java a ser chamado quando a funo for executada, e possui a seguinte forma:nome-da-classe.nome-do-mtodo

O EXTERNAL NAME (nome externo) no pode conter espaos indevidos.

26

Manual de Referncia do Derby

PARAMETER STYLE JAVA - A funo utiliza uma conveno de passagem de parmetros em conformidade com a linguagem Java e com a especificao de rotinas SQL. Os parmetros INOUT e OUT so passados como matrizes de uma nica entrada para facilitar o retorno de valores. Os conjuntos de resultados so retornados atravs de parmetros adicionais para um mtodo Java do tipo java.sql.ResultSet[] passados como matrizes de uma nica entrada. O Derby no suporta tipos de coluna longos (por exemplo, LONG VARCHAR, BLOB, etc.). Ocasiona erro tentar utilizar um destes tipos de coluna longos. NO SQL, CONTAINS SQL, READS SQL DATA Indica se a funo emite instrues SQL e, se o fizer, de que tipo. CONTAINS SQL Indica que podem ser executadas pela funo instrues SQL que no lem nem modificam dados SQL. As instrues no suportadas por qualquer funo retornam um erro diferente. NO SQL Indica que a funo no pode executar nenhuma instruo SQL. READS SQL DATA Indica que podem ser includas na funo instrues SQL que no modificam dados SQL. As instrues no suportadas por qualquer funo retornam um erro diferente. Este o valor padro. RETURNS NULL ON NULL INPUT ou CALLED ON NULL INPUT Especifica se a funo ser chamada quando algum de seus argumentos de entrada for nulo. RETURNS NULL ON NULL INPUT Especifica que a funo no ser chamada quando o valor de algum de seus argumentos de entrada for nulo. O resultado ser o valor nulo. CALLED ON NULL INPUT Especifica que a funo ser chamada quando o valor de algum de seus argumentos de entrada for nulo. Esta especificao significa que a funo deve ser codificada para testar nulos nos valores dos argumentos. A funo poder retornar um valor nulo, ou no nulo. Esta a definio padro. Os elementos da funo podem estar em qualquer ordem, mas cada tipo de elemento s pode aparecer uma vez. A definio da funo deve conter estes elementos: LANGUAGE PARAMETER STYLE EXTERNAL NAME ExemploCREATE FUNCTION rad_graus(radianos DOUBLE) RETURNS DOUBLE PARAMETER STYLE JAVA NO SQL LANGUAGE JAVA EXTERNAL NAME 'java.lang.Math.toDegrees' Instruo CREATE INDEX

A instruo CREATE INDEX cria um ndice em uma tabela. Os ndices podem incluir uma ou mais colunas da tabela. SintaxeCREATE [UNIQUE] INDEX nome-do-ndice ON nome-da-tabela ( nome-de-coluna-simples [ ASC | DESC ] [ , nome-de-coluna-simples [ ASC | DESC ]] * )

No Derby, o nmero mximo de colunas para chave do ndice 16. 27

Manual de Referncia do Derby

O nome do ndice no pode ter mais que 128 caracteres. O nome da coluna no pode aparecer mais de uma vez na mesma instruo CREATE INDEX. Entretanto, ndices diferentes podem incluir a mesma coluna. O Derby pode utilizar os ndices para melhorar o desempenho das instrues de manipulao de dados (consulte o Ajuste do Derby). Alm disso, os ndices UNIQUE fornecem uma maneira de verificar a integridade dos dados. Os nomes dos ndices so nicos no esquema (Alguns sistemas de banco de dados permitem que tabelas diferentes no mesmo esquema possuam ndices com o mesmo nome, mas o Derby no permite). assumido que a tabela e o ndice esto no mesmo esquema, se o nome do esquema for especificado para um dos nomes, mas no para o outro. Se o nome do esquema for especificado tanto para o ndice quanto para a tabela, ser lanada uma exceo se os nomes dos esquemas no forem o mesmo. Se no for especificado o nome do esquema nem para a tabela e nem para o ndice, ser utilizado o esquema corrente. O Derby utiliza, por padro, a ordem ascendente de cada coluna para criar o ndice. Especificar ASC aps o nome da coluna no modifica o comportamento padro. A palavra chave DESC aps o nome da coluna faz com que o Derby utilize a ordem descendente da coluna para criar o ndice. Utilizar a ordem descendente para uma coluna pode ajudar a melhorar o desempenho dos comandos que requerem resultados em uma ordem de classificao mista ou na ordem descendente, e para os comandos que selecionam o valor mnimo ou mximo de uma coluna indexada. Se for especificado um nome de ndice qualificado, o nome do esquema no poder comear por SYS. ndices e restries As restries de unicidade, de chave primria, e de chave estrangeira, geram ndices que impem, ou "apoiam", a restrio (por isso, algumas vezes so chamados de ndices de apoio). Se uma coluna, ou conjunto de colunas, tiver uma restrio UNIQUE ou PRIMARY KEY aplicada, no ser permitido criar ndice com estas colunas. O Derby j ter criado um ndice com nome gerado pelo sistema. Os nomes gerados pelo sistema para os ndices que apoiam as restries so facilmente encontrados consultando as tabelas do sistema, se for especificado o nome da restrio. Por exemplo, para descobrir o nome do ndice que apoia a restrio PK_VOS:SELECT CONGLOMERATENAME FROM SYS.SYSCONGLOMERATES, SYS.SYSCONSTRAINTS WHERE SYS.SYSCONGLOMERATES.TABLEID = SYSCONSTRAINTS.TABLEID AND CONSTRAINTNAME = 'PK_VOS' CREATE INDEX NDICE_ORIGEM ON VOS(AEROPORTO_ORIGEM); -- valores monetrios so geralmente ordenados do maior para o menor, -- portanto o ndice criado na ordem descendente CREATE INDEX PAG_DESC ON SAMP.EMPREGADOS (SALRIO); -- utilizar um tamanho de pgina maior para o ndice CALL SYSCS_UTIL.SYSCS_SET_DATABASE_PROPERTY('derby.storage.pageSize','8192'); CREATE INDEX IDX_VENDAS ON SAMP.VENDAS (VENDAS); CALL SYSCS_UTIL.SYSCS_SET_DATABASE_PROPERTY('derby.storage.pageSize',NULL);

Tamanho da pgina e comprimento da chave

28

Manual de Referncia do Derby

Note: Em um ndice, o tamanho das colunas chave deve ser igual ou menor que a metade do tamanho da pgina. Se o comprimento das colunas chave, de uma linha existente na tabela, for maior que a metade do tamanho da pgina do ndice, a criao do ndice para a tabela com estas colunas chave falhar. Este erro somente ocorre ao criar o ndice, quando uma linha existente na tabela no respeita este critrio. Aps o ndice ser criado, as inseres falham se o tamanho da chave associada no respeitar este critrio. Sistema de dependncia de instrues As instrues preparadas envolvendo SELECT, INSERT, UPDATE, UPDATE WHERE CURRENT, DELETE e DELETE WHERE CURRENT na tabela referenciada pela instruo CREATE INDEX so invalidadas quando o ndice criado. Os cursores abertos nas tabelas no so afetados.Instruo CREATE PROCEDURE

A instruo CREATE PROCEDURE permite criar procedimentos armazenados em Java, que podem ser chamados utilizando a instruo CALL PROCEDURE. SintaxeCREATE PROCEDURE nome-do-procedimento ( [ parmetro-do-procedimento [, parmetro-do-procedimento] ] * ) [ elemento-do-procedimento ] *

nome-do-procedimento[ nome-do-esquema. ] IdentificadorSQL92

Se o nome-do-esquema no for fornecido, o esquema corrente ser o esquema padro. Se for especificado um nome de procedimento qualificado, o nome do esquema no poder comear por SYS. parmetro-do-procedimento[ { IN | OUT | INOUT } ] [ nome-do-parmetro ] tipo-de-dado

O valor padro para o parmetro IN. O nome-do-parmetro deve ser nico no procedimento. A sintaxe do tipo-de-dado est descrita em Tipos de dado. Note: Os tipos-de-dado longos, como LONG VARCHAR, LONG VARCHAR FOR BIT DATA, CLOB e BLOB, no podem ser usados como parmetros nas instrues CREATE PROCEDURE. elemento-do-procedimento{ | | | | | } [ DYNAMIC ] RESULT SETS INTEGER LANGUAGE { JAVA } EXTERNAL NAME cadeia-de-caracteres PARAMETER STYLE JAVA { NO SQL | MODIFIES SQL DATA | CONTAINS SQL | READS SQL DATA }

DYNAMIC RESULT SETS integer Indica o limite superior estimado de conjuntos de resultados retornados pelo procedimento. O padro sem (zero) conjuntos de resultados dinmicos. LANGUAGE

29

Manual de Referncia do Derby

JAVA - o gerenciador de banco de dados chama o procedimento como um mtodo esttico pblico de uma classe Java. EXTERNAL NAME cadeia-de-caracteres A cadeia-de-caracteres descreve o mtodo Java a ser chamado quando o procedimento for executado, e possui a seguinte forma:nome_da_classe.nome_do_mtodo

O nome externo no pode conter espaos. PARAMETER STYLE JAVA - O procedimento utiliza uma conveno de passagem de parmetros em conformidade com a linguagem Java e com a especificao de rotinas SQL. Os parmetros INOUT e OUT so passados como matrizes de uma nica entrada para facilitar o retorno de valores. Os conjuntos de resultados so retornados atravs de parmetros adicionais para um mtodo Java do tipo java.sql.ResultSet [] que so passados como matrizes de uma nica entrada. O Derby no suporta tipos de coluna longos (por exemplo, LONG VARCHAR, BLOB, etc.). Ocasiona erro tentar utilizar um destes tipos de coluna longos. NO SQL, CONTAINS SQL, READS SQL DATA, MODIFIES SQL DATA Indica se o procedimento armazenado emite instrues SQL e, se o fizer, de que tipo. CONTAINS SQL Indica que podem ser executadas pelo procedimento armazenado instrues SQL que no lem nem modificam dados SQL. As instrues no suportadas por qualquer procedimento armazenado retornam um erro diferente. O valor padro MODIFIES SQL DATA. NO SQL Indica que o procedimento armazenado no pode executar nenhuma instruo SQL. READS SQL DATA Indica que podem ser includas no procedimento armazenado algumas instrues SQL que no modificam dados SQL. As instrues no suportadas por qualquer procedimento armazenado retornam um erro diferente. MODIFIES SQL DATA Indica que o procedimento armazenado pode executar qualquer instruo SQL, exceto as instrues no suportadas por procedimentos armazenados. Os elementos do procedimento podem estar em qualquer ordem, mas cada tipo de elemento pode aparecer somente uma nica vez. A definio do procedimento deve conter os seguintes elementos: LANGUAGE PARAMETER STYLE EXTERNAL NAME ExemploCREATE PROCEDURE VENDAS.RENDIMENTO_TOTAL(IN V_MS INTEGER, IN V_ANO INTEGER, OUT TOTAL DECIMAL(10,2)) PARAMETER STYLE JAVA READS SQL DATA LANGUAGE JAVA EXTERNAL NAME 'com.acme.vendas.calculaRendimentoPorMes' Instruo CREATE SCHEMA

O esquema uma forma de agrupar logicamente objetos em uma nica coleo, e fornecer um espao de nomes nico para os objetos. Sintaxe

30

Manual de Referncia do Derby

CREATE SCHEMA nome-do-esquema

A instruo CREATE SCHEMA utilizada para criar esquemas. O nome do esquema no pode possuir mais de 128 caracteres. Os nomes dos esquemas devem ser nicos no banco de dados.-- Criar um esquema para as tabelas relacionadas com os empregados CREATE SCHEMA EMP; -- Criar um esquema para as tabelas relacionadas com as linhas areas CREATE SCHEMA VOS -- Criar uma tabela chamada "disponibilidade" em cada esquema CREATE TABLE VOS.DISPONIBILIDADE ( ID_VO CHAR(6) NOT NULL, NUM_SEGMENTO INT NOT NULL, DATA_VO DATE NOT NULL, ASSENTOS_ECONMICOS_OCUPADOS INT, ASSENTOS_EXECUTIVOS_OCUPADOS INT, ASSENTOS_PRIMEIRA_CLASSE_OCUPADOS INT, CONSTRAINT PK_VOS_DISPONIBILIDADE PRIMARY KEY (ID_VO, NUM_SEGMENTO, DATA_VO)); CREATE TABLE EMP.DISPONIBILIDADE ( ID_HOTEL INT NOT NULL, DATA_RESERVA DATE NOT NULL, QUARTOS_OCUPADOS INT, CONSTRAINT PK_HOTEL_DISPONIBILIDADE PRIMARY KEY (ID_HOTEL, DATA_RESERVA)); Instruo CREATE SYNONYM

A instruo CREATE SYNONYM utilizada para fornecer um nome alternativo para uma tabela ou viso presente no mesmo esquema ou em outro esquema. Tambm podem ser criados sinnimos para outros sinnimos, resultando em sinnimos aninhados. O sinnimo pode ser utilizado no lugar do nome qualificado original da tabela ou da viso, nas instrues SELECT, INSERT, UPDATE, DELETE e LOCK TABLE. Pode ser criado um sinnimo para uma tabela ou uma viso que no existe, mas a tabela ou viso de destino dever existir antes do sinnimo poder ser utilizado. Os sinnimos compartilham o mesmo espao de nomes das tabelas e vises. No pode ser criado um sinnimo com o mesmo nome de uma tabela que j existe no mesmo esquema. De maneira semelhante, no pode ser criada uma tabela ou viso com nome correspondente a um sinnimo j existente. O sinnimo pode ser definido para uma tabela ou viso que no existe quando o sinnimo criado. Se a tabela ou viso no existir, ser recebida uma mensagem de advertncia (SQLState 01522). O objeto referenciado dever existir quando o sinnimo for utilizado em uma instruo da DML. Pode ser criado sinnimo aninhado (um sinnimo para outro sinnimo), mas qualquer tentativa de criar um sinnimo que resulte em uma referncia circular retorna uma mensagem de erro (SQLState 42916). No podem ser definidos sinnimos nos esquemas do sistema. Todos os esquemas comeando por 'SYS' so considerados esquemas do sistema, e so reservados pelo Derby. No pode ser definido um sinnimo para uma tabela temporria. A tentativa de definir um sinnimo para uma tabela temporria retorna uma mensagem de erro (SQLState XCL51). Sintaxe 31

Manual de Referncia do Derby

CREATE SYNONYM nome-do-sinnimo FOR { nome-da-viso | nome-da-tabela }

Na instruo, nome-do-sinnimo representa o nome do sinnimo sendo atribudo tabela ou viso de destino, enquanto nome-da-viso e nome-da-tabela representam o nome original da tabela ou viso de destino. Exemplo CREATE SYNONYM SAMP.T1 FOR SAMP.TABELA_COM_NOME_COMPRIDOInstruo CREATE TABLE

A instruo CREATE TABLE cria uma tabela. As tabelas contm colunas e restries, que so regras que os dados devem estar em conformidade. A restrio no nvel-de-tabela especifica uma coluna ou vrias colunas. As colunas possuem um tipo de dado e podem especificar restries de coluna (restries no nvel-de-coluna). Para obter informaes sobre as restries deve ser consultada a Clusula CONSTRAINT. Pode ser especificado um valor padro para a coluna. O valor padro o valor a ser inserido na coluna quando no especificado nenhum outro valor. Quando no especificado explicitamente, o valor padro para a coluna NULL. Consulte Valor padro da coluna. Podem ser especificadas propriedades de armazenamento, como o tamanho da pgina para a tabela, chamando o procedimento do sistema SYSCS_UTIL.SYSCS_SET_DATABASE_PROPERTY. Se for especificado um nome de tabela qualificado, o nome do esquema no poder comear por SYS. SintaxeCREATE TABLE nome-da-tabela ( {definio-da-coluna | restrio no nvel-de-tabela} [ , {definio-da-coluna | restrio no nvel-de-tabela} ] * )

ExemplosCREATE TABLE DISPONIBILIDADE_HOTEL ( ID_HOTEL INT NOT NULL, DATA_RESERVA DATE NOT NULL, QUARTOS_RESERVADOS INT DEFAULT 0, PRIMARY KEY (ID_HOTEL, DATA_RESERVA)); -- A definio de chave primria no nvel-de-tabela permite -- incluir duas colunas na definio da chave primria PRIMARY KEY (ID_HOTEL, DATA_RESERVA)) -- Atribuir um atributo de coluna de identidade a uma coluna INTEGER, -- e tambm definir uma restrio de chave primria na coluna CREATE TABLE PESSOAS ( ID_PESSOA INT NOT NULL GENERATED ALWAYS AS IDENTITY CONSTRAINT PK_PESSOAS PRIMARY KEY, PESSOA VARCHAR(26)); -- Atribuir um atributo de coluna de identidade a uma coluna SMALLINT -- com valor inicial igual a 5 e valor do incremento igual a 5. CREATE TABLE GRUPOS ( ID_GRUPO SMALLINT NOT NULL GENERATED ALWAYS AS IDENTITY (START WITH 5, INCREMENT BY 5), ENDEREO VARCHAR(100), TEL VARCHAR(15));

32

Manual de Referncia do Derby

Note: Para obter mais exemplos de instrues CREATE TABLE utilizando vrias restries deve ser consultada a Clusula CONSTRAINT.

definio-da-coluna:nome-de-coluna-simplestipo-de-dado [ restrio no nvel-de-coluna ]* [ [ WITH ] DEFAULT { expresso-constante | NULL } |especificao-de-coluna-gerada ] [ restrio no nvel-de-coluna ]*

A sintaxe do tipo-de-dado est descrita em Tipos de dado. As sintaxes de restrio no nvel-de-coluna e restrio no nvel-de-tabela esto descritas na Clusula CONSTRAINT. Valor padro da coluna Na definio do valor padro, a expresso-constante uma expresso que no faz referncia a nenhuma tabela. Pode incluir constantes, registros especiais de data e hora, esquemas correntes, usurios e nulo.

especificao-de-coluna-gerada:[ GENERATED { ALWAYS | BY DEFAULT } AS IDENTITY [ ( START WITH ConstanteInteira [ ,INCREMENT BY ConstanteInteira] ) ] ] ]

Atributos da coluna de identidade Nas colunas SMALLINT, INT e BIGINT com atributo de identidade, o Derby atribui automaticamente valores inteiros incrementados para a coluna. Os atributos da coluna de identidade se comportam como os outros valores padro, ou seja, quando a instruo de insero no especifica o valor para a coluna, o Derby fornece automaticamente o valor. Entretanto, o valor no uma constante; o Derby incrementa automaticamente o valor padro na hora da insero. A palavra chave IDENTITY somente pode ser especificada quando o tipo de dado associado coluna for um dos seguintes tipos inteiros exatos. SMALLINT INT BIGINT Existem dois tipos de coluna de identidade no Derby: aquelas que so sempre geradas (GENERATED ALWAYS), e aquelas que so geradas por padro (GENERATED BY DEFAULT). GENERATED ALWAYS Uma coluna de identidade que sempre gerada, incrementa o valor padro em todas as inseres e armazena o valor incrementado na coluna. Ao contrrio dos outros valores padro, no possvel inserir diretamente um valor ou atualizar uma coluna de identidade que sempre gerada. Por isso, deve ser especificada a palavra chave DEFAULT ao fazer insero na coluna de identidade, ou no incluir a coluna de identidade na lista de colunas na insero. Por exemplo:CREATE I CH INSERT INSERT TABLE SAUDAES ( INT GENERATED ALWAYS AS IDENTITY, CHAR(50)); INTO SAUDAES VALUES (DEFAULT, 'al'); INTO SAUDAES(CH) VALUES ('bom dia');

33

Manual de Referncia do Derby

Os valores gerados automaticamente na coluna de identidade GENERATED ALWAYS so nicos. A criao de uma coluna de identidade no cria um ndice para a coluna. GENERATED BY DEFAULT Uma coluna de identidade gerada por padro, somente incrementa e utiliza o valor padro nas inseres quando no fornecido nenhum valor explcito. Ao contrrio da colunas sempre geradas, pode ser especificado um valor na instruo de insero a ser utilizado no lugar do valor padro gerado. Para utilizar o valor gerado, deve ser especificada a palavra chave DEFAULT ao inserir na coluna de identidade, ou no incluir a coluna de identidade na lista de colunas da insero. Para especificar um valor, este deve ser includo na instruo de insero. Por exemplo:CREATE TABLE SAUDAES ( I INT GENERATED BY DEFAULT AS IDENTITY, CH CHAR(50)); -- especificar o valor "1": INSERT INTO SAUDAES VALUES (1, 'ol'); -- usar o padro gerado INSERT INTO SAUDAES VALUES (DEFAULT, 'salut'); -- usar o padro gerado INSERT INTO SAUDAES(CH) VALUES ('bonjour');

Deve ser observado que ao contrrio das colunas GENERATED ALWAYS, as colunas GENERATED BY DEFAULT no garantem unicidade. Portanto, no exemplo acima as linhas ol e salut possuem o valor de identidade igual a "1", porque a coluna gerada comea por "1" e o valor especificado pelo usurio tambm "1". Para no permitir duplicidade, especialmente ao carregar ou importar dados, a tabela deve ser criada utilizando um valor para START WITH correspondente ao primeiro valor de identidade que o sistema deve atribuir. Para verificar esta condio e no permiti-la, pode ser utilizada uma chave primria ou restrio de unicidade na coluna de identidade GENERATED BY DEFAULT. Por padro, o valor inicial da coluna de identidade 1, e o valor do incremento 1. Podem ser especificados valores diferentes do padro para o valor