Apache Derby - Kurzanleitung

Apache Derby ist ein Relational Database MManagement SSystem, das vollständig auf der (geschriebenen / implementierten) Java-Programmiersprache basiert. Es ist eine Open-Source-Datenbank, die von der Apache Software Foundation entwickelt wurde.

Oracle hat das Äquivalent von Apache Derby mit dem Namen JavaDB veröffentlicht.

Eigenschaften von Apache Derby

Im Folgenden sind die bemerkenswerten Funktionen der Derby-Datenbank aufgeführt:

  • Platform independent - Derby verwendet das On-Disc-Datenbankformat, bei dem die darin enthaltenen Datenbanken in einer Datei auf der Disc im Verzeichnis mit demselben Namen wie die Datenbank gespeichert sind.

  • No modifying data - Aus diesem Grund können Sie Derby-Datenbanken auf andere Computer verschieben, ohne die Daten zu ändern.

  • Transactional support - Derby bietet vollständige Unterstützung für Transaktionen, die die Datenintegrität sicherstellen.

  • Including databases - Sie können vorgefertigte / vorhandene Datenbanken in Ihre aktuellen Derby-Anwendungen aufnehmen.

  • Less space - Die Derby-Datenbank hat einen geringen Platzbedarf, dh sie nimmt weniger Platz ein und ist einfach zu verwenden und bereitzustellen.

  • Embed with Java Application- Derby bietet eine eingebettete Datenbank-Engine, die in Java-Anwendungen eingebettet werden kann und in derselben JVM wie die Anwendung ausgeführt wird. Durch einfaches Laden des Treibers wird die Datenbank gestartet und mit den Anwendungen gestoppt.

Einschränkungen von Apache Derby

Im Folgenden sind die Einschränkungen von Apache Derby aufgeführt:

  • Derby unterstützt keine Indizes für Datentypen wie BLOB und LONGVARCHAR.

  • Wenn Derby nicht über genügend Speicherplatz verfügt, wird es sofort heruntergefahren.

Datenspeicher

Beim Speichern von Daten folgt Apache Derby einem Konzept, das als bekannt ist conglomerate. Dabei werden Daten einer Tabelle in einer separaten Datei gespeichert. Auf die gleiche Weise wird jeder Index einer Tabelle auch in einer separaten Datei gespeichert. Daher gibt es für jede Tabelle oder jeden Index in der Datenbank eine separate Datei.

Apache Derby Bibliothek / Komponenten

Die Apache Derby-Distribution bietet verschiedene Komponenten. Im lib-Ordner der heruntergeladenen Apache-Distribution können Sie JAR-Dateien beobachten, die verschiedene Komponenten darstellen.

Glasdatei Komponente Beschreibung
derby.jar Datenbankmodul und JDBC-Treiber

Das Datenbankmodul von Apache Derby ist ein eingebettetes relationales Datenbankmodul, das JDBC- und SQL-APIs unterstützt.

Dies fungiert auch als eingebetteter Treiber, mit dem Sie über Java-Anwendungen mit Derby kommunizieren können.

derbynet.jar derbyrun.jar Netzwerkserver

Der Netzwerk-Server von Apache Derby bietet die Client-Server-Funktionalität, mit der die Clients über ein Netzwerk eine Verbindung zum Derby-Server herstellen können.

derbyclient.jar Netzwerkclient-JDBC-Treiber
derbytools.jar Befehlszeilen-Tools Diese JAR-Datei enthält Tools wie sysinfo, ij, und dblook.
derbyoptionaltools.jar Optionale Befehlszeilenprogramme (Tools)

Diese JAR-Datei enthält optionale Tools: das optionale Tool databaseMetaData, das optionale Tool ForeignViews, das optionale Tool luceneSupport, das optionale Tool rawDBReader, das optionale Tool simpleJson usw.

derbyLocale_XX.jar Jar-Dateien zum Lokalisieren von Nachrichten

Zusätzlich zu den oben genannten JAR-Dateien können Sie mehrere derbyLocale_XX.jar (es, fr, hu, it, ja usw.) sehen. Mit diesen können Sie die Nachrichten von Apache Derby lokalisieren.

Sie können Apache Derby in zwei Modi bereitstellen, nämlich im eingebetteten Modus und im Servermodus.

Eingebetteter Modus

Sie können Derby im eingebetteten Modus mit einer Java-Anwendung (mit eingebettetem Treiber) ausführen. Wenn Sie Derby im eingebetteten Modus bereitstellen, wird das Datenbankmodul in derselben JVM wie die Java-Anwendung ausgeführt. Es startet und stoppt mit der Anwendung. Sie können nur mit dieser Anwendung auf die Datenbank zugreifen.

Servermodus

Im Servermodus wird Derby in der JVM eines Anwendungsservers ausgeführt, auf dem Sie eine Anforderung an den Server senden können, um darauf zuzugreifen. Im Gegensatz zum eingebetteten Modus können mehrere Anwendungen (Java) eine Anforderung an den Server senden und auf die Datenbank zugreifen.

Im folgenden Kapitel wird erläutert, wie Sie Apache Derby herunterladen und installieren.

Apache Derby herunterladen

Besuchen Sie die Homepage der Apache Derby-Homepage https://db.apache.org/derby/. Klicken Sie auf die Registerkarte Download.

Wählen Sie den Link der neuesten Version von Apache Derby aus und klicken Sie darauf.

Wenn Sie auf den ausgewählten Link klicken, werden Sie zum weitergeleitet DistributionsSeite von Apache Derby. Wenn Sie hier beobachten, stellt Derby Verteilungen bereit, nämlich db-derby-bin, db-derbylib.zip, db-derby-lib-debug.zip und db-derby-src.zip.

Laden Sie die db-derby-binMappe. Kopieren Sie den Inhalt in einen separaten Ordner, in dem Sie Apache Derby installieren möchten. (Zum Beispiel sagenC:\Derby)

Nun, um mit Derby zu arbeiten,

  • Stellen Sie sicher, dass Sie die bereits eingestellt haben JAVA_HOME Variable durch Übergeben des Speicherorts des Ordners bin des Java-Installationsordners und Einschließen des JAVA_HOME/bin in der PATH-Variablen.

  • Erstellen Sie eine neue Umgebungsvariable. DERBY_HOME mit dem Wert C: \ Derby.

  • Der bin-Ordner der db-derby-bin-Distributionen (wir haben ihn in C: \ Derby \ bin geändert) enthält alle erforderlichen JAR-Dateien.

Wie bereits erwähnt, kann Apache Derby auf zwei Arten installiert / bereitgestellt werden:

  • Embedded mode- In diesem Fall müssen Sie mit dem Embedded Derby JDBC-Treiber auf die Datenbank zugreifen. Sie können das Derby über eine Java-Anwendung starten und stoppen. Sowohl das Datenbankmodul als auch Ihre Anwendung werden auf derselben JVM ausgeführt.

  • Network Server mode- In diesem Modus können Sie auf typische Client-Server-Weise auf Derby zugreifen, wobei Derby in das Serversystem eingebettet ist. Dann senden die Clientcomputer, die in verschiedenen JVMs (dem des Servers) ausgeführt werden, Anforderungen an den Server, und der Server antwortet auf diese Anforderungen.

Der Client kann eine andere JVM auf demselben Systemcomputer des Servers oder eine Java-Anwendung von einem Remote-System sein.

Derby im eingebetteten Modus installieren

Um Apache Derby im eingebetteten Modus zu installieren, fügen Sie die JAR-Datei hinzu derby.jar in deinem KLASSENPFAD.

Oder Sie können den Klassenpfad für die erforderlichen JAR-Dateien festlegen, indem Sie das ausführen setEmbeddedCPBefehl. Durchsuchen Sie diebin Verzeichnis von Apache Derby und führen Sie diese Datei wie unten gezeigt aus -

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\*;

Führen Sie nach dem Einrichten von Apache Derby Java-Programme mit dem eingebetteten Treiber aus, um darauf zuzugreifen.

Überprüfung

Sie können das Setup mit dem überprüfen ij Werkzeug wie unten gezeigt -

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

Derby im Netzwerkservermodus installieren

Um Apache Derby im Netzwerkservermodus zu installieren, müssen Sie einschließen derbynet.jar und derbytools.jar Dateien zum CLASSPATH.

Oder Sie können den Klassenpfad für die erforderlichen JAR-Dateien festlegen, indem Sie das ausführen setNetworkServerCPBefehl. Durchsuchen Sie diebin Verzeichnis von Apache Derby und führen Sie diese Datei wie unten gezeigt aus -

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\*;

Derby im Servermodus starten

Sie können Network Server starten, indem Sie den Befehl ausführen startNetworkServer. Durchsuchen Sie diebin Verzeichnis von Apache Derby und führen Sie diesen Befehl wie unten gezeigt aus -

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

Oder Sie können den Server mit starten derbyrun.jar wie unten gezeigt -

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

Netzwerkclient

Fügen Sie im Client die JAR-Dateien hinzu derbyclient.jar und derbytools.jarzum KLASSENPFAD. Oder führen Sie diesetNetworkClientCP Befehl wie unten gezeigt -

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\*;

Von diesem Client aus können Sie dann Anforderungen an den Server senden.

Überprüfung

Sie können das Setup mit dem überprüfen ij Werkzeug wie unten gezeigt -

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

Apache Derby Eclipse-Umgebung

Während Sie mit Eclipse arbeiten, müssen Sie den Erstellungspfad für alle erforderlichen JAR-Dateien festlegen.

Schritt 1: Erstellen Sie ein Projekt und legen Sie den Erstellungspfad fest

Öffnen Sie Eclipse und erstellen Sie ein Beispielprojekt. Klicken Sie mit der rechten Maustaste auf das Projekt und wählen Sie die OptionBuild Path -> Configure Build Pfad wie unten gezeigt -

In dem Java Build Path Rahmen in der Libraries Klicken Sie auf die Registerkarte Add External JARs.

Und wählen Sie die gewünschte jar Dateien im lib-Ordner des Derby-Installationsordners und klicken Sie auf Apply and Close.

Apache Derby bietet Ihnen Tools wie sysinfo, ij und, dblook.

Sysinfo-Tool

Mit diesem Tool können Sie Informationen zur Java- und Derby-Umgebung abrufen.

Durchsuchen Sie den Ordner bin des Derby-Installationsverzeichnisses und führen Sie den Befehl sysinfo wie unten gezeigt aus.

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

Bei der Ausführung erhalten Sie Systeminformationen zu Java und Derby (siehe unten).

------------------ 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

Mit diesem Tool können Sie Skripte und Abfragen von Apache Derby ausführen.

Durchsuchen Sie den Ordner bin des Derby-Installationsverzeichnisses und führen Sie den Befehl ij wie unten gezeigt aus.

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

Das wird dir geben ij shell Hier können Sie Derby-Befehle und -Skripte ausführen, wie unten gezeigt -

ij version 10.14
ij>

Verwenden von help Befehl können Sie die Liste der Befehle abrufen, die von dieser Shell unterstützt werden.

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

Dieses Tool wird zum Generieren der Datendefinitionssprache verwendet.

Durchsuchen Sie den Ordner bin des Derby-Installationsverzeichnisses und führen Sie das aus dblook Befehl wie unten gezeigt -

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

Wo, myURL ist die Verbindungs-URL der Datenbank, für die Sie DDL generieren müssen.

In diesem Kapitel finden Sie die Syntax aller Apache Derby SQL-Anweisungen.

Alle Anweisungen beginnen mit einem der Schlüsselwörter wie SELECT, INSERT, UPDATE, DELETE, ALTER, DROP, CREATE, USE, SHOW und alle Anweisungen enden mit einem Semikolon (;).

Die SQL-Anweisungen von Apache Derby beziehen sich auf sensible Elemente einschließlich Tabellennamen.

CREATE-Anweisung

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)
);

TROPFENTABELLE

DROP TABLE table_name;

INSERT-Anweisung

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

SELECT-Anweisung

SELECT column_name, column_name, ... FROM table_name;

UPDATE-Anweisung

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

DELETE-Anweisung

DELETE FROM table_name WHERE condition;

DESCRIBE-Anweisung

Describe table_name

SQL TRUNCATE TABLE-Anweisung

TRUNCATE TABLE table_name;

ALTER-Anweisung - Spalte hinzufügen

ALTER TABLE table_name ADD COLUMN column_name column_type;

ALTER-Anweisung - Hinzufügen einer Einschränkung

ALTER TABLE table_name ADD CONSTRAINT constraint_name constraint (column_name);

ALTER-Anweisung - Spalte löschen

ALTER TABLE table_name DROP COLUMN column_name;

ALTER-Anweisung - Einschränkung löschen

ALTER TABLE table_name DROP CONSTRAINT constraint_name;

WO-Klausel

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

GROUP BY-Klausel

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

ORDER BY-Klausel

SELECT * FROM table_name ORDER BY column_name ASC|DESC.

Klausel haben

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

Index erstellen

CTREATE INDEX index_name on table_name (column_name);

Erstellen eines EINZIGARTIGEN Index

CREATE UNIQUE INDEX index_name on table_name (column_name);

Erstellen eines COMPOSITE-Index

CREATE INDEX index_name on table_name (column_name1, column_name2);

Anzeigen der Indizes

SHOW INDEXES FROM table_name;

Indizes löschen

DROP INDEX index_name;

Datentyp ist ein Attribut, das den Datentyp eines Objekts angibt. Jede Spalte, Variable und jeder Ausdruck hat einen zugehörigen Datentyp. Sie können diese Datentypen beim Erstellen Ihrer Tabellen verwenden. Sie können je nach Anforderung einen Datentyp für eine Tabellenspalte auswählen.

Derby Server bietet verschiedene Kategorien von Datentypen für Ihre Verwendung an, wie unten aufgeführt -

Ganzzahlige numerische Datentypen

Es folgt die Liste der ganzzahligen numerischen Datentypen -

DATENTYP GRÖSSE VON ZU
SMALLINT 2 Bytes -32768 32767
GANZE ZAHL 4 Bytes -2,147,483,648 2,147,483,647
BIGINT 8 Bytes -9223372036854775808 9223372036854775808

Ungefähre numerische Datentypen

Es folgt die Liste der ungefähren numerischen Datentypen -

DATENTYP GRÖSSE VON ZU
ECHT 4 Bytes -3,40E + 38 3,40E + 38
DOPPELTE GENAUIGKEIT 8 Bytes -1,79E + 308 1,79E + 308
SCHWEBEN -1,79E + 308 1,79E + 308

Genaue numerische Datentypen

Es folgt die Liste der genauen numerischen Datentypen -

DATENTYP VON ZU
DEZIMAL -10 ^ 38 +1 10 ^ 38 -1
NUMERISCH -10 ^ 38 +1 10 ^ 38 -1

Die Anweisung CREATE TABLE wird zum Erstellen einer neuen Tabelle in der Derby-Datenbank verwendet.

Syntax

Es folgt die Syntax der CREATE-Anweisung.

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)
);

Eine andere Möglichkeit, eine Tabelle in Apache Derby zu erstellen, besteht darin, die Spaltennamen und Datentypen mithilfe einer Abfrage anzugeben. Die Syntax hierfür ist unten angegeben -

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

Beispiel

Die folgende SQL-Anweisung erstellt eine Tabelle mit dem Namen Student mit vier Spalten, wobei id der Primärschlüssel ist und automatisch generiert wird.

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

Der Befehl DESCRIBE beschreibt die angegebene Tabelle, indem die Spalten und ihre Details aufgelistet werden, sofern die Tabelle vorhanden ist. Mit diesem Befehl können Sie überprüfen, ob die Tabelle erstellt wurde.

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

Erstellen Sie eine Tabelle mit dem JDBC-Programm

In diesem Abschnitt erfahren Sie, wie Sie mit der JDBC-Anwendung eine Tabelle in der Apache Derby-Datenbank erstellen.

Wenn Sie den Derby-Netzwerkserver über den Netzwerkclient anfordern möchten, stellen Sie sicher, dass der Server betriebsbereit ist. Der Klassenname für den Netzwerkclienttreiber lautetorg.apache.derby.jdbc.ClientDriver und die URL lautet jdbc: derby: // localhost: 1527 / DATABASE_NAME; create = true; user = USER_NAME; passw ord = PASSWORD ".

Führen Sie die folgenden Schritte aus, um eine Tabelle in Apache Derby zu erstellen.

Schritt 1: Registrieren Sie den Treiber

Um mit der Datenbank zu kommunizieren, müssen Sie zunächst den Treiber registrieren. DasforName() Methode der Klasse, ClassAkzeptiert einen String-Wert, der einen Klassennamen darstellt, lädt ihn in den Speicher, der ihn automatisch registriert. Registrieren Sie den Treiber mit dieser Methode.

Schritt 2: Stellen Sie die Verbindung her

Im Allgemeinen besteht der erste Schritt zur Kommunikation mit der Datenbank darin, eine Verbindung mit der Datenbank herzustellen. DasConnectionKlasse repräsentiert die physische Verbindung mit einem Datenbankserver. Sie können ein Verbindungsobjekt erstellen, indem Sie das aufrufengetConnection() Methode der DriverManagerKlasse. Erstellen Sie mit dieser Methode eine Verbindung.

Schritt 3: Erstellen Sie ein Anweisungsobjekt

Sie müssen eine erstellen Statement oder PreparedStatement or, CallableStatementObjekte zum Senden von SQL-Anweisungen an die Datenbank. Sie können diese mit den Methoden erstellencreateStatement(), prepareStatement() and, prepareCall()beziehungsweise. Erstellen Sie eines dieser Objekte mit der entsprechenden Methode.

Schritt 4: Führen Sie die Abfrage aus

Nachdem Sie eine Anweisung erstellt haben, müssen Sie sie ausführen. DasStatement Klasse bietet verschiedene Methoden, um eine Abfrage wie die auszuführen execute()Methode zum Ausführen einer Anweisung, die mehr als eine Ergebnismenge zurückgibt. DasexecuteUpdate()Methode führt Abfragen wie INSERT, UPDATE, DELETE aus. DasexecuteQuery() Methode zu Ergebnissen, die Daten usw. zurückgeben. Verwenden Sie eine dieser Methoden und führen Sie die zuvor erstellte Anweisung aus.

Beispiel

Das folgende JDBC-Beispiel zeigt, wie Sie mit dem JDBC-Programm eine Tabelle in Apache Derby erstellen. Hier stellen wir mithilfe des eingebetteten Treibers eine Verbindung zu einer Datenbank mit dem Namen sampleDB her (wird erstellt, wenn sie nicht vorhanden ist).

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");
   }
}

Ausgabe

Wenn Sie das obige Programm ausführen, erhalten Sie die folgende Ausgabe

Table created

Die Anweisung DROP TABLE wird verwendet, um eine vorhandene Tabelle mit all ihren Triggern, Einschränkungen und Berechtigungen zu entfernen.

Syntax

Es folgt die Syntax der DROP TABLE-Anweisung.

ij> DROP TABLE table_name;

Beispiel

Angenommen, Sie haben eine Tabelle mit dem Namen Student in der Datenbank. Die folgende SQL-Anweisung löscht eine Tabelle mit dem Namen Student.

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

Da wir die Tabelle entfernt haben, wenn wir versuchen, sie zu beschreiben, wird folgende Fehlermeldung angezeigt

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

Tabelle mit dem JDBC-Programm löschen

In diesem Abschnitt erfahren Sie, wie Sie mit der JDBC-Anwendung eine Tabelle in der Apache Derby-Datenbank ablegen.

Wenn Sie den Derby-Netzwerkserver über den Netzwerkclient anfordern möchten, stellen Sie sicher, dass der Server betriebsbereit ist. Der Klassenname für den Netzwerkclienttreiber lautet org.apache.derby.jdbc.ClientDriver und die URL lautet jdbc: derby: // localhost: 1527/DATABASE_NAME;create = true; user =USER_NAME; passw ord =PASSWORD""

Führen Sie die folgenden Schritte aus, um eine Tabelle in Apache Derby abzulegen

Schritt 1: Registrieren Sie den Treiber

Um mit der Datenbank zu kommunizieren, müssen Sie zunächst den Treiber registrieren. DasforName() Methode der Klasse ClassAkzeptiert einen String-Wert, der einen Klassennamen darstellt, lädt ihn in den Speicher, der ihn automatisch registriert. Registrieren Sie den Treiber mit dieser Methode.

Schritt 2: Stellen Sie die Verbindung her

Im Allgemeinen besteht der erste Schritt zur Kommunikation mit der Datenbank darin, eine Verbindung mit der Datenbank herzustellen. DasConnectionKlasse repräsentiert die physische Verbindung mit einem Datenbankserver. Sie können ein Verbindungsobjekt erstellen, indem Sie das aufrufengetConnection() Methode der DriverManagerKlasse. Erstellen Sie mit dieser Methode eine Verbindung.

Schritt 3: Erstellen Sie ein Anweisungsobjekt

Sie müssen eine erstellen Statement oder PreparedStatement oder, CallableStatementObjekte zum Senden von SQL-Anweisungen an die Datenbank. Sie können diese mit den Methoden erstellencreateStatement(), prepareStatement() and, prepareCall()beziehungsweise. Erstellen Sie eines dieser Objekte mit der entsprechenden Methode.

Schritt 4: Führen Sie die Abfrage aus

Nachdem Sie eine Anweisung erstellt haben, müssen Sie sie ausführen. DasStatement Klasse bietet verschiedene Methoden, um eine Abfrage wie die auszuführen execute()Methode zum Ausführen einer Anweisung, die mehr als eine Ergebnismenge zurückgibt. DasexecuteUpdate()Methode führt Abfragen wie INSERT, UPDATE, DELETE aus. DasexecuteQuery() Methode zu Ergebnissen, die Daten usw. zurückgeben. Verwenden Sie eine dieser Methoden und führen Sie die zuvor erstellte Anweisung aus.

Beispiel

Das folgende JDBC-Beispiel zeigt, wie eine Tabelle in Apache Derby mit dem JDBC-Programm gelöscht wird. Hier stellen wir mithilfe des eingebetteten Treibers eine Verbindung zu einer Datenbank mit dem Namen sampleDB her (wird erstellt, wenn sie nicht vorhanden ist).

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");
   }
}

Ausgabe

Wenn Sie das obige Programm ausführen, erhalten Sie die folgende Ausgabe:

Table dropped

Apache Derby - Daten einfügen

Die Einfügeabfrage fügt Daten ein: new recordsin den Tisch.

Syntax

Es folgt die grundlegende Syntax der INSERT-Anweisung:

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

Dabei sind Spalte1, Spalte2 die Spaltenwerte in der Zeile, die eingefügt werden soll.

Beispiel

Die folgende SQL INSERT-Anweisung fügt eine neue Zeile in die Student-Tabelle ein, in die Werte in die Spalten eingefügt werden id, age, first name und, last name.

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

Syntax 2

Sie können auch zwei bestimmte Spalten einfügen, indem Sie die unten angegebenen Spaltennamen angeben.

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

Note- Apache Derby berechnet automatisch Werte für generierte Spalten. Beispielsweise müssen keine Werte für die ID-Spalte in der Schülertabelle übergeben werden, die zuvor in diesem Lernprogramm erstellt wurde. Wenn Ihre Tabelle Spalten generiert hat, verwenden Siesyntax2.

Beispiel

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

Sie können auch zwei Zeilen mit einer Anweisung wie folgt einfügen:

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

Sie können den Inhalt der Tabelle mit dem Befehl SELECT überprüfen (wir werden diesen Befehl später in diesem Lernprogramm erläutern).

Syntax 3

Sie können eine andere Abfrage in der Einfügeanweisung als - verwenden

INSERT INTO table_Name Query

Beispiel

Angenommen, wir haben eine Tabelle mit dem Namen First_Year in der Datenbank wie unten gezeigt mit ähnlichen Spalten wie in der Studententabelle -

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

Sie können Werte in dieser Tabelle mit der obigen Syntax in die Schülertabelle einfügen:

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

Nachdem Sie alle oben genannten Einfügeanweisungen ausgeführt haben, lautet die Student-Tabelle wie folgt:

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

Fügen Sie Daten mit dem JDBC-Programm ein

In diesem Abschnitt erfahren Sie, wie Sie mithilfe der JDBC-Anwendung Daten in eine Tabelle in der Apache Derby-Datenbank einfügen.

Wenn Sie den Derby-Netzwerkserver über den Netzwerkclient anfordern möchten, stellen Sie sicher, dass der Server betriebsbereit ist. Der Klassenname für den Netzwerkclienttreiber lautet org.apache.derby.jdbc.ClientDriver und die URL lautet jdbc: derby: // localhost: 1527 /DATABASE_NAME;create = true; user =USER_NAME;passw ord =PASSWORD""

Führen Sie die folgenden Schritte aus, um Daten in eine Tabelle in Apache Derby einzufügen -

Schritt 1: Registrieren Sie den Treiber

Um mit der Datenbank zu kommunizieren, müssen Sie zunächst den Treiber registrieren. DasforName() Methode der Klasse, ClassAkzeptiert einen String-Wert, der einen Klassennamen darstellt, lädt ihn in den Speicher, der ihn automatisch registriert. Registrieren Sie den Treiber mit dieser Methode.

Schritt 2: Stellen Sie die Verbindung her

Im Allgemeinen besteht der erste Schritt zur Kommunikation mit der Datenbank darin, eine Verbindung mit der Datenbank herzustellen. DasConnectionKlasse repräsentiert die physische Verbindung mit einem Datenbankserver. Sie können ein Verbindungsobjekt erstellen, indem Sie das aufrufengetConnection() Methode der DriverManagerKlasse. Erstellen Sie mit dieser Methode eine Verbindung.

Schritt 3: Erstellen Sie ein Anweisungsobjekt

Sie müssen eine erstellen Statement oder PreparedStatement or, CallableStatementObjekte zum Senden von SQL-Anweisungen an die Datenbank. Sie können diese mit den Methoden erstellencreateStatement(), prepareStatement() und, prepareCall()beziehungsweise. Erstellen Sie eines dieser Objekte mit der entsprechenden Methode.

Schritt 4: Führen Sie die Abfrage aus

Nachdem Sie eine Anweisung erstellt haben, müssen Sie sie ausführen. DasStatement Klasse bietet verschiedene Methoden, um eine Abfrage wie die auszuführen execute() Methode zum Ausführen einer Anweisung, die mehr als eine Ergebnismenge zurückgibt.

Das executeUpdate()Methode führt Abfragen wie INSERT, UPDATE, DELETE aus. DasexecuteQuery() Methode zu Ergebnissen, die Daten usw. zurückgeben. Verwenden Sie eine dieser Methoden und führen Sie die zuvor erstellte Anweisung aus.

Beispiel

Das folgende JDBC-Beispiel zeigt, wie Sie mit dem JDBC-Programm Daten in eine Tabelle in Apache Derby einfügen. Hier stellen wir mithilfe des eingebetteten Treibers eine Verbindung zu einer Datenbank mit dem Namen sampleDB her (wird erstellt, wenn sie nicht vorhanden ist).

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");
   }
}

Ausgabe

Wenn Sie das obige Programm ausführen, erhalten Sie die folgende Ausgabe:

Values inserted

Apache Derby - Daten abrufen

Die SELECT-Anweisung wird verwendet, um Daten aus einer Tabelle abzurufen. Dies gibt die Daten in Form einer Tabelle zurück, die als Ergebnismenge bezeichnet wird.

Syntax

Es folgt die Syntax der SELECT-Anweisung -

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

Beispiel

Nehmen wir an, wir haben eine Tabelle mit dem Namen Employees in der Datenbank, wie unten gezeigt -

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

Und fügte vier Datensätze ein, wie unten gezeigt -

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

Die folgende SQL-Anweisung ruft den Namen, das Alter und die Gehaltsangaben aller Mitarbeiter in der Tabelle ab.

ij> SELECT Id, Name, Salary FROM Employees;

Die Ausgabe dieser Abfrage lautet -

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

Wenn Sie alle Datensätze dieser Tabelle auf einmal abrufen möchten, verwenden Sie * anstelle der Namen der Spalten.

ij> select * from Employees;

Dies führt zu folgendem Ergebnis:

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

Daten mit dem JDBC-Programm abrufen

In diesem Abschnitt erfahren Sie, wie Sie mithilfe der JDBC-Anwendung Daten aus einer Tabelle in der Apache Derby-Datenbank abrufen.

Wenn Sie den Derby-Netzwerkserver über den Netzwerkclient anfordern möchten, stellen Sie sicher, dass der Server betriebsbereit ist. Der Klassenname für den Netzwerkclienttreiber lautet org.apache.derby.jdbc.ClientDriver und die URL lautet jdbc: derby: // localhost: 1527 /DATABASE_NAME; create = true; user =USER_NAME; passw ord =PASSWORD""

Führen Sie die folgenden Schritte aus, um Daten aus einer Tabelle in Apache Derby abzurufen.

Schritt 1: Registrieren Sie den Treiber

Um mit der Datenbank zu kommunizieren, müssen Sie zunächst den Treiber registrieren. DasforName() Methode der Klasse ClassAkzeptiert einen String-Wert, der einen Klassennamen darstellt, lädt ihn in den Speicher, der ihn automatisch registriert. Registrieren Sie den Treiber mit dieser Methode.

Schritt 2: Stellen Sie die Verbindung her

Im Allgemeinen besteht der erste Schritt zur Kommunikation mit der Datenbank darin, eine Verbindung mit der Datenbank herzustellen. DasConnectionKlasse repräsentiert die physische Verbindung mit einem Datenbankserver. Sie können ein Verbindungsobjekt erstellen, indem Sie das aufrufengetConnection() Methode der DriverManagerKlasse. Erstellen Sie mit dieser Methode eine Verbindung.

Schritt 3: Erstellen Sie ein Anweisungsobjekt

Sie müssen eine erstellen Statement oder PreparedStatement oder, CallableStatementObjekte zum Senden von SQL-Anweisungen an die Datenbank. Sie können diese mit den Methoden erstellencreateStatement(), prepareStatement() und, prepareCall()beziehungsweise. Erstellen Sie eines dieser Objekte mit der entsprechenden Methode.

Schritt 4: Führen Sie die Abfrage aus

Nachdem Sie eine Anweisung erstellt haben, müssen Sie sie ausführen. DasStatement Klasse bietet verschiedene Methoden, um eine Abfrage wie die auszuführen execute()Methode zum Ausführen einer Anweisung, die mehr als eine Ergebnismenge zurückgibt. DasexecuteUpdate()Methode führt Abfragen wie INSERT, UPDATE, DELETE aus. DasexecuteQuery() Methode zu Ergebnissen, die Daten usw. zurückgeben. Verwenden Sie eine dieser Methoden und führen Sie die zuvor erstellte Anweisung aus.

Beispiel

Das folgende JDBC-Beispiel zeigt, wie Sie mit dem JDBC-Programm Daten aus einer Tabelle in Apache Derby abrufen. Hier stellen wir mithilfe des eingebetteten Treibers eine Verbindung zu einer Datenbank mit dem Namen sampleDB her (wird erstellt, wenn sie nicht vorhanden ist).

Das executeQuery() Methode gibt a zurück ResultSetObjekt, das das Ergebnis der Anweisung enthält. Zu Beginn befindet sich der Ergebnismengenzeiger beim ersten Datensatz. Sie können den Inhalt des ResultSet-Objekts mit dessen druckennext() und getXXX() Methoden.

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(" ");
      }
   }
}

Ausgabe

Wenn Sie das obige Programm ausführen, erhalten Sie die folgende Ausgabe

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 - Daten aktualisieren

Die UPDATE-Anweisung wird zum Aktualisieren von Daten in einer Tabelle verwendet. Apache Derby bietet nämlich zwei Arten von Updates (Syntax)searched Update und positioned aktualisieren.

Die gesuchte UPDATE-Anweisung aktualisiert alle angegebenen Spalten einer Tabelle.

Syntax

Es folgt die Syntax der UPDATE-Abfrage:

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

Die WHERE-Klausel kann die Vergleichsoperatoren wie = ,! =, <,>, <= Und> = sowie die Operatoren BETWEEN und LIKE verwenden.

Beispiel

Angenommen, Sie haben eine Tabelle Mitarbeiter in der Datenbank mit den 4 Datensätzen, wie unten gezeigt -

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

Die folgende SQL UPDATE-Anweisung aktualisiert den Standort und das Gehalt eines Mitarbeiters mit dem Namen Kaylan.

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

Wenn Sie den Inhalt der Employees-Tabelle erhalten, können Sie die von der UPDATE-Abfrage vorgenommenen Änderungen beobachten.

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

Aktualisieren Sie die Daten mit dem JDBC-Programm

In diesem Abschnitt wird erläutert, wie Sie die vorhandenen Datensätze einer Tabelle in der Apache Derby-Datenbank mithilfe der JDBC-Anwendung aktualisieren.

Wenn Sie den Derby-Netzwerkserver über den Netzwerkclient anfordern möchten, stellen Sie sicher, dass der Server betriebsbereit ist. Der Klassenname für den Netzwerkclienttreiber lautet org.apache.derby.jdbc.ClientDriver und die URL lautet jdbc: derby: // localhost: 1527 /DATABASE_NAME; create = true; user =USER_NAME; passw ord =PASSWORD""

Führen Sie die folgenden Schritte aus, um die vorhandenen Datensätze einer Tabelle in Apache Derby zu aktualisieren.

Schritt 1: Registrieren Sie den Treiber

Um mit der Datenbank zu kommunizieren, müssen Sie zunächst den Treiber registrieren. DasforName() Methode der Klasse ClassAkzeptiert einen String-Wert, der einen Klassennamen darstellt, lädt ihn in den Speicher, der ihn automatisch registriert. Registrieren Sie den Treiber mit dieser Methode.

Schritt 2: Stellen Sie die Verbindung her

Im Allgemeinen besteht der erste Schritt zur Kommunikation mit der Datenbank darin, eine Verbindung mit der Datenbank herzustellen. Die Verbindungsklasse repräsentiert die physische Verbindung mit einem Datenbankserver. Sie können ein Verbindungsobjekt erstellen, indem Sie das aufrufengetConnection() Methode der DriverManagerKlasse. Erstellen Sie mit dieser Methode eine Verbindung.

Schritt 3: Erstellen Sie ein Anweisungsobjekt

Sie müssen eine erstellen Statement oder PreparedStatement or, CallableStatementObjekte zum Senden von SQL-Anweisungen an die Datenbank. Sie können diese mit den Methoden erstellencreateStatement(), prepareStatement() und, prepareCall()beziehungsweise. Erstellen Sie eines dieser Objekte mit der entsprechenden Methode.

Schritt 4: Führen Sie die Abfrage aus

Nachdem Sie eine Anweisung erstellt haben, müssen Sie sie ausführen. DasStatement Klasse bietet verschiedene Methoden, um eine Abfrage wie die auszuführen execute()Methode zum Ausführen einer Anweisung, die mehr als eine Ergebnismenge zurückgibt. DasexecuteUpdate()Methode führt Abfragen wie INSERT, UPDATE, DELETE aus. DasexecuteQuery()Methode gibt Daten zurück. Verwenden Sie eine dieser Methoden und führen Sie die zuvor erstellte Anweisung aus.

Beispiel

Das folgende JDBC-Beispiel zeigt, wie die vorhandenen Datensätze einer Tabelle in Apache Derby mithilfe des JDBC-Programms aktualisiert werden. Hier stellen wir mithilfe des eingebetteten Treibers eine Verbindung zu einer Datenbank mit dem Namen sampleDB her (wird erstellt, wenn sie nicht vorhanden ist).

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);
   }
}

Ausgabe

Wenn Sie das obige Programm ausführen, erhalten Sie die folgende Ausgabe:

Number of records updated are: 1

Apache Derby - Daten löschen

Die DELETE-Anweisung wird verwendet, um Zeilen einer Tabelle zu löschen. Genau wie die UPDATE-Anweisung bietet Apache Derby zwei Arten von Löschen (Syntax):searched löschen und positioned löschen.

Die gesuchte delete-Anweisung löscht alle angegebenen Spalten einer Tabelle.

Syntax

Die Syntax der DELETE-Anweisung lautet wie folgt:

ij> DELETE FROM table_name WHERE condition;

Beispiel

Nehmen wir an, wir haben eine Tabelle mit dem Namen "Mitarbeiter" mit 5 Datensätzen (siehe unten).

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

Die folgende SQL DELETE-Anweisung löscht den Datensatz mit dem Namen Trupti.

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

Wenn Sie den Inhalt der Employees-Tabelle erhalten, werden nur vier Datensätze angezeigt (siehe unten).

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

Führen Sie dieselbe Abfrage ohne where-Klausel aus, um alle Datensätze in der Tabelle zu löschen.

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

Wenn Sie nun versuchen, den Inhalt der Employee-Tabelle abzurufen, erhalten Sie eine leere Tabelle wie unten angegeben -

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

Daten mit dem JDBC-Programm löschen

In diesem Abschnitt wird erläutert, wie Sie die vorhandenen Datensätze einer Tabelle in der Apache Derby-Datenbank mithilfe der JDBC-Anwendung löschen.

Wenn Sie den Derby-Netzwerkserver über den Netzwerkclient anfordern möchten, stellen Sie sicher, dass der Server betriebsbereit ist. Der Klassenname für den Netzwerkclienttreiber lautet org.apache.derby.jdbc.ClientDriver und die URL lautet jdbc: derby: // localhost: 1527 /DATABASE_NAME;create = true; user =USER_NAME;passw ord =PASSWORD".

Führen Sie die folgenden Schritte aus, um die vorhandenen Datensätze einer Tabelle in Apache Derby zu löschen: / p>

Schritt 1: Registrieren Sie den Treiber

Zunächst müssen Sie den Treiber registrieren, um mit der Datenbank zu kommunizieren. DasforName() Methode der Klasse ClassAkzeptiert einen String-Wert, der einen Klassennamen darstellt, lädt ihn in den Speicher, der ihn automatisch registriert. Registrieren Sie den Treiber mit dieser Methode.

Schritt 2: Stellen Sie die Verbindung her

Im Allgemeinen besteht der erste Schritt zur Kommunikation mit der Datenbank darin, eine Verbindung mit der Datenbank herzustellen. DasConnectionKlasse repräsentiert die physische Verbindung mit einem Datenbankserver. Sie können ein Verbindungsobjekt erstellen, indem Sie das aufrufengetConnection() Methode der DriverManagerKlasse. Erstellen Sie mit dieser Methode eine Verbindung.

Schritt 3: Erstellen Sie ein Anweisungsobjekt

Sie müssen eine erstellen Statement oder PreparedStatement or, CallableStatementObjekte zum Senden von SQL-Anweisungen an die Datenbank. Sie können diese mit den Methoden erstellencreateStatement(), prepareStatement() and, prepareCall()beziehungsweise. Erstellen Sie eines dieser Objekte mit der entsprechenden Methode.

Schritt 4: Führen Sie die Abfrage aus

Nachdem Sie eine Anweisung erstellt haben, müssen Sie sie ausführen. DasStatement Klasse bietet verschiedene Methoden, um eine Abfrage wie die auszuführen execute()Methode zum Ausführen einer Anweisung, die mehr als eine Ergebnismenge zurückgibt. DasexecuteUpdate()Methode führt Abfragen wie INSERT, UPDATE, DELETE aus. DasexecuteQuery()Methodenergebnisse, die Daten zurückgeben. Verwenden Sie eine dieser Methoden und führen Sie die zuvor erstellte Anweisung aus.

Beispiel

Das folgende JDBC-Beispiel zeigt, wie die vorhandenen Datensätze einer Tabelle in Apache Derby mit dem JDBC-Programm gelöscht werden. Hier stellen wir mithilfe des eingebetteten Treibers eine Verbindung zu einer Datenbank mit dem Namen sampleDB her (wird erstellt, wenn sie nicht vorhanden ist).

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);
   }
}

Ausgabe

Wenn Sie das obige Programm ausführen, erhalten Sie die folgende Ausgabe:

Number of records deleted are: 1

Apache Derby - Wo Klausel

Die WHERE-Klausel wird in den Anweisungen SELECT, DELETE oder UPDATE verwendet, um die Zeilen anzugeben, für die die Operation ausgeführt werden muss. Normalerweise folgt auf diese Klausel eine Bedingung oder ein Ausdruck, der einen Booleschen Wert zurückgibt. Die Operationen Auswählen, Löschen oder Aktualisieren werden nur für die Zeilen ausgeführt, die die angegebene Bedingung erfüllen.

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;

Die WHERE-Klausel kann die Vergleichsoperatoren wie = ,! =, <,>, <= Und> = sowie die Operatoren BETWEEN und LIKE verwenden.

Beispiel

Nehmen wir an, wir haben eine Tabelle mit dem Namen Employees in der Datenbank mit 7 Datensätzen, wie unten gezeigt -

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

Die folgende SQL DELETE-Anweisung ruft die Datensätze der Mitarbeiter ab, deren Gehalt mehr als 35000 beträgt.

ij> SELECT * FROM Employees WHERE Salary>35000;

Dies erzeugt die folgende Ausgabe -

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

Ebenso können Sie Datensätze mit dieser Klausel löschen und aktualisieren.

Das folgende Beispiel aktualisiert den Standort derjenigen, deren Gehalt weniger als 30000 beträgt.

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

Wenn Sie den Inhalt der Tabelle überprüfen, sehen Sie die aktualisierte Tabelle wie folgt:

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

Beispiel für die Where-Klausel JDBC

In diesem Abschnitt erfahren Sie, wie Sie die WHERE-Klausel verwenden und CURD-Operationen für eine Tabelle in der Apache Derby-Datenbank mithilfe der JDBC-Anwendung ausführen.

Wenn Sie den Derby-Netzwerkserver über den Netzwerkclient anfordern möchten, stellen Sie sicher, dass der Server betriebsbereit ist. Der Klassenname für den Netzwerkclienttreiber lautet org.apache.derby.jdbc.ClientDriver und die URL lautet jdbc: derby: // localhost: 1527 /DATABASE_NAME; create = true; user =USER_NAME;passw ord =PASSWORD".

Führen Sie die folgenden Schritte aus, um die WHERE-Klausel zu verwenden und CURD-Operationen für eine Tabelle in Apache Derby auszuführen

Schritt 1: Registrieren Sie den Treiber

Um mit der Datenbank zu kommunizieren, müssen Sie zunächst den Treiber registrieren. DasforName() Methode der Klasse ClassAkzeptiert einen String-Wert, der einen Klassennamen darstellt, lädt ihn in den Speicher, der ihn automatisch registriert. Registrieren Sie den Treiber mit dieser Methode

Schritt 2: Stellen Sie die Verbindung her

Im Allgemeinen besteht der erste Schritt zur Kommunikation mit der Datenbank darin, eine Verbindung mit der Datenbank herzustellen. DasConnectionKlasse repräsentiert die physische Verbindung mit einem Datenbankserver. Sie können ein Verbindungsobjekt erstellen, indem Sie das aufrufengetConnection() Methode der DriverManagerKlasse. Erstellen Sie mit dieser Methode eine Verbindung.

Schritt 3: Erstellen Sie ein Anweisungsobjekt

Sie müssen eine erstellen Statement oder PreparedStatement oder, CallableStatementObjekte zum Senden von SQL-Anweisungen an die Datenbank. Sie können diese mit den Methoden erstellencreateStatement(), prepareStatement() and, prepareCall()beziehungsweise. Erstellen Sie eines dieser Objekte mit der entsprechenden Methode.

Schritt 4: Führen Sie die Abfrage aus

Nachdem Sie eine Anweisung erstellt haben, müssen Sie sie ausführen. DasStatement Klasse bietet verschiedene Methoden, um eine Abfrage wie die auszuführen execute()Methode zum Ausführen einer Anweisung, die mehr als eine Ergebnismenge zurückgibt. DasexecuteUpdate()Methode führt Abfragen wie INSERT, UPDATE, DELETE aus. DasexecuteQuery()Methodenergebnisse, die Daten zurückgeben. Verwenden Sie eine dieser Methoden und führen Sie die zuvor erstellte Anweisung aus.

Beispiel

Das folgende JDBC-Beispiel zeigt, wie die WHERE-Klausel verwendet und CURD-Operationen für eine Tabelle in Apache Derby mithilfe des JDBC-Programms ausgeführt werden. Hier stellen wir mithilfe des eingebetteten Treibers eine Verbindung zu einer Datenbank mit dem Namen sampleDB her (wird erstellt, wenn sie nicht vorhanden ist).

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(" ");
      }
   }
}

Ausgabe

Wenn Sie das obige Programm ausführen, erhalten Sie die folgende Ausgabe:

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 - GROUP BY-Klausel

Die GROUP BY-Klausel wird mit SELECT-Anweisungen verwendet. Es wird verwendet, um bei identischen Daten Teilmengen zu bilden. Normalerweise folgt auf diese Klausel die ORDER BY-Klausel und steht hinter der WHERE-Klausel.

Syntax

Es folgt die Syntax der GROUP BY-Klausel -

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

Beispiel

Angenommen, wir haben eine Tabelle mit dem Namen Employees in der Datenbank mit den folgenden Datensätzen:

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

Die folgende SELECT-Anweisung mit der GROUP BY-Klausel gruppiert die Tabelle basierend auf dem Speicherort. Es zeigt den Gesamtbetrag des Gehalts an, das den Mitarbeitern an einem Standort gewährt wird.

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

Dies erzeugt die folgende Ausgabe -

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

Auf die gleiche Weise wird bei der folgenden Abfrage der durchschnittliche Betrag ermittelt, der für die Mitarbeiter als Gehalt an einem Standort ausgegeben wird.

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

Dies erzeugt die folgende Ausgabe -

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

Group By-Klausel JDBC-Beispiel

In diesem Abschnitt erfahren Sie, wie Sie die Group By-Klausel verwenden und CURD-Operationen für eine Tabelle in der Apache Derby-Datenbank mithilfe der JDBC-Anwendung ausführen.

Wenn Sie den Derby-Netzwerkserver über den Netzwerkclient anfordern möchten, stellen Sie sicher, dass der Server betriebsbereit ist. Der Klassenname für den Netzwerkclienttreiber lautet org.apache.derby.jdbc.ClientDriver und die URL lautet jdbc: derby: // localhost: 1527 /DATABASE_NAME;create = true; user =USER_NAME;passw ord =PASSWORD""

Führen Sie die folgenden Schritte aus, um die Group By-Klausel zu verwenden und CURD-Operationen für eine Tabelle in Apache Derby auszuführen

Schritt 1: Registrieren Sie den Treiber

Um mit der Datenbank zu kommunizieren, müssen Sie zunächst den Treiber registrieren. DasforName() Methode der Klasse ClassAkzeptiert einen String-Wert, der einen Klassennamen darstellt, lädt ihn in den Speicher, der ihn automatisch registriert. Registrieren Sie den Treiber mit dieser Methode.

Schritt 2: Stellen Sie die Verbindung her

Im Allgemeinen besteht der erste Schritt zur Kommunikation mit der Datenbank darin, eine Verbindung mit der Datenbank herzustellen. DasConnectionKlasse repräsentiert die physische Verbindung mit einem Datenbankserver. Sie können ein Verbindungsobjekt erstellen, indem Sie das aufrufengetConnection() Methode der DriverManagerKlasse. Erstellen Sie mit dieser Methode eine Verbindung.

Schritt 3: Erstellen Sie ein Anweisungsobjekt

Sie müssen eine erstellen Statement oder PreparedStatement oder, CallableStatementObjekte zum Senden von SQL-Anweisungen an die Datenbank. Sie können diese mit den Methoden erstellencreateStatement(), prepareStatement() and, prepareCall()beziehungsweise. Erstellen Sie eines dieser Objekte mit der entsprechenden Methode.

Schritt 4: Führen Sie die Abfrage aus

Nachdem Sie eine Anweisung erstellt haben, müssen Sie sie ausführen. DasStatement Klasse bietet verschiedene Methoden, um eine Abfrage wie die auszuführen execute()Methode zum Ausführen einer Anweisung, die mehr als eine Ergebnismenge zurückgibt. DasexecuteUpdate()Methode wird verwendet, um Abfragen wie INSERT, UPDATE, DELETE auszuführen. DasexecuteQuery()Methode gibt Daten zurück. Verwenden Sie eine dieser Methoden und führen Sie die zuvor erstellte Anweisung aus.

Beispiel

Das folgende JDBC-Beispiel zeigt die Verwendung Group ByKlausel und führen CURD-Operationen für eine Tabelle in Apache Derby mit dem JDBC-Programm aus. Hier stellen wir mithilfe des eingebetteten Treibers eine Verbindung zu einer Datenbank mit dem Namen sampleDB her (wird erstellt, wenn sie nicht vorhanden ist).

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(" ");
      }
   }
}

Ausgabe

Wenn Sie das obige Programm ausführen, erhalten Sie die folgende Ausgabe:

Location: Hyderabad
Sum of salary: 120000

Location: Lucknow
Sum of salary: 71000

Location: Vishakhapatnam
Sum of salary: 93000

Apache Derby - Order By Klausel

Die ORDER BY-Klausel wird verwendet, um den Inhalt der Ergebnismenge in der Reihenfolge anzuordnen, in der die Schlüsselwörter verwendet werden. ASC steht für aufsteigende Reihenfolge und DESC für absteigende Reihenfolge. Wenn Sie beides nicht erwähnen, wird der Inhalt standardmäßig in aufsteigender Reihenfolge angeordnet.

Syntax

Es folgt die Syntax der ORDER BY-Klausel -

SELECT * FROM table_name ORDER BY column_name ASC|DESC.

Beispiel

Angenommen, wir haben eine Tabelle mit dem Namen Employees in der Datenbank mit den folgenden Datensätzen:

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

Die folgende Abfrage ordnet den Inhalt der Tabelle in aufsteigender Reihenfolge basierend auf dem Namen des Mitarbeiters an.

ij> SELECT * FROM Employees ORDER BY Name;

Dies erzeugt die folgende Ausgabe -

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

In ähnlicher Weise ordnet die folgende Abfrage den Inhalt der Tabelle in absteigender Reihenfolge basierend auf dem Gehalt des Mitarbeiters an -

ij> SELECT * FROM Employees ORDER BY Salary DESC;

Dies erzeugt die folgende Ausgabe -

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

Sortieren von Daten mit dem JDBC-Programm

In diesem Abschnitt erfahren Sie, wie Sie den Inhalt einer Tabelle in Derby mithilfe von JDBC sortieren. Sie können Datensätze nacheinander ordnen, indem Sie die ORDER BY-Klausel und die Schlüsselwörter ASC (aufsteigende Reihenfolge) und DSC (absteigende Reihenfolge) verwenden.

Wenn Sie den Derby-Netzwerkserver über den Netzwerkclient anfordern möchten, stellen Sie sicher, dass der Server betriebsbereit ist. Der Klassenname für den Netzwerkclienttreiber lautet org.apache.derby.jdbc.ClientDriver und die URL lautet jdbc: derby: // localhost: 1527 /DATABASE_NAME;create = true; user =USER_NAME;passw ord =PASSWORD".

Führen Sie die folgenden Schritte aus, um die Datensätze einer Tabelle in Apache Derby zu sortieren:

Schritt 1: Registrieren Sie den Treiber

Um mit der Datenbank zu kommunizieren, müssen Sie zunächst den Treiber registrieren. DasforName() Methode der Klasse ClassAkzeptiert einen String-Wert, der einen Klassennamen darstellt, lädt ihn in den Speicher, der ihn automatisch registriert. Registrieren Sie den Treiber mit dieser Methode.

Schritt 2: Stellen Sie die Verbindung her

Im Allgemeinen besteht der erste Schritt zur Kommunikation mit der Datenbank darin, eine Verbindung mit der Datenbank herzustellen. Das ConnectionKlasse repräsentiert die physische Verbindung mit einem Datenbankserver. Sie können ein Verbindungsobjekt erstellen, indem Sie das aufrufen getConnection() Methode der DriverManagerKlasse. Erstellen Sie mit dieser Methode eine Verbindung.

Schritt 3: Erstellen Sie ein Anweisungsobjekt

Sie müssen eine erstellen Statement oder PreparedStatement oder, CallableStatementObjekte zum Senden von SQL-Anweisungen an die Datenbank. Sie können diese mit den Methoden erstellencreateStatement(), prepareStatement() and, prepareCall()beziehungsweise. Erstellen Sie eines dieser Objekte mit der entsprechenden Methode.

Schritt 4: Führen Sie die Abfrage aus

Nachdem Sie eine Anweisung erstellt haben, müssen Sie sie ausführen. DasStatement Klasse bietet verschiedene Methoden, um eine Abfrage wie die auszuführen execute()Methode zum Ausführen einer Anweisung, die mehr als eine Ergebnismenge zurückgibt. DasexecuteUpdate()Methode führt Abfragen wie INSERT, UPDATE, DELETE aus. DasexecuteQuery()Methode gibt Daten zurück. Verwenden Sie eine dieser Methoden und führen Sie die zuvor erstellte Anweisung aus.

Beispiel

Das folgende JDBC-Beispiel zeigt, wie die Datensätze einer Tabelle in Apache Derby mithilfe des JDBC-Programms sortiert werden. Hier stellen wir mithilfe des eingebetteten Treibers eine Verbindung zu einer Datenbank mit dem Namen sampleDB her (wird erstellt, wenn sie nicht vorhanden ist).

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(" ");
      }
   }
}

Ausgabe

Wenn Sie das obige Programm ausführen, erhalten Sie die folgende Ausgabe:

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 - Klausel haben

Mit der HAVING-Klausel können Sie Bedingungen angeben, die filtern, welche Gruppenergebnisse in den Ergebnissen angezeigt werden.

Mit der WHERE-Klausel werden Bedingungen für die ausgewählten Spalten festgelegt, während mit der HAVING-Klausel Bedingungen für Gruppen festgelegt werden, die mit der GROUP BY-Klausel erstellt wurden.

Syntax

Es folgt die Syntax der HAVING-Klausel -

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

Beispiel

Angenommen, wir haben eine Tabelle mit dem Namen "Mitarbeiter" in der Datenbank mit den 13 Datensätzen (siehe unten).

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

Die folgende Abfrage zeigt die maximalen Gehälter der Mitarbeiter am Standort an, die mindestens 3 Mitarbeiter haben -

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

Dies erzeugt die folgende Ausgabe -

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

Sortieren von Daten mit dem JDBC-Programm

In diesem Abschnitt erfahren Sie, wie Sie mithilfe der JDBC-Anwendung eine Klausel in der Apache Derby-Datenbank verwenden.

Wenn Sie den Derby-Netzwerkserver über den Netzwerkclient anfordern möchten, stellen Sie sicher, dass der Server betriebsbereit ist. Der Klassenname für den Netzwerkclienttreiber lautet org.apache.derby.jdbc.ClientDriver und die URL lautet jdbc: derby: // localhost: 1527 /DATABASE_NAME;create = true; user =USER_NAME;passw ord =PASSWORD""

Führen Sie die folgenden Schritte aus, um die Datensätze einer Tabelle in Apache Derby zu sortieren

Schritt 1: Registrieren Sie den Treiber

Um mit der Datenbank zu kommunizieren, müssen Sie zunächst den Treiber registrieren. DasforName() Methode der Klasse ClassAkzeptiert einen String-Wert, der einen Klassennamen darstellt, und lädt ihn in den Speicher, der ihn automatisch registriert. Registrieren Sie den Treiber mit dieser Methode.

Schritt 2: Stellen Sie die Verbindung her

Im Allgemeinen besteht der erste Schritt zur Kommunikation mit der Datenbank darin, eine Verbindung mit der Datenbank herzustellen. DasConnectionKlasse repräsentiert die physische Verbindung mit einem Datenbankserver. Sie können ein Verbindungsobjekt erstellen, indem Sie das aufrufengetConnection() Methode der DriverManagerKlasse. Erstellen Sie mit dieser Methode eine Verbindung.

Schritt 3: Erstellen Sie ein Anweisungsobjekt

Sie müssen eine erstellen Statement oder PreparedStatement or, CallableStatementObjekte zum Senden von SQL-Anweisungen an die Datenbank. Sie können diese mit den Methoden erstellencreateStatement(), prepareStatement() and, prepareCall()beziehungsweise. Erstellen Sie eines dieser Objekte mit der entsprechenden Methode.

Schritt 4: Führen Sie die Abfrage aus

Nachdem Sie eine Anweisung erstellt haben, müssen Sie sie ausführen. DasStatement Klasse bietet verschiedene Methoden, um eine Abfrage wie die auszuführen execute()Methode zum Ausführen einer Anweisung, die mehr als eine Ergebnismenge zurückgibt. DasexecuteUpdate()Methode führt Abfragen wie INSERT, UPDATE, DELETE aus. DasexecuteQuery()Methode gibt Daten zurück. Verwenden Sie eine dieser Methoden und führen Sie die zuvor erstellte Anweisung aus.

Beispiel

Das folgende JDBC-Beispiel zeigt, wie die Group By-Klausel verwendet und CURD-Operationen für eine Tabelle in Apache Derby mithilfe des JDBC-Programms ausgeführt werden. Hier stellen wir mithilfe des eingebetteten Treibers eine Verbindung zu einer Datenbank mit dem Namen sampleDB her (wird erstellt, wenn sie nicht vorhanden ist).

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(" ");
      }
   }
}

Ausgabe

Wenn Sie das obige Programm ausführen, erhalten Sie die folgende Ausgabe:

Hyderabad
50000

Lucknow
39000

Vishakhapatnam
45000

Apache Derby - Tabellenanweisung ändern

Mit der Anweisung ALTER TABLE können Sie eine vorhandene Tabelle ändern. Mit diesem können Sie Folgendes tun:

  • Fügen Sie eine Spalte hinzu, fügen Sie eine Einschränkung hinzu

  • Löschen Sie eine Spalte, löschen Sie eine Einschränkung

  • Ändern Sie die Sperre auf Zeilenebene einer Tabelle

Nehmen wir an, wir haben eine Tabelle mit dem Namen "Mitarbeiter" erstellt (siehe unten).

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)
);

Und fügte vier Datensätze mit der insert-Anweisung als - ein

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

Hinzufügen einer Spalte zu einer Tabelle

Im Folgenden finden Sie die Syntax zum Hinzufügen einer Spalte zu einer Tabelle mithilfe der ALTER-Anweisung.

ALTER TABLE table_name ADD COLUMN column_name column_type;

Beispiel

Mit der Anweisung ALTER versuchen wir, eine neue Spalte mit dem Namen Age mit dem Typ Integer hinzuzufügen.

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

Fügen Sie eine weitere Spalte mit dem Namen Phone_No mit dem Typ Integer hinzu.

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

Der Befehl DESCRIBE beschreibt die angegebene Tabelle, indem die Spalten und ihre Details aufgelistet werden, sofern die Tabelle vorhanden ist. Wenn Sie die Tabelle Mitarbeiter BESCHREIBEN, können Sie die neu hinzugefügten Spalten wie unten gezeigt beobachten -

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

Hinzufügen einer Einschränkung zu einer Tabelle

Im Folgenden finden Sie die Syntax zum Hinzufügen einer Einschränkung zu einer Spalte einer Tabelle mithilfe der ALTER-Anweisung.

ALTER TABLE table_name ADD CONSTRAINT constraint_name constraint (column_name);

Wo constraint kann NICHT NULL, NULL, PRIMARY KEY, EINZIGARTIG, AUSLÄNDISCHER KEY, CHECK sein.

Beispiel

Mit der ALTER-Anweisung versuchen wir, eine Einschränkung hinzuzufügen UNIQUE in die Spalte Phone_No.

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

Wenn Sie einer Spalte eine EINZIGARTIGE Einschränkung hinzufügen, kann sie nicht für zwei Zeilen dieselben Werte haben, dh die Telefonnummer sollte für jeden Mitarbeiter eindeutig sein.

Wenn Sie versuchen, zwei Spalten mit derselben Telefonnummer hinzuzufügen, wird eine Ausnahme angezeigt (siehe unten).

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'.

Löschen einer Einschränkung aus einer Tabelle

Es folgt die Syntax zum Löschen einer Einschränkung einer Spalte:

ALTER TABLE table_name DROP CONSTRAINT constraint_name;

Beispiel

Die folgende Abfrage löscht den Einschränkungsnamen New_Constraint in der oben erstellten Spalte Phone_No.

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

Da wir die UNIQUE-Einschränkung für die Spalte Phone_No entfernt haben, können Sie Spalten mit derselben Telefonnummer hinzufügen.

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

Sie können den Inhalt der Tabelle ij> select * from Employees wie folgt überprüfen:

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

Löschen einer Spalte aus einer Tabelle

Es folgt die Syntax zum Löschen einer Spalte einer Spalte.

ALTER TABLE table_name DROP COLUMN column_name;

Beispiel

Die folgende Abfrage löscht die benannte Spalte age of the employee - -

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

Wenn Sie die Tabelle beschreiben, sehen Sie nur 4 Spalten.

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

Ändern der Tabelle mit dem JDBC-Programm

Im Folgenden finden Sie das JDBC-Programm zum Ändern einer Tabelle mithilfe der ALTER-Abfrage:

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"));
      }
   }
}

Ausgabe

Bei Ausführung des obigen Programms wird die folgende Ausgabe generiert:

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 - Derby-Indizes

Ein Index in einer Tabelle ist nichts anderes als ein Zeiger auf seine Daten. Diese werden verwendet, um das Abrufen von Daten aus einer Tabelle zu beschleunigen.

Wenn wir Indizes verwenden, werden die Anweisungen INSERT und UPDATE langsamer ausgeführt. Während SELECT und WHERE in kürzerer Zeit ausgeführt werden.

Index erstellen

Die Anweisung CREATE INDEX wird zum Erstellen eines neuen Index in einer Tabelle in der Derby-Datenbank verwendet.

Syntax

Es folgt die Syntax der Anweisung CREATE INDEX -

CTREATE INDEX index_name on table_name (column_name);

Beispiel

Angenommen, wir haben in Apache Derby eine Tabelle mit dem Namen "Mitarbeiter" erstellt (siehe unten).

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

Die folgende SQL-Anweisung erstellt einen Index für die Spalte "Gehalt" in der Tabelle "Mitarbeiter".

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

Erstellen eines EINZIGARTIGEN Index

In Apache Derby werden EINZIGARTIGE Indizes für die Datenintegration verwendet. Sobald Sie einen EINZIGARTIGEN Index für eine Spalte in einer Tabelle erstellt haben, sind keine doppelten Werte mehr zulässig.

Syntax

Im Folgenden finden Sie die Syntax zum Erstellen eines eindeutigen Index.

CREATE UNIQUE INDEX index_name on table_name (column_name);

Beispiel

Im folgenden Beispiel wird ein EINZIGARTIGER Index für die Spalten-ID der Tabelle Mitarbeiter erstellt.

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

Sobald Sie einen eindeutigen Index für eine Spalte erstellt haben, können Sie nicht mehr dieselben Werte für diese Spalte in eine andere Zeile eingeben. Kurz gesagt, eine Spalte mit einem UNIQE-Index lässt keine doppelten Werte zu.

Fügen Sie wie unten gezeigt eine Zeile in die Emp-Tabelle ein

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

Da wir einen eindeutigen Index für die Spalte Phone_No erstellt haben, wird ein Fehler angezeigt, wenn Sie denselben Wert wie im vorherigen Datensatz eingeben.

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'.

Erstellen eines COMPOSITE-Index

Sie können einen einzelnen Index für zwei Zeilen erstellen, der als zusammengesetzter Index bezeichnet wird.

Syntax

Es folgt die Syntax des zusammengesetzten Index.

CREATE INDEX index_name on table_name (column_name1, column_name2);

Beispiel

Der folgende Index erstellt einen zusammengesetzten Index für die Spalten Name und Speicherort.

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

Anzeigen der Indizes

Die Abfrage SHOW INDEXES zeigt die Liste der Indizes für eine Tabelle an.

Syntax

Es folgt die Syntax der Anweisung SHOW INDEXES -

SHOW INDEXES FROM table_name;

Beispiel

Im folgenden Beispiel werden die Indizes in der Tabelle Mitarbeiter angezeigt.

ij> SHOW INDEXES FROM Emp;

Dies führt zu folgendem Ergebnis.

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

Indizes löschen

Die Drop Index-Anweisung löscht / löscht den angegebenen Index für eine Spalte.

Syntax

Es folgt die Syntax der DROP INDEX-Anweisung.

DROP INDEX index_name;

Beispiel

Das folgende Beispiel löscht einen Index, der oben erstellt wurde und den zusammengesetzten Index und den eindeutigen Index enthält.

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

Wenn Sie nun die Liste der Indizes überprüfen, sehen Sie den Index für eine Spalte, da wir die verbleibenden gelöscht haben.

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

Behandeln von Indizes mit dem JDBC-Programm

Das folgende JDBC-Programm zeigt, wie Drop-Indizes für eine Spalte in einer Tabelle erstellt werden.

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");
   }
}

Ausgabe

Bei der Ausführung wird das folgende Ergebnis generiert

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 - Verfahren

In diesem Kapitel erfahren Sie, wie Sie Prozeduren in Derby erstellen und löschen.

Prozedur erstellen

Sie können eine Prozedur mit der Anweisung CREATE PROCEDURE erstellen.

Syntax

Es folgt die Syntax der Anweisung CREATE PROCEDURE.

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

Beispiel

Angenommen, wir haben in Derby eine Tabelle erstellt, wie unten gezeigt.

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

Und fügte Werte wie folgt ein -

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

Das folgende Beispiel erstellt eine Prozedur mit dem Namen Update_Procedure, die JAVA-Parameter akzeptiert.

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

Wo die ProcedureExample-Klasse aussieht -

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();
   }
}

Sie können die Liste der Verfahren mit überprüfen SHOW PROCEDURES Abfrage.

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&
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Hier können Sie die neu erstellte Prozedur beobachten.

Prozedur löschen

Sie können eine Prozedur mit der Anweisung DROP PROCEDURE löschen.

Syntax

Es folgt die Syntax der DROP PROCEDURE-Anweisung.

DROP PROCEDURE procedure_name;

Beispiel

Im folgenden Beispiel wird eine oben erstellte Prozedur mit dem Namen Update_Procedure gelöscht.

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

Apache Derby - Schemata

Ein Datenbankschema ist die Grundstruktur, die die logische Ansicht der gesamten Datenbank darstellt. Es definiert, wie die Daten organisiert sind und wie die Beziehungen zwischen ihnen verknüpft sind. Es formuliert alle Einschränkungen, die auf die Daten angewendet werden sollen.

Schema erstellen

Sie können ein Schema in Apache Derby mithilfe der Anweisung CREATE SCHEMA erstellen.

Syntax

Following is the syntax to the CREATE SCHEMA statement.

CREATE SCHEMA schema_name AUTHORIZATION id

Example

Following example creates a schema named my_schema in Derby database.

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

Then, you can create a table in this schema as shown below.

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

You can verify the list of schemas using the SHOW SCHEMAS query here you can find the list of schemas created.

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

Dropping a Schema

You can drop an existing schema using the DROP SCHEMA statement.

Syntax

Following is the syntax of DROPS SCHEMA statement.

DROP SCHEMA my_schema RESTRICT;

Example

You can delete a schema only if does not have any objects in it. To delete the schema, delete all the tables in it and delete the schema.

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

Following example drops the above created schema.

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

JDBC Example

Following JDBC example creates and drops a schema named 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");
   }
}

Output

On executing, the above program generates the following example.

Table created in schema
Schema dropped

Apache Derby - Triggers

In databases, triggers are the statements/code which gets executed whenever an event occurred. Once you create a trigger to a particular event on a table, the code specified in the trigger gets executed each time the event occurs. You can create multiple triggers on a single table.

This chapter teaches you how to create and drop triggers using Apache Derby.

Creating a trigger

You can create a trigger in Derby using the CREATE TRIGGER statement.

Syntax

Following is the syntax of the CREATE TRIGGER query.

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

Example

Suppose, we have created a table named Emp in Derby as shown below.

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

And inserted 5 rows in it.

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');

If we have another table named BackUp and our intention is to store deleted rows from Emp table in this.

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

The following query creates a trigger on the DELETE query table named Emp. It stores the deleted rows of Emp to the table Backup.

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

Now, delete a row from Emp table as −

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

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

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

2 rows selected

Deleting a trigger

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

Syntax

Following is the syntax of the DROP TRIGGER query −

ij> Drop trigger tigger_name;

Example

Following example deletes the trigger my_trigger created above −

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

JDBC example

Following JDBC program creates and deletes triggers in Derby.

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

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

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

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

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

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

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

Output

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

Trigger created
2
Kalyan
40000
Vishakhapatnam
1
Amit
30000
Hyderabad