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