Apache Derby - Guida rapida
Apache Derby è un file Relazionale Database Mgestione System che è completamente basato sul linguaggio di programmazione Java (scritto / implementato). È un database open source sviluppato da Apache Software Foundation.
Oracle ha rilasciato l'equivalente di Apache Derby con il nome JavaDB.
Caratteristiche di Apache Derby
Di seguito sono riportate le caratteristiche notevoli del database Derby:
Platform independent - Derby utilizza il formato del database su disco in cui i database in esso contenuti sono archiviati in un file nel disco all'interno della directory con lo stesso nome del database.
No modifying data - Per questo motivo, è possibile spostare i database derby su altre macchine senza modificare i dati.
Transactional support - Derby fornisce supporto completo per le transazioni garantendo l'integrità dei dati.
Including databases - Puoi includere database pre-compilati / esistenti nelle tue attuali applicazioni derby.
Less space - Il database Derby ha un ingombro ridotto, ovvero occupa meno spazio ed è facile da usare e distribuire.
Embed with Java Application- Derby fornisce un motore di database incorporato che può essere incorporato nelle applicazioni Java e verrà eseguito nella stessa JVM dell'applicazione. Il semplice caricamento del driver avvia il database e si ferma con le applicazioni.
Limitazioni di Apache Derby
Di seguito sono riportati i limiti di Apache Derby:
Derby non supporta gli indici per i tipi di dati come BLOB e LONGVARCHAR.
Se Derby non ha abbastanza spazio su disco, si spegnerà immediatamente.
Archivio dati
Durante la memorizzazione dei dati, Apache Derby segue un concetto noto come conglomerate. In questo, i dati di una tabella verranno memorizzati in un file separato. Allo stesso modo, anche ogni indice di una tabella viene memorizzato in un file separato. Pertanto, ci sarà un file separato per ogni tabella o indice nel database.
Libreria / componenti di Apache Derby
La distribuzione di Apache Derby fornisce vari componenti. Nella cartella lib della distribuzione di apache che hai scaricato, puoi osservare i file jar che rappresentano vari componenti.
File jar | Componente | Descrizione |
---|---|---|
derby.jar | Motore di database e driver JDBC | Il motore di database di Apache Derby è un motore di database relazionale incorporato che supporta JDBC e API SQL. Questo funge anche da driver incorporato, utilizzando il quale è possibile comunicare con Derby utilizzando applicazioni Java. |
derbynet.jar derbyrun.jar | Server di rete | Il server di rete di Apache Derby fornisce la funzionalità del server client, in cui i client possono connettersi al server Derby attraverso una rete. |
derbyclient.jar | Driver JDBC del client di rete | |
derbytools.jar | Strumenti della riga di comando | Questo file jar contiene strumenti come sysinfo, ij, e dblook. |
derbyoptionaltools.jar | Utilità della riga di comando opzionali (strumenti) | Questo file jar fornisce strumenti opzionali: strumento opzionale databaseMetaData, strumento opzionale foreignViews, strumento opzionale luceneSupport, strumento opzionale rawDBReader, strumento opzionale simpleJson, ecc. |
derbyLocale_XX.jar | File jar per localizzare i messaggi | Oltre ai file jar sopra menzionati, puoi vedere diversi derbyLocale_XX.jar (es, fr, hu, it, ja, ecc.). Usandoli, puoi localizzare i messaggi di Apache Derby. |
È possibile distribuire apache derby in due modalità, ovvero modalità incorporata e modalità server.
Modalità incorporata
È possibile eseguire derby in modalità incorporata utilizzando l'applicazione Java (utilizzando il driver incorporato). Se si distribuisce Derby in modalità incorporata, il motore di database verrà eseguito nella stessa JVM dell'applicazione Java. Si avvia e si ferma con l'applicazione. È possibile accedere al database solo con questa applicazione.
Modalità server
In modalità server, derby verrà eseguito nella JVM di un server delle applicazioni dove è possibile inviare una richiesta al server per accedervi. A differenza della modalità incorporata, più applicazioni (java) possono inviare una richiesta al server e accedere al database.
Il capitolo seguente spiega come scaricare e installare Apache Derby.
Download di Apache Derby
Visita la home page della home page di Apache Derby https://db.apache.org/derby/. Fare clic sulla scheda Download.
Selezionare e fare clic sul collegamento dell'ultima versione di Apache Derby.
Facendo clic sul collegamento selezionato, verrai reindirizzato al file Distributionspagina di apache derby. Se osservi qui, derby fornisce distribuzioni vale a dire, db-derby-bin, db-derbylib.zip, db-derby-lib-debug.zip e db-derby-src.zip.
Scarica il file db-derby-bincartella. Copia il suo contenuto in una cartella separata in cui desideri installare Apache Derby. (ad esempio, sayC:\Derby)
Ora, per lavorare con Derby,
Assicurati di aver già impostato il file JAVA_HOME variabile passando la posizione della cartella bin della cartella di installazione di Java e includere il file JAVA_HOME/bin nella variabile PATH.
Crea una nuova variabile d'ambiente, DERBY_HOME con valore C: \ Derby.
La cartella bin delle distribuzioni db-derby-bin (l'abbiamo modificata come C: \ Derby \ bin) contiene tutti i file jar richiesti.
Come discusso, Apache Derby può essere installato / distribuito in due modi come segue:
Embedded mode- In questo, è necessario accedere al database utilizzando il driver JDBC Embedded Derby. È possibile avviare e arrestare derby tramite l'applicazione Java. Sia il motore di database che l'applicazione verranno eseguiti sulla stessa JVM.
Network Server mode- In questa modalità, è possibile accedere a Derby in un tipico modo client server, dove Derby è incorporato nel sistema server. Quindi, le macchine client in esecuzione in diverse JVM (quella del Server) invieranno richieste al server e il server risponderà a tali richieste.
Il client può essere un'altra JVM nella stessa macchina di sistema del server o un'applicazione Java da un sistema remoto.
Installazione di Derby in modalità incorporata
Per installare Apache Derby in modalità incorporata, includi il file jar derby.jar nel tuo CLASSPATH.
In alternativa, è possibile impostare il percorso di classe per i file jar richiesti eseguendo il setEmbeddedCPcomando. Sfoglia il filebin directory di Apache Derby ed eseguire questo file come mostrato di seguito -
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\*;
Dopo aver configurato Apache Derby, per accedervi, eseguire programmi Java utilizzando il driver incorporato.
Verifica
È possibile verificare la configurazione utilizzando il ij strumento come mostrato di seguito -
C:\Derby\bin>ij
ij version 10.14
ij> connect 'jdbc:derby:SampleDB;create=true';
ij>
Installazione di Derby in modalità server di rete
Per installare Apache Derby in modalità server di rete, è necessario includere derbynet.jar e derbytools.jar file in CLASSPATH.
In alternativa, è possibile impostare il percorso di classe per i file jar richiesti eseguendo il setNetworkServerCPcomando. Sfoglia il filebin directory di Apache Derby ed eseguire questo file come mostrato di seguito -
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\*;
Avvio di Derby in modalità server
È possibile avviare il server di rete eseguendo il comando startNetworkServer. Sfoglia il filebin directory di Apache Derby ed eseguire questo comando come mostrato di seguito -
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
Oppure puoi avviare il server usando derbyrun.jar come mostrato di seguito -
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
Client di rete
Nel client, aggiungi i file jar derbyclient.jar e derbytools.jaral CLASSPATH. Oppure esegui il filesetNetworkClientCP comando come mostrato di seguito -
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\*;
Quindi da questo client, puoi inviare richieste al server.
Verifica
È possibile verificare la configurazione utilizzando il ij strumento come mostrato di seguito -
C:\Derby\bin>ij
ij version 10.14
ij> connect 'jdbc:derby://localhost:1527/SampleDB;create=true';
ij>
Ambiente Eclipse di Apache Derby
Mentre si lavora con Eclipse, è necessario impostare il percorso di compilazione per tutti i file jar richiesti.
Passaggio 1: crea un progetto e imposta il percorso di compilazione
Apri eclipse e crea un progetto di esempio. Fare clic con il tasto destro sul progetto e selezionare l'opzioneBuild Path -> Configure Build Percorso come mostrato di seguito -
Nel Java Build Path cornice in Libraries scheda, fare clic su Add External JARs.
E seleziona il richiesto jar file nella cartella lib della cartella di installazione di Derby e fare clic su Apply and Close.
Apache Derby fornisce strumenti come sysinfo, ij e, dblook.
strumento sysinfo
Utilizzando questo strumento, è possibile ottenere informazioni sull'ambiente Java e Derby.
Sfoglia la cartella bin della directory di installazione di Derby ed esegui il comando sysinfo come mostrato di seguito -
C:\Users\MY_USER>cd %DERBY_HOME%/bin
C:\Derby\bin>sysinfo
Durante l'esecuzione, fornisce informazioni di sistema su java e derby come indicato di seguito:
------------------ 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 questo strumento, puoi eseguire script e query di apache Derby.
Sfoglia la cartella bin della directory di installazione di Derby ed esegui il comando ij come mostrato di seguito -
C:\Users\MY_USER>cd %DERBY_HOME%/bin
C:\Derby\bin>ij
Questo ti darà ij shell dove puoi eseguire comandi e script derby, come mostrato di seguito -
ij version 10.14
ij>
Utilizzando help comando, puoi ottenere l'elenco dei comandi supportati da questa 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
Questo strumento viene utilizzato per generare il linguaggio di definizione dei dati.
Sfoglia la cartella bin della directory di installazione di Derby ed esegui il file dblook comando come mostrato di seguito -
C:\Users\MY_USER>cd %DERBY_HOME%/bin
C:\Derby\bin>dblook -d myURL
Dove, myURL è l'URL di connessione del database per il quale è necessario generare DDL.
Questo capitolo fornisce la sintassi di tutte le istruzioni SQL di Apache Derby.
Tutte le istruzioni iniziano con una qualsiasi delle parole chiave come SELECT, INSERT, UPDATE, DELETE, ALTER, DROP, CREATE, USE, SHOW e tutte le istruzioni terminano con un punto e virgola (;).
Le istruzioni SQL di Apache Derby sono case in sensitives, inclusi i nomi delle tabelle.
Istruzione 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)
);
TABELLA DI CADUTA
DROP TABLE table_name;
Istruzione INSERT
INSERT INTO table_name VALUES (column_name1, column_name2, ...);
Istruzione SELECT
SELECT column_name, column_name, ... FROM table_name;
Istruzione UPDATE
UPDATE table_name
SET column_name = value, column_name = value, ...
WHERE conditions;
Istruzione DELETE
DELETE FROM table_name WHERE condition;
DESCRIVERE la dichiarazione
Describe table_name
Istruzione SQL TRUNCATE TABLE
TRUNCATE TABLE table_name;
Istruzione ALTER - Aggiunta di una colonna
ALTER TABLE table_name ADD COLUMN column_name column_type;
Istruzione ALTER - Aggiunta di vincoli
ALTER TABLE table_name ADD CONSTRAINT constraint_name constraint (column_name);
Istruzione ALTER - Colonna rimossa
ALTER TABLE table_name DROP COLUMN column_name;
Istruzione ALTER - Vincolo di eliminazione
ALTER TABLE table_name DROP CONSTRAINT constraint_name;
Dove la clausola
SELECT * from table_name WHERE condition;
or,
DELETE from table_name WHERE condition;
or,
UPDATE table_name SET column_name = value WHERE condition;
Clausola GROUP BY
SELECT column1, column2, . . . table_name GROUP BY column1, column2, . . .;
ORDER BY clausola
SELECT * FROM table_name ORDER BY column_name ASC|DESC.
Avere clausola
SELECT column1, column2 . . . from table_name GROUP BY column having
condition;
Creazione dell'indice
CTREATE INDEX index_name on table_name (column_name);
Creazione di un indice UNICO
CREATE UNIQUE INDEX index_name on table_name (column_name);
Creazione di un indice COMPOSITO
CREATE INDEX index_name on table_name (column_name1, column_name2);
Visualizzazione degli indici
SHOW INDEXES FROM table_name;
Eliminazione degli indici
DROP INDEX index_name;
Il tipo di dati è un attributo che specifica il tipo di dati di qualsiasi oggetto. Ogni colonna, variabile ed espressione ha un tipo di dati correlato. Puoi utilizzare questi tipi di dati durante la creazione delle tabelle. È possibile scegliere un tipo di dati per una colonna di tabella in base alle proprie esigenze.
Derby Server offre diverse categorie di tipi di dati da utilizzare come elencato di seguito:
Tipi di dati numerici interi
Di seguito è riportato l'elenco dei tipi di dati numerici interi:
TIPO DI DATI | TAGLIA | A PARTIRE DAL | PER |
---|---|---|---|
PICCOLO | 2 byte | -32768 | 32767 |
NUMERO INTERO | 4 byte | -2.147.483.648 | 2.147.483.647 |
BIGINT | 8 byte | -9223372036854775808 | 9223372036854775808 |
Tipi di dati numerici approssimativi
Di seguito è riportato l'elenco dei tipi di dati numerici approssimativi:
TIPO DI DATI | TAGLIA | A PARTIRE DAL | PER |
---|---|---|---|
VERO | 4 byte | -3,40E + 38 | 3.40E + 38 |
DOPPIA PRECISIONE | 8 byte | -1,79 E + 308 | 1,79 E + 308 |
GALLEGGIANTE | -1,79 E + 308 | 1,79 E + 308 |
Tipi di dati numerici esatti
Di seguito è riportato l'elenco dei tipi di dati numerici esatti:
TIPO DI DATI | A PARTIRE DAL | PER |
---|---|---|
DECIMALE | -10 ^ 38 +1 | 10 ^ 38-1 |
NUMERICO | -10 ^ 38 +1 | 10 ^ 38-1 |
L'istruzione CREATE TABLE viene utilizzata per creare una nuova tabella nel database Derby.
Sintassi
Di seguito è riportata la sintassi dell'istruzione 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)
);
Un altro modo per creare una tabella in Apache Derby è che puoi specificare i nomi delle colonne e i tipi di dati utilizzando una query. La sintassi per questo è data di seguito:
CREATE TABLE table_name AS SELECT * FROM desired_table WITH NO DATA;
Esempio
La seguente istruzione SQL crea una tabella denominata Student con quattro colonne, dove id è la chiave primaria ed è generata 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
Il comando DESCRIBE descrive la tabella specificata elencando le colonne ei loro dettagli, se la tabella esiste. È possibile utilizzare questo comando per verificare se la tabella è stata creata.
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
Crea una tabella utilizzando il programma JDBC
Questa sezione insegna come creare una tabella nel database Apache Derby utilizzando l'applicazione JDBC.
Se vuoi richiedere il server di rete Derby utilizzando il client di rete, assicurati che il server sia attivo e funzionante. Il nome della classe per il driver del client di rete èorg.apache.derby.jdbc.ClientDriver e l'URL è jdbc: derby: // localhost: 1527 / DATABASE_NAME; create = true; user = USER_NAME; passw ord = PASSWORD ".
Segui i passaggi indicati di seguito per creare una tabella in Apache Derby -
Passaggio 1: registra il driver
Per comunicare con il database, prima di tutto, è necessario registrare il conducente. IlforName() metodo della classe, Classaccetta un valore String che rappresenta il nome di una classe lo carica nella memoria, che lo registra automaticamente. Registrare il driver utilizzando questo metodo.
Passaggio 2: ottieni la connessione
In generale, il primo passo che facciamo per comunicare con il database è connetterci con esso. IlConnectionclass rappresenta la connessione fisica con un server di database. È possibile creare un oggetto di connessione richiamando il filegetConnection() metodo del DriverManagerclasse. Crea una connessione usando questo metodo.
Passaggio 3: creare un oggetto istruzione
Devi creare un file Statement o PreparedStatement or, CallableStatementoggetti per inviare istruzioni SQL al database. Puoi crearli usando i metodicreateStatement(), prepareStatement() and, prepareCall()rispettivamente. Crea uno di questi oggetti utilizzando il metodo appropriato.
Passaggio 4: eseguire la query
Dopo aver creato un'istruzione, è necessario eseguirla. IlStatement class fornisce vari metodi per eseguire una query come il execute()metodo per eseguire un'istruzione che restituisce più di un set di risultati. IlexecuteUpdate()metodo esegue query come INSERT, UPDATE, DELETE. IlexecuteQuery() ai risultati che restituiscono dati, ecc. Utilizzare uno di questi metodi ed eseguire l'istruzione creata in precedenza.
Esempio
Il seguente esempio JDBC mostra come creare una tabella in Apache Derby utilizzando il programma JDBC. Qui, ci stiamo connettendo a un database denominato sampleDB (creerà se non esiste) utilizzando il driver incorporato.
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");
}
}
Produzione
Eseguendo il programma sopra, otterrai il seguente output
Table created
L'istruzione DROP TABLE viene utilizzata per rimuovere una tabella esistente inclusi tutti i relativi trigger, vincoli e autorizzazioni.
Sintassi
Di seguito è riportata la sintassi dell'istruzione DROP TABLE.
ij> DROP TABLE table_name;
Esempio
Supponi di avere una tabella denominata Student nel database. La seguente istruzione SQL elimina una tabella denominata Student.
ij> DROP TABLE Student;
0 rows inserted/updated/deleted
Poiché abbiamo rimosso la tabella se proviamo a descriverla, otterremo un errore come segue
ij> DESCRIBE Student;
IJ ERROR: No table exists with the name STUDENT
Elimina tabella utilizzando il programma JDBC
Questa sezione insegna come eliminare una tabella nel database Apache Derby utilizzando l'applicazione JDBC.
Se vuoi richiedere il server di rete Derby utilizzando il client di rete, assicurati che il server sia attivo e funzionante. Il nome della classe per il driver del client di rete è org.apache.derby.jdbc.ClientDriver e l'URL è jdbc: derby: // localhost: 1527/DATABASE_NAME;creare = vero; utente =USER_NAME; passw ord =PASSWORD"
Seguire i passaggi indicati di seguito per eliminare un tavolo in Apache Derby
Passaggio 1: registra il driver
Per comunicare con il database, prima di tutto, è necessario registrare il conducente. IlforName() metodo della classe Classaccetta un valore String che rappresenta il nome di una classe lo carica nella memoria, che lo registra automaticamente. Registrare il driver utilizzando questo metodo.
Passaggio 2: ottieni la connessione
In generale, il primo passo che facciamo per comunicare con il database è connetterci con esso. IlConnectionclass rappresenta la connessione fisica con un server di database. È possibile creare un oggetto di connessione richiamando il filegetConnection() metodo del DriverManagerclasse. Crea una connessione usando questo metodo.
Passaggio 3: creare un oggetto istruzione
Devi creare un file Statement o PreparedStatement o, CallableStatementoggetti per inviare istruzioni SQL al database. Puoi crearli usando i metodicreateStatement(), prepareStatement() and, prepareCall()rispettivamente. Crea uno di questi oggetti utilizzando il metodo appropriato.
Passaggio 4: eseguire la query
Dopo aver creato un'istruzione, è necessario eseguirla. IlStatement class fornisce vari metodi per eseguire una query come il execute()metodo per eseguire un'istruzione che restituisce più di un set di risultati. IlexecuteUpdate()metodo esegue query come INSERT, UPDATE, DELETE. IlexecuteQuery() ai risultati che restituiscono dati, ecc. Utilizzare uno di questi metodi ed eseguire l'istruzione creata in precedenza.
Esempio
L'esempio JDBC seguente mostra come eliminare una tabella in Apache Derby utilizzando il programma JDBC. Qui, ci stiamo connettendo a un database denominato sampleDB (creerà se non esiste) utilizzando il driver incorporato.
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");
}
}
Produzione
Eseguendo il programma sopra, otterrai il seguente output:
Table dropped
Apache Derby - Inserisci dati
La query di inserimento inserisce i dati: new records, nella tabella.
Sintassi
Di seguito è riportata la sintassi di base dell'istruzione INSERT:
ij>INSERT INTO table_name VALUES (column_name1, column_name2, ...);
dove colonna1, colonna2 sono i valori della colonna nella riga che deve essere inserita.
Esempio
La seguente istruzione SQL INSERT inserisce una nuova riga nella tabella Student, dove inserisce i valori nelle colonne id, age, first name e, last name.
SQL> INSERT INTO Student VALUES (101, 20, 'Zara', 'Ali');
Sintassi 2
Oppure puoi inserire due colonne specifiche menzionando i nomi delle colonne, come indicato di seguito:
ij>INSERT INTO table_name VALUES (column_name1, column_name2, ...) VALUES
(value1, value2, ...);
Note- Apache Derby calcola automaticamente i valori per le colonne generate. Ad esempio, non è necessario passare valori per la colonna id nella tabella studenti creata in precedenza in questo tutorial. Nel caso in cui la tua tabella abbia generato colonne, usasyntax2.
Esempio
ij> INSERT INTO Student(Age, First_Name, Last_Name) VALUES (21, 'Sucharitha' , 'Tyagi');
1 row inserted/updated/deleted
E puoi anche inserire due righe usando un'istruzione come segue:
ij>INSERT INTO Student(Age, First_Name, Last_Name) VALUES (20, 'Amit',
'Bhattacharya'), (22, 'Rahul', 'Desai');
2 rows inserted/updated/deleted
Puoi verificare il contenuto della tabella usando il comando SELECT (parleremo di questo comando più avanti in questo tutorial).
Sintassi 3
È possibile utilizzare un'altra query nell'istruzione insert come:
INSERT INTO table_Name Query
Esempio
Supponiamo di avere una tabella denominata First_Year nel database come mostrato di seguito con colonne simili come nella tabella Studente -
ID |AGE |FIRST_NAME |LAST_NAME
-----------------------------------------------------------------
1 |20 |Raju |Pendyala
2 |21 |Bhargav |Prayaga
3 |22 |Deepthi |Yerramilli
Puoi inserire i valori in questa tabella nella tabella degli studenti usando la sintassi sopra come -
ij> INSERT INTO Student (Age, First_Name, Last_Name)
SELECT Age, First_Name, Last_Name FROM First_Year;
> 3 rows inserted/updated/deleted
Dopo aver eseguito tutte le istruzioni di inserimento sopra, la tabella Student sarà la seguente:
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
Inserisci dati utilizzando il programma JDBC
Questa sezione insegna come inserire dati in una tabella nel database Apache Derby utilizzando l'applicazione JDBC.
Se vuoi richiedere il server di rete Derby utilizzando il client di rete, assicurati che il server sia attivo e funzionante. Il nome della classe per il driver del client di rete è org.apache.derby.jdbc.ClientDriver e l'URL è jdbc: derby: // localhost: 1527 /DATABASE_NAME;creare = vero; utente =USER_NAME;passw ord =PASSWORD"
Seguire i passaggi indicati di seguito per inserire i dati in una tabella in Apache Derby -
Passaggio 1: registra il driver
Per comunicare con il database, prima di tutto, è necessario registrare il conducente. IlforName() metodo della classe, Classaccetta un valore String che rappresenta il nome di una classe lo carica nella memoria, che lo registra automaticamente. Registrare il driver utilizzando questo metodo.
Passaggio 2: ottieni la connessione
In generale, il primo passo che facciamo per comunicare con il database è connetterci con esso. IlConnectionclass rappresenta la connessione fisica con un server di database. È possibile creare un oggetto di connessione richiamando il filegetConnection() metodo del DriverManagerclasse. Crea una connessione usando questo metodo.
Passaggio 3: creare un oggetto istruzione
Devi creare un file Statement o PreparedStatement or, CallableStatementoggetti per inviare istruzioni SQL al database. Puoi crearli usando i metodicreateStatement(), prepareStatement() e, prepareCall()rispettivamente. Crea uno di questi oggetti utilizzando il metodo appropriato.
Passaggio 4: eseguire la query
Dopo aver creato un'istruzione, è necessario eseguirla. IlStatement class fornisce vari metodi per eseguire una query come il execute() metodo per eseguire un'istruzione che restituisce più di un set di risultati.
Il executeUpdate()metodo esegue query come INSERT, UPDATE, DELETE. IlexecuteQuery() ai risultati che restituiscono dati, ecc. Utilizzare uno di questi metodi ed eseguire l'istruzione creata in precedenza.
Esempio
Il seguente esempio JDBC dimostra come inserire dati in una tabella in Apache Derby utilizzando il programma JDBC. Qui, ci stiamo connettendo a un database denominato sampleDB (creerà se non esiste) utilizzando il driver incorporato.
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");
}
}
Produzione
Eseguendo il programma sopra, otterrai il seguente output:
Values inserted
Apache Derby - Recupera dati
L'istruzione SELECT viene utilizzata per recuperare i dati da una tabella. Ciò restituisce i dati sotto forma di una tabella nota come set di risultati.
Sintassi
Di seguito è riportata la sintassi dell'istruzione SELECT:
ij> SELECT column_name, column_name, ... FROM table_name;
Or,
Ij>SELECT * from table_name
Esempio
Supponiamo di avere una tabella denominata Employees nel database come mostrato di seguito -
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, inserito quattro record in esso come mostrato di seguito -
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
La seguente istruzione SQL recupera i dettagli su nome, età e stipendio di tutti i dipendenti nella tabella;
ij> SELECT Id, Name, Salary FROM Employees;
L'output di questa query è:
ID |NAME |SALARY
------------------------------------------------------------------------
1 |Amit |30000
2 |Kalyan |40000
3 |Renuka |50000
4 |Archana |15000
4 rows selected
Se vuoi ottenere tutti i record di questa tabella in una volta, usa * invece dei nomi delle colonne.
ij> select * from Employees;
Questo produrrà il seguente risultato:
ID |NAME |SALARY |LOCATION
------------------------------------------------------------------
1 |Amit |30000 |Hyderabad
2 |Kalyan |40000 |Vishakhapatnam
3 |Renuka |50000 |Delhi
4 |Archana |15000 |Mumbai
4 rows selected
Recupera i dati utilizzando il programma JDBC
Questa sezione spiega come recuperare i dati da una tabella nel database Apache Derby utilizzando l'applicazione JDBC.
Se vuoi richiedere il server di rete Derby utilizzando il client di rete, assicurati che il server sia attivo e funzionante. Il nome della classe per il driver del client di rete è org.apache.derby.jdbc.ClientDriver e l'URL è jdbc: derby: // localhost: 1527 /DATABASE_NAME; creare = true; utente =USER_NAME; passw ord =PASSWORD"
Seguire i passaggi indicati di seguito per recuperare i dati da una tabella in Apache Derby -
Passaggio 1: registra il driver
Per comunicare con il database, prima di tutto, è necessario registrare il conducente. IlforName() metodo della classe Classaccetta un valore String che rappresenta il nome di una classe lo carica nella memoria, che lo registra automaticamente. Registrare il driver utilizzando questo metodo.
Passaggio 2: ottieni la connessione
In generale, il primo passo che facciamo per comunicare con il database è connetterci con esso. IlConnectionclass rappresenta la connessione fisica con un server di database. È possibile creare un oggetto di connessione richiamando il filegetConnection() metodo del DriverManagerclasse. Crea una connessione usando questo metodo.
Passaggio 3: creare un oggetto istruzione
Devi creare un file Statement o PreparedStatement o, CallableStatementoggetti per inviare istruzioni SQL al database. Puoi crearli usando i metodicreateStatement(), prepareStatement() e, prepareCall()rispettivamente. Crea uno di questi oggetti utilizzando il metodo appropriato.
Passaggio 4: eseguire la query
Dopo aver creato un'istruzione, è necessario eseguirla. IlStatement class fornisce vari metodi per eseguire una query come il execute()metodo per eseguire un'istruzione che restituisce più di un set di risultati. IlexecuteUpdate()metodo esegue query come INSERT, UPDATE, DELETE. IlexecuteQuery() ai risultati che restituiscono dati, ecc. Utilizzare uno di questi metodi ed eseguire l'istruzione creata in precedenza.
Esempio
Il seguente esempio JDBC mostra come recuperare i dati da una tabella in Apache Derby utilizzando il programma JDBC. Qui, ci stiamo connettendo a un database denominato sampleDB (creerà se non esiste) utilizzando il driver incorporato.
Il executeQuery() metodo restituisce un file ResultSetoggetto che contiene il risultato dell'istruzione. Inizialmente il puntatore del set di risultati si troverà sul primo record, è possibile stampare il contenuto dell'oggetto ResultSet utilizzando il suonext() e getXXX() metodi.
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(" ");
}
}
}
Produzione
Eseguendo il programma sopra, otterrai il seguente output
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 - Aggiorna dati
L'istruzione UPDATE viene utilizzata per aggiornare i dati in una tabella. Apache Derby fornisce due tipi di aggiornamenti (sintassi), vale a diresearched aggiornamento e positioned aggiornare.
L'istruzione UPDATE ricercata aggiorna tutte le colonne specificate di una tabella.
Sintassi
Di seguito è riportata la sintassi della query UPDATE:
ij> UPDATE table_name
SET column_name = value, column_name = value, ...
WHERE conditions;
La clausola WHERE può utilizzare gli operatori di confronto come =,! =, <,>, <= E> =, nonché gli operatori BETWEEN e LIKE.
Esempio
Supponiamo di avere una tabella Employee nel database con i 4 record come mostrato di seguito -
ID |NAME |SALARY |LOCATION
----------------------------------------------------------
1 |Amit |30000 |Hyderabad
2 |Kalyan |40000 |Vishakhapatnam
3 |Renuka |50000 |Delhi
4 |Archana |15000 |Mumbai
La seguente istruzione SQL UPDATE aggiorna la posizione e lo stipendio di un dipendente il cui nome è Kaylan.
ij> UPDATE Employees SET Location = 'Chennai', Salary = 43000 WHERE Name =
'Kalyan';
1 rows inserted/updated/deleted
Se ottieni il contenuto della tabella Employees, puoi osservare le modifiche apportate dalla query 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
Aggiorna i dati utilizzando il programma JDBC
Questa sezione spiega come aggiornare i record esistenti di una tabella nel database Apache Derby utilizzando l'applicazione JDBC.
Se vuoi richiedere il server di rete Derby utilizzando il client di rete, assicurati che il server sia attivo e funzionante. Il nome della classe per il driver del client di rete è org.apache.derby.jdbc.ClientDriver e l'URL è jdbc: derby: // localhost: 1527 /DATABASE_NAME; creare = true; utente =USER_NAME; passw ord =PASSWORD"
Seguire i passaggi indicati di seguito per aggiornare i record esistenti di una tabella in Apache Derby.
Passaggio 1: registra il driver
Per comunicare con il database, prima di tutto, è necessario registrare il conducente. IlforName() metodo della classe Classaccetta un valore String che rappresenta il nome di una classe lo carica nella memoria, che lo registra automaticamente. Registrare il driver utilizzando questo metodo.
Passaggio 2: ottieni la connessione
In generale, il primo passo che facciamo per comunicare con il database è connetterci con esso. La classe Connection rappresenta la connessione fisica con un server di database. È possibile creare un oggetto di connessione richiamando il filegetConnection() metodo del DriverManagerclasse. Crea una connessione usando questo metodo.
Passaggio 3: creare un oggetto istruzione
Devi creare un file Statement o PreparedStatement or, CallableStatementoggetti per inviare istruzioni SQL al database. Puoi crearli usando i metodicreateStatement(), prepareStatement() e, prepareCall()rispettivamente. Crea uno di questi oggetti utilizzando il metodo appropriato.
Passaggio 4: eseguire la query
Dopo aver creato un'istruzione, è necessario eseguirla. IlStatement class fornisce vari metodi per eseguire una query come il execute()metodo per eseguire un'istruzione che restituisce più di un set di risultati. IlexecuteUpdate()metodo esegue query come INSERT, UPDATE, DELETE. IlexecuteQuery()il metodo restituisce i dati. Utilizzare uno di questi metodi ed eseguire l'istruzione creata in precedenza.
Esempio
Il seguente esempio JDBC dimostra come aggiornare i record esistenti di una tabella in Apache Derby utilizzando il programma JDBC. Qui, ci stiamo connettendo a un database denominato sampleDB (creerà se non esiste) utilizzando il driver incorporato.
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);
}
}
Produzione
Eseguendo il programma sopra, otterrai il seguente output:
Number of records updated are: 1
Apache Derby - Elimina dati
L'istruzione DELETE viene utilizzata per eliminare le righe di una tabella. Proprio come l'istruzione UPDATE, Apache Derby fornisce due tipi di eliminazione (sintassi):searched elimina e positioned Elimina.
L'istruzione di eliminazione ricercata elimina tutte le colonne specificate di una tabella.
Sintassi
La sintassi dell'istruzione DELETE è la seguente:
ij> DELETE FROM table_name WHERE condition;
Esempio
Supponiamo di avere una tabella denominata dipendente con 5 record come mostrato di seguito:
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
La seguente istruzione SQL DELETE cancella il record con il nome Trupti.
ij> DELETE FROM Employees WHERE Name = 'Trupti';
1 row inserted/updated/deleted
Se ottieni il contenuto della tabella Dipendenti, puoi vedere solo quattro record come mostrato di seguito:
ID |NAME |SALARY |LOCATION
----------------------------------------------------------------------------
1 |Amit |30000 |Hyderabad
2 |Kalyan |40000 |Vishakhapatnam
3 |Renuka |50000 |Delhi
4 |Archana |15000 |Mumbai
4 rows selected
Per eliminare tutti i record nella tabella, eseguire la stessa query senza la clausola where.
ij> DELETE FROM Employees;
4 rows inserted/updated/deleted
Ora, se provi a ottenere il contenuto della tabella Employee, otterrai una tabella vuota come indicato di seguito -
ij> select * from employees;
ID |NAME |SALARY |LOCATION
--------------------------------------------------------
0 rows selected
Elimina i dati utilizzando il programma JDBC
Questa sezione spiega come eliminare i record esistenti di una tabella nel database Apache Derby utilizzando l'applicazione JDBC.
Se vuoi richiedere il server di rete Derby utilizzando il client di rete, assicurati che il server sia attivo e funzionante. Il nome della classe per il driver del client di rete è org.apache.derby.jdbc.ClientDriver e l'URL è jdbc: derby: // localhost: 1527 /DATABASE_NAME;creare = vero; utente =USER_NAME;passw ord =PASSWORD".
Seguire i passaggi indicati di seguito per eliminare i record esistenti di una tabella in Apache Derby: / p>
Passaggio 1: registra il driver
In primo luogo, è necessario registrare il driver per comunicare con il database. IlforName() metodo della classe Classaccetta un valore String che rappresenta il nome di una classe lo carica nella memoria, che lo registra automaticamente. Registrare il driver utilizzando questo metodo.
Passaggio 2: ottieni la connessione
In generale, il primo passo che facciamo per comunicare con il database è connetterci con esso. IlConnectionclass rappresenta la connessione fisica con un server di database. È possibile creare un oggetto di connessione richiamando il filegetConnection() metodo del DriverManagerclasse. Crea una connessione usando questo metodo.
Passaggio 3: creare un oggetto istruzione
Devi creare un file Statement o PreparedStatement or, CallableStatementoggetti per inviare istruzioni SQL al database. Puoi crearli usando i metodicreateStatement(), prepareStatement() and, prepareCall()rispettivamente. Crea uno di questi oggetti utilizzando il metodo appropriato.
Passaggio 4: eseguire la query
Dopo aver creato un'istruzione, è necessario eseguirla. IlStatement class fornisce vari metodi per eseguire una query come il execute()metodo per eseguire un'istruzione che restituisce più di un set di risultati. IlexecuteUpdate()metodo esegue query come INSERT, UPDATE, DELETE. IlexecuteQuery()risultati del metodo che restituisce dati. Utilizzare uno di questi metodi ed eseguire l'istruzione creata in precedenza.
Esempio
Il seguente esempio JDBC mostra come eliminare i record esistenti di una tabella in Apache Derby utilizzando il programma JDBC. Qui, ci stiamo connettendo a un database denominato sampleDB (creerà se non esiste) utilizzando il driver incorporato.
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);
}
}
Produzione
Eseguendo il programma sopra, otterrai il seguente output:
Number of records deleted are: 1
Apache Derby - clausola Where
La clausola WHERE viene utilizzata nelle istruzioni SELECT, DELETE o UPDATE per specificare le righe su cui eseguire l'operazione. Di solito, questa clausola è seguita da una condizione o espressione che restituisce un valore booleano, le operazioni di selezione, eliminazione o aggiornamento vengono eseguite solo sulle righe che soddisfano la condizione data.
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;
La clausola WHERE può utilizzare gli operatori di confronto come =,! =, <,>, <= E> =, nonché gli operatori BETWEEN e LIKE.
Esempio
Supponiamo di avere una tabella denominata Dipendenti nel database con 7 record come mostrato di seguito -
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
La seguente istruzione SQL DELETE recupera i record dei dipendenti il cui stipendio è superiore a 35000 -
ij> SELECT * FROM Employees WHERE Salary>35000;
Questo produrrà il seguente output:
ID |NAME |SALARY |LOCATION
---------------------------------------------------
2 |Kalyan |40000 |Vishakhapatnam
3 |Renuka |50000 |Delhi
5 |Trupthi |45000 |Kochin
7 |Rahul |39000 |Lucknow
4 rows selected
Allo stesso modo, puoi anche eliminare e aggiornare i record utilizzando questa clausola.
L'esempio seguente aggiorna la posizione di coloro il cui stipendio è inferiore a 30000.
ij> UPDATE Employees SET Location = 'Vijayawada' WHERE Salary<35000;
3 rows inserted/updated/deleted
Se verifichi il contenuto della tabella, puoi vedere la tabella aggiornata come mostrato di seguito -
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
Clausola Where Esempio JDBC
Questa sezione insegna come utilizzare la clausola WHERE ed eseguire operazioni CURD su una tabella nel database Apache Derby utilizzando l'applicazione JDBC.
Se vuoi richiedere il server di rete Derby utilizzando il client di rete, assicurati che il server sia attivo e funzionante. Il nome della classe per il driver del client di rete è org.apache.derby.jdbc.ClientDriver e l'URL è jdbc: derby: // localhost: 1527 /DATABASE_NAME; creare = true; utente =USER_NAME;passw ord =PASSWORD".
Seguire i passaggi indicati di seguito per utilizzare la clausola WHERE ed eseguire operazioni CURD su una tabella in Apache Derby
Passaggio 1: registra il driver
Per comunicare con il database, prima di tutto, è necessario registrare il conducente. IlforName() metodo della classe Classaccetta un valore String che rappresenta il nome di una classe lo carica nella memoria, che lo registra automaticamente. Registrare il driver utilizzando questo metodo
Passaggio 2: ottieni la connessione
In generale, il primo passo che facciamo per comunicare con il database è connetterci con esso. IlConnectionclass rappresenta la connessione fisica con un server di database. È possibile creare un oggetto di connessione richiamando il filegetConnection() metodo del DriverManagerclasse. Crea una connessione usando questo metodo.
Passaggio 3: creare un oggetto istruzione
Devi creare un file Statement o PreparedStatement o, CallableStatementoggetti per inviare istruzioni SQL al database. Puoi crearli usando i metodicreateStatement(), prepareStatement() and, prepareCall()rispettivamente. Crea uno di questi oggetti utilizzando il metodo appropriato.
Passaggio 4: eseguire la query
Dopo aver creato un'istruzione, è necessario eseguirla. IlStatement class fornisce vari metodi per eseguire una query come il execute()metodo per eseguire un'istruzione che restituisce più di un set di risultati. IlexecuteUpdate()metodo esegue query come INSERT, UPDATE, DELETE. IlexecuteQuery()risultati del metodo che restituisce dati. Utilizzare uno di questi metodi ed eseguire l'istruzione creata in precedenza.
Esempio
L'esempio JDBC seguente mostra come utilizzare la clausola WHERE ed eseguire operazioni CURD su una tabella in Apache Derby utilizzando il programma JDBC. Qui, ci stiamo connettendo a un database denominato sampleDB (creerà se non esiste) utilizzando il driver incorporato.
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(" ");
}
}
}
Produzione
Eseguendo il programma sopra, otterrai il seguente output:
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 - Clausola GROUP BY
La clausola GROUP BY viene utilizzata con le istruzioni SELECT. Viene utilizzato per formare sottoinsiemi in caso di dati identici. Di solito, questa clausola è seguita dalla clausola ORDER BY e collocata dopo la clausola WHERE.
Sintassi
Di seguito è riportata la sintassi della clausola GROUP BY:
ij>SELECT column1, column2, . . . table_name GROUP BY column1, column2, . . .;
Esempio
Supponiamo di avere una tabella denominata Employees nel database con i seguenti record:
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
La seguente istruzione SELECT con la clausola GROUP BY raggruppa la tabella in base alla posizione. Visualizza l'importo totale dello stipendio dato ai dipendenti in una posizione.
ij> SELECT Location, SUM(Salary) from Employees GROUP BY Location;
Questo genererà il seguente output:
LOCATION |2
-------------------------------------------------------
Hyderabad |120000
Lucknow |71000
Vishakhapatnam |93000
3 rows selected
Allo stesso modo, la seguente query trova l'importo medio speso per i dipendenti come stipendio in una posizione.
ij> SELECT Location, AVG(Salary) from Employees GROUP BY Location;
Questo genererà il seguente output:
LOCATION |2
-----------------------------------------------------
Hyderabad |40000
Lucknow |23666
Vishakhapatnam |31000
3 rows selected
Esempio JDBC della clausola Group By
Questa sezione spiega come utilizzare la clausola Group By ed eseguire operazioni CURD su una tabella nel database Apache Derby utilizzando l'applicazione JDBC.
Se vuoi richiedere il server di rete Derby utilizzando il client di rete, assicurati che il server sia attivo e funzionante. Il nome della classe per il driver del client di rete è org.apache.derby.jdbc.ClientDriver e l'URL è jdbc: derby: // localhost: 1527 /DATABASE_NAME;creare = vero; utente =USER_NAME;passw ord =PASSWORD"
Seguire i passaggi indicati di seguito per utilizzare la clausola Group By ed eseguire operazioni CURD su una tabella in Apache Derby
Passaggio 1: registra il driver
Per comunicare con il database, prima di tutto, è necessario registrare il conducente. IlforName() metodo della classe Classaccetta un valore String che rappresenta il nome di una classe lo carica nella memoria, che lo registra automaticamente. Registrare il driver utilizzando questo metodo.
Passaggio 2: ottieni la connessione
In generale, il primo passo che facciamo per comunicare con il database è connetterci con esso. IlConnectionclass rappresenta la connessione fisica con un server di database. È possibile creare un oggetto di connessione richiamando il filegetConnection() metodo del DriverManagerclasse. Crea una connessione usando questo metodo.
Passaggio 3: creare un oggetto istruzione
Devi creare un file Statement o PreparedStatement o, CallableStatementoggetti per inviare istruzioni SQL al database. Puoi crearli usando i metodicreateStatement(), prepareStatement() and, prepareCall()rispettivamente. Crea uno di questi oggetti utilizzando il metodo appropriato.
Passaggio 4: eseguire la query
Dopo aver creato un'istruzione, è necessario eseguirla. IlStatement class fornisce vari metodi per eseguire una query come il execute()metodo per eseguire un'istruzione che restituisce più di un set di risultati. IlexecuteUpdate()viene utilizzato per eseguire query come INSERT, UPDATE, DELETE. IlexecuteQuery()il metodo restituisce i dati. Utilizzare uno di questi metodi ed eseguire l'istruzione creata in precedenza.
Esempio
Il seguente esempio JDBC dimostra come utilizzare Group Byclausola ed eseguire operazioni CURD su una tabella in Apache Derby utilizzando il programma JDBC. Qui, ci stiamo connettendo a un database denominato sampleDB (creerà se non esiste) utilizzando il driver incorporato.
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(" ");
}
}
}
Produzione
Eseguendo il programma sopra, otterrai il seguente output:
Location: Hyderabad
Sum of salary: 120000
Location: Lucknow
Sum of salary: 71000
Location: Vishakhapatnam
Sum of salary: 93000
Apache Derby - Order By Clause
La clausola ORDER BY viene utilizzata per disporre il contenuto del set di risultati nell'ordine in cui utilizza le parole chiave, ASC che rappresenta l'ordine crescente e DESC che rappresenta l'ordine discendente. Se non si menziona nessuno di questi, i contenuti verranno disposti in ordine crescente per impostazione predefinita.
Sintassi
Di seguito è riportata la sintassi della clausola ORDER BY:
SELECT * FROM table_name ORDER BY column_name ASC|DESC.
Esempio
Supponiamo di avere una tabella denominata Employees nel database con i seguenti record:
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
La seguente query dispone il contenuto della tabella in ordine crescente in base al nome del dipendente.
ij> SELECT * FROM Employees ORDER BY Name;
Questo genererà il seguente output:
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
Allo stesso modo, la seguente query dispone il contenuto della tabella in ordine decrescente in base allo stipendio del dipendente -
ij> SELECT * FROM Employees ORDER BY Salary DESC;
Questo genererà il seguente output:
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
Ordinamento dei dati utilizzando il programma JDBC
Questa sezione insegna come ordinare il contenuto di una tabella in Derby utilizzando JDBC. È possibile disporre i record in ordine utilizzando la clausola ORDER BY e le parole chiave ASC (che denota ordine ascendente) e DSC (denota ordine discendente).
Se vuoi richiedere il server di rete Derby utilizzando il client di rete, assicurati che il server sia attivo e funzionante. Il nome della classe per il driver del client di rete è org.apache.derby.jdbc.ClientDriver e l'URL è jdbc: derby: // localhost: 1527 /DATABASE_NAME;creare = vero; utente =USER_NAME;passw ord =PASSWORD".
Seguire i passaggi indicati di seguito per ordinare i record di una tabella in Apache Derby -
Passaggio 1: registra il driver
Per comunicare con il database, prima di tutto, è necessario registrare il conducente. IlforName() metodo della classe Classaccetta un valore String che rappresenta il nome di una classe lo carica nella memoria, che lo registra automaticamente. Registrare il driver utilizzando questo metodo.
Passaggio 2: ottieni la connessione
In generale, il primo passo che facciamo per comunicare con il database è connetterci con esso. Il Connectionclass rappresenta la connessione fisica con un server di database. È possibile creare un oggetto di connessione richiamando il file getConnection() metodo del DriverManagerclasse. Crea una connessione usando questo metodo.Passaggio 3: creare un oggetto istruzione
Devi creare un file Statement o PreparedStatement o, CallableStatementoggetti per inviare istruzioni SQL al database. Puoi crearli usando i metodicreateStatement(), prepareStatement() and, prepareCall()rispettivamente. Crea uno di questi oggetti utilizzando il metodo appropriato.
Passaggio 4: eseguire la query
Dopo aver creato un'istruzione, è necessario eseguirla. IlStatement class fornisce vari metodi per eseguire una query come il execute()metodo per eseguire un'istruzione che restituisce più di un set di risultati. IlexecuteUpdate()metodo esegue query come INSERT, UPDATE, DELETE. IlexecuteQuery()il metodo restituisce i dati. Utilizzare uno di questi metodi ed eseguire l'istruzione creata in precedenza.
Esempio
L'esempio JDBC seguente mostra come ordinare i record di una tabella in Apache Derby utilizzando il programma JDBC. Qui, ci stiamo connettendo a un database denominato sampleDB (creerà se non esiste) utilizzando il driver incorporato.
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(" ");
}
}
}
Produzione
Eseguendo il programma sopra, otterrai il seguente output:
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 - Avere clausola
La clausola HAVING consente di specificare le condizioni che filtrano i risultati del gruppo visualizzati nei risultati.
La clausola WHERE pone condizioni sulle colonne selezionate, mentre la clausola HAVING pone condizioni sui gruppi creati dalla clausola GROUP BY.
Sintassi
Di seguito è riportata la sintassi della clausola HAVING:
ij> SELECT column1, column2 . . . from table_name GROUP BY column having
condition;
Esempio
Supponiamo di avere una tabella denominata Dipendenti nel database con i 13 record come mostrato di seguito:
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
La query seguente mostra gli stipendi massimi dei dipendenti nella posizione che hanno almeno 3 dipendenti:
ij> SELECT Location, MAX(Salary) from Employees GROUP BY Location having
count(Location)>=3;
Questo genera il seguente output:
LOCATION |2
------------------------------------------------------------
Hyderabad |50000
Lucknow |39000
Vishakhapatnam |45000
3 rows selected
Ordinamento dei dati utilizzando il programma JDBC
Questa sezione spiega come utilizzare la clausola Avere una clausola nel database di Apache Derby utilizzando l'applicazione JDBC.
Se vuoi richiedere il server di rete Derby utilizzando il client di rete, assicurati che il server sia attivo e funzionante. Il nome della classe per il driver del client di rete è org.apache.derby.jdbc.ClientDriver e l'URL è jdbc: derby: // localhost: 1527 /DATABASE_NAME;creare = vero; utente =USER_NAME;passw ord =PASSWORD"
Seguire i passaggi indicati di seguito per ordinare i record di una tabella in Apache Derby
Passaggio 1: registra il driver
Per comunicare con il database, prima di tutto, è necessario registrare il conducente. IlforName() metodo della classe Classaccetta un valore String che rappresenta un nome di classe e lo carica nella memoria, che lo registra automaticamente. Registrare il driver utilizzando questo metodo.
Passaggio 2: ottieni la connessione
In generale, il primo passo che facciamo per comunicare con il database è connetterci con esso. IlConnectionclass rappresenta la connessione fisica con un server di database. È possibile creare un oggetto di connessione richiamando il filegetConnection() metodo del DriverManagerclasse. Crea una connessione usando questo metodo.
Passaggio 3: creare un oggetto istruzione
Devi creare un file Statement o PreparedStatement or, CallableStatementoggetti per inviare istruzioni SQL al database. Puoi crearli usando i metodicreateStatement(), prepareStatement() and, prepareCall()rispettivamente. Crea uno di questi oggetti utilizzando il metodo appropriato.
Passaggio 4: eseguire la query
Dopo aver creato un'istruzione, è necessario eseguirla. IlStatement class fornisce vari metodi per eseguire una query come il execute()metodo per eseguire un'istruzione che restituisce più di un set di risultati. IlexecuteUpdate()metodo esegue query come INSERT, UPDATE, DELETE. IlexecuteQuery()il metodo restituisce i dati. Utilizzare uno di questi metodi ed eseguire l'istruzione creata in precedenza.
Esempio
L'esempio JDBC seguente mostra come utilizzare la clausola Group By ed eseguire operazioni CURD su una tabella in Apache Derby utilizzando il programma JDBC. Qui, ci stiamo connettendo a un database denominato sampleDB (creerà se non esiste) utilizzando il driver incorporato.
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(" ");
}
}
}
Produzione
Eseguendo il programma sopra, otterrai il seguente output:
Hyderabad
50000
Lucknow
39000
Vishakhapatnam
45000
Apache Derby - Istruzione Alter Table
L'istruzione ALTER TABLE, consente di modificare una tabella esistente. Usando questo puoi fare quanto segue:
Aggiungi una colonna, aggiungi un vincolo
Elimina una colonna, elimina un vincolo
Modificare il blocco a livello di riga di una tabella
Supponiamo di aver creato una tabella denominata Dipendenti come mostrato di seguito:
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, inserito quattro record utilizzando l'istruzione insert come -
ij> INSERT INTO Employees (Name, Salary, Location) VALUES
('Amit', 30000, 'Hyderabad'),
('Kalyan', 40000, 'Vishakhapatnam'),
('Renuka', 50000, 'Delhi'),
('Archana', 15000, 'Mumbai');
Aggiunta di una colonna a una tabella
Di seguito è riportata la sintassi per aggiungere una colonna a una tabella utilizzando l'istruzione ALTER.
ALTER TABLE table_name ADD COLUMN column_name column_type;
Esempio
Utilizzando l'istruzione ALTER, stiamo cercando di aggiungere una nuova colonna denominata Age con il tipo integer.
ALTER TABLE Employees ADD COLUMN Age INT;
0 rows inserted/updated/deleted
Aggiungi un'altra colonna denominata Phone_No con il tipo intero.
ALTER TABLE Employees ADD COLUMN Phone_No BIGINT;
0 rows inserted/updated/deleted
Il comando DESCRIBE descrive la tabella specificata elencando le colonne ei loro dettagli, se la tabella esiste. Se DESCRIVI, nella tabella Dipendenti puoi osservare le nuove colonne aggiunte come mostrato di seguito -
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
Aggiunta di un vincolo a una tabella
Di seguito è riportata la sintassi per aggiungere un vincolo a una colonna di una tabella utilizzando l'istruzione ALTER.
ALTER TABLE table_name ADD CONSTRAINT constraint_name constraint (column_name);
Dove constraint può essere NOT NULL, NULL, PRIMARY KEY, UNIQUE, FOREIGN KEY, CHECK.
Esempio
Usando l'istruzione ALTER, stiamo cercando di aggiungere un vincolo UNIQUE alla colonna Phone_No.
ij> ALTER TABLE Employees ADD CONSTRAINT New_Constraint UNIQUE(Phone_No);
0 rows inserted/updated/deleted
Una volta aggiunto un vincolo UNIQUE a una colonna, non può avere gli stessi valori per due righe, ovvero il numero di telefono deve essere univoco per ogni dipendente.
Se provi ad aggiungere due colonne con lo stesso numero di telefono, otterrai un'eccezione come mostrato di seguito.
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'.
Eliminare un vincolo da una tabella
La seguente è la sintassi per eliminare un vincolo di una colonna:
ALTER TABLE table_name DROP CONSTRAINT constraint_name;
Esempio
La query seguente elimina il nome del vincolo New_Constraint nella colonna Phone_No creata sopra.
ij> ALTER TABLE Employees DROP CONSTRAINT New_Constraint;
0 rows inserted/updated/deleted
Poiché abbiamo rimosso il vincolo UNIQUE sulla colonna Phone_No, puoi aggiungere colonne con lo stesso numero di telefono.
ij> INSERT INTO Employees (Name, Salary, Location, Age, Phone_No) VALUES
('Sumit', 35000, 'Chennai', 25, 9848022338);
1 row inserted/updated/deleted
È possibile verificare il contenuto della tabella ij> selezionare * da Dipendenti come segue:
ID |NAME |SALARY |LOCATION |AGE |PHONE_NO
-------------------------------------------------------------------------
1 |Amit |30000 |Hyderabad |30 |9848022338
2 |Sumit |35000 |Chennai |25 |9848022338
2 rows selected
Eliminare una colonna da una tabella
La seguente è la sintassi per eliminare una colonna di una colonna.
ALTER TABLE table_name DROP COLUMN column_name;
Esempio
La seguente query elimina la colonna denominata age of the employee -
ij> ALTER TABLE Employees DROP COLUMN Age;
0 rows inserted/updated/deleted
Se descrivi la tabella, puoi vedere solo 4 colonne.
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
Modifica della tabella utilizzando il programma JDBC
Di seguito è riportato il programma JDBC per modificare una tabella utilizzando la query 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"));
}
}
}
Produzione
All'esecuzione del programma di cui sopra, verrà generato il seguente output:
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 - Indici Derby
Un indice in una tabella non è altro che un puntatore ai suoi dati. Questi vengono utilizzati per accelerare il recupero dei dati da una tabella.
Se usiamo gli indici, le istruzioni INSERT e UPDATE vengono eseguite in una fase più lenta. Mentre SELECT e WHERE vengono eseguiti con in minor tempo.
Creazione di un indice
L'istruzione CREATE INDEX viene utilizzata per creare un nuovo indice in una tabella nel database Derby.
Sintassi
Di seguito è riportata la sintassi dell'istruzione CREATE INDEX:
CTREATE INDEX index_name on table_name (column_name);
Esempio
Supponiamo di aver creato una tabella denominata Employees in Apache Derby come mostrato di seguito.
CREATE TABLE Emp ( Id INT NOT NULL GENERATED ALWAYS AS IDENTITY,
Name VARCHAR(255),
Salary INT NOT NULL,
Location VARCHAR(255),
Phone_Number BIGINT
);
La seguente istruzione SQL crea un indice nella colonna denominata Salary nella tabella Employees.
ij> CREATE INDEX example_index on Emp (Salary);
0 rows inserted/updated/deleted
Creazione di un indice UNICO
In Apache Derby, gli indici UNIQUE vengono utilizzati per l'integrazione dei dati. Dopo aver creato un indice UNICO su una colonna di una tabella, non consente valori duplicati.
Sintassi
Di seguito è riportata la sintassi per creare un indice univoco.
CREATE UNIQUE INDEX index_name on table_name (column_name);
Esempio
L'esempio seguente crea un indice UNICO sulla colonna Id della tabella Employee.
ij> CREATE UNIQUE INDEX unique_index on Emp (Phone_Number);
0 rows inserted/updated/deleted
Dopo aver creato un indice univoco su una colonna, non è possibile immettere gli stessi valori per quella colonna in un'altra riga. In breve, una colonna che ha un indice UNIQE non consentirà valori duplicati.
Inserisci una riga nella tabella Emp come mostrato di seguito
ij> INSERT INTO Emp(Name, Salary, Location, Phone_Number) VALUES ('Amit',
45000, 'Hyderabad', 9848022338);
1 row inserted/updated/deleted
Dato che abbiamo creato un indice univoco nella colonna Phone_No, se vuoi inserire lo stesso valore del record precedente, viene visualizzato un errore.
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'.
Creazione di un indice COMPOSITO
Puoi creare un singolo indice su due righe e si chiama Indice composito.
Sintassi
Di seguito è riportata la sintassi dell'indice composito.
CREATE INDEX index_name on table_name (column_name1, column_name2);
Esempio
L'indice seguente crea un indice composto sulle colonne Nome e Posizione.
ij> CREATE INDEX composite_index on Emp (Name, Location);
0 rows inserted/updated/deleted
Visualizzazione degli indici
La query SHOW INDEXES visualizza l'elenco degli indici su una tabella.
Sintassi
Di seguito è riportata la sintassi dell'istruzione SHOW INDEXES:
SHOW INDEXES FROM table_name;
Esempio
Nell'esempio seguente, i visualizza gli indici nella tabella Employees.
ij> SHOW INDEXES FROM Emp;
Questo produce il seguente risultato.
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
Eliminazione degli indici
L'istruzione Drop Index elimina / elimina l'indice specificato su una colonna.
Sintassi
Di seguito è riportata la sintassi dell'istruzione DROP INDEX.
DROP INDEX index_name;
Esempio
L'esempio seguente rilascia un indice denominato composite_index e unique_index creato sopra.
ij> DROP INDEX composite_index;
0 rows inserted/updated/deleted
ij>Drop INDEX unique_index;
0 rows inserted/updated/deleted
Ora, se verifichi l'elenco degli indici, puoi vedere l'indice su una colonna poiché abbiamo eliminato i rimanenti.
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
Gestione degli indici utilizzando il programma JDBC
Il seguente programma JDBC mostra come creare indici di rilascio su una colonna in una tabella.
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");
}
}
Produzione
All'esecuzione, questo genera il seguente risultato
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 - Procedure
Questo capitolo spiega come creare e rilasciare procedure in Derby.
Creazione di una procedura
È possibile creare una procedura utilizzando l'istruzione CREATE PROCEDURE.
Sintassi
Di seguito è riportata la sintassi dell'istruzione CREATE PROCEDURE.
CREATE PROCEDURE procedure_name (parameter_type parameter_name1, parameter_type
parameter_name2 . . . .) parameter_style;
Esempio
Supponiamo di aver creato una tabella in Derby come mostrato di seguito.
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 i valori inseriti in esso come segue -
INSERT INTO Employees(Name, Salary, Location) VALUES
('Amit', 30000, 'Hyderabad'),
('Kalyan', 40000, 'Vishakhapatnam'),
('Renuka', 50000, 'Delhi'),
('Archana', 15000, 'Mumbai'),
('Trupthi', 45000, 'Kochin')";
L'esempio seguente crea una procedura denominata Update_Procedure che accetta i parametri 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
Dove appare la classe ProcedureExample -
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();
}
}
È possibile verificare l'elenco delle procedure utilizzando SHOW PROCEDURES query.
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&
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Qui puoi osservare la procedura appena creata.
Eliminazione di una procedura
È possibile eliminare una procedura utilizzando l'istruzione DROP PROCEDURE.
Sintassi
Di seguito è riportata la sintassi dell'istruzione DROP PROCEDURE.
DROP PROCEDURE procedure_name;
Esempio
L'esempio seguente rilascia una procedura denominata Update_Procedure creata sopra.
ij> DROP PROCEDURE Update_Procedure;
> 0 rows inserted/updated/deleted
Apache Derby - Schemi
Uno schema di database è la struttura scheletro che rappresenta la vista logica dell'intero database. Definisce come sono organizzati i dati e come sono associate le relazioni tra loro. Formula tutti i vincoli che devono essere applicati ai dati.
Creazione di uno schema
È possibile creare uno schema in Apache Derby utilizzando l'istruzione CREATE SCHEMA.
Sintassi
Di seguito è riportata la sintassi per l'istruzione CREATE SCHEMA.
CREATE SCHEMA schema_name AUTHORIZATION id
Esempio
L'esempio seguente crea uno schema denominato my_schema nel database Derby.
ij> CREATE SCHEMA AUTHORIZATION my_schema;
0 rows inserted/updated/deleted
Quindi, puoi creare una tabella in questo schema come mostrato di seguito.
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
È possibile verificare l'elenco degli schemi utilizzando la query SHOW SCHEMAS qui è possibile trovare l'elenco degli schemi creati.
ij> show schemas;
TABLE_SCHEM
------------------------------
APP
MY_SCHEMA
NULLID
SQLJ
SYS
SYSCAT
SYSCS_DIAG
SYSCS_UTIL
SYSFUN
SYSIBM
SYSPROC
SYSSTAT
12 rows selected
Eliminazione di uno schema
È possibile eliminare uno schema esistente utilizzando l'istruzione DROP SCHEMA.
Sintassi
Di seguito è riportata la sintassi dell'istruzione DROPS SCHEMA.
DROP SCHEMA my_schema RESTRICT;
Esempio
È possibile eliminare uno schema solo se non contiene alcun oggetto. Per eliminare lo schema, eliminare tutte le tabelle in esso contenute ed eliminare lo schema.
ij> DROP TABLE my_schema.Emp;
0 rows inserted/updated/deleted
L'esempio seguente elimina lo schema creato sopra.
ij> DROP SCHEMA my_schema RESTRICT;
0 rows inserted/updated/deleted
Esempio JDBC
L'esempio JDBC seguente crea e rilascia uno schema denominato 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");
}
}
Produzione
All'esecuzione, il programma precedente genera il seguente esempio.
Table created in schema
Schema dropped
Apache Derby - Trigger
Nei database, i trigger sono le istruzioni / il codice che viene eseguito ogni volta che si verifica un evento. Dopo aver creato un trigger per un particolare evento su una tabella, il codice specificato nel trigger viene eseguito ogni volta che si verifica l'evento. Puoi creare più trigger su una singola tabella.
Questo capitolo insegna come creare e rilasciare trigger utilizzando Apache Derby.
Creazione di un trigger
È possibile creare un trigger in Derby utilizzando l'istruzione CREATE TRIGGER.
Sintassi
Di seguito è riportata la sintassi della query 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
Esempio
Supponiamo di aver creato una tabella denominata Emp in Derby come mostrato di seguito.
CREATE TABLE Emp (
Id INT NOT NULL,
Name VARCHAR(255),
Salary INT NOT NULL,
Location VARCHAR(255) );
E inserito 5 righe in esso.
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 abbiamo un'altra tabella chiamata BackUp e la nostra intenzione è quella di memorizzare le righe cancellate dalla tabella Emp in questa.
CREATE TABLE BackUp (
Id INT NOT NULL,
Name VARCHAR(255),
Salary INT NOT NULL,
Location VARCHAR(255)
);
La seguente query crea un trigger nella tabella di query DELETE denominata Emp. Memorizza le righe eliminate diEmp alla tabella 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);
Ora, elimina una riga dalla tabella Emp come -
ij> Delete From Emp where Name = 'Kalyan';
1 row inserted/updated/deleted
ij> Delete From Emp where Name = 'Amit';
1 row inserted/updated/deleted
Se verifichi la tabella BackUp, puoi osservare le righe eliminate in essa.
ij> select * from BackUp;
ID |NAME |SALARY |LOCATION
-------------------------------------------------------------------------
2 |Kalyan |40000 |Vishakhapatnam
1 |Amit |30000 |Hyderabad
2 rows selected
Eliminazione di un trigger
È possibile eliminare un trigger in Derby utilizzando l'istruzione DROP TRIGGER.
Sintassi
Di seguito è riportata la sintassi della query DROP TRIGGER:
ij> Drop trigger tigger_name;
Esempio
L'esempio seguente elimina il trigger my_trigger creato sopra -
ij> Drop trigger my_trigger;
0 rows inserted/updated/deleted
Esempio JDBC
Il seguente programma JDBC crea ed elimina i trigger 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(" ");
}
}
}
Produzione
Quando si esegue il programma sopra, viene generato il seguente output:
Trigger created
2
Kalyan
40000
Vishakhapatnam
1
Amit
30000
Hyderabad