Apache Derby - Guia rápido

Apache Derby é um Relacional Database Mcompromisso Ssistema que é totalmente baseado na linguagem de programação Java (escrita / implementada). É um banco de dados de código aberto desenvolvido pela Apache Software Foundation.

A Oracle lançou o equivalente ao Apache Derby com o nome JavaDB.

Recursos do Apache Derby

A seguir estão os recursos notáveis ​​do banco de dados Derby -

  • Platform independent - O Derby usa o formato de banco de dados em disco, em que os bancos de dados nele são armazenados em um arquivo no disco dentro do diretório com o mesmo nome do banco de dados.

  • No modifying data - Por causa disso, você pode mover bancos de dados derby para outras máquinas sem modificar os dados.

  • Transactional support - O Derby fornece suporte completo para transações garantindo a integridade dos dados.

  • Including databases - Você pode incluir bancos de dados pré-construídos / existentes em seus aplicativos derby atuais.

  • Less space - O banco de dados Derby ocupa pouco espaço, ou seja, ocupa menos espaço e é fácil de usar e implantar.

  • Embed with Java Application- O Derby fornece um mecanismo de banco de dados integrado que pode ser integrado aos aplicativos Java e será executado na mesma JVM do aplicativo. Simplesmente carregar o driver inicia o banco de dados e para com os aplicativos.

Limitações do Apache Derby

A seguir estão as limitações do Apache Derby -

  • O Derby não suporta índices para tipos de dados como BLOB e LONGVARCHAR.

  • Se o Derby não tiver espaço em disco suficiente, ele será encerrado imediatamente.

Armazenamento de dados

Ao armazenar dados, o Apache Derby segue um conceito conhecido como conglomerate. Neste, os dados de uma tabela serão armazenados em um arquivo separado. Da mesma forma, cada índice de uma tabela também é armazenado em um arquivo separado. Assim, haverá um arquivo separado para cada tabela ou índice no banco de dados.

Biblioteca / Componentes Apache Derby

A distribuição do Apache Derby fornece vários componentes. Na pasta lib da distribuição do apache que você baixou, você pode observar os arquivos jar representando vários componentes.

Arquivo jar Componente Descrição
derby.jar Motor de banco de dados e driver JDBC

O mecanismo de banco de dados do Apache Derby é um mecanismo de banco de dados relacional integrado que suporta JDBC e APIs de SQL.

Ele também atua como driver embutido, com o qual você pode se comunicar com o Derby usando aplicativos Java.

derbynet.jar derbyrun.jar Servidor de rede

O servidor de rede do Apache Derby fornece a funcionalidade cliente-servidor, onde os clientes podem se conectar ao servidor Derby por meio de uma rede.

derbyclient.jar Driver JDBC do cliente de rede
derbytools.jar Ferramentas de linha de comando Este arquivo jar contém ferramentas como sysinfo, ij, e dblook.
derbyoptionaltools.jar Utilitários de linha de comando opcionais (ferramentas)

Este arquivo jar fornece ferramentas opcionais: ferramenta opcional databaseMetaData, ferramenta opcional ForeignViews, ferramenta opcional luceneSupport, ferramenta opcional rawDBReader, ferramenta opcional simpleJson, etc.

derbyLocale_XX.jar Arquivos jar para localizar mensagens

Além dos arquivos jar mencionados acima, você pode ver vários derbyLocale_XX.jar (es, fr, hu, it, ja, etc.). Usando isso, você pode localizar as mensagens do Apache Derby.

Você pode implantar o Apache Derby em dois modos, ou seja, modo incorporado e modo de servidor.

Modo incorporado

Você pode executar o derby em modo integrado usando o aplicativo Java (usando o driver integrado). Se você implementar o Derby no modo integrado, o mecanismo de banco de dados será executado na mesma JVM que o aplicativo Java. Ele começa e para com o aplicativo. Você pode acessar o banco de dados apenas com este aplicativo.

Modo de servidor

No modo servidor, o derby será executado na JVM de um servidor de aplicativos, onde você pode enviar uma solicitação ao servidor para acessá-lo. Ao contrário do modo integrado, vários aplicativos (java) podem enviar uma solicitação ao servidor e acessar o banco de dados.

O capítulo a seguir explica como baixar e instalar o Apache Derby.

Baixando Apache Derby

Visite a página inicial da página inicial do Apache Derby https://db.apache.org/derby/. Clique na guia Download.

Selecione e clique no link da versão mais recente do Apache Derby.

Ao clicar no link selecionado, você será redirecionado para o Distributionspágina do Apache Derby. Se você observar aqui, o derby fornece distribuições a saber, db-derby-bin, db-derbylib.zip, db-derby-lib-debug.zip e db-derby-src.zip.

Faça o download do db-derby-binpasta. Copie seu conteúdo para uma pasta separada onde você deseja instalar o Apache Derby. (por exemplo, digaC:\Derby)

Agora, para trabalhar com Derby,

  • Certifique-se de que você já definiu o JAVA_HOME variável passando a localização da pasta bin da pasta de instalação Java e inclui o JAVA_HOME/bin na variável PATH.

  • Crie uma nova variável de ambiente, DERBY_HOME com valor C: \ Derby.

  • A pasta bin de distribuições db-derby-bin (nós a alteramos como C: \ Derby \ bin) contém todos os arquivos jar necessários.

Conforme discutido, o Apache Derby pode ser instalado / implantado de duas maneiras, como segue -

  • Embedded mode- Nesse caso, você precisa acessar o banco de dados usando o driver JDBC Derby incorporado. Você pode iniciar e parar o derby através do aplicativo Java. O mecanismo de banco de dados e seu aplicativo serão executados na mesma JVM.

  • Network Server mode- Neste modo, você pode acessar o Derby de um modo cliente-servidor típico, onde o Derby está embutido no sistema do servidor. Em seguida, as máquinas cliente em execução em diferentes JVMs (a do Servidor) enviarão solicitações ao servidor e o servidor responderá a essas solicitações.

O cliente pode ser outro JVM na mesma máquina do sistema do servidor ou um aplicativo Java de um sistema remoto.

Instalando o Derby no modo incorporado

Para instalar o Apache Derby no modo incorporado, inclua o arquivo jar derby.jar em seu CLASSPATH.

Ou você pode definir o caminho de classe para os arquivos jar necessários executando o setEmbeddedCPcomando. Navegue pelobin diretório do Apache Derby e execute este arquivo conforme mostrado abaixo -

C:\Users\MYUSER>cd %DERBY_HOME%/bin
C:\Derby\bin>setEmbeddedCP.bat
C:\Derby\bin>SET DERBY_HOME=C:\Derby
C:\Derby\bin>set
CLASSPATH=C:\Derby\lib\derby.jar;C:\Derby\lib\derbytools.jar;C:\Derby/lib/derby
optionaltools.jar;C:\Users\Tutorialspoint\Google
Drive\Office\Derby\derby_zip\New folder\db-derby-10.12.1.1-
bin\lib;C:\EXAMPLES_\Task\jars\*;C:\EXAMPLES\jars\mysql-connector-java-5.1.40-
bin.jar;C:\Users\Tutorialspoint\Google Drive\Office\37.Junit
Update\jars;C:\Program Files\Apache Software Foundation\Tomcat
8.5\lib\*;C:\Derby\lib\*;

Após configurar o Apache Derby, para acessá-lo, execute programas Java usando o driver integrado.

Verificação

Você pode verificar a configuração usando o ij ferramenta como mostrado abaixo -

C:\Derby\bin>ij
ij version 10.14
ij> connect 'jdbc:derby:SampleDB;create=true';
ij>

Instalação do Derby no modo de servidor de rede

Para instalar o Apache Derby no modo de servidor de rede, você precisa incluir derbynet.jar e derbytools.jar arquivos para o CLASSPATH.

Ou você pode definir o caminho da classe para os arquivos jar necessários executando o setNetworkServerCPcomando. Navegue pelobin diretório do Apache Derby e execute este arquivo conforme mostrado abaixo -

C:\Users\MYUSER>cd %DERBY_HOME%/bin
C:\Derby\bin>setNetworkServerCP.bat
C:\Derby\bin>SET DERBY_INSTALL=C:\Derby
C:\Derby\bin>set
CLASSPATH=C:\Derby\lib\derbynet.jar;C:\Derby\lib\derbytools.jar;C:\Derby/lib/de
rbyoptionaltools.jar;C:\Users\Tutorialspoint\Google
Drive\Office\Derby\derby_zip\New folder\db-derby-10.12.1.1-
bin\lib;C:\EXAMPLES_\Task\jars\*;C:\EXAMPLES\jars\mysql-connector-java-5.1.40-
bin.jar;C:\Users\Tutorialspoint\Google Drive\Office\37.Junit
Update\jars;C:\Program Files\Apache Software Foundation\Tomcat
8.5\lib\*;C:\Derby\lib\*;

Iniciando Derby em modo de servidor

Você pode iniciar o Network Server executando o comando startNetworkServer. Navegue pelobin diretório do Apache Derby e execute este comando conforme mostrado abaixo -

C:\Derby\bin>startNetworkServer
Fri Jan 04 11:20:30 IST 2019 : Security manager installed using the Basic
server security policy.
Fri Jan 04 11:20:30 IST 2019 : Apache Derby Network Server - 10.14.2.0 -
(1828579) started and ready to accept connections on port 1527

Ou você pode iniciar o servidor usando derbyrun.jar como mostrado abaixo -

C:\Users\MYUSER>cd %DERBY_HOME%/lib
C:\Derby\lib>java -jar derbyrun.jar server start
Fri Jan 04 11:27:20 IST 2019: Security manager installed using the Basic server
security policy.
Fri Jan 04 11:27:21 IST 2019: Apache Derby Network Server - 10.14.2.0 -
(1828579) started and ready to accept connections on port 1527

Cliente de rede

No cliente, adicione os arquivos jar derbyclient.jar e derbytools.jarpara o CLASSPATH. Ou execute osetNetworkClientCP comando como mostrado abaixo -

C:\Users\MYUSER>cd %DERBY_HOME%/bin
C:\Derby\bin>setNetworkClientCP
C:\Derby\bin>SET DERBY_HOME=C:\Derby
C:\Derby\bin>set
CLASSPATH=C:\Derby\lib\derbyclient.jar;C:\Derby\lib\derbytools.jar;C:\Derby/lib
/derbyoptionaltools.jar;C:\Derby\lib\derby.jar;C:\Derby\lib\derbytools.jar;C:\D
erby/lib/derbyoptionaltools.jar;C:\Users\Tutorialspoint\Google
Drive\Office\Derby\derby_zip\New folder\db-derby-10.12.1.1-
bin\lib;C:\EXAMPLES_\Task\jars\*;C:\EXAMPLES\jars\mysql-connector-java-5.1.40-
bin.jar;C:\Users\Tutorialspoint\Google Drive\Office\37.Junit
Update\jars;C:\Program Files\Apache Software Foundation\Tomcat
8.5\lib\*;C:\Derby\lib\*;

Então, a partir desse cliente, você pode enviar solicitações ao servidor.

Verificação

Você pode verificar a configuração usando o ij ferramenta como mostrado abaixo -

C:\Derby\bin>ij
ij version 10.14
ij> connect 'jdbc:derby://localhost:1527/SampleDB;create=true';
ij>

Ambiente Apache Derby Eclipse

Ao trabalhar com o Eclipse, você precisa definir o caminho de construção para todos os arquivos jar necessários.

Etapa 1: crie um projeto e defina o caminho de construção

Abra o eclipse e crie um projeto de amostra. Clique com o botão direito no projeto e selecione a opçãoBuild Path -> Configure Build Caminho conforme mostrado abaixo -

No Java Build Path quadro no Libraries guia, clique em Add External JARs.

E selecione o necessário jar arquivos na pasta lib da pasta de instalação do Derby e clique em Apply and Close.

O Apache Derby fornece ferramentas como sysinfo, ij e, dblook.

ferramenta sysinfo

Usando esta ferramenta, você pode obter informações sobre o ambiente Java e Derby.

Navegue pela pasta bin do diretório de instalação do Derby e execute o comando sysinfo conforme mostrado abaixo -

C:\Users\MY_USER>cd %DERBY_HOME%/bin
C:\Derby\bin>sysinfo

Na execução, ele fornece informações do sistema sobre java e derby conforme fornecido abaixo -

------------------ Java Information ------------------
Java Version: 1.8.0_101
Java Vendor: Oracle Corporation
Java home: C:\Program Files\Java\jdk1.8.0_101\jre
Java classpath: C:\Users\Tutorialspoint\Google
Drive\Office\Derby\derby_zip\New folder\db-derby-10.12.1.1-
bin\lib;C:\EXAMPLES_\Task\jars\*;C:\EXAMPLES\jars\mysql-connector-java-5.1.40-
bin.jar;C:\Users\Tutorialspoint\Google Drive\Office\37.Junit
Update\jars;C:\Program Files\Apache Software Foundation\Tomcat
8.5\lib\*;C:\Derby\lib\derby.jar;C:\Derby\lib\derbyclient.jar;C:\Derby\lib\derb
yLocale_cs.jar;C:\Derby\lib\derbyLocale_de_DE.jar;C:\Derby\lib\derbyLocale_es.j
ar;C:\Derby\lib\derbyLocale_fr.jar;C:\Derby\lib\derbyLocale_hu.jar;C:\Derby\lib
\derbyLocale_it.jar;C:\Derby\lib\derbyLocale_ja_JP.jar;C:\Derby\lib\derbyLocale
_ko_KR.jar;C:\Derby\lib\derbyLocale_pl.jar;C:\Derby\lib\derbyLocale_pt_BR.jar;C
:\Derby\lib\derbyLocale_ru.jar;C:\Derby\lib\derbyLocale_zh_CN.jar;C:\Derby\lib\
derbyLocale_zh_TW.jar;C:\Derby\lib\derbynet.jar;C:\Derby\lib\derbyoptionaltools
.jar;C:\Derby\lib\derbyrun.jar;C:\Derby\lib\derbytools.jar;;C:\Derby/lib/derby.
jar;C:\Derby/lib/derbynet.jar;C:\Derby/lib/derbyclient.jar;C:\Derby/lib/derbyto
ols.jar;C:\Derby/lib/derbyoptionaltools.jar
OS name: Windows 10
OS architecture: amd64
OS version: 10.0
Java user name: Tutorialspoint
Java user home: C:\Users\Tutorialspoint
Java user dir: C:\Derby\bin
java.specification.name: Java Platform API Specification
java.specification.version: 1.8
java.runtime.version: 1.8.0_101-b13
--------- Derby Information --------
[C:\Derby\lib\derby.jar] 10.14.2.0 - (1828579)
[C:\Derby\lib\derbytools.jar] 10.14.2.0 - (1828579)
[C:\Derby\lib\derbynet.jar] 10.14.2.0 - (1828579)
[C:\Derby\lib\derbyclient.jar] 10.14.2.0 - (1828579)
[C:\Derby\lib\derbyoptionaltools.jar] 10.14.2.0 - (1828579)
------------------------------------------------------
----------------- Locale Information -----------------
Current Locale : [English/United States [en_US]]
Found support for locale: [cs]
 version: 10.14.2.0 - (1828579)
Found support for locale: [de_DE]
 version: 10.14.2.0 - (1828579)
Found support for locale: [es]
 version: 10.14.2.0 - (1828579)
Found support for locale: [fr]
 version: 10.14.2.0 - (1828579)
Found support for locale: [hu]
 version: 10.14.2.0 - (1828579)
Found support for locale: [it]
 version: 10.14.2.0 - (1828579)
Found support for locale: [ja_JP]
 version: 10.14.2.0 - (1828579)
Found support for locale: [ko_KR]
 version: 10.14.2.0 - (1828579)
Found support for locale: [pl]
 version: 10.14.2.0 - (1828579)
Found support for locale: [pt_BR]
 version: 10.14.2.0 - (1828579)
Found support for locale: [ru]
 version: 10.14.2.0 - (1828579)
Found support for locale: [zh_CN]
 version: 10.14.2.0 - (1828579)
Found support for locale: [zh_TW]
 version: 10.14.2.0 - (1828579)
------------------------------------------------------
------------------------------------------------------

ijtool

Usando esta ferramenta, você pode executar scripts e consultas do Apache Derby.

Navegue pela pasta bin do diretório de instalação do Derby e execute o comando ij conforme mostrado abaixo -

C:\Users\MY_USER>cd %DERBY_HOME%/bin
C:\Derby\bin>ij

Isso vai te dar ij shell onde você pode executar comandos e scripts do derby, como mostrado abaixo -

ij version 10.14
ij>

Usando help comando, você pode obter a lista de comandos suportados por este shell.

C:\Derby\bin>cd %DERBY_HOME%/bin
C:\Derby\bin>ij
ij version 10.14
ij> help;
Supported commands include:
 PROTOCOL 'JDBC protocol' [ AS ident ];
 -- sets a default or named protocol
 DRIVER 'class for driver'; -- loads the named class
 CONNECT 'url for database' [ PROTOCOL namedProtocol ] [ AS connectionName ];
 -- connects to database URL
 -- and may assign identifier
 SET CONNECTION connectionName; -- switches to the specified connection
 SHOW CONNECTIONS; -- lists all connections
 AUTOCOMMIT [ ON | OFF ]; -- sets autocommit mode for the connection
 DISCONNECT [ CURRENT | connectionName | ALL ];
 -- drop current, named, or all connections;
-- the default is CURRENT
 SHOW SCHEMAS; -- lists all schemas in the current database
 SHOW [ TABLES | VIEWS | PROCEDURES | FUNCTIONS | SYNONYMS ] { IN schema };
 -- lists tables, views, procedures, functions or
synonyms
 SHOW INDEXES { IN schema | FROM table };
 -- lists indexes in a schema, or for a table
 SHOW ROLES; -- lists all defined roles in the database,
sorted
 SHOW ENABLED_ROLES; -- lists the enabled roles for the current
 -- connection (to see current role use
 -- VALUES CURRENT_ROLE), sorted
 SHOW SETTABLE_ROLES; -- lists the roles which can be set for the
 -- current connection, sorted
 DESCRIBE name; -- lists columns in the named table
 COMMIT; -- commits the current transaction
 ROLLBACK; -- rolls back the current transaction
 PREPARE name AS 'SQL-J text'; -- prepares the SQL-J text
 EXECUTE { name | 'SQL-J text' } [ USING { name | 'SQL-J text' } ] ;
 -- executes the statement with parameter
-- values from the USING result set row
 REMOVE name; -- removes the named previously prepared
statement
 RUN 'filename'; -- run commands from the named file
 ELAPSEDTIME [ ON | OFF ]; -- sets elapsed time mode for ij
 MAXIMUMDISPLAYWIDTH integerValue;
 -- sets the maximum display width for
-- each column to integerValue
 ASYNC name 'SQL-J text'; -- run the command in another thread
 WAIT FOR name; -- wait for result of ASYNC'd command
 HOLDFORCONNECTION; -- sets holdability for a connection to HOLD
 -- (i.e. ResultSet.HOLD_CURSORS_OVER_COMMIT)
 NOHOLDFORCONNECTION; -- sets holdability for a connection to NO HOLD
 -- (i.e. ResultSet.CLOSE_CURSORS_AT_COMMIT)
 GET [SCROLL INSENSITIVE] [WITH { HOLD | NOHOLD }] CURSOR name AS 'SQL-J
query';
 -- gets a cursor (JDBC result set) on the query
-- the default is a forward-only cursor with
holdability
 NEXT name; -- gets the next row from the named cursor
 FIRST name; -- gets the first row from the named scroll
cursor
 LAST name; -- gets the last row from the named scroll
cursor
 PREVIOUS name; -- gets the previous row from the named scroll
cursor
 ABSOLUTE integer name; -- positions the named scroll cursor at the
absolute row number
 -- (A negative number denotes position from the
last row.)
 RELATIVE integer name; -- positions the named scroll cursor relative to
the current row
 -- (integer is number of rows)
 AFTER LAST name; -- positions the named scroll cursor after the
last row
 BEFORE FIRST name; -- positions the named scroll cursor before the
first row
 GETCURRENTROWNUMBER name; -- returns the row number for the current
position of the named scroll cursor
 -- (0 is returned when the cursor is not
positioned on a row.)
 CLOSE name; -- closes the named cursor
 LOCALIZEDDISPLAY [ ON | OFF ];
 -- controls locale sensitive data representation
 EXIT; -- exits ij
 HELP; -- shows this message
Any unrecognized commands are treated as potential SQL-J commands and executed
directly.

dblooktool

Esta ferramenta é usada para gerar a linguagem de definição de dados.

Navegue pela pasta bin do diretório de instalação do Derby e execute o dblook comando como mostrado abaixo -

C:\Users\MY_USER>cd %DERBY_HOME%/bin
C:\Derby\bin>dblook -d myURL

Onde, myURL é a URL de conexão do banco de dados para o qual você precisa gerar DDL.

Este capítulo fornece a sintaxe de todas as instruções SQL do Apache Derby.

Todas as instruções começam com qualquer uma das palavras-chave como SELECT, INSERT, UPDATE, DELETE, ALTER, DROP, CREATE, USE, SHOW e todas as instruções terminam com um ponto e vírgula (;).

As instruções SQL do Apache Derby são maiúsculas e minúsculas em sensitivos, incluindo nomes de tabelas.

Instrução CREATE

CREATE TABLE table_name (
   column_name1 column_data_type1 constraint (optional),
   column_name2 column_data_type2 constraint (optional),
   column_name3 column_data_type3 constraint (optional)
);

DROP TABLE

DROP TABLE table_name;

Instrução INSERT

INSERT INTO table_name VALUES (column_name1, column_name2, ...);

Instrução SELECT

SELECT column_name, column_name, ... FROM table_name;

Declaração UPDATE

UPDATE table_name
   SET column_name = value, column_name = value, ...
   WHERE conditions;

Declaração DELETE

DELETE FROM table_name WHERE condition;

Declaração DESCRIBE

Describe table_name

Instrução SQL TRUNCATE TABLE

TRUNCATE TABLE table_name;

Instrução ALTER - Adicionando coluna

ALTER TABLE table_name ADD COLUMN column_name column_type;

Instrução ALTER - Adicionando restrição

ALTER TABLE table_name ADD CONSTRAINT constraint_name constraint (column_name);

Instrução ALTER - coluna descartando

ALTER TABLE table_name DROP COLUMN column_name;

Instrução ALTER - Eliminando restrição

ALTER TABLE table_name DROP CONSTRAINT constraint_name;

Cláusula WHERE

SELECT * from table_name WHERE condition;
or,
DELETE from table_name WHERE condition;
or,
UPDATE table_name SET column_name = value WHERE condition;

Cláusula GROUP BY

SELECT column1, column2, . . . table_name GROUP BY column1, column2, . . .;

Cláusula ORDER BY

SELECT * FROM table_name ORDER BY column_name ASC|DESC.

Ter Cláusula

SELECT column1, column2 . . . from table_name GROUP BY column having
condition;

Criando índice

CTREATE INDEX index_name on table_name (column_name);

Criando um índice UNIQUE

CREATE UNIQUE INDEX index_name on table_name (column_name);

Criação de um índice COMPOSTO

CREATE INDEX index_name on table_name (column_name1, column_name2);

Exibindo os índices

SHOW INDEXES FROM table_name;

Queda de índices

DROP INDEX index_name;

Tipo de dados é um atributo que especifica o tipo de dados de qualquer objeto. Cada coluna, variável e expressão possui um tipo de dados relacionado. Você pode usar esses tipos de dados ao criar suas tabelas. Você pode escolher um tipo de dados para uma coluna da tabela com base em seus requisitos.

O Derby Server oferece várias categorias de tipos de dados para seu uso, conforme listado abaixo -

Tipos de dados numéricos inteiros

A seguir está a lista de tipos de dados numéricos inteiros -

TIPO DE DADOS TAMANHO DE PARA
SMALLINT 2 bytes -32768 32767
INTEIRO 4 bytes -2.147.483.648 2.147.483.647
BIGINT 8 bytes -9223372036854775808 9223372036854775808

Tipos de dados numéricos aproximados

A seguir está a lista de tipos de dados numéricos aproximados -

TIPO DE DADOS TAMANHO DE PARA
REAL 4 bytes -3,40E + 38 3,40E + 38
DUPLA PRECISÃO 8 bytes -1,79E + 308 1,79E + 308
FLUTUADOR -1,79E + 308 1,79E + 308

Tipos de dados numéricos exatos

A seguir está a lista de tipos de dados numéricos exatos -

TIPO DE DADOS DE PARA
DECIMAL -10 ^ 38 +1 10 ^ 38 -1
NUMÉRICO -10 ^ 38 +1 10 ^ 38 -1

A instrução CREATE TABLE é usada para criar uma nova tabela no banco de dados Derby.

Sintaxe

A seguir está a sintaxe da instrução CREATE.

CREATE TABLE table_name (
   column_name1 column_data_type1 constraint (optional),
   column_name2 column_data_type2 constraint (optional),
   column_name3 column_data_type3 constraint (optional)
);

Outra maneira de criar uma tabela no Apache Derby é especificar os nomes das colunas e os tipos de dados usando uma consulta. A sintaxe para isso é fornecida abaixo -

CREATE TABLE table_name AS SELECT * FROM desired_table WITH NO DATA;

Exemplo

A seguinte instrução SQL cria uma tabela chamada Student com quatro colunas, onde id é a chave primária e é gerada automaticamente.

ij> CREATE TABLE Student (
   Id INT NOT NULL GENERATED ALWAYS AS IDENTITY,
   Age INT NOT NULL,
   First_Name VARCHAR(255),
   last_name VARCHAR(255),
   PRIMARY KEY (Id)
);
> > > > > > > 0 rows inserted/updated/deleted

O comando DESCRIBE descreve a tabela especificada listando as colunas e seus detalhes, se a tabela existir. Você pode usar este comando para verificar se a tabela foi criada.

ij> DESCRIBE Student;
COLUMN_NAME |TYPE_NAME |DEC&|NUM&|COLUM&|COLUMN_DEF|CHAR_OCTE&|IS_NULL&
------------------------------------------------------------------------------
ID |INTEGER |0 |10 |10 |AUTOINCRE&|NULL |NO
AGE |INTEGER |0 |10 |10 |NULL |NULL |NO
FIRST_NAME |VARCHAR |NULL|NULL|255 |NULL |510 |YES
LAST_NAME |VARCHAR |NULL|NULL|255 |NULL |510 |YES
4 rows selected

Crie uma tabela usando o programa JDBC

Esta seção ensina como criar uma tabela no banco de dados Apache Derby usando o aplicativo JDBC.

Se desejar solicitar o servidor de rede Derby usando o cliente de rede, certifique-se de que o servidor esteja instalado e funcionando. O nome da classe para o driver do cliente de rede éorg.apache.derby.jdbc.ClientDriver e a URL é jdbc: derby: // localhost: 1527 / DATABASE_NAME; create = true; user = USER_NAME; passw ord = PASSWORD ".

Siga as etapas abaixo para criar uma tabela no Apache Derby -

Etapa 1: registrar o driver

Para se comunicar com o banco de dados, em primeiro lugar, você precisa registrar o driver. oforName() método da aula, Classaceita um valor String que representa um nome de classe, carrega-o na memória, que o registra automaticamente. Registre o driver usando este método.

Etapa 2: obter a conexão

Em geral, a primeira etapa que fazemos para nos comunicar com o banco de dados é nos conectarmos a ele. oConnectionclasse representa a conexão física com um servidor de banco de dados. Você pode criar um objeto de conexão invocando ogetConnection() método do DriverManagerclasse. Crie uma conexão usando este método.

Etapa 3: Crie um objeto de instrução

Você precisa criar um Statement ou PreparedStatement or, CallableStatementobjetos para enviar instruções SQL para o banco de dados. Você pode criá-los usando os métodoscreateStatement(), prepareStatement() and, prepareCall()respectivamente. Crie qualquer um desses objetos usando o método apropriado.

Etapa 4: execute a consulta

Depois de criar uma instrução, você precisa executá-la. oStatement classe fornece vários métodos para executar uma consulta como o execute()método para executar uma instrução que retorna mais de um conjunto de resultados. oexecuteUpdate()método executa consultas como INSERT, UPDATE, DELETE. oexecuteQuery() método para resultados que retorna dados etc. Use um desses métodos e execute a instrução criada anteriormente.

Exemplo

O exemplo de JDBC a seguir demonstra como criar uma tabela no Apache Derby usando o programa JDBC. Aqui, estamos nos conectando a um banco de dados denominado sampleDB (será criado se não existir) usando o driver incorporado.

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
public class CreateTable {
   public static void main(String args[]) throws Exception {
      //Registering the driver
      Class.forName("org.apache.derby.jdbc.EmbeddedDriver");
      //Getting the Connection object
      String URL = "jdbc:derby:sampleDB;create=true";
      Connection conn = DriverManager.getConnection(URL);

      //Creating the Statement object
      Statement stmt = conn.createStatement();
 
      //Executing the query
      String query = "CREATE TABLE Employees( "
         + "Id INT NOT NULL GENERATED ALWAYS AS IDENTITY, "
         + "Name VARCHAR(255), "
         + "Salary INT NOT NULL, "
         + "Location VARCHAR(255), "
         + "PRIMARY KEY (Id))";
         stmt.execute(query);
         System.out.println("Table created");
   }
}

Resultado

Ao executar o programa acima, você obterá a seguinte saída

Table created

A instrução DROP TABLE é usada para remover uma tabela existente, incluindo todos os seus gatilhos, restrições e permissões.

Sintaxe

A seguir está a sintaxe da instrução DROP TABLE.

ij> DROP TABLE table_name;

Exemplo

Suponha que você tenha uma tabela chamada Aluno no banco de dados. A seguinte instrução SQL exclui uma tabela chamada Aluno.

ij> DROP TABLE Student;
0 rows inserted/updated/deleted

Visto que removemos a tabela se tentarmos descrevê-la, obteremos um erro da seguinte forma

ij> DESCRIBE Student;
IJ ERROR: No table exists with the name STUDENT

Eliminar tabela usando o programa JDBC

Esta seção ensina como eliminar uma tabela no banco de dados Apache Derby usando o aplicativo JDBC.

Se desejar solicitar o servidor de rede Derby usando o cliente de rede, certifique-se de que o servidor esteja instalado e funcionando. O nome da classe para o driver do cliente de rede é org.apache.derby.jdbc.ClientDriver e o URL é jdbc: derby: // localhost: 1527/DATABASE_NAME;criar = verdadeiro; usuário =USER_NAME; passw ord =PASSWORD"

Siga as etapas fornecidas abaixo para eliminar uma tabela no Apache Derby

Etapa 1: registrar o driver

Para se comunicar com o banco de dados, em primeiro lugar, você precisa registrar o driver. oforName() método da aula Classaceita um valor String que representa um nome de classe, carrega-o na memória, que o registra automaticamente. Registre o driver usando este método.

Etapa 2: obter a conexão

Em geral, a primeira etapa que fazemos para nos comunicar com o banco de dados é nos conectarmos a ele. oConnectionclasse representa a conexão física com um servidor de banco de dados. Você pode criar um objeto de conexão invocando ogetConnection() método do DriverManagerclasse. Crie uma conexão usando este método.

Etapa 3: Crie um objeto de instrução

Você precisa criar um Statement ou PreparedStatement ou, CallableStatementobjetos para enviar instruções SQL para o banco de dados. Você pode criá-los usando os métodoscreateStatement(), prepareStatement() and, prepareCall()respectivamente. Crie qualquer um desses objetos usando o método apropriado.

Etapa 4: execute a consulta

Depois de criar uma instrução, você precisa executá-la. oStatement classe fornece vários métodos para executar uma consulta como o execute()método para executar uma instrução que retorna mais de um conjunto de resultados. oexecuteUpdate()método executa consultas como INSERT, UPDATE, DELETE. oexecuteQuery() método para resultados que retorna dados etc. Use um desses métodos e execute a instrução criada anteriormente.

Exemplo

O exemplo a seguir JDBC demonstra como eliminar uma tabela no Apache Derby usando o programa JDBC. Aqui, estamos nos conectando a um banco de dados denominado sampleDB (será criado se não existir) usando o driver incorporado.

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;
public class DropTable {
   public static void main(String args[]) throws Exception {
      //Registering the driver
      Class.forName("org.apache.derby.jdbc.EmbeddedDriver");

      //Getting the Connection object
      String URL = "jdbc:derby:sampleDB;create=true";
      Connection conn = DriverManager.getConnection(URL);

      //Creating the Statement object
      Statement stmt = conn.createStatement();

      //Executing the query
      String query = "DROP TABLE Employees";
      stmt.execute(query);
      System.out.println("Table dropped");
   }
}

Resultado

Ao executar o programa acima, você obterá a seguinte saída -

Table dropped

Apache Derby - inserir dados

A consulta de inserção insere dados: new records, na mesa.

Sintaxe

A seguir está a sintaxe básica da instrução INSERT -

ij>INSERT INTO table_name VALUES (column_name1, column_name2, ...);

onde coluna1, coluna2 são os valores da coluna na linha que deve ser inserida.

Exemplo

A seguinte instrução SQL INSERT insere uma nova linha na tabela de Aluno, onde insere valores nas colunas id, age, first name e, last name.

SQL> INSERT INTO Student VALUES (101, 20, 'Zara', 'Ali');

Sintaxe 2

Ou você pode inserir duas colunas específicas, mencionando os nomes das colunas, conforme fornecido abaixo -

ij>INSERT INTO table_name VALUES (column_name1, column_name2, ...) VALUES
(value1, value2, ...);

Note- O Apache Derby calcula automaticamente os valores das colunas geradas. Por exemplo, não há necessidade de passar valores para a coluna id na tabela do aluno criada anteriormente neste tutorial. Caso sua tabela tenha gerado colunas, usesyntax2.

Exemplo

ij> INSERT INTO Student(Age, First_Name, Last_Name) VALUES (21, 'Sucharitha' , 'Tyagi');
1 row inserted/updated/deleted

E você também pode inserir duas linhas usando uma instrução da seguinte maneira -

ij>INSERT INTO Student(Age, First_Name, Last_Name) VALUES (20, 'Amit',
'Bhattacharya'), (22, 'Rahul', 'Desai');
2 rows inserted/updated/deleted

Você pode verificar o conteúdo da tabela usando o comando SELECT (discutiremos esse comando posteriormente neste tutorial).

Sintaxe 3

Você pode usar outra consulta na instrução insert como -

INSERT INTO table_Name Query

Exemplo

Suponha que temos uma tabela chamada First_Year no banco de dados conforme mostrado abaixo com colunas semelhantes às da tabela do aluno -

ID |AGE |FIRST_NAME |LAST_NAME
-----------------------------------------------------------------
1 |20 |Raju |Pendyala
2 |21 |Bhargav |Prayaga
3 |22 |Deepthi |Yerramilli

Você pode inserir valores nesta tabela para a tabela do aluno usando a sintaxe acima como -

ij> INSERT INTO Student (Age, First_Name, Last_Name)
 SELECT Age, First_Name, Last_Name FROM First_Year;
> 3 rows inserted/updated/deleted

Depois de executar todas as instruções de inserção acima, a tabela do aluno será a seguinte -

ID |AGE |FIRST_NAME |LAST_NAME
-------------------------------------------------------------
1 |21 |Sucharitha |Tyagi
2 |20 |Amit |Bhattacharya
3 |22 |Rahul |Desai
4 |20 |Raju |Pendyala
5 |21 |Bhargav |Prayaga
6 |22 |Deepthi |Yerramilli

Insira dados usando o programa JDBC

Esta seção ensina como inserir dados em uma tabela no banco de dados Apache Derby usando o aplicativo JDBC.

Se desejar solicitar o servidor de rede Derby usando o cliente de rede, certifique-se de que o servidor esteja instalado e funcionando. O nome da classe para o driver do cliente de rede é org.apache.derby.jdbc.ClientDriver e o URL é jdbc: derby: // localhost: 1527 /DATABASE_NAME;criar = verdadeiro; usuário =USER_NAME;passw ord =PASSWORD"

Siga as etapas fornecidas abaixo para inserir dados em uma tabela no Apache Derby -

Etapa 1: registrar o driver

Para se comunicar com o banco de dados, em primeiro lugar, você precisa registrar o driver. oforName() método da aula, Classaceita um valor String que representa um nome de classe, carrega-o na memória, que o registra automaticamente. Registre o driver usando este método.

Etapa 2: obter a conexão

Em geral, a primeira etapa que fazemos para nos comunicar com o banco de dados é nos conectarmos a ele. oConnectionclasse representa a conexão física com um servidor de banco de dados. Você pode criar um objeto de conexão invocando ogetConnection() método do DriverManagerclasse. Crie uma conexão usando este método.

Etapa 3: Crie um objeto de instrução

Você precisa criar um Statement ou PreparedStatement or, CallableStatementobjetos para enviar instruções SQL para o banco de dados. Você pode criá-los usando os métodoscreateStatement(), prepareStatement() e, prepareCall()respectivamente. Crie qualquer um desses objetos usando o método apropriado.

Etapa 4: execute a consulta

Depois de criar uma instrução, você precisa executá-la. oStatement classe fornece vários métodos para executar uma consulta como o execute() método para executar uma instrução que retorna mais de um conjunto de resultados.

o executeUpdate()método executa consultas como INSERT, UPDATE, DELETE. oexecuteQuery() método para resultados que retorna dados etc. Use um desses métodos e execute a instrução criada anteriormente.

Exemplo

O exemplo de JDBC a seguir demonstra como inserir dados em uma tabela no Apache Derby usando o programa JDBC. Aqui, estamos nos conectando a um banco de dados denominado sampleDB (será criado se não existir) usando o driver incorporado.

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
public class InsertData {
   public static void main(String args[]) throws Exception {
      //Registering the driver
      Class.forName("org.apache.derby.jdbc.EmbeddedDriver");
      //Getting the Connection object
      String URL = "jdbc:derby:SampleDB;create=true";
      Connection conn = DriverManager.getConnection(URL);

      //Creating the Statement object
      Statement stmt = conn.createStatement();

      //Creating a table and populating
      String query = "CREATE TABLE Employees("
         + "Id INT NOT NULL GENERATED ALWAYS AS IDENTITY, "
         + "Name VARCHAR(255), Salary INT NOT NULL, "
         + "Location VARCHAR(255), "
         + "PRIMARY KEY (Id))";
      //Executing the query
      String query = "INSERT INTO Employees("
         + "Name, Salary, Location) VALUES "
         + "('Amit', 30000, 'Hyderabad'), "
         + "('Kalyan', 40000, 'Vishakhapatnam'), "
         + "('Renuka', 50000, 'Delhi'), "
         + "('Archana', 15000, 'Mumbai'), "
         + "('Trupthi', 45000, 'Kochin'), "
         + "('Suchatra', 33000, 'Pune'), "
         + "('Rahul', 39000, 'Lucknow'), "
         + "('Trupti', 45000, 'Kochin')";
      stmt.execute(query);
      System.out.println("Values inserted");
   }
}

Resultado

Ao executar o programa acima, você obterá a seguinte saída -

Values inserted

Apache Derby - recuperar dados

A instrução SELECT é usada para recuperar dados de uma tabela. Isso retorna os dados na forma de uma tabela conhecida como conjunto de resultados.

Sintaxe

A seguir está a sintaxe da instrução SELECT -

ij> SELECT column_name, column_name, ... FROM table_name;
Or,
Ij>SELECT * from table_name

Exemplo

Vamos supor que temos uma tabela chamada Funcionários no banco de dados, conforme mostrado abaixo -

ij> CREATE TABLE Employees (
   Id INT NOT NULL GENERATED ALWAYS AS IDENTITY,
   Name VARCHAR(255),
   Salary INT NOT NULL,
   Location VARCHAR(255),
   PRIMARY KEY (Id)
);
> > > > > > > 0 rows inserted/updated/deleted

E, inseriu quatro registros nele como mostrado abaixo -

ij> INSERT INTO Employees (Name, Salary, Location) VALUES
 ('Amit', 30000, 'Hyderabad'),
 ('Kalyan', 40000, 'Vishakhapatnam'),
 ('Renuka', 50000, 'Delhi'),
 ('Archana', 15000, 'Mumbai');
> > > > 4 rows inserted/updated/deleted

A instrução SQL a seguir recupera os detalhes de nome, idade e salário de todos os funcionários da tabela;

ij> SELECT Id, Name, Salary FROM Employees;

O resultado desta consulta é -

ID |NAME |SALARY
------------------------------------------------------------------------
1 |Amit |30000
2 |Kalyan |40000
3 |Renuka |50000
4 |Archana |15000
4 rows selected

Se você deseja obter todos os registros desta tabela de uma vez, use * em vez dos nomes das colunas.

ij> select * from Employees;

Isso produzirá o seguinte resultado -

ID |NAME |SALARY |LOCATION
------------------------------------------------------------------
1 |Amit |30000 |Hyderabad
2 |Kalyan |40000 |Vishakhapatnam
3 |Renuka |50000 |Delhi
4 |Archana |15000 |Mumbai
4 rows selected

Recuperar dados usando o programa JDBC

Esta seção ensina como recuperar dados de uma tabela no banco de dados Apache Derby usando o aplicativo JDBC.

Se desejar solicitar o servidor de rede Derby usando o cliente de rede, certifique-se de que o servidor esteja instalado e funcionando. O nome da classe para o driver do cliente de rede é org.apache.derby.jdbc.ClientDriver e o URL é jdbc: derby: // localhost: 1527 /DATABASE_NAME; criar = verdadeiro; usuário =USER_NAME; passw ord =PASSWORD"

Siga as etapas abaixo para recuperar dados de uma tabela no Apache Derby -

Etapa 1: registrar o driver

Para se comunicar com o banco de dados, em primeiro lugar, você precisa registrar o driver. oforName() método da aula Classaceita um valor String que representa um nome de classe, carrega-o na memória, que o registra automaticamente. Registre o driver usando este método.

Etapa 2: obter a conexão

Em geral, a primeira etapa que fazemos para nos comunicar com o banco de dados é nos conectarmos a ele. oConnectionclasse representa a conexão física com um servidor de banco de dados. Você pode criar um objeto de conexão invocando ogetConnection() método do DriverManagerclasse. Crie uma conexão usando este método.

Etapa 3: Crie um objeto de instrução

Você precisa criar um Statement ou PreparedStatement ou, CallableStatementobjetos para enviar instruções SQL para o banco de dados. Você pode criá-los usando os métodoscreateStatement(), prepareStatement() e, prepareCall()respectivamente. Crie qualquer um desses objetos usando o método apropriado.

Etapa 4: execute a consulta

Depois de criar uma instrução, você precisa executá-la. oStatement classe fornece vários métodos para executar uma consulta como o execute()método para executar uma instrução que retorna mais de um conjunto de resultados. oexecuteUpdate()método executa consultas como INSERT, UPDATE, DELETE. oexecuteQuery() método para resultados que retorna dados etc. Use um desses métodos e execute a instrução criada anteriormente.

Exemplo

O exemplo de JDBC a seguir demonstra como recuperar dados de uma tabela no Apache Derby usando o programa JDBC. Aqui, estamos nos conectando a um banco de dados denominado sampleDB (será criado se não existir) usando o driver incorporado.

o executeQuery() método retorna um ResultSetobjeto que contém o resultado da declaração. Inicialmente, o ponteiro do conjunto de resultados estará no primeiro registro, você pode imprimir o conteúdo do objeto ResultSet usando seunext() e getXXX() métodos.

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class RetrieveData {
   public static void main(String args[]) throws SQLException,
      ClassNotFoundException {
      //Registering the driver
      Class.forName("org.apache.derby.jdbc.EmbeddedDriver");
      //Getting the Connection object
      String URL = "jdbc:derby:sampleDB;create=true";
      Connection conn = DriverManager.getConnection(URL);

      //Creating the Statement object
      4Statement stmt = conn.createStatement();

      //Creating a table and populating it
      String query = "CREATE TABLE Employees("
         + "Id INT NOT NULL GENERATED ALWAYS AS IDENTITY, "
         + "Name VARCHAR(255), Salary INT NOT NULL, "
         + "Location VARCHAR(255), "
         + "PRIMARY KEY (Id))";
      String query = "INSERT INTO Employees("
         + "Name, Salary, Location) VALUES "
         + "('Amit', 30000, 'Hyderabad'), "
         + "('Kalyan', 40000, 'Vishakhapatnam'), "
         + "('Renuka', 50000, 'Delhi'), "
         + "('Archana', 15000, 'Mumbai'), "
         + "('Trupthi', 45000, 'Kochin'), "
         + "('Suchatra', 33000, 'Pune'), "
         + "('Rahul', 39000, 'Lucknow'), "
         + "('Trupti', 45000, 'Kochin')";
      //Executing the query
      String query = "SELECT Id, Name, Salary FROM Employees";
      ResultSet rs = stmt.executeQuery(query);
      while(rs.next()) {
         System.out.println("Id: "+rs.getString("Id"));
         System.out.println("Name: "+rs.getString("Name"));
         System.out.println("Salary: "+rs.getString("Salary"));
         System.out.println(" ");
      }
   }
}

Resultado

Ao executar o programa acima, você obterá a seguinte saída

Id: 1
Name: Amit
Salary: 30000

Id: 2
Name: Kalyan
Salary: 43000

Id: 3
Name: Renuka
Salary: 50000

Id: 4
Name: Archana
Salary: 15000

Id: 5
Name: Trupthi
Salary: 45000

Id: 6
Name: Suchatra
Salary: 33000

Id: 7
Name: Rahul
Salary: 39000

Apache Derby - Atualizar dados

A instrução UPDATE é usada para atualizar dados em uma tabela. Apache Derby fornece dois tipos de atualizações (sintaxe), a sabersearched atualizar e positioned atualizar.

A instrução UPDATE pesquisada atualiza todas as colunas especificadas de uma tabela.

Sintaxe

A seguir está a sintaxe da consulta UPDATE -

ij> UPDATE table_name
 SET column_name = value, column_name = value, ...
 WHERE conditions;

A cláusula WHERE pode usar os operadores de comparação como =,! =, <,>, <= E> =, bem como os operadores BETWEEN e LIKE.

Exemplo

Suponha que você tenha uma tabela Employee no banco de dados com os 4 registros conforme mostrado abaixo -

ID |NAME |SALARY |LOCATION
----------------------------------------------------------
1 |Amit |30000 |Hyderabad
2 |Kalyan |40000 |Vishakhapatnam
3 |Renuka |50000 |Delhi
4 |Archana |15000 |Mumbai

A seguinte instrução SQL UPDATE atualiza a localização e o salário de um funcionário cujo nome é Kaylan.

ij> UPDATE Employees SET Location = 'Chennai', Salary = 43000 WHERE Name =
'Kalyan';
1 rows inserted/updated/deleted

Se você obtiver o conteúdo da tabela Employees, poderá observar as alterações feitas pela consulta UPDATE.

ij> select * from Employees;
ID |NAME |SALARY |LOCATION
----------------------------------------------------------
1 |Amit |30000 |Hyderabad 
2 |Kalyan |43000 |Chennai
3 |Renuka |50000 |Delhi
4 |Archana |15000 |Mumbai
4 rows selected

Atualizar dados usando o programa JDBC

Esta seção explica como atualizar os registros existentes de uma tabela no banco de dados Apache Derby usando o aplicativo JDBC.

Se desejar solicitar o servidor de rede Derby usando o cliente de rede, certifique-se de que o servidor esteja instalado e funcionando. O nome da classe para o driver do cliente de rede é org.apache.derby.jdbc.ClientDriver e o URL é jdbc: derby: // localhost: 1527 /DATABASE_NAME; criar = verdadeiro; usuário =USER_NAME; passw ord =PASSWORD"

Siga as etapas fornecidas abaixo para atualizar os registros existentes de uma tabela no Apache Derby.

Etapa 1: registrar o driver

Para se comunicar com o banco de dados, em primeiro lugar, você precisa registrar o driver. oforName() método da aula Classaceita um valor String que representa um nome de classe, carrega-o na memória, que o registra automaticamente. Registre o driver usando este método.

Etapa 2: obter a conexão

Em geral, a primeira etapa que fazemos para nos comunicar com o banco de dados é nos conectarmos a ele. A classe Connection representa a conexão física com um servidor de banco de dados. Você pode criar um objeto de conexão invocando ogetConnection() método do DriverManagerclasse. Crie uma conexão usando este método.

Etapa 3: Crie um objeto de instrução

Você precisa criar um Statement ou PreparedStatement or, CallableStatementobjetos para enviar instruções SQL para o banco de dados. Você pode criá-los usando os métodoscreateStatement(), prepareStatement() e, prepareCall()respectivamente. Crie qualquer um desses objetos usando o método apropriado.

Etapa 4: execute a consulta

Depois de criar uma instrução, você precisa executá-la. oStatement classe fornece vários métodos para executar uma consulta como o execute()método para executar uma instrução que retorna mais de um conjunto de resultados. oexecuteUpdate()método executa consultas como INSERT, UPDATE, DELETE. oexecuteQuery()método retorna dados. Use um desses métodos e execute a instrução criada anteriormente.

Exemplo

O exemplo de JDBC a seguir demonstra como atualizar os registros existentes de uma tabela no Apache Derby usando o programa JDBC. Aqui, estamos nos conectando a um banco de dados denominado sampleDB (será criado se não existir) usando o driver incorporado.

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
public class UpdateData {
   public static void main(String args[]) throws Exception {
      //Registering the driver
      Class.forName("org.apache.derby.jdbc.EmbeddedDriver");
      //Getting the Connection object
      String URL = "jdbc:derby:sampleDB;create=true";
      Connection conn = DriverManager.getConnection(URL);

      //Creating the Statement object
      Statement stmt = conn.createStatement();

      //Creating a table and populating it
      String query = "CREATE TABLE Employees("
         + "Id INT NOT NULL GENERATED ALWAYS AS IDENTITY, "
         + "Name VARCHAR(255), Salary INT NOT NULL, "
         + "Location VARCHAR(255), "
         + "PRIMARY KEY (Id))";
      String query = "INSERT INTO Employees("
         + "Name, Salary, Location) VALUES "
         + "('Amit', 30000, 'Hyderabad'), "
         + "('Kalyan', 40000, 'Vishakhapatnam'), "
         + "('Renuka', 50000, 'Delhi'), "
         + "('Archana', 15000, 'Mumbai'), "
         + "('Trupthi', 45000, 'Kochin'), "
         + "('Suchatra', 33000, 'Pune'), "
         + "('Rahul', 39000, 'Lucknow'), "
         + "('Trupti', 45000, 'Kochin')";
      //Executing the query
      String query = "UPDATE Employees SET Location = 'Chennai', Salary = 43000 WHERE
         Name = 'Kalyan'";
      int num = stmt.executeUpdate(query);
      System.out.println("Number of records updated are: "+num);
   }
}

Resultado

Ao executar o programa acima, você obterá a seguinte saída -

Number of records updated are: 1

Apache Derby - Excluir dados

A instrução DELETE é usada para excluir linhas de uma tabela. Assim como a instrução UPDATE, o Apache Derby fornece dois tipos de Delete (sintaxe):searched deletar e positioned excluir.

A instrução de exclusão pesquisada exclui todas as colunas especificadas de uma tabela.

Sintaxe

A sintaxe da instrução DELETE é a seguinte -

ij> DELETE FROM table_name WHERE condition;

Exemplo

Vamos supor que temos uma tabela chamada funcionário com 5 registros, conforme mostrado abaixo -

ID |NAME |SALARY |LOCATION
----------------------------------------------------------------------------
1 |Amit |30000 |Hyderabad
2 |Kalyan |40000 |Vishakhapatnam
3 |Renuka |50000 |Delhi
4 |Archana |15000 |Mumbai
5 |Trupti |45000 |Kochin
5 rows selected

A seguinte instrução SQL DELETE exclui o registro com o nome Trupti.

ij> DELETE FROM Employees WHERE Name = 'Trupti';
1 row inserted/updated/deleted

Se você obtiver o conteúdo da tabela Funcionários, poderá ver apenas quatro registros, conforme mostrado abaixo -

ID |NAME |SALARY |LOCATION
----------------------------------------------------------------------------
1 |Amit |30000 |Hyderabad
2 |Kalyan |40000 |Vishakhapatnam
3 |Renuka |50000 |Delhi
4 |Archana |15000 |Mumbai 
4 rows selected

Para deletar todos os registros da tabela, execute a mesma consulta sem a cláusula where.

ij> DELETE FROM Employees;
4 rows inserted/updated/deleted

Agora, se você tentar obter o conteúdo da tabela Employee, obterá uma tabela vazia conforme mostrado abaixo -

ij> select * from employees;
ID |NAME |SALARY |LOCATION
--------------------------------------------------------
0 rows selected

Excluir dados usando o programa JDBC

Esta seção explica como excluir os registros existentes de uma tabela no banco de dados Apache Derby usando o aplicativo JDBC.

Se desejar solicitar o servidor de rede Derby usando o cliente de rede, certifique-se de que o servidor esteja instalado e funcionando. O nome da classe para o driver do cliente de rede é org.apache.derby.jdbc.ClientDriver e o URL é jdbc: derby: // localhost: 1527 /DATABASE_NAME;criar = verdadeiro; usuário =USER_NAME;passw ord =PASSWORD"

Siga as etapas fornecidas abaixo para excluir os registros existentes de uma tabela no Apache Derby: / p>

Etapa 1: registrar o driver

Em primeiro lugar, você precisa registrar o driver para se comunicar com o banco de dados. oforName() método da aula Classaceita um valor String que representa um nome de classe, carrega-o na memória, que o registra automaticamente. Registre o driver usando este método.

Etapa 2: obter a conexão

Em geral, a primeira etapa que fazemos para nos comunicar com o banco de dados é nos conectarmos a ele. oConnectionclasse representa a conexão física com um servidor de banco de dados. Você pode criar um objeto de conexão invocando ogetConnection() método do DriverManagerclasse. Crie uma conexão usando este método.

Etapa 3: Crie um objeto de instrução

Você precisa criar um Statement ou PreparedStatement or, CallableStatementobjetos para enviar instruções SQL para o banco de dados. Você pode criá-los usando os métodoscreateStatement(), prepareStatement() and, prepareCall()respectivamente. Crie qualquer um desses objetos usando o método apropriado.

Etapa 4: execute a consulta

Depois de criar uma instrução, você precisa executá-la. oStatement classe fornece vários métodos para executar uma consulta como o execute()método para executar uma instrução que retorna mais de um conjunto de resultados. oexecuteUpdate()método executa consultas como INSERT, UPDATE, DELETE. oexecuteQuery()resultados do método que retorna dados. Use um desses métodos e execute a instrução criada anteriormente.

Exemplo

O exemplo de JDBC a seguir demonstra como excluir os registros existentes de uma tabela no Apache Derby usando o programa JDBC. Aqui, estamos nos conectando a um banco de dados denominado sampleDB (será criado se não existir) usando o driver incorporado.

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
public class DeleteData {
   public static void main(String args[]) throws Exception {
      //Registering the driver
      Class.forName("org.apache.derby.jdbc.EmbeddedDriver");
      //Getting the Connection object
      String URL = "jdbc:derby:sampleDB;create=true";
      Connection conn = DriverManager.getConnection(URL);

      //Creating the Statement object
      Statement stmt = conn.createStatement();
      //Creating a table and populating it
      String query = "CREATE TABLE Employees("
         + "Id INT NOT NULL GENERATED ALWAYS AS IDENTITY, "
         + "Name VARCHAR(255), Salary INT NOT NULL, "
         + "Location VARCHAR(255), "
         + "PRIMARY KEY (Id))";
      String query = "INSERT INTO Employees("
         + "Name, Salary, Location) VALUES "
         + "('Amit', 30000, 'Hyderabad'), "
         + "('Kalyan', 40000, 'Vishakhapatnam'), "
         + "('Renuka', 50000, 'Delhi'), "
         + "('Archana', 15000, 'Mumbai'), "
         + "('Trupthi', 45000, 'Kochin'), "
         + "('Suchatra', 33000, 'Pune'), "
         + "('Rahul', 39000, 'Lucknow'), "
         + "('Trupthi', 45000, 'Kochin')";
      //Executing the query
      String query = "DELETE FROM Employees WHERE Name = 'Trupthi'";
      int num = stmt.executeUpdate(query);
      System.out.println("Number of records deleted are: "+num);
   }
}

Resultado

Ao executar o programa acima, você obterá a seguinte saída -

Number of records deleted are: 1

Apache Derby - cláusula Where

A cláusula WHERE é usada nas instruções SELECT, DELETE ou UPDATE para especificar as linhas nas quais a operação deve ser realizada. Normalmente, esta cláusula é seguida por uma condição ou expressão que retorna um valor booleano, as operações de seleção, exclusão ou atualização são realizadas apenas nas linhas que satisfazem a condição dada.

ij> SELECT * from table_name WHERE condition;
or,
ij> DELETE from table_name WHERE condition;
or,
ij> UPDATE table_name SET column_name = value WHERE condition;

A cláusula WHERE pode usar os operadores de comparação como =,! =, <,>, <= E> =, bem como os operadores BETWEEN e LIKE.

Exemplo

Vamos supor que temos uma tabela chamada Funcionários no banco de dados com 7 registros, conforme mostrado abaixo -

ID |NAME |SALARY |LOCATION
-----------------------------------------------------------------------------
1 |Amit |30000 |Hyderabad
2 |Kalyan |40000 |Vishakhapatnam
3 |Renuka |50000 |Delhi
4 |Archana |15000 |Mumbai
5 |Trupthi |45000 |Kochin
6 |Suchatra |33000 |Pune
7 |Rahul |39000 |Lucknow

A seguinte instrução SQL DELETE busca os registros dos funcionários cujo salário é superior a 35.000 -

ij> SELECT * FROM Employees WHERE Salary>35000;

Isso produzirá a seguinte saída -

ID |NAME |SALARY |LOCATION 
---------------------------------------------------
2 |Kalyan |40000 |Vishakhapatnam
3 |Renuka |50000 |Delhi
5 |Trupthi |45000 |Kochin
7 |Rahul |39000 |Lucknow
4 rows selected

Da mesma forma, você também pode excluir e atualizar registros usando esta cláusula.

O exemplo a seguir atualiza a localização daqueles cujo salário é inferior a 30000.

ij> UPDATE Employees SET Location = 'Vijayawada' WHERE Salary<35000;
3 rows inserted/updated/deleted

Se você verificar o conteúdo da tabela, poderá ver a tabela atualizada conforme mostrado abaixo -

ij> SELECT * FROM Employees;
ID |NAME |SALARY |LOCATION
------------------------------------------------------------------------------
1 |Amit |30000 |Vijayawada
2 |Kalyan |40000 |Vishakhapatnam
3 |Renuka |50000 |Delhi
4 |Archana |15000 |Vijayawada
5 |Trupthi |45000 |Kochin
6 |Suchatra |33000 |Vijayawada
7 |Rahul |39000 |Lucknow
7 rows selected

Exemplo de cláusula where JDBC

Esta seção ensina como usar a cláusula WHERE e executar operações CURD em uma tabela no banco de dados Apache Derby usando o aplicativo JDBC.

Se desejar solicitar o servidor de rede Derby usando o cliente de rede, certifique-se de que o servidor esteja instalado e funcionando. O nome da classe para o driver do cliente de rede é org.apache.derby.jdbc.ClientDriver e o URL é jdbc: derby: // localhost: 1527 /DATABASE_NAME; criar = verdadeiro; usuário =USER_NAME;passw ord =PASSWORD"

Siga as etapas fornecidas abaixo para usar a cláusula WHERE e realizar operações CURD em uma tabela no Apache Derby

Etapa 1: registrar o driver

Para se comunicar com o banco de dados, em primeiro lugar, você precisa registrar o driver. oforName() método da aula Classaceita um valor String que representa um nome de classe, carrega-o na memória, que o registra automaticamente. Registre o driver usando este método

Etapa 2: obter a conexão

Em geral, a primeira etapa que fazemos para nos comunicar com o banco de dados é nos conectarmos a ele. oConnectionclasse representa a conexão física com um servidor de banco de dados. Você pode criar um objeto de conexão invocando ogetConnection() método do DriverManagerclasse. Crie uma conexão usando este método.

Etapa 3: Crie um objeto de instrução

Você precisa criar um Statement ou PreparedStatement ou, CallableStatementobjetos para enviar instruções SQL para o banco de dados. Você pode criá-los usando os métodoscreateStatement(), prepareStatement() and, prepareCall()respectivamente. Crie qualquer um desses objetos usando o método apropriado.

Etapa 4: execute a consulta

Depois de criar uma instrução, você precisa executá-la. oStatement classe fornece vários métodos para executar uma consulta como o execute()método para executar uma instrução que retorna mais de um conjunto de resultados. oexecuteUpdate()método executa consultas como INSERT, UPDATE, DELETE. oexecuteQuery()resultados do método que retorna dados. Use um desses métodos e execute a instrução criada anteriormente.

Exemplo

O exemplo de JDBC a seguir demonstra como usar a cláusula WHERE e executar operações CURD em uma tabela no Apache Derby usando o programa JDBC. Aqui, estamos nos conectando a um banco de dados denominado sampleDB (será criado se não existir) usando o driver incorporado.

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;
import java.sql.ResultSet;
public class WhereClauseExample {
   public static void main(String args[]) throws Exception {
      //Registering the driver
      Class.forName("org.apache.derby.jdbc.EmbeddedDriver");
      //Getting the Connection object
      String URL = "jdbc:derby:sampleDB;create=true";
      Connection conn = DriverManager.getConnection(URL);

      //Creating the Statement object
      Statement stmt = conn.createStatement();

      //Creating a table and populating it
      String query = "CREATE TABLE Employees("
         + "Id INT NOT NULL GENERATED ALWAYS AS IDENTITY, "
         + "Name VARCHAR(255), Salary INT NOT NULL, "
         + "Location VARCHAR(255), "
         + "PRIMARY KEY (Id))";
      String query = "INSERT INTO Employees("
         + "Name, Salary, Location) VALUES "
         + "('Amit', 30000, 'Hyderabad'), "
         + "('Kalyan', 40000, 'Vishakhapatnam'), "
         + "('Renuka', 50000, 'Delhi'), "
         + "('Archana', 15000, 'Mumbai'), "
         + "('Trupthi', 45000, 'Kochin'), "
         + "('Suchatra', 33000, 'Pune'), "
         + "('Rahul', 39000, 'Lucknow'), "
         + "('Trupti', 45000, 'Kochin')";
      //Executing the query
      String query = "SELECT * FROM Employees WHERE Salary>35000";
      ResultSet rs = stmt.executeQuery(query);
      while(rs.next()) {
         System.out.println("Id: "+rs.getString("Id"));
         System.out.println("Name: "+rs.getString("Name"));
         System.out.println("Salary: "+rs.getString("Salary"));
         System.out.println("Location: "+rs.getString("Location"));
         System.out.println(" ");
      }
   }
}

Resultado

Ao executar o programa acima, você obterá a seguinte saída -

Id: 2
Name: Kalyan
Salary: 43000
Location: Chennai

Id: 3
Name: Renuka
Salary: 50000
Location: Delhi

Id: 5
Name: Trupthi
Salary: 45000
Location: Kochin

Id: 7
Name: Rahul
Salary: 39000
Location: Lucknow

Apache Derby - Cláusula GROUP BY

A cláusula GROUP BY é usada com instruções SELECT. É usado para formar subconjuntos no caso de dados idênticos. Normalmente, esta cláusula é seguida pela cláusula ORDER BY e colocada após a cláusula WHERE.

Sintaxe

A seguir está a sintaxe da cláusula GROUP BY -

ij>SELECT column1, column2, . . . table_name GROUP BY column1, column2, . . .;

Exemplo

Suponha que tenhamos uma tabela chamada Funcionários no banco de dados com os seguintes registros -

ID |NAME |SALARY |LOCATION
------------------------------------------------------------------
1 |Amit |30000 |Hyderabad
2 |Rahul |39000 |Lucknow
3 |Renuka |50000 |Hyderabad
4 |Archana |15000 |Vishakhapatnam
5 |Kalyan |40000 |Hyderabad
6 |Trupthi |45000 |Vishakhapatnam
7 |Raghav |12000 |Lucknow
8 |Suchatra |33000 |Vishakhapatnam
9 |Rizwan |20000 |Lucknow

A seguinte instrução SELECT com a cláusula GROUP BY agrupa a tabela com base na localização. Ele exibe o valor total do salário dado aos funcionários em um local.

ij> SELECT Location, SUM(Salary) from Employees GROUP BY Location;

Isso irá gerar a seguinte saída -

LOCATION |2
-------------------------------------------------------
Hyderabad |120000
Lucknow |71000
Vishakhapatnam |93000
3 rows selected

Da mesma forma, a consulta a seguir encontra o valor médio gasto com os funcionários como salário em um local.

ij> SELECT Location, AVG(Salary) from Employees GROUP BY Location;

Isso irá gerar a seguinte saída -

LOCATION |2
-----------------------------------------------------
Hyderabad |40000
Lucknow |23666
Vishakhapatnam |31000
3 rows selected

Exemplo de JDBC da cláusula Group By

Esta seção ensina como usar a cláusula Group By e executar operações CURD em uma tabela no banco de dados Apache Derby usando o aplicativo JDBC.

Se desejar solicitar o servidor de rede Derby usando o cliente de rede, certifique-se de que o servidor esteja instalado e funcionando. O nome da classe para o driver do cliente de rede é org.apache.derby.jdbc.ClientDriver e o URL é jdbc: derby: // localhost: 1527 /DATABASE_NAME;criar = verdadeiro; usuário =USER_NAME;passw ord =PASSWORD"

Siga as etapas fornecidas abaixo para usar a cláusula Group By e realizar operações CURD em uma tabela no Apache Derby

Etapa 1: registrar o driver

Para se comunicar com o banco de dados, em primeiro lugar, você precisa registrar o driver. oforName() método da aula Classaceita um valor String que representa um nome de classe, carrega-o na memória, que o registra automaticamente. Registre o driver usando este método.

Etapa 2: obter a conexão

Em geral, a primeira etapa que fazemos para nos comunicar com o banco de dados é nos conectarmos a ele. oConnectionclasse representa a conexão física com um servidor de banco de dados. Você pode criar um objeto de conexão invocando ogetConnection() método do DriverManagerclasse. Crie uma conexão usando este método.

Etapa 3: Crie um objeto de instrução

Você precisa criar um Statement ou PreparedStatement ou, CallableStatementobjetos para enviar instruções SQL para o banco de dados. Você pode criá-los usando os métodoscreateStatement(), prepareStatement() and, prepareCall()respectivamente. Crie qualquer um desses objetos usando o método apropriado.

Etapa 4: execute a consulta

Depois de criar uma instrução, você precisa executá-la. oStatement classe fornece vários métodos para executar uma consulta como o execute()método para executar uma instrução que retorna mais de um conjunto de resultados. oexecuteUpdate()método é usado para executar consultas como INSERT, UPDATE, DELETE. oexecuteQuery()método retorna dados. Use um desses métodos e execute a instrução criada anteriormente.

Exemplo

A seguir o exemplo de JDBC demonstra como usar Group Bycláusula e executar operações CURD em uma tabela no Apache Derby usando o programa JDBC. Aqui, estamos nos conectando a um banco de dados denominado sampleDB (será criado se não existir) usando o driver incorporado.

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;
import java.sql.ResultSet;
public class GroupByClauseExample {
   public static void main(String args[]) throws Exception {
      //Registering the driver
      Class.forName("org.apache.derby.jdbc.EmbeddedDriver");

      //Getting the Connection object
      String URL = "jdbc:derby:sampleDB;create=true";
      Connection conn = DriverManager.getConnection(URL);

      //Creating the Statement object
      Statement stmt = conn.createStatement();

      //Creating a table and populating it
      stmt.execute("CREATE TABLE EmployeesData( "
         + "Id INT NOT NULL GENERATED ALWAYS AS IDENTITY, "
         + "Name VARCHAR(255), "
         + "Salary INT NOT NULL, "
         + "Location VARCHAR(255), "
         + "PRIMARY KEY (Id))");
      stmt.execute("INSERT INTO EmployeesData(Name, Salary, Location) "
         + "VALUES ('Amit', 30000, 'Hyderabad'), "
         + "('Rahul', 39000, 'Lucknow'), "
         + "('Renuka', 50000, 'Hyderabad'), "
         + "('Archana', 15000, 'Vishakhapatnam'), "
         + "('Kalyan', 40000, 'Hyderabad'), "
         + "('Trupthi', 45000, 'Vishakhapatnam'), "
         + "('Raghav', 12000, 'Lucknow'), "
         + "('Suchatra', 33000, 'Vishakhapatnam'), "
         + "('Rizwan', 20000, 'Lucknow')");

      //Executing the query
      String query = "SELECT Location, SUM(Salary) from EmployeesData GROUP BY Location";
      ResultSet rs = stmt.executeQuery(query);
      while(rs.next()) {
         System.out.println("Location: "+rs.getString(1));
         System.out.println("Sum of salary: "+rs.getString(2));
         System.out.println(" ");
      }
   }
}

Resultado

Ao executar o programa acima, você obterá a seguinte saída -

Location: Hyderabad
Sum of salary: 120000

Location: Lucknow
Sum of salary: 71000

Location: Vishakhapatnam
Sum of salary: 93000

Apache Derby - Ordem por cláusula

A cláusula ORDER BY é usada para organizar o conteúdo do conjunto de resultados na ordem em que usa as palavras-chave, ASC representando a ordem crescente e DESC representando a ordem decrescente. Se você não mencionar nenhum deles, o conteúdo será organizado em ordem crescente por padrão.

Sintaxe

A seguir está a sintaxe da cláusula ORDER BY -

SELECT * FROM table_name ORDER BY column_name ASC|DESC.

Exemplo

Suponha que tenhamos uma tabela chamada Funcionários no banco de dados com os seguintes registros -

ID |NAME |SALARY |LOCATION
------------------------------------------------------------------------------
1 |Amit |30000 |Vijayawada
2 |Kalyan |40000 |Vishakhapatnam
3 |Renuka |50000 |Delhi
4 |Archana |15000 |Vijayawada
5 |Trupthi |45000 |Kochin
6 |Suchatra |33000 |Vijayawada
7 |Rahul |39000 |Lucknow

A consulta a seguir organiza o conteúdo da tabela em ordem crescente com base no nome do Funcionário.

ij> SELECT * FROM Employees ORDER BY Name;

Isso irá gerar a seguinte saída -

ID |NAME |SALARY |LOCATION
---------------------------------------------------------------
1 |Amit |30000 |Hyderabad
4 |Archana |15000 |Mumbai
2 |Kalyan |40000 |Vishakhapatnam 
7 |Rahul |39000 |Lucknow
3 |Renuka |50000 |Delhi
6 |Suchatra |33000 |Pune
5 |Trupthi |45000 |Kochin
7 rows selected

Da mesma forma, a consulta a seguir organiza o conteúdo da tabela em ordem decrescente com base no salário do funcionário -

ij> SELECT * FROM Employees ORDER BY Salary DESC;

Isso irá gerar a seguinte saída -

ID |NAME |SALARY |LOCATION
---------------------------------------------------------------
3 |Renuka |50000 |Delhi
5 |Trupthi |45000 |Kochin
2 |Kalyan |40000 |Vishakhapatnam
7 |Rahul |39000 |Lucknow
6 |Suchatra |33000 |Pune
1 |Amit |30000 |Hyderabad
4 |Archana |15000 |Mumbai
7 rows selected

Classificando dados usando o programa JDBC

Esta seção ensina como classificar o conteúdo de uma tabela no Derby usando JDBC. Você pode organizar os registros em ordem usando a cláusula ORDER BY e as palavras-chave ASC (denotando ordem crescente) e DSC (denotando ordem decrescente).

Se desejar solicitar o servidor de rede Derby usando o cliente de rede, certifique-se de que o servidor esteja instalado e funcionando. O nome da classe para o driver do cliente de rede é org.apache.derby.jdbc.ClientDriver e o URL é jdbc: derby: // localhost: 1527 /DATABASE_NAME;criar = verdadeiro; usuário =USER_NAME;passw ord =PASSWORD"

Siga as etapas abaixo para classificar os registros de uma tabela no Apache Derby -

Etapa 1: registrar o driver

Para se comunicar com o banco de dados, em primeiro lugar, você precisa registrar o driver. oforName() método da aula Classaceita um valor String que representa um nome de classe, carrega-o na memória, que o registra automaticamente. Registre o driver usando este método.

Etapa 2: obter a conexão

Em geral, a primeira etapa que fazemos para nos comunicar com o banco de dados é nos conectarmos a ele. o Connectionclasse representa a conexão física com um servidor de banco de dados. Você pode criar um objeto de conexão invocando o getConnection() método do DriverManagerclasse. Crie uma conexão usando este método.

Etapa 3: Crie um objeto de instrução

Você precisa criar um Statement ou PreparedStatement ou, CallableStatementobjetos para enviar instruções SQL para o banco de dados. Você pode criá-los usando os métodoscreateStatement(), prepareStatement() and, prepareCall()respectivamente. Crie qualquer um desses objetos usando o método apropriado.

Etapa 4: execute a consulta

Depois de criar uma instrução, você precisa executá-la. oStatement classe fornece vários métodos para executar uma consulta como o execute()método para executar uma instrução que retorna mais de um conjunto de resultados. oexecuteUpdate()método executa consultas como INSERT, UPDATE, DELETE. oexecuteQuery()método retorna dados. Use um desses métodos e execute a instrução criada anteriormente.

Exemplo

O exemplo de JDBC a seguir demonstra como classificar os registros de uma tabela no Apache Derby usando o programa JDBC. Aqui, estamos nos conectando a um banco de dados denominado sampleDB (será criado se não existir) usando o driver incorporado.

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class SortData {
   public static void main(String args[]) throws SQLException, ClassNotFoundException {
      //Registering the driver
      Class.forName("org.apache.derby.jdbc.EmbeddedDriver");

      //Getting the Connection object
      String URL = "jdbc:derby:SampleDB;create=true";
      Connection conn = DriverManager.getConnection(URL);

      //Creating the Statement object
      Statement stmt = conn.createStatement();

      //Creating a table and populating it
      String query = "CREATE TABLE Employees("
         + "Id INT NOT NULL GENERATED ALWAYS AS IDENTITY, "
         + "Name VARCHAR(255), Salary INT NOT NULL, "
         + "Location VARCHAR(255), "
         + "PRIMARY KEY (Id))";
      String query = "INSERT INTO Employees("
         + "Name, Salary, Location) VALUES "
         + "('Amit', 30000, 'Hyderabad'), "
         + "('Kalyan', 40000, 'Vishakhapatnam'), "
         + "('Renuka', 50000, 'Delhi'), "
         + "('Archana', 15000, 'Mumbai'), "
         + "('Trupthi', 45000, 'Kochin'), "
         + "('Suchatra', 33000, 'Pune'), "
         + "('Rahul', 39000, 'Lucknow'), "
         + "('Trupti', 45000, 'Kochin')";
      //Executing the query
      String query = "SELECT Location, SUM(Salary) " + "from Employees GROUP BY Location";
      ResultSet rs = stmt.executeQuery(query);
      while(rs.next()) {
         System.out.println("Salary: "+rs.getString(1));
         System.out.println("Location: "+rs.getString(2));
         System.out.println(" ");
      }
   }
}

Resultado

Ao executar o programa acima, você obterá a seguinte saída -

Salary: Chennai
Location: 43000

Salary: Delhi
Location: 50000

Salary: Hyderabad
Location: 30000

Salary: Kochin
Location: 45000

Salary: Lucknow
Location: 39000

Salary: Mumbai
Location: 15000

Salary: Pune
Location: 33000

Apache Derby - Cláusula Tendo

A cláusula HAVING permite que você especifique as condições que filtram quais resultados de grupo aparecem nos resultados.

A cláusula WHERE coloca condições nas colunas selecionadas, enquanto a cláusula HAVING coloca condições nos grupos criados pela cláusula GROUP BY.

Sintaxe

A seguir está a sintaxe da cláusula HAVING -

ij> SELECT column1, column2 . . . from table_name GROUP BY column having
condition;

Exemplo

Suponha que temos uma tabela chamada Funcionários no banco de dados com os 13 registros, conforme mostrado abaixo -

ID |NAME |SALARY |LOCATION
------------------------------------------------------------------
1 |Amit |30000 |Hyderabad
2 |Rahul |39000 |Lucknow
3 |Kalyan |40000 |Vishakhapatnam
4 |Renuka |50000 |Hyderabad
5 |Archana |15000 |Vishakhapatnam
6 |Krishna |40000 |Hyderabad
7 |Trupthi |45000 |Vishakhapatnam
8 |Raghav |12000 |Lucknow
9 |Radha |50000 |Delhi
10 |Anirudh |15000 |Mumbai
11 |Tara |45000 |Kochin
12 |Sucharita |44000 |Kochin
13 |Rizwan |20000 |Lucknow

A consulta a seguir exibe os salários máximos dos funcionários no local que têm pelo menos 3 funcionários -

ij> SELECT Location, MAX(Salary) from Employees GROUP BY Location having
count(Location)>=3;

Isso gera a seguinte saída -

LOCATION |2
------------------------------------------------------------
Hyderabad |50000
Lucknow |39000
Vishakhapatnam |45000
3 rows selected

Classificando dados usando o programa JDBC

Esta seção ensina como usar Ter uma cláusula no banco de dados Apache Derby usando o aplicativo JDBC.

Se desejar solicitar o servidor de rede Derby usando o cliente de rede, certifique-se de que o servidor esteja instalado e funcionando. O nome da classe para o driver do cliente de rede é org.apache.derby.jdbc.ClientDriver e o URL é jdbc: derby: // localhost: 1527 /DATABASE_NAME;criar = verdadeiro; usuário =USER_NAME;passw ord =PASSWORD"

Siga as etapas fornecidas abaixo para classificar os registros de uma tabela no Apache Derby

Etapa 1: registrar o driver

Para se comunicar com o banco de dados, em primeiro lugar, você precisa registrar o driver. oforName() método da aula Classaceita um valor String que representa um nome de classe e o carrega na memória, que o registra automaticamente. Registre o driver usando este método.

Etapa 2: obter a conexão

Em geral, a primeira etapa que fazemos para nos comunicar com o banco de dados é nos conectarmos a ele. oConnectionclasse representa a conexão física com um servidor de banco de dados. Você pode criar um objeto de conexão invocando ogetConnection() método do DriverManagerclasse. Crie uma conexão usando este método.

Etapa 3: Crie um objeto de instrução

Você precisa criar um Statement ou PreparedStatement or, CallableStatementobjetos para enviar instruções SQL para o banco de dados. Você pode criá-los usando os métodoscreateStatement(), prepareStatement() and, prepareCall()respectivamente. Crie qualquer um desses objetos usando o método apropriado.

Etapa 4: execute a consulta

Depois de criar uma instrução, você precisa executá-la. oStatement classe fornece vários métodos para executar uma consulta como o execute()método para executar uma instrução que retorna mais de um conjunto de resultados. oexecuteUpdate()método executa consultas como INSERT, UPDATE, DELETE. oexecuteQuery()método retorna dados. Use um desses métodos e execute a instrução criada anteriormente.

Exemplo

O exemplo de JDBC a seguir demonstra como usar a cláusula Group By e executar operações CURD em uma tabela no Apache Derby usando o programa JDBC. Aqui, estamos nos conectando a um banco de dados denominado sampleDB (será criado se não existir) usando o driver incorporado.

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;
import java.sql.ResultSet;
public class HavingClauseExample {
   public static void main(String args[]) throws Exception {
      //Registering the driver
      Class.forName("org.apache.derby.jdbc.EmbeddedDriver");

      //Getting the Connection object
      String URL = "jdbc:derby:sampleDB;create=true";
      Connection conn = DriverManager.getConnection(URL);

      //Creating the Statement object
      Statement stmt = conn.createStatement();

      //Creating a table and populating it
      stmt.execute("CREATE TABLE EmployeesData( "
         + "Id INT NOT NULL GENERATED ALWAYS AS IDENTITY, "
         + "Name VARCHAR(255), "
         + "Salary INT NOT NULL, "
         + "Location VARCHAR(255), "
         + "PRIMARY KEY (Id))");
      stmt.execute("INSERT INTO EmployeesData(Name, Salary, Location) "
         + "VALUES ('Amit', 30000, 'Hyderabad'), "
         + "('Rahul', 39000, 'Lucknow'), "
         + "('Renuka', 50000, 'Hyderabad'), "
         + "('Archana', 15000, 'Vishakhapatnam'), "
         + "('Kalyan', 40000, 'Hyderabad'), "
         + "('Trupthi', 45000, 'Vishakhapatnam'), "
         + "('Raghav', 12000, 'Lucknow'), "
         + "('Suchatra', 33000, 'Vishakhapatnam'), "
         + "('Rizwan', 20000, 'Lucknow')");
      //Executing the query
      String query = "SELECT Location, MAX(Salary) "
         + "from EmployeesData GROUP BY Location having "
         + "count(Location)>=3";
      ResultSet rs = stmt.executeQuery(query);
      while(rs.next()) {
         System.out.println(rs.getString(1));
         System.out.println(rs.getString(2));
         System.out.println(" ");
      }
   }
}

Resultado

Ao executar o programa acima, você obterá a seguinte saída -

Hyderabad
50000

Lucknow
39000

Vishakhapatnam
45000

Apache Derby - Alterar instrução de tabela

A instrução ALTER TABLE permite que você altere uma tabela existente. Usando isso, você pode fazer o seguinte -

  • Adicione uma coluna, adicione uma restrição

  • Elimine uma coluna, elimine uma restrição

  • Alterar o bloqueio de nível de linha de uma tabela

Vamos supor que criamos uma tabela chamada Funcionários, conforme mostrado abaixo -

ij> CREATE TABLE Employees (
   Id INT NOT NULL GENERATED ALWAYS AS IDENTITY,
   Name VARCHAR(255),
   Salary INT NOT NULL,
   Location VARCHAR(255),
   PRIMARY KEY (Id)
);

E, inseriu quatro registros usando a instrução insert como -

ij> INSERT INTO Employees (Name, Salary, Location) VALUES
 ('Amit', 30000, 'Hyderabad'),
 ('Kalyan', 40000, 'Vishakhapatnam'),
 ('Renuka', 50000, 'Delhi'),
 ('Archana', 15000, 'Mumbai');

Adicionando uma coluna a uma tabela

A seguir está a sintaxe para adicionar uma coluna a uma tabela usando a instrução ALTER.

ALTER TABLE table_name ADD COLUMN column_name column_type;

Exemplo

Usando a instrução ALTER, estamos tentando adicionar uma nova coluna chamada Age com o tipo inteiro.

ALTER TABLE Employees ADD COLUMN Age INT;
0 rows inserted/updated/deleted

Adicione outra coluna chamada Phone_No com o tipo inteiro.

ALTER TABLE Employees ADD COLUMN Phone_No BIGINT;
0 rows inserted/updated/deleted

O comando DESCRIBE descreve a tabela especificada listando as colunas e seus detalhes, se a tabela existir. Se você DESCREVER, a tabela Funcionários, você pode observar as colunas recém-adicionadas conforme mostrado abaixo -

ij> DESCRIBE Employees;
COLUMN_NAME |TYPE_NAME|DEC&|NUM&|COLUM&|COLUMN_DEF|CHAR_OCTE&|IS_NULL&
------------------------------------------------------------------------------
ID |INTEGER |0 |10 |10 |AUTOINCRE&|NULL |NO
NAME |VARCHAR |NULL|NULL|255 |NULL |510 |YES
SALARY |INTEGER |0 |10 |10 |NULL |NULL |NO
LOCATION |VARCHAR |NULL|NULL|255 |NULL |510 |YES
AGE |INTEGER |0 |10 |10 |NULL |NULL |YES
PHONE_NO |INTEGER |0 |10 |10 |NULL |NULL |YES
6 rows selected

Adicionando uma restrição a uma tabela

A seguir está a sintaxe para adicionar uma restrição a uma coluna de uma tabela usando a instrução ALTER.

ALTER TABLE table_name ADD CONSTRAINT constraint_name constraint (column_name);

Onde constraint pode ser NOT NULL, NULL, PRIMARY KEY, UNIQUE, FOREIGN KEY, CHECK.

Exemplo

Usando a instrução ALTER, estamos tentando adicionar uma restrição UNIQUE para a coluna Phone_No.

ij> ALTER TABLE Employees ADD CONSTRAINT New_Constraint UNIQUE(Phone_No);
0 rows inserted/updated/deleted

Depois de adicionar uma restrição UNIQUE a uma coluna, ela não pode ter os mesmos valores para duas linhas, ou seja, o número de telefone deve ser único para cada funcionário.

Se você tentar adicionar duas colunas com o mesmo número de telefone, obterá uma exceção conforme mostrado abaixo.

ij> INSERT INTO Employees (Name, Salary, Location, Age, Phone_No) VALUES
('Amit', 30000, 'Hyderabad', 30, 9848022338);
1 row inserted/updated/deleted
ij> INSERT INTO Employees (Name, Salary, Location, Age, Phone_No) VALUES
('Sumit', 35000, 'Chennai', 25, 9848022338);
ERROR 23505: The statement was aborted because it would have caused a duplicate
key value in a unique or primary key constraint or unique index identified by
'NEW_CONSTRAINT' defined on 'EMPLOYEES'.

Eliminando uma restrição de uma mesa

A seguir está a sintaxe para eliminar uma restrição de uma coluna -

ALTER TABLE table_name DROP CONSTRAINT constraint_name;

Exemplo

A consulta a seguir exclui o nome da restrição New_Constraint na coluna Phone_No criada acima.

ij> ALTER TABLE Employees DROP CONSTRAINT New_Constraint;
0 rows inserted/updated/deleted

Como removemos a restrição UNIQUE na coluna Phone_No, você pode adicionar colunas com o mesmo número de telefone.

ij> INSERT INTO Employees (Name, Salary, Location, Age, Phone_No) VALUES
('Sumit', 35000, 'Chennai', 25, 9848022338);
1 row inserted/updated/deleted

Você pode verificar o conteúdo da tabela ij> selecionar * de Funcionários da seguinte forma -

ID |NAME |SALARY |LOCATION |AGE |PHONE_NO
-------------------------------------------------------------------------
1 |Amit |30000 |Hyderabad |30 |9848022338
2 |Sumit |35000 |Chennai |25 |9848022338
2 rows selected

Eliminando uma coluna de uma tabela

A seguir está a sintaxe para eliminar uma coluna de uma coluna.

ALTER TABLE table_name DROP COLUMN column_name;

Exemplo

A consulta a seguir exclui a coluna chamada age of the employee -

ij> ALTER TABLE Employees DROP COLUMN Age;
0 rows inserted/updated/deleted

Se você descrever a tabela, verá apenas 4 colunas.

ij> DESCRIBE Employees;
COLUMN_NAME |TYPE_NAME|DEC&|NUM&|COLUM&|COLUMN_DEF|CHAR_OCTE&|IS_NULL&
------------------------------------------------------------------------------
ID |INTEGER |0 |10 |10 |AUTOINCRE&|NULL |NO
NAME |VARCHAR |NULL|NULL|255 |NULL |510 |YES
SALARY |INTEGER |0 |10 |10 |NULL |NULL |NO
LOCATION |VARCHAR |NULL|NULL|255 |NULL |510 |YES
PHONE_NO |BIGINT |0 |10 |19 |NULL |NULL |YES

Alterando a tabela usando o programa JDBC

A seguir está o programa JDBC para alterar uma tabela usando a consulta ALTER -

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class AlterTableExample {
   public static void main(String args[]) throws Exception {
      //Registering the driver
      Class.forName("org.apache.derby.jdbc.EmbeddedDriver");
      //Getting the Connection object
      String URL = "jdbc:derby:sampleDB;create=true";
      Connection conn = DriverManager.getConnection(URL);

      //Creating the Statement object
      Statement stmt = conn.createStatement();

      //Executing the query
      String createQuery = "CREATE TABLE Employees( "
         + "Id INT NOT NULL GENERATED ALWAYS AS IDENTITY, "
         + "Name VARCHAR(255), "
         + "Salary INT NOT NULL, "
         + "Location VARCHAR(255), "
         + "PRIMARY KEY (Id))";

      stmt.execute(createQuery);
      System.out.println("Table created");
      System.out.println(" ");

      //Executing the query
      String insertQuery = "INSERT INTO Employees("
         + "Name, Salary, Location) VALUES "
         + "('Amit', 30000, 'Hyderabad'), "
         + "('Kalyan', 40000, 'Vishakhapatnam'), "
         + "('Renuka', 50000, 'Delhi'), "
         + "('Archana', 15000, 'Mumbai'), "
         + "('Trupti', 45000, 'Kochin')";

      stmt.execute(insertQuery);
      System.out.println("Values inserted");
      System.out.println(" ");

      //Executing the query
      String selectQuery = "SELECT * FROM Employees";
      ResultSet rs = stmt.executeQuery(selectQuery);
      System.out.println("Contents of the table after inserting the table");
      while(rs.next()) {
         System.out.println("Id: "+rs.getString("Id"));
         System.out.println("Name: "+rs.getString("Name"));
         System.out.println("Salary: "+rs.getString("Salary"));
         System.out.println("Location: "+rs.getString("Location"));
      }
      System.out.println(" ");

      //Altering the table
      stmt.execute("ALTER TABLE Employees ADD COLUMN Age INT");
      stmt.execute("ALTER TABLE Employees ADD COLUMN Phone_No BigINT");
      stmt.execute("ALTER TABLE Employees " + "ADD CONSTRAINT New_Constraint UNIQUE(Phone_No)");

      stmt.execute("INSERT INTO Employees "
         + "(Name, Salary, Location, Age, Phone_No) "
         + "VALUES ('Amit', 30000, 'Hyderabad', 30, 9848022338)");
      ResultSet alterResult = stmt.executeQuery("Select * from Employees");
      System.out.println("Contents of the table after altering "
         + "the table and inserting values to it: ");
      while(alterResult.next()) {
         System.out.println("Id: "+alterResult.getString("Id"));
         System.out.println("Name: "+alterResult.getString("Name"));
         System.out.println("Salary: "+alterResult.getString("Salary"));
         System.out.println("Location: "+alterResult.getString("Location"));
         System.out.println("Age: "+alterResult.getString("Age"));
         System.out.println("Phone_No: "+alterResult.getString("Phone_No"));
      }
   }
}

Resultado

Ao executar o programa acima, a seguinte saída será gerada -

Table created

Values inserted

Contents of the table after inserting the table
Id: 1
Name: Amit
Salary: 30000
Location: Hyderabad
Id: 2
Name: Kalyan
Salary: 40000
Location: Vishakhapatnam
Id: 3
Name: Renuka
Salary: 50000
Location: Delhi
Id: 4
Name: Archana
Salary: 15000
Location: Mumbai
Id: 5
Name: Trupti
Salary: 45000
Location: Kochin

Contents of the table after altering the table and inserting values to it:
Id: 1
Name: Amit
Salary: 30000
Location: Hyderabad
Age: null
Phone_No: null
Id: 2
Name: Kalyan
Salary: 40000
Location: Vishakhapatnam
Age: null
Phone_No: null
Id: 3
Name: Renuka
Salary: 50000
Location: Delhi
Age: null
Phone_No: null
Id: 4
Name: Archana
Salary: 15000
Location: Mumbai
Age: null
Phone_No: null
Id: 5
Name: Trupti
Salary: 45000
Location: Kochin
Age: null
Phone_No: null
Id: 6
Name: Amit
Salary: 30000
Location: Hyderabad
Age: 30
Phone_No: 9848022338

Apache Derby - Índices Derby

Um índice em uma tabela nada mais é que um ponteiro para seus dados. Eles são usados ​​para acelerar a recuperação de dados de uma tabela.

Se usarmos índices, as instruções INSERT e UPDATE são executadas em uma fase mais lenta. Enquanto SELECT e WHERE são executados em menos tempo.

Criação de um índice

A instrução CREATE INDEX é usada para criar um novo Índice em uma tabela no banco de dados Derby.

Sintaxe

A seguir está a sintaxe da instrução CREATE INDEX -

CTREATE INDEX index_name on table_name (column_name);

Exemplo

Suponha que criamos uma tabela chamada Funcionários no Apache Derby, conforme mostrado abaixo.

CREATE TABLE Emp ( Id INT NOT NULL GENERATED ALWAYS AS IDENTITY,
   Name VARCHAR(255),
   Salary INT NOT NULL,
   Location VARCHAR(255),
   Phone_Number BIGINT
);

A seguinte instrução SQL cria um índice na coluna denominada Salário na tabela Funcionários.

ij> CREATE INDEX example_index on Emp (Salary);
0 rows inserted/updated/deleted

Criando um índice UNIQUE

No Apache Derby, os índices UNIQUE são usados ​​para integração de dados. Depois de criar um índice UNIQUE em uma coluna de uma tabela, ele não permite valores duplicados.

Sintaxe

A seguir está a sintaxe de criação de um índice exclusivo.

CREATE UNIQUE INDEX index_name on table_name (column_name);

Exemplo

O exemplo a seguir cria um índice UNIQUE na coluna Id da tabela Employee.

ij> CREATE UNIQUE INDEX unique_index on Emp (Phone_Number);
0 rows inserted/updated/deleted

Depois de criar um índice exclusivo em uma coluna, você não pode inserir os mesmos valores para essa coluna em outra linha. Resumindo, uma coluna com índice UNIQE não permitirá valores duplicados.

Insira uma linha na tabela Emp como mostrado abaixo

ij> INSERT INTO Emp(Name, Salary, Location, Phone_Number) VALUES ('Amit',
45000, 'Hyderabad', 9848022338);
1 row inserted/updated/deleted

Como criamos um índice único na coluna Phone_No, se você digitar o mesmo valor do registro anterior, ocorrerá um erro.

ij> INSERT INTO Emp(Name, Salary, Location, Phone_Number) VALUES ('Sumit',
35000, 'Chennai', 9848022338);
ERROR 23505: The statement was aborted because it would have caused a duplicate
key value in a unique or primary key constraint or unique index identified by
'UNIQUE_INDEX' defined on 'EMP'.

Criação de um índice COMPOSTO

Você pode criar um único índice em duas linhas e é chamado de índice composto.

Sintaxe

A seguir está a sintaxe do índice composto.

CREATE INDEX index_name on table_name (column_name1, column_name2);

Exemplo

O índice a seguir cria um índice composto nas colunas Nome e Local.

ij> CREATE INDEX composite_index on Emp (Name, Location);
0 rows inserted/updated/deleted

Exibindo os índices

A consulta SHOW INDEXES exibe a lista de índices em uma tabela.

Sintaxe

A seguir está a sintaxe da instrução SHOW INDEXES -

SHOW INDEXES FROM table_name;

Exemplo

A seguir o exemplo, i exibe os índices na tabela Funcionários.

ij> SHOW INDEXES FROM Emp;

Isso produz o seguinte resultado.

ij> SHOW INDEXES FROM Emp;
TABLE_NAME |COLUMN_NAME |NON_U&|TYPE|ASC&|CARDINA&|PAGES
----------------------------------------------------------------------------
EMP |PHONE_NUMBER |false |3 |A |NULL |NULL
EMP |NAME |true |3 |A |NULL |NULL
EMP |LOCATION |true |3 |A |NULL |NULL
EMP |SALARY |true |3 |A |NULL |NULL
4 rows selected

Queda de índices

A instrução Drop Index exclui / descarta o índice fornecido em uma coluna.

Sintaxe

A seguir está a sintaxe da instrução DROP INDEX.

DROP INDEX index_name;

Exemplo

O exemplo a seguir elimina os índices chamados composite_index e unique_index criados acima.

ij> DROP INDEX composite_index;
0 rows inserted/updated/deleted
ij>Drop INDEX unique_index;
0 rows inserted/updated/deleted

Agora, se você verificar a lista de índices, poderá ver o índice em uma coluna, pois excluímos o restante.

ij> SHOW INDEXES FROM Emp;
TABLE_NAME |COLUMN_NAME |NON_U&|TYPE|ASC&|CARDINA&|PAGES
----------------------------------------------------------------------------
EMP |SALARY |true |3 |A |NULL |NULL
1 row selected

Manipulação de índices usando o programa JDBC

O programa JDBC a seguir demonstra como criar índices de eliminação em uma coluna de uma tabela.

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
public class IndexesExample {
   public static void main(String args[]) throws Exception {

      //Registering the driver
      Class.forName("org.apache.derby.jdbc.EmbeddedDriver");
      //Getting the Connection object
      String URL = "jdbc:derby:MYDATABASE;create=true";
      Connection conn = DriverManager.getConnection(URL);

      //Creating the Statement object
      Statement stmt = conn.createStatement();

      //Creating the Emp table
      String createQuery = "CREATE TABLE Emp( "
         + "Id INT NOT NULL GENERATED ALWAYS AS IDENTITY, "
         + "Name VARCHAR(255), "
         + "Salary INT NOT NULL, "
         + "Location VARCHAR(255), "
         + "Phone_Number BIGINT )";
      stmt.execute(createQuery);
      System.out.println("Table created");
      System.out.println(" ");

      //Creating an Index on the column Salary
      stmt.execute("CREATE INDEX example_index on Emp (Salary)");
      System.out.println("Index example_index inserted");
      System.out.println(" ");

      //Creating an Unique index on the column Phone_Number
      stmt.execute("CREATE UNIQUE INDEX unique_index on Emp (Phone_Number)");
      System.out.println("Index unique_index inserted");
      System.out.println(" ");

      //Creating a Composite Index on the columns Name and Location
      stmt.execute("CREATE INDEX composite_index on Emp (Name, Location)");
      System.out.println("Index composite_index inserted");
      System.out.println(" ");

      //listing all the indexes
      System.out.println("Listing all the columns with indexes");

      //Dropping indexes
      System.out.println("Dropping indexes unique_index and, composite_index ");
      stmt.execute("Drop INDEX unique_index");
      stmt.execute("DROP INDEX composite_index");
   }
}

Resultado

Ao executar, isso gera o seguinte resultado

Table created
Index example_index inserted

Index unique_index inserted

Index composite_index inserted

Listing all the columns with indexes
Dropping indexes unique_index and, composite_index

Apache Derby - Procedimentos

Este capítulo ensina como criar e eliminar procedimentos no Derby.

Criando um procedimento

Você pode criar um procedimento usando a instrução CREATE PROCEDURE.

Sintaxe

A seguir está a sintaxe da instrução CREATE PROCEDURE.

CREATE PROCEDURE procedure_name (parameter_type parameter_name1, parameter_type
parameter_name2 . . . .) parameter_style;

Exemplo

Suponha que criamos uma tabela no Derby conforme mostrado abaixo.

CREATE TABLE Emp ( Id INT NOT NULL GENERATED ALWAYS AS IDENTITY,
   Name VARCHAR(255),
   Salary INT NOT NULL,
   Location VARCHAR(255),
   Phone_Number BIGINT
);

E inseriu valores nela da seguinte forma -

INSERT INTO Employees(Name, Salary, Location) VALUES
('Amit', 30000, 'Hyderabad'),
('Kalyan', 40000, 'Vishakhapatnam'),
('Renuka', 50000, 'Delhi'),
('Archana', 15000, 'Mumbai'),
('Trupthi', 45000, 'Kochin')";

O exemplo a seguir cria um procedimento denominado Update_Procedure que aceita parâmetros JAVA.

ij> CREATE PROCEDURE Update_Procedure(IN id INTEGER, IN name VARCHAR(10))
PARAMETER STYLE JAVA READS SQL DATA LANGUAGE JAVA EXTERNAL NAME
'ProcedureExample.testProc';
> 0 rows inserted/updated/deleted

Onde a classe ProcedureExample se parece com -

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
public class ProcedureExample {
   public static void testProc(int salary, String name) throws Exception {
      String connectionURL = "jdbc:derby:MYDATABASE;create=true";
      Connection conn = DriverManager.getConnection(connectionURL);
      String query = "UPDATE Employees SET SALARY = ? WHERE NAME = ?";
      PreparedStatement pstmt = conn.prepareStatement(query);
      pstmt.setInt(1, salary);
      pstmt.setString (2, name);
      pstmt.executeUpdate();
   }
}

Você pode verificar a lista de procedimentos usando SHOW PROCEDURES inquerir.

ij> SHOW PROCEDURES;
PROCEDURE_SCHEM |PROCEDURE_NAME |REMARKS
------------------------------------------------------------------------
APP |UPDATE_PROCEDURE |ProcedureExample.te&
SALES |EXAMPLE_ PROCEDURE |com.example.sales.c&
SQLJ |INSTALL_JAR |org.apache.derby.ca&
SQLJ |REMOVE_JAR |org.apache.derby.ca&
SQLJ |REPLACE_JAR |org.apache.derby.ca&
SYSCS_UTIL |SYSCS_BACKUP_DATABASE |org.apache.derby.ca&
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Aqui você pode observar o procedimento recém-criado.

Abandonando um procedimento

Você pode eliminar um procedimento usando a instrução DROP PROCEDURE.

Sintaxe

A seguir está a sintaxe da instrução DROP PROCEDURE.

DROP PROCEDURE procedure_name;

Exemplo

O exemplo a seguir elimina um procedimento denominado Update_Procedure criado acima.

ij> DROP PROCEDURE Update_Procedure;
> 0 rows inserted/updated/deleted

Apache Derby - Esquemas

Um esquema de banco de dados é a estrutura de esqueleto que representa a visão lógica de todo o banco de dados. Define como os dados são organizados e como as relações entre eles são associadas. Ele formula todas as restrições que devem ser aplicadas aos dados.

Criação de um esquema

Você pode criar um esquema no Apache Derby usando a instrução CREATE SCHEMA.

Sintaxe

A seguir está a sintaxe da instrução CREATE SCHEMA.

CREATE SCHEMA schema_name AUTHORIZATION id

Exemplo

O exemplo a seguir cria um esquema denominado my_schema no banco de dados Derby.

ij> CREATE SCHEMA AUTHORIZATION my_schema;
0 rows inserted/updated/deleted

Em seguida, você pode criar uma tabela neste esquema conforme mostrado abaixo.

ij> CREATE TABLE my_schema.Emp ( Id INT NOT NULL GENERATED ALWAYS AS IDENTITY,
   Name VARCHAR(255),
   Salary INT NOT NULL,
   Location VARCHAR(255),
   Phone_Number BIGINT
);
> > > > > 0 rows inserted/updated/deleted

Você pode verificar a lista de esquemas usando a consulta SHOW SCHEMAS aqui você pode encontrar a lista de esquemas criados.

ij> show schemas;
TABLE_SCHEM
------------------------------
APP
MY_SCHEMA
NULLID
SQLJ
SYS
SYSCAT
SYSCS_DIAG
SYSCS_UTIL
SYSFUN
SYSIBM
SYSPROC
SYSSTAT
12 rows selected

Eliminando um Esquema

Você pode eliminar um esquema existente usando a instrução DROP SCHEMA.

Sintaxe

A seguir está a sintaxe da instrução DROPS SCHEMA.

DROP SCHEMA my_schema RESTRICT;

Exemplo

Você pode excluir um esquema apenas se não houver nenhum objeto nele. Para excluir o esquema, exclua todas as tabelas nele e exclua o esquema.

ij> DROP TABLE my_schema.Emp;
0 rows inserted/updated/deleted

O exemplo a seguir elimina o esquema criado acima.

ij> DROP SCHEMA my_schema RESTRICT;
0 rows inserted/updated/deleted

Exemplo JDBC

O exemplo de JDBC a seguir cria e elimina um esquema denominado my_schema.

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
public class CreateSchemaExample {
   public static void main(String args[]) throws Exception {
      //Registering the driver
      Class.forName("org.apache.derby.jdbc.EmbeddedDriver");
      //Getting the Connection object
      String URL = "jdbc:derby:sampleDB;create=true";
      Connection conn = DriverManager.getConnection(URL);

      //Creating the Statement object
      Statement stmt = conn.createStatement();

      stmt.execute("CREATE SCHEMA AUTHORIZATION my_schema");
      //Executing the query
      String query = "CREATE TABLE my_schema.Employees( "
         + "Id INT NOT NULL GENERATED ALWAYS AS IDENTITY, "
         + "Name VARCHAR(255), "
         + "Salary INT NOT NULL, "
         + "Location VARCHAR(255), "
         + "PRIMARY KEY (Id))";
      stmt.execute(query);
      System.out.println("Table created in schema");
      stmt.execute("DROP TABLE my_schema.Employees");
      stmt.execute("DROP SCHEMA my_schema RESTRICT");
      System.out.println("Schema dropped");
   }
}

Resultado

Ao ser executado, o programa acima gera o seguinte exemplo.

Table created in schema
Schema dropped

Apache Derby - gatilhos

Em bancos de dados, gatilhos são as instruções / código que são executados sempre que ocorre um evento. Depois de criar um gatilho para um determinado evento em uma tabela, o código especificado no gatilho é executado cada vez que o evento ocorre. Você pode criar vários gatilhos em uma única tabela.

Este capítulo ensina como criar e descartar gatilhos usando o Apache Derby.

Criação de um gatilho

Você pode criar um gatilho no Derby usando a instrução CREATE TRIGGER.

Sintaxe

A seguir está a sintaxe da consulta CREATE TRIGGER.

CREATE TRIGGER trigger_name
{ NO CASCADE BEFORE | AFTER }
{INSERT [OR] | UPDATE [OR] | DELETE}[OF col_name]
ON table_name
[REFERENCING OLD AS o NEW AS n]
[FOR EACH ROW]
Statement

Exemplo

Suponha que criamos uma tabela chamada Emp em Derby, conforme mostrado abaixo.

CREATE TABLE Emp (
   Id INT NOT NULL,
   Name VARCHAR(255),
   Salary INT NOT NULL,
   Location VARCHAR(255) );

E inseriu 5 linhas nele.

INSERT INTO Emp(Id, Name, Salary, Location) VALUES
(1, 'Amit', 30000, 'Hyderabad'), (2, 'Kalyan', 40000, 'Vishakhapatnam'),
(3,'Renuka', 50000, 'Delhi'), (4, 'Archana', 15000, 'Mumbai'), (5, 'Trupthi',
45000, 'Kochin');

Se tivermos outra tabela chamada BackUp e nossa intenção for armazenar as linhas deletadas da tabela Emp nesta.

CREATE TABLE BackUp (
   Id INT NOT NULL,
   Name VARCHAR(255),
   Salary INT NOT NULL,
   Location VARCHAR(255)
);

A consulta a seguir cria um gatilho na tabela de consulta DELETE chamada Emp. It stores the deleted rows of Emp to the table Backup.

ij> CREATE TRIGGER my_trigger
AFTER DELETE ON Emp
REFERENCING OLD AS oldRow
FOR EACH ROW MODE DB2SQL
INSERT INTO BackUp
VALUES (oldRow.Id, oldRow.Name, oldRow.Salary, oldRow.Location);

Now, delete a row from Emp table as −

ij> Delete From Emp where Name = 'Kalyan';
1 row inserted/updated/deleted
ij> Delete From Emp where Name = 'Amit';
1 row inserted/updated/deleted

If you verify the BackUp table, you can observe the deleted rows in it.

ij> select * from BackUp;
ID |NAME |SALARY |LOCATION
-------------------------------------------------------------------------
2 |Kalyan |40000 |Vishakhapatnam
1 |Amit |30000 |Hyderabad

2 rows selected

Deleting a trigger

You can delete a trigger in Derby using the DROP TRIGGER statement.

Syntax

Following is the syntax of the DROP TRIGGER query −

ij> Drop trigger tigger_name;

Example

Following example deletes the trigger my_trigger created above −

ij> Drop trigger my_trigger;
0 rows inserted/updated/deleted

JDBC example

Following JDBC program creates and deletes triggers in Derby.

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class Triggers_Example {
   public static void main(String args[]) throws SQLException, ClassNotFoundException {
      //Registering the driver
      Class.forName("org.apache.derby.jdbc.EmbeddedDriver");
      //Getting the Connection object
      String URL = "jdbc:derby:TestDataBase;create=true";
      Connection conn = DriverManager.getConnection(URL);

      //Creating the Statement object
      Statement stmt = conn.createStatement();

      //Creating the Emp table
      stmt.execute("CREATE TABLE Emp ( "
         + "Id INT NOT NULL, "
         + "Name VARCHAR(255), "
         + "Salary INT NOT NULL, "
         + "Location VARCHAR(255))");

      //Insert values in to the EMp table
      String query = "INSERT INTO Emp(Id, Name, Salary, Location) VALUES \r\n"
         +"(1, 'Amit', 30000, 'Hyderabad'), "
         + "(2, 'Kalyan', 40000, 'Vishakhapatnam'), "
         + "(3,'Renuka', 50000, 'Delhi'), "
         + "(4, 'Archana', 15000, 'Mumbai'), "
         + "(5, 'Trupthi', 45000, 'Kochin')";
         stmt.execute(query);

      //Creating the BackUp table
      stmt.execute("CREATE TABLE BackUp ( "
         + "Id INT NOT NULL, "
         + "Name VARCHAR(255), "
         + "Salary INT NOT NULL, "
         + "Location VARCHAR(255))");

      //Creating a trigger
      String createTrigger = "CREATE TRIGGER my_trigger "
         + "AFTER DELETE ON Emp "
         + "REFERENCING OLD AS oldRow "
         + "FOR EACH ROW MODE DB2SQL "
         + "INSERT INTO BackUp "
         + "VALUES (oldRow.Id, oldRow.Name, oldRow.Salary, oldRow.Location)";
      stmt.execute(createTrigger);
      System.out.println("Trigger created");

      //Deleting records from Emp table
      stmt.executeUpdate("Delete From Emp where Name = 'Kalyan'");
      stmt.executeUpdate("Delete From Emp where Name = 'Amit'");
      //Getting the contents of BackUp table
      ResultSet rs = stmt.executeQuery("SELECT * from BackUp");
      while(rs.next()){
         System.out.println(rs.getInt("Id"));
         System.out.println(rs.getString("Name"));
         System.out.println(rs.getString("Salary"));
         System.out.println(rs.getString("Location"));
         System.out.println(" ");
      }
   }
}

Output

On executing the above program, the following output is generated −

Trigger created
2
Kalyan
40000
Vishakhapatnam
1
Amit
30000
Hyderabad