ApacheDerby-クイックガイド

ApacheDerbyは Relational Database Management SJavaプログラミング言語に完全に基づいている(書かれている/実装されている)システム。これは、Apache SoftwareFoundationによって開発されたオープンソースデータベースです。

Oracleは、JavaDBという名前のApacheDerbyに相当するものをリリースしました。

ApacheDerbyの機能

以下はダービーデータベースの注目すべき機能です-

  • Platform independent − Derbyは、データベースと同じ名前のディレクトリ内のディスク内のファイルにデータベースが保存されるオンディスクデータベース形式を使用します。

  • No modifying data −このため、データを変更せずにダービーデータベースを他のマシンに移動できます。

  • Transactional support − Derbyは、データの整合性を保証するトランザクションを完全にサポートします。

  • Including databases −現在のダービーアプリケーションにビルド済み/既存のデータベースを含めることができます。

  • Less space − Derbyデータベースはフットプリントが小さい、つまり、占有するスペースが少なく、使いやすく、デプロイも簡単です。

  • Embed with Java Application− Derbyは、Javaアプリケーションに組み込むことができる組み込みデータベースエンジンを提供し、アプリケーションと同じJVMで実行されます。ドライバをロードするだけでデータベースが起動し、アプリケーションで停止します。

ApacheDerbyの制限

以下はApacheDerbyの制限です-

  • Derbyは、BLOBやLONGVARCHARなどのデータ型のインデックスをサポートしていません。

  • ダービーに十分なディスク容量がない場合は、すぐにシャットダウンします。

データストレージ

データを保存している間、ApacheDerbyは次のような概念に従います。 conglomerate。この場合、テーブルのデータは別のファイルに保存されます。同様に、テーブルの各インデックスも個別のファイルに保存されます。したがって、データベース内のテーブルまたはインデックスごとに個別のファイルがあります。

ApacheDerbyライブラリ/コンポーネント

Apache Derbyディストリビューションは、さまざまなコンポーネントを提供します。ダウンロードしたapacheディストリビューションのlibフォルダーで、さまざまなコンポーネントを表すjarファイルを確認できます。

jarファイル 成分 説明
derby.jar データベースエンジンとJDBCドライバー

Apache Derbyのデータベースエンジンは、JDBCおよびSQLAPIをサポートする組み込みリレーショナルデータベースエンジンです。

これは組み込みドライバーとしても機能し、Javaアプリケーションを使用してDerbyと通信できます。

derbynet.jar derbyrun.jar ネットワークサーバー

Apache Derbyのネットワークサーバーは、クライアントがネットワークを介してDerbyサーバーに接続できるクライアントサーバー機能を提供します。

derbyclient.jar ネットワーククライアントJDBCドライバー
derbytools.jar コマンドラインツール このjarファイルには、次のようなツールが含まれています。 sysinfo, ij、および dblook
derbyoptionaltools.jar オプションのコマンドラインユーティリティ(ツール)

このjarファイルは、オプションのツールを提供します:databaseMetaDataオプションのツール、foreignViewsオプションのツール、luceneSupportオプションのツール、rawDBReaderオプションのツール、simpleJsonオプションのツールなど

derbyLocale_XX.jar メッセージをローカライズするためのjarファイル

上記のjarファイルに加えて、いくつかのderbyLocale_XX.jar(es、fr、hu、it、jaなど)を見ることができます。これらを使用して、ApacheDerbyのメッセージをローカライズできます。

Apache derbyは、組み込みモードとサーバーモードの2つのモードでデプロイできます。

埋め込みモード

Javaアプリケーション(組み込みドライバーを使用)を使用して、組み込みモードでderbyを実行できます。Derbyを組み込みモードでデプロイすると、データベースエンジンはJavaアプリケーションと同じJVMで実行されます。アプリケーションで開始および停止します。このアプリケーションでのみデータベースにアクセスできます。

サーバーモード

サーバーモードでは、derbyはアプリケーションサーバーのJVMで実行され、サーバーにアクセスするための要求を送信できます。組み込みモードとは異なり、複数のアプリケーション(Java)はサーバーに要求を送信し、データベースにアクセスできます。

次の章では、ApacheDerbyをダウンロードしてインストールする方法について説明します。

ApacheDerbyのダウンロード

ApacheDerbyホームページのホームページにアクセスします https://db.apache.org/derby/。[ダウンロード]タブをクリックします。

ApacheDerbyの最新バージョンのリンクを選択してクリックします。

選択したリンクをクリックすると、にリダイレクトされます DistributionsApacheDerbyのページ。ここで観察すると、derbyは、db-derby-bin、db-derbylib.zip、db-derby-lib-debug.zip、およびdb-derby-src.zipというディストリビューションを提供しています。

ダウンロード db-derby-binフォルダ。その内容を、ApacheDerbyをインストールする別のフォルダーにコピーします。(たとえば、C:\Derby

さて、ダービーと仕事をするために、

  • すでに設定していることを確認してください JAVA_HOME Javaインストールフォルダのbinフォルダの場所を渡すことで変数を指定し、 JAVA_HOME/bin PATH変数で。

  • 新しい環境変数を作成し、 DERBY_HOME 値はC:\ Derbyです。

  • db-derby-binディストリビューションのbinフォルダー(C:\ Derby \ binに変更)には、必要なすべてのjarファイルが含まれています。

説明したように、Apache Derbyは、次の2つの方法でインストール/デプロイできます。

  • Embedded mode−この場合、Embedded DerbyJDBCドライバーを使用してデータベースにアクセスする必要があります。Javaアプリケーションを介してダービーを開始および停止できます。データベースエンジンとアプリケーションの両方が同じJVMで実行されます。

  • Network Server mode−このモードでは、Derbyがサーバーシステムに組み込まれている一般的なクライアントサーバー方式でDerbyにアクセスできます。次に、異なるJVM(サーバーのJVM)で実行されているクライアントマシンがサーバーに要求を送信し、サーバーはそれらの要求に応答します。

クライアントは、サーバーの同じシステムマシン内の別のJVM、またはリモートシステムのJavaアプリケーションにすることができます。

組み込みモードでのDerbyのインストール

Apache Derbyを埋め込みモードでインストールするには、jarファイルを含めます derby.jar CLASSPATHで。

または、を実行して、必要なjarファイルのクラスパスを設定できます。 setEmbeddedCPコマンド。を閲覧するbin Apache Derbyのディレクトリを作成し、以下に示すようにこのファイルを実行します-

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

Apache Derbyをセットアップした後、それにアクセスするには、組み込みドライバーを使用してJavaプログラムを実行します。

検証

を使用してセットアップを確認できます ij 以下に示すツール-

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

ネットワークサーバーモードでのDerbyのインストール

ネットワークサーバーモードでApacheDerbyをインストールするには、次のものを含める必要があります。 derbynet.jar そして derbytools.jar CLASSPATHへのファイル。

または、を実行して、必要なjarファイルのクラスパスを設定できます。 setNetworkServerCPコマンド。を閲覧するbin Apache Derbyのディレクトリを作成し、以下に示すようにこのファイルを実行します-

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の起動

コマンドを実行してネットワークサーバーを起動できます startNetworkServer。を閲覧するbin Apache Derbyのディレクトリを作成し、以下に示すようにこのコマンドを実行します-

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

または、を使用してサーバーを起動できます derbyrun.jar 以下に示すように-

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

ネットワーククライアント

クライアントで、jarファイルを追加します derbyclient.jar そして derbytools.jarCLASSPATHに。または、を実行しますsetNetworkClientCP 以下に示すコマンド-

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

次に、このクライアントからサーバーにリクエストを送信できます。

検証

を使用してセットアップを確認できます ij 以下に示すツール-

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

Apache DerbyEclipse環境

Eclipseで作業している間、必要なすべてのjarファイルのビルドパスを設定する必要があります。

ステップ1:プロジェクトを作成し、ビルドパスを設定します

Eclipseを開き、サンプルプロジェクトを作成します。プロジェクトを右クリックして、オプションを選択しますBuild Path -> Configure Build 以下に示すパス-

の中に Java Build Path のフレーム Libraries タブをクリックします Add External JARs

そして、必要なものを選択します jar Derbyインストールフォルダのlibフォルダにあるファイルをクリックし、 Apply and Close

Apache Derbyは、次のようなツールを提供します。 sysinfo, ij そして、 dblook

sysinfoツール

このツールを使用すると、JavaおよびDerby環境に関する情報を取得できます。

Derbyインストールディレクトリのbinフォルダを参照し、以下に示すようにsysinfoコマンドを実行します-

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

実行すると、以下に示すように、Javaとderbyに関するシステム情報が提供されます。

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

このツールを使用すると、ApacheDerbyのスクリプトとクエリを実行できます。

Derbyインストールディレクトリのbinフォルダを参照し、以下に示すようにijコマンドを実行します-

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

これはあなたに与えるでしょう ij shell 以下に示すように、derbyコマンドとスクリプトを実行できる場所-

ij version 10.14
ij>

使用する help コマンドを使用すると、このシェルでサポートされているコマンドのリストを取得できます。

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

このツールは、データ定義言語を生成するために使用されます。

Derbyインストールディレクトリのbinフォルダを参照して、 dblook 以下に示すコマンド-

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

どこ、 myURL DDLを生成する必要があるデータベースの接続URLです。

この章では、すべてのApache DerbySQLステートメントの構文について説明します。

すべてのステートメントは、SELECT、INSERT、UPDATE、DELETE、ALTER、DROP、CREATE、USE、SHOWなどのキーワードのいずれかで始まり、すべてのステートメントはセミコロン(;)で終わります。

Apache DerbyのSQLステートメントは、テーブル名を含む機密性の高いケースです。

CREATEステートメント

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

ドロップテーブル

DROP TABLE table_name;

INSERTステートメント

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

SELECTステートメント

SELECT column_name, column_name, ... FROM table_name;

UPDATEステートメント

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

DELETEステートメント

DELETE FROM table_name WHERE condition;

DESCRIBEステートメント

Describe table_name

SQL TRUNCATETABLEステートメント

TRUNCATE TABLE table_name;

ALTERステートメント–列の追加

ALTER TABLE table_name ADD COLUMN column_name column_type;

ALTERステートメント–制約の追加

ALTER TABLE table_name ADD CONSTRAINT constraint_name constraint (column_name);

ALTERステートメント–列を削除します

ALTER TABLE table_name DROP COLUMN column_name;

ALTERステートメント–ドロップ制約

ALTER TABLE table_name DROP CONSTRAINT constraint_name;

WHERE句

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

GROUPBY句

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

ORDERBY句

SELECT * FROM table_name ORDER BY column_name ASC|DESC.

条項がある

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

インデックスの作成

CTREATE INDEX index_name on table_name (column_name);

UNIQUEインデックスの作成

CREATE UNIQUE INDEX index_name on table_name (column_name);

COMPOSITEインデックスの作成

CREATE INDEX index_name on table_name (column_name1, column_name2);

インデックスの表示

SHOW INDEXES FROM table_name;

インデックスの削除

DROP INDEX index_name;

データ型は、任意のオブジェクトのデータ型を指定する属性です。各列、変数、および式には、関連するデータ型があります。テーブルの作成中にこれらのデータ型を使用できます。要件に基づいて、テーブル列のデータ型を選択できます。

Derby Serverは、以下に示すように、使用するデータ型のいくつかのカテゴリを提供します-

整数数値データ型

以下は整数数値データ型のリストです-

データ・タイプ サイズ から
SMALLINT 2バイト -32768 32767
整数 4バイト -2,147,483,648 2,147,483,647
BIGINT 8バイト -9223372036854775808 9223372036854775808

おおよその数値データ型

以下は、おおよその数値データ型のリストです-

データ・タイプ サイズ から
リアル 4バイト -3.40E + 38 3.40E + 38
倍精度 8バイト -1.79E + 308 1.79E + 308
浮く -1.79E + 308 1.79E + 308

正確な数値データ型

以下は、正確な数値データ型のリストです-

データ・タイプ から
10進数 -10 ^ 38 +1 10 ^ 38 -1
数値 -10 ^ 38 +1 10 ^ 38 -1

CREATE TABLEステートメントは、Derbyデータベースに新しいテーブルを作成するために使用されます。

構文

以下は、CREATEステートメントの構文です。

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

Apache Derbyでテーブルを作成する別の方法は、クエリを使用して列名とデータ型を指定できることです。このための構文を以下に示します-

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

次のSQLステートメントは、という名前のテーブルを作成します Student 4つの列があり、idは主キーであり、自動生成されます。

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

DESCRIBEコマンドは、テーブルが存在する場合、列とその詳細をリストすることにより、指定されたテーブルを記述します。このコマンドを使用して、テーブルが作成されているかどうかを確認できます。

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

JDBCプログラムを使用してテーブルを作成する

このセクションでは、JDBCアプリケーションを使用してApacheDerbyデータベースにテーブルを作成する方法について説明します。

ネットワーククライアントを使用してDerbyネットワークサーバーを要求する場合は、サーバーが稼働していることを確認してください。ネットワーククライアントドライバーのクラス名は次のとおりです。org.apache.derby.jdbc.ClientDriver URLはjdbc:derby:// localhost:1527 / DATABASE_NAME; create = true; user = USER_NAME; passw ord = PASSWORD "です。

以下の手順に従って、ApacheDerbyでテーブルを作成します-

ステップ1:ドライバーを登録する

データベースと通信するには、まず、ドライバーを登録する必要があります。ザ・forName() クラスのメソッド、 Classクラス名を表す文字列値を受け入れ、それをメモリにロードします。メモリは自動的にそれを登録します。この方法でドライバーを登録してください。

ステップ2:接続を取得する

一般に、データベースと通信するために行う最初のステップは、データベースに接続することです。ザ・Connectionクラスは、データベースサーバーとの物理的な接続を表します。を呼び出すことにより、接続オブジェクトを作成できます。getConnection() の方法 DriverManagerクラス。このメソッドを使用して接続を作成します。

手順3:ステートメントオブジェクトを作成する

を作成する必要があります Statement または PreparedStatement or, CallableStatementSQLステートメントをデータベースに送信するオブジェクト。これらは、メソッドを使用して作成できますcreateStatement(), prepareStatement() and, prepareCall()それぞれ。適切な方法を使用して、これらのオブジェクトのいずれかを作成します。

ステップ4:クエリを実行する

ステートメントを作成したら、それを実行する必要があります。ザ・Statement クラスは、次のようなクエリを実行するためのさまざまなメソッドを提供します。 execute()複数の結果セットを返すステートメントを実行するメソッド。ザ・executeUpdate()メソッドは、INSERT、UPDATE、DELETEなどのクエリを実行します。ザ・executeQuery() データなどを返す結果へのメソッド。これらのメソッドのいずれかを使用して、前に作成したステートメントを実行します。

次のJDBCの例は、JDBCプログラムを使用してApacheDerbyでテーブルを作成する方法を示しています。ここでは、組み込みドライバーを使用して、sampleDBという名前のデータベース(存在しない場合は作成します)に接続しています。

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

出力

上記のプログラムを実行すると、次の出力が得られます

Table created

DROP TABLEステートメントは、すべてのトリガー、制約、アクセス許可を含む既存のテーブルを削除するために使用されます。

構文

以下は、DROPTABLEステートメントの構文です。

ij> DROP TABLE table_name;

データベースにStudentという名前のテーブルがあるとします。次のSQLステートメントは、Studentという名前のテーブルを削除します。

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

テーブルを記述しようとすると削除されたため、次のようなエラーが発生します。

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

JDBCプログラムを使用してテーブルを削除する

このセクションでは、JDBCアプリケーションを使用してApacheDerbyデータベースにテーブルをドロップする方法について説明します。

ネットワーククライアントを使用してDerbyネットワークサーバーを要求する場合は、サーバーが稼働していることを確認してください。ネットワーククライアントドライバーのクラス名はorg.apache.derby.jdbc.ClientDriverで、URLはjdbc:derby:// localhost:1527です。/DATABASE_NAME;create = true; user =USER_NAME; passw ord =PASSWORD「」

以下の手順に従って、ApacheDerbyにテーブルをドロップします。

ステップ1:ドライバーを登録する

データベースと通信するには、まず、ドライバーを登録する必要があります。ザ・forName() クラスのメソッド Classクラス名を表す文字列値を受け入れ、それをメモリにロードします。メモリは自動的にそれを登録します。この方法でドライバーを登録してください。

ステップ2:接続を取得する

一般に、データベースと通信するために行う最初のステップは、データベースに接続することです。ザ・Connectionクラスは、データベースサーバーとの物理的な接続を表します。を呼び出すことにより、接続オブジェクトを作成できます。getConnection() の方法 DriverManagerクラス。このメソッドを使用して接続を作成します。

手順3:ステートメントオブジェクトを作成する

を作成する必要があります Statement または PreparedStatement または、 CallableStatementSQLステートメントをデータベースに送信するオブジェクト。これらは、メソッドを使用して作成できますcreateStatement(), prepareStatement() and, prepareCall()それぞれ。適切な方法を使用して、これらのオブジェクトのいずれかを作成します。

ステップ4:クエリを実行する

ステートメントを作成したら、それを実行する必要があります。ザ・Statement クラスは、次のようなクエリを実行するためのさまざまなメソッドを提供します。 execute()複数の結果セットを返すステートメントを実行するメソッド。ザ・executeUpdate()メソッドは、INSERT、UPDATE、DELETEなどのクエリを実行します。ザ・executeQuery() データなどを返す結果へのメソッド。これらのメソッドのいずれかを使用して、前に作成したステートメントを実行します。

次のJDBCの例は、JDBCプログラムを使用してApacheDerbyにテーブルをドロップする方法を示しています。ここでは、組み込みドライバーを使用して、sampleDBという名前のデータベース(存在しない場合は作成します)に接続しています。

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

出力

上記のプログラムを実行すると、次の出力が得られます-

Table dropped

ApacheDerby-データの挿入

挿入クエリはデータを挿入します。 new records、テーブルに。

構文

以下は、INSERTステートメントの基本的な構文です。

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

ここで、column1、column2は、挿入される行の列値です。

次のSQLINSERTステートメントは、Studentテーブルに新しい行を挿入し、列に値を挿入します。 id, age, first name そして、 last name

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

構文2

または、以下に示すように、列名を指定して2つの特定の列を挿入できます。

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

Note− Apache Derbyは、生成された列の値を自動的に計算します。たとえば、このチュートリアルの前半で作成した学生テーブルのid列に値を渡す必要はありません。テーブルに列が生成されている場合は、syntax2

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

また、次のように1つのステートメントを使用して2つの行を挿入することもできます。

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

SELECTコマンドを使用してテーブルの内容を確認できます(このコマンドについては、このチュートリアルの後半で説明します)。

構文3

挿入ステートメントで別のクエリを次のように使用できます-

INSERT INTO table_Name Query

ある名前のテーブルがあるとします。 First_Year 以下に示すようにデータベース内にあり、Studentテーブルと同様の列があります-

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

上記の構文を次のように使用して、このテーブルの値を学生テーブルに挿入できます。

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

上記のすべての挿入ステートメントを実行すると、Studentテーブルは次のようになります。

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

JDBCプログラムを使用してデータを挿入します

このセクションでは、JDBCアプリケーションを使用してApacheDerbyデータベースのテーブルにデータを挿入する方法について説明します。

ネットワーククライアントを使用してDerbyネットワークサーバーを要求する場合は、サーバーが稼働していることを確認してください。ネットワーククライアントドライバーのクラス名はorg.apache.derby.jdbc.ClientDriverで、URLはjdbc:derby:// localhost:1527 /です。DATABASE_NAME;create = true; user =USER_NAME;passw ord =PASSWORD「」

以下の手順に従って、ApacheDerbyのテーブルにデータを挿入します-

ステップ1:ドライバーを登録する

データベースと通信するには、まず、ドライバーを登録する必要があります。ザ・forName() クラスのメソッド、 Classクラス名を表す文字列値を受け入れ、それをメモリにロードします。メモリは自動的にそれを登録します。この方法でドライバーを登録してください。

ステップ2:接続を取得する

一般に、データベースと通信するために行う最初のステップは、データベースに接続することです。ザ・Connectionクラスは、データベースサーバーとの物理的な接続を表します。を呼び出すことにより、接続オブジェクトを作成できます。getConnection() の方法 DriverManagerクラス。このメソッドを使用して接続を作成します。

手順3:ステートメントオブジェクトを作成する

を作成する必要があります Statement または PreparedStatement or, CallableStatementSQLステートメントをデータベースに送信するオブジェクト。これらは、メソッドを使用して作成できますcreateStatement(), prepareStatement() そして、 prepareCall()それぞれ。適切な方法を使用して、これらのオブジェクトのいずれかを作成します。

ステップ4:クエリを実行する

ステートメントを作成したら、それを実行する必要があります。ザ・Statement クラスは、次のようなクエリを実行するためのさまざまなメソッドを提供します。 execute() 複数の結果セットを返すステートメントを実行するメソッド。

ザ・ executeUpdate()メソッドは、INSERT、UPDATE、DELETEなどのクエリを実行します。ザ・executeQuery() データなどを返す結果へのメソッド。これらのメソッドのいずれかを使用して、前に作成したステートメントを実行します。

次のJDBCの例は、JDBCプログラムを使用してApacheDerbyのテーブルにデータを挿入する方法を示しています。ここでは、組み込みドライバーを使用して、sampleDBという名前のデータベース(存在しない場合は作成します)に接続しています。

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

出力

上記のプログラムを実行すると、次の出力が得られます-

Values inserted

ApacheDerby-データを取得する

SELECTステートメントは、テーブルからデータを取得するために使用されます。これにより、結果セットと呼ばれるテーブルの形式でデータが返されます。

構文

SELECTステートメントの構文は次のとおりです-

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

以下に示すように、データベースにEmployeesという名前のテーブルがあるとします。

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

そして、以下のように4つのレコードを挿入しました-

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

次のSQLステートメントは、テーブル内のすべての従業員の名前、年齢、および給与の詳細を取得します。

ij> SELECT Id, Name, Salary FROM Employees;

このクエリの出力は次のとおりです。

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

このテーブルのすべてのレコードを一度に取得する場合は、列の名前の代わりに*を使用します。

ij> select * from Employees;

これにより、次の結果が生成されます-

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

JDBCプログラムを使用してデータを取得する

このセクションでは、JDBCアプリケーションを使用してApacheDerbyデータベースのテーブルからデータを取得する方法について説明します。

ネットワーククライアントを使用してDerbyネットワークサーバーを要求する場合は、サーバーが稼働していることを確認してください。ネットワーククライアントドライバーのクラス名はorg.apache.derby.jdbc.ClientDriverで、URLはjdbc:derby:// localhost:1527 /です。DATABASE_NAME; create = true; user =USER_NAME; passw ord =PASSWORD「」

以下の手順に従って、ApacheDerbyのテーブルからデータを取得します-

ステップ1:ドライバーを登録する

データベースと通信するには、まず、ドライバーを登録する必要があります。ザ・forName() クラスのメソッド Classクラス名を表す文字列値を受け入れ、それをメモリにロードします。メモリは自動的にそれを登録します。この方法でドライバーを登録してください。

ステップ2:接続を取得する

一般に、データベースと通信するために行う最初のステップは、データベースに接続することです。ザ・Connectionクラスは、データベースサーバーとの物理的な接続を表します。を呼び出すことにより、接続オブジェクトを作成できます。getConnection() の方法 DriverManagerクラス。このメソッドを使用して接続を作成します。

手順3:ステートメントオブジェクトを作成する

を作成する必要があります Statement または PreparedStatement または、 CallableStatementSQLステートメントをデータベースに送信するオブジェクト。これらは、メソッドを使用して作成できますcreateStatement()prepareStatement() そして、 prepareCall()それぞれ。適切な方法を使用して、これらのオブジェクトのいずれかを作成します。

ステップ4:クエリを実行する

ステートメントを作成したら、それを実行する必要があります。ザ・Statement クラスは、次のようなクエリを実行するためのさまざまなメソッドを提供します。 execute()複数の結果セットを返すステートメントを実行するメソッド。ザ・executeUpdate()メソッドは、INSERT、UPDATE、DELETEなどのクエリを実行します。ザ・executeQuery() データなどを返す結果へのメソッド。これらのメソッドのいずれかを使用して、前に作成したステートメントを実行します。

次のJDBCの例は、JDBCプログラムを使用してApacheDerbyのテーブルからデータを取得する方法を示しています。ここでは、組み込みドライバーを使用して、sampleDBという名前のデータベース(存在しない場合は作成します)に接続しています。

ザ・ executeQuery() メソッドは ResultSetステートメントの結果を保持するオブジェクト。最初、結果セットポインタは最初のレコードにありますが、そのを使用してResultSetオブジェクトの内容を印刷できます。next() そして getXXX() メソッド。

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

出力

上記のプログラムを実行すると、次の出力が得られます

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

ApacheDerby-データの更新

UPDATEステートメントは、テーブル内のデータを更新するために使用されます。Apache Derbyは、2種類の更新(構文)を提供します。searched 更新して positioned 更新。

検索されたUPDATEステートメントは、テーブルの指定されたすべての列を更新します。

構文

以下は、UPDATEクエリの構文です-

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

WHERE句では、=、!=、<、>、<=、> =などの比較演算子、およびBETWEEN演算子とLIKE演算子を使用できます。

以下に示すように、データベースに4つのレコードを持つテーブルEmployeeがあるとします。

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

次のSQLUPDATEステートメントは、Kaylanという名前の従業員の場所と給与を更新します。

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

Employeesテーブルの内容を取得すると、UPDATEクエリによって行われた変更を確認できます。

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

JDBCプログラムを使用してデータを更新する

このセクションでは、JDBCアプリケーションを使用してApacheDerbyデータベース内のテーブルの既存のレコードを更新する方法について説明します。

ネットワーククライアントを使用してDerbyネットワークサーバーを要求する場合は、サーバーが稼働していることを確認してください。ネットワーククライアントドライバーのクラス名はorg.apache.derby.jdbc.ClientDriverで、URLはjdbc:derby:// localhost:1527 /です。DATABASE_NAME; create = true; user =USER_NAME; passw ord =PASSWORD「」

以下の手順に従って、ApacheDerbyのテーブルの既存のレコードを更新します。

ステップ1:ドライバーを登録する

データベースと通信するには、まず、ドライバーを登録する必要があります。ザ・forName() クラスのメソッド Classクラス名を表す文字列値を受け入れ、それをメモリにロードします。メモリは自動的にそれを登録します。この方法でドライバーを登録してください。

ステップ2:接続を取得する

一般に、データベースと通信するために行う最初のステップは、データベースに接続することです。Connectionクラスは、データベースサーバーとの物理的な接続を表します。を呼び出すことにより、接続オブジェクトを作成できます。getConnection() の方法 DriverManagerクラス。このメソッドを使用して接続を作成します。

手順3:ステートメントオブジェクトを作成する

を作成する必要があります Statement または PreparedStatement or, CallableStatementSQLステートメントをデータベースに送信するオブジェクト。これらは、メソッドを使用して作成できますcreateStatement()prepareStatement() そして、 prepareCall()それぞれ。適切な方法を使用して、これらのオブジェクトのいずれかを作成します。

ステップ4:クエリを実行する

ステートメントを作成したら、それを実行する必要があります。ザ・Statement クラスは、次のようなクエリを実行するためのさまざまなメソッドを提供します。 execute()複数の結果セットを返すステートメントを実行するメソッド。ザ・executeUpdate()メソッドは、INSERT、UPDATE、DELETEなどのクエリを実行します。ザ・executeQuery()メソッドはデータを返します。これらのメソッドのいずれかを使用して、前に作成したステートメントを実行します。

次のJDBCの例は、JDBCプログラムを使用してApacheDerbyのテーブルの既存のレコードを更新する方法を示しています。ここでは、組み込みドライバーを使用して、sampleDBという名前のデータベース(存在しない場合は作成します)に接続しています。

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

出力

上記のプログラムを実行すると、次の出力が得られます-

Number of records updated are: 1

ApacheDerby-データの削除

DELETEステートメントは、テーブルの行を削除するために使用されます。UPDATEステートメントと同様に、Apache Derbyは2種類の削除(構文)を提供します。searched 削除して positioned 削除します。

検索された削除ステートメントは、テーブルの指定されたすべての列を削除します。

構文

DELETEステートメントの構文は次のとおりです-

ij> DELETE FROM table_name WHERE condition;

以下に示すように、5つのレコードを持つemployeeという名前のテーブルがあるとします。

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

次のSQLDELETEステートメントは、Truptiという名前のレコードを削除します。

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

Employeesテーブルの内容を取得すると、以下に示すように4つのレコードしか表示されません。

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

テーブル内のすべてのレコードを削除するには、where句を指定せずに同じクエリを実行します。

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

ここで、Employeeテーブルの内容を取得しようとすると、次のように空のテーブルが取得されます。

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

JDBCプログラムを使用してデータを削除する

このセクションでは、JDBCアプリケーションを使用してApacheDerbyデータベース内のテーブルの既存のレコードを削除する方法について説明します。

ネットワーククライアントを使用してDerbyネットワークサーバーを要求する場合は、サーバーが稼働していることを確認してください。ネットワーククライアントドライバーのクラス名はorg.apache.derby.jdbc.ClientDriverで、URLはjdbc:derby:// localhost:1527 /です。DATABASE_NAME;create = true; user =USER_NAME;passw ord =PASSWORD"。

以下の手順に従って、Apache Derbyのテーブルの既存のレコードを削除します:/ p>

ステップ1:ドライバーを登録する

まず、データベースと通信するためにドライバーを登録する必要があります。ザ・forName() クラスのメソッド Classクラス名を表す文字列値を受け入れ、それをメモリにロードします。メモリは自動的にそれを登録します。この方法でドライバーを登録してください。

ステップ2:接続を取得する

一般に、データベースと通信するために行う最初のステップは、データベースに接続することです。ザ・Connectionクラスは、データベースサーバーとの物理的な接続を表します。を呼び出すことにより、接続オブジェクトを作成できます。getConnection() の方法 DriverManagerクラス。このメソッドを使用して接続を作成します。

手順3:ステートメントオブジェクトを作成する

を作成する必要があります Statement または PreparedStatement or, CallableStatementSQLステートメントをデータベースに送信するオブジェクト。これらは、メソッドを使用して作成できますcreateStatement(), prepareStatement() and, prepareCall()それぞれ。適切な方法を使用して、これらのオブジェクトのいずれかを作成します。

ステップ4:クエリを実行する

ステートメントを作成したら、それを実行する必要があります。ザ・Statement クラスは、次のようなクエリを実行するためのさまざまなメソッドを提供します。 execute()複数の結果セットを返すステートメントを実行するメソッド。ザ・executeUpdate()メソッドは、INSERT、UPDATE、DELETEなどのクエリを実行します。ザ・executeQuery()データを返すメソッドの結果。これらのメソッドのいずれかを使用して、前に作成したステートメントを実行します。

次のJDBCの例は、JDBCプログラムを使用してApacheDerbyのテーブルの既存のレコードを削除する方法を示しています。ここでは、組み込みドライバーを使用して、sampleDBという名前のデータベース(存在しない場合は作成します)に接続しています。

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

出力

上記のプログラムを実行すると、次の出力が得られます-

Number of records deleted are: 1

ApacheDerby-Where句

WHERE句は、操作を実行する必要のある行を指定するために、SELECT、DELETE、またはUPDATEステートメントで使用されます。通常、この句の後にはブール値を返す条件または式が続きます。選択、削除、または更新操作は、指定された条件を満たす行に対してのみ実行されます。

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;

WHERE句では、=、!=、<、>、<=、> =などの比較演算子、およびBETWEEN演算子とLIKE演算子を使用できます。

以下に示すように、データベースにEmployeesという名前のテーブルがあり、7つのレコードがあると仮定します。

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

次のSQLDELETEステートメントは、給与が35000を超える従業員のレコードをフェッチします。

ij> SELECT * FROM Employees WHERE Salary>35000;

これにより、次の出力が生成されます-

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

同様に、この句を使用してレコードを削除および更新することもできます。

次の例では、給与が30000未満の人の場所を更新します。

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

テーブルの内容を確認すると、以下のように更新されたテーブルが表示されます。

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

Where句のJDBCの例

このセクションでは、WHERE句を使用し、JDBCアプリケーションを使用してApacheDerbyデータベースのテーブルでCURD操作を実行する方法について説明します。

ネットワーククライアントを使用してDerbyネットワークサーバーを要求する場合は、サーバーが稼働していることを確認してください。ネットワーククライアントドライバーのクラス名はorg.apache.derby.jdbc.ClientDriverで、URLはjdbc:derby:// localhost:1527 /です。DATABASE_NAME; create = true; user =USER_NAME;passw ord =PASSWORD"。

以下の手順に従って、WHERE句を使用し、ApacheDerbyのテーブルでCURD操作を実行します。

ステップ1:ドライバーを登録する

データベースと通信するには、まず、ドライバーを登録する必要があります。ザ・forName() クラスのメソッド Classクラス名を表す文字列値を受け入れ、それをメモリにロードします。メモリは自動的にそれを登録します。この方法でドライバーを登録する

ステップ2:接続を取得する

一般に、データベースと通信するために行う最初のステップは、データベースに接続することです。ザ・Connectionクラスは、データベースサーバーとの物理的な接続を表します。を呼び出すことにより、接続オブジェクトを作成できます。getConnection() の方法 DriverManagerクラス。このメソッドを使用して接続を作成します。

手順3:ステートメントオブジェクトを作成する

を作成する必要があります Statement または PreparedStatement または、 CallableStatementSQLステートメントをデータベースに送信するオブジェクト。これらは、メソッドを使用して作成できますcreateStatement(), prepareStatement() and, prepareCall()それぞれ。適切な方法を使用して、これらのオブジェクトのいずれかを作成します。

ステップ4:クエリを実行する

ステートメントを作成したら、それを実行する必要があります。ザ・Statement クラスは、次のようなクエリを実行するためのさまざまなメソッドを提供します。 execute()複数の結果セットを返すステートメントを実行するメソッド。ザ・executeUpdate()メソッドは、INSERT、UPDATE、DELETEなどのクエリを実行します。ザ・executeQuery()データを返すメソッドの結果。これらのメソッドのいずれかを使用して、前に作成したステートメントを実行します。

次のJDBCの例は、WHERE句を使用し、JDBCプログラムを使用してApacheDerbyのテーブルでCURD操作を実行する方法を示しています。ここでは、組み込みドライバーを使用して、sampleDBという名前のデータベース(存在しない場合は作成します)に接続しています。

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

出力

上記のプログラムを実行すると、次の出力が得られます-

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

ApacheDerby-GROUPBY句

GROUP BY句は、SELECTステートメントで使用されます。同一データの場合にサブセットを形成するために使用されます。通常、この句の後にはORDER BY句が続き、WHERE句の後に配置されます。

構文

以下は、GROUPBY句の構文です。

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

データベースにEmployeesという名前のテーブルがあり、次のレコードがあるとします。

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

GROUP BY句を含む次のSELECTステートメントは、場所に基づいてテーブルをグループ化します。ある場所の従業員に与えられた給与の合計額が表示されます。

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

これにより、次の出力が生成されます-

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

同様に、次のクエリは、ある場所での給与として従業員に費やされた平均金額を検索します。

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

これにより、次の出力が生成されます-

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

GroupBy句のJDBCの例

このセクションでは、Group By句を使用し、JDBCアプリケーションを使用してApacheDerbyデータベースのテーブルでCURD操作を実行する方法について説明します。

ネットワーククライアントを使用してDerbyネットワークサーバーを要求する場合は、サーバーが稼働していることを確認してください。ネットワーククライアントドライバーのクラス名はorg.apache.derby.jdbc.ClientDriverで、URLはjdbc:derby:// localhost:1527 /です。DATABASE_NAME;create = true; user =USER_NAME;passw ord =PASSWORD「」

以下の手順に従って、Group By句を使用し、ApacheDerbyのテーブルでCURD操作を実行します。

ステップ1:ドライバーを登録する

データベースと通信するには、まず、ドライバーを登録する必要があります。ザ・forName() クラスのメソッド Classクラス名を表す文字列値を受け入れ、それをメモリにロードします。メモリは自動的にそれを登録します。この方法でドライバーを登録してください。

ステップ2:接続を取得する

一般に、データベースと通信するために行う最初のステップは、データベースに接続することです。ザ・Connectionクラスは、データベースサーバーとの物理的な接続を表します。を呼び出すことにより、接続オブジェクトを作成できます。getConnection() の方法 DriverManagerクラス。このメソッドを使用して接続を作成します。

手順3:ステートメントオブジェクトを作成する

を作成する必要があります Statement または PreparedStatement または、 CallableStatementSQLステートメントをデータベースに送信するオブジェクト。これらは、メソッドを使用して作成できますcreateStatement(), prepareStatement() and, prepareCall()それぞれ。適切な方法を使用して、これらのオブジェクトのいずれかを作成します。

ステップ4:クエリを実行する

ステートメントを作成したら、それを実行する必要があります。ザ・Statement クラスは、次のようなクエリを実行するためのさまざまなメソッドを提供します。 execute()複数の結果セットを返すステートメントを実行するメソッド。ザ・executeUpdate()メソッドは、INSERT、UPDATE、DELETEなどのクエリを実行するために使用されます。ザ・executeQuery()メソッドはデータを返します。これらのメソッドのいずれかを使用して、前に作成したステートメントを実行します。

次のJDBCの例は、使用方法を示しています Group By句を指定し、JDBCプログラムを使用してApacheDerbyのテーブルでCURD操作を実行します。ここでは、組み込みドライバーを使用して、sampleDBという名前のデータベース(存在しない場合は作成します)に接続しています。

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

出力

上記のプログラムを実行すると、次の出力が得られます-

Location: Hyderabad
Sum of salary: 120000

Location: Lucknow
Sum of salary: 71000

Location: Vishakhapatnam
Sum of salary: 93000

ApacheDerby-OrderBy句

ORDER BY句は、結果セットの内容をキーワードを使用する順序で配置するために使用されます。ASCは昇順を表し、DESCは降順を表します。これらのいずれにも言及しない場合、コンテンツはデフォルトで昇順で配置されます。

構文

以下は、ORDERBY句の構文です。

SELECT * FROM table_name ORDER BY column_name ASC|DESC.

データベースに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

次のクエリは、従業員の名前に基づいてテーブルの内容を昇順で並べ替えます。

ij> SELECT * FROM Employees ORDER BY Name;

これにより、次の出力が生成されます-

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

同様に、次のクエリは、従業員の給与に基づいてテーブルの内容を降順で並べ替えます。

ij> SELECT * FROM Employees ORDER BY Salary DESC;

これにより、次の出力が生成されます-

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

JDBCプログラムを使用したデータの並べ替え

このセクションでは、JDBCを使用してDerbyのテーブルの内容をソートする方法について説明します。ORDER BY句とキーワードASC(昇順を示す)およびDSC(降順を示す)を使用して、レコードを順番に並べ替えることができます。

ネットワーククライアントを使用してDerbyネットワークサーバーを要求する場合は、サーバーが稼働していることを確認してください。ネットワーククライアントドライバーのクラス名はorg.apache.derby.jdbc.ClientDriverで、URLはjdbc:derby:// localhost:1527 /です。DATABASE_NAME;create = true; user =USER_NAME;passw ord =PASSWORD"。

以下の手順に従って、ApacheDerbyのテーブルのレコードを並べ替えます-

ステップ1:ドライバーを登録する

データベースと通信するには、まず、ドライバーを登録する必要があります。ザ・forName() クラスのメソッド Classクラス名を表す文字列値を受け入れ、それをメモリにロードします。メモリは自動的にそれを登録します。この方法でドライバーを登録してください。

ステップ2:接続を取得する

一般に、データベースと通信するために行う最初のステップは、データベースに接続することです。ザ・ Connectionクラスは、データベースサーバーとの物理的な接続を表します。を呼び出すことにより、接続オブジェクトを作成できます。 getConnection() の方法 DriverManagerクラス。このメソッドを使用して接続を作成します。

手順3:ステートメントオブジェクトを作成する

を作成する必要があります Statement または PreparedStatement または、 CallableStatementSQLステートメントをデータベースに送信するオブジェクト。これらは、メソッドを使用して作成できますcreateStatement(), prepareStatement() and, prepareCall()それぞれ。適切な方法を使用して、これらのオブジェクトのいずれかを作成します。

ステップ4:クエリを実行する

ステートメントを作成したら、それを実行する必要があります。ザ・Statement クラスは、次のようなクエリを実行するためのさまざまなメソッドを提供します。 execute()複数の結果セットを返すステートメントを実行するメソッド。ザ・executeUpdate()メソッドは、INSERT、UPDATE、DELETEなどのクエリを実行します。ザ・executeQuery()メソッドはデータを返します。これらのメソッドのいずれかを使用して、前に作成したステートメントを実行します。

次のJDBCの例は、JDBCプログラムを使用してApacheDerbyのテーブルのレコードをソートする方法を示しています。ここでは、組み込みドライバーを使用して、sampleDBという名前のデータベース(存在しない場合は作成します)に接続しています。

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

出力

上記のプログラムを実行すると、次の出力が得られます-

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

ApacheDerby-条項がある

HAVING句を使用すると、結果に表示されるグループ結果をフィルタリングする条件を指定できます。

WHERE句は、選択した列に条件を設定しますが、HAVING句は、GROUPBY句によって作成されたグループに条件を設定します。

構文

以下は、HAVING句の構文です。

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

以下に示すように、データベースにEmployeesという名前のテーブルがあり、13個のレコードがあるとします。

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

次のクエリは、少なくとも3人の従業員がいる場所の従業員の最大給与を表示します-

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

これにより、次の出力が生成されます-

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

JDBCプログラムを使用したデータの並べ替え

このセクションでは、JDBCアプリケーションを使用してApacheDerbyデータベースにHaving句を使用する方法について説明します。

ネットワーククライアントを使用してDerbyネットワークサーバーを要求する場合は、サーバーが稼働していることを確認してください。ネットワーククライアントドライバーのクラス名はorg.apache.derby.jdbc.ClientDriverで、URLはjdbc:derby:// localhost:1527 /です。DATABASE_NAME;create = true; user =USER_NAME;passw ord =PASSWORD「」

以下の手順に従って、ApacheDerbyのテーブルのレコードを並べ替えます。

ステップ1:ドライバーを登録する

データベースと通信するには、まず、ドライバーを登録する必要があります。ザ・forName() クラスのメソッド Classクラス名を表す文字列値を受け取り、それをメモリにロードします。メモリは自動的にそれを登録します。この方法でドライバーを登録してください。

ステップ2:接続を取得する

一般に、データベースと通信するために行う最初のステップは、データベースに接続することです。ザ・Connectionクラスは、データベースサーバーとの物理的な接続を表します。を呼び出すことにより、接続オブジェクトを作成できます。getConnection() の方法 DriverManagerクラス。このメソッドを使用して接続を作成します。

手順3:ステートメントオブジェクトを作成する

を作成する必要があります Statement または PreparedStatement or, CallableStatementSQLステートメントをデータベースに送信するオブジェクト。これらは、メソッドを使用して作成できますcreateStatement(), prepareStatement() and, prepareCall()それぞれ。適切な方法を使用して、これらのオブジェクトのいずれかを作成します。

ステップ4:クエリを実行する

ステートメントを作成したら、それを実行する必要があります。ザ・Statement クラスは、次のようなクエリを実行するためのさまざまなメソッドを提供します。 execute()複数の結果セットを返すステートメントを実行するメソッド。ザ・executeUpdate()メソッドは、INSERT、UPDATE、DELETEなどのクエリを実行します。ザ・executeQuery()メソッドはデータを返します。これらのメソッドのいずれかを使用して、前に作成したステートメントを実行します。

次のJDBCの例は、Group By句を使用し、JDBCプログラムを使用してApacheDerbyのテーブルでCURD操作を実行する方法を示しています。ここでは、組み込みドライバーを使用して、sampleDBという名前のデータベース(存在しない場合は作成します)に接続しています。

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

出力

上記のプログラムを実行すると、次の出力が得られます-

Hyderabad
50000

Lucknow
39000

Vishakhapatnam
45000

ApacheDerby-テーブルステートメントの変更

ALTER TABLEステートメントを使用すると、既存のテーブルを変更できます。これを使用して、次のことができます-

  • 列を追加し、制約を追加します

  • 列を削除し、制約を削除します

  • テーブルの行レベルのロックを変更する

以下に示すように、Employeesという名前のテーブルを作成したと仮定します。

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

そして、insertステートメントを-として使用して4つのレコードを挿入しました

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

テーブルへの列の追加

以下は、ALTERステートメントを使用してテーブルに列を追加するための構文です。

ALTER TABLE table_name ADD COLUMN column_name column_type;

ALTERステートメントを使用して、整数型のAgeという名前の新しい列を追加しようとしています。

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

整数型のPhone_Noという名前の別の列を追加します。

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

DESCRIBEコマンドは、テーブルが存在する場合、列とその詳細をリストすることにより、指定されたテーブルを記述します。DESCRIBEを実行すると、以下に示すように、新しく追加された列を確認できるテーブルEmployeesが表示されます。

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

テーブルへの制約の追加

以下は、ALTERステートメントを使用してテーブルの列に制約を追加するための構文です。

ALTER TABLE table_name ADD CONSTRAINT constraint_name constraint (column_name);

どこ constraint NOT NULL、NULL、PRIMARY KEY、UNIQUE、FOREIGN KEY、CHECKにすることができます。

ALTERステートメントを使用して、制約を追加しようとしています UNIQUE Phone_No列に。

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

一度、列にUNIQUE制約を追加すると、2つの行に同じ値を設定することはできません。つまり、電話番号は従業員ごとに一意である必要があります。

同じ電話番号で2つの列を追加しようとすると、以下に示すような例外が発生します。

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

テーブルから制約を削除する

以下は、列の制約を削除するための構文です-

ALTER TABLE table_name DROP CONSTRAINT constraint_name;

次のクエリは、上記で作成したPhone_No列の制約名New_Constraintを削除します。

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

Phone_No列のUNIQUE制約を削除したため、同じ電話番号の列を追加できます。

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

次のように、テーブルij> select * fromEmployeesの内容を確認できます。

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

テーブルから列を削除する

以下は、列の列を削除するための構文です。

ALTER TABLE table_name DROP COLUMN column_name;

次のクエリは、という名前の列を削除します age of the employee

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

テーブルを説明すると、4つの列しか表示されません。

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

JDBCプログラムを使用したテーブルの変更

以下は、ALTERクエリを使用してテーブルを変更するJDBCプログラムです。

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

出力

上記のプログラムを実行すると、次の出力が生成されます-

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

ApacheDerby-ダービーインデックス

テーブル内のインデックスは、そのデータへのポインタに他なりません。これらは、テーブルからのデータ取得を高速化するために使用されます。

インデックスを使用する場合、INSERTステートメントとUPDATEステートメントはより遅いフェーズで実行されます。一方、SELECTとWHEREは、より短い時間で実行されます。

インデックスの作成

CREATE INDEXステートメントは、Derbyデータベースのテーブルに新しいインデックスを作成するために使用されます。

構文

以下は、CREATEINDEXステートメントの構文です。

CTREATE INDEX index_name on table_name (column_name);

以下に示すように、ApacheDerbyにEmployeesという名前のテーブルを作成したとします。

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

次のSQLステートメントは、テーブルEmployeesのSalaryという名前の列にインデックスを作成します。

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

UNIQUEインデックスの作成

Apache Derbyでは、UNIQUEインデックスがデータ統合に使用されます。テーブルの列にUNIQUEインデックスを作成すると、重複する値は許可されません。

構文

以下は、一意のインデックスを作成する構文です。

CREATE UNIQUE INDEX index_name on table_name (column_name);

次の例では、テーブルEmployeeの列IDにUNIQUEインデックスを作成します。

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

列に一意のインデックスを作成すると、その列に同じ値を別の行に入力することはできません。つまり、UNIQEインデックスを持つ列は、重複する値を許可しません。

以下に示すように、Empテーブルに行を挿入します

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

Phone_No列に一意のインデックスを作成したため、前のレコードと同じ値を入力しようとすると、エラーが表示されます。

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

COMPOSITEインデックスの作成

2つの行に単一のインデックスを作成できます。これは複合インデックスと呼ばれます。

構文

以下は、複合インデックスの構文です。

CREATE INDEX index_name on table_name (column_name1, column_name2);

次のインデックスは、Name列とLocation列に複合インデックスを作成します。

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

インデックスの表示

SHOW INDEXESクエリは、テーブル上のインデックスのリストを表示します。

構文

以下は、SHOWINDEXESステートメントの構文です。

SHOW INDEXES FROM table_name;

次の例では、テーブルEmployeesにインデックスを表示します。

ij> SHOW INDEXES FROM Emp;

これにより、次の結果が得られます。

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

インデックスの削除

Drop Indexステートメントは、指定されたインデックスを列から削除/ドロップします。

構文

以下は、DROPINDEXステートメントの構文です。

DROP INDEX index_name;

次の例では、上記で作成したcomposite_indexおよびunique_indexという名前のインデックスを削除します。

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

ここで、インデックスのリストを確認すると、残りの列を削除したため、1つの列にインデックスが表示されます。

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

JDBCプログラムを使用したインデックスの処理

次のJDBCプログラムは、テーブルの列にドロップインデックスを作成する方法を示しています。

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

出力

実行すると、次の結果が生成されます

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

ApacheDerby-手順

この章では、Derbyでプロシージャを作成および削除する方法について説明します。

プロシージャの作成

CREATEPROCEDUREステートメントを使用してプロシージャを作成できます。

構文

以下は、CREATEPROCEDUREステートメントの構文です。

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

以下に示すように、Derbyにテーブルを作成したとします。

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

そしてそれに次のように値を挿入しました-

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

次の例では、JAVAパラメータを受け入れるUpdate_Procedureという名前のプロシージャを作成します。

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

ProcedureExampleクラスは次のようになります-

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

手順のリストは、を使用して確認できます。 SHOW PROCEDURES クエリ。

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

ここでは、新しく作成されたプロシージャを確認できます。

手順を削除する

DROP PROCEDUREステートメントを使用して、プロシージャーをドロップできます。

構文

以下は、DROPPROCEDUREステートメントの構文です。

DROP PROCEDURE procedure_name;

次の例では、上記で作成したUpdate_Procedureという名前のプロシージャを削除します。

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

ApacheDerby-スキーマ

データベーススキーマは、データベース全体の論理ビューを表すスケルトン構造です。データがどのように編成され、それらの間の関係がどのように関連付けられるかを定義します。これは、データに適用されるすべての制約を定式化します。

スキーマの作成

CREATE SCHEMAステートメントを使用して、ApacheDerbyでスキーマを作成できます。

構文

以下は、CREATESCHEMAステートメントの構文です。

CREATE SCHEMA schema_name AUTHORIZATION id

次の例では、Derbyデータベースにmy_schemaという名前のスキーマを作成します。

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

次に、以下に示すように、このスキーマにテーブルを作成できます。

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

SHOW SCHEMASクエリを使用してスキーマのリストを確認できます。ここで、作成されたスキーマのリストを見つけることができます。

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

スキーマの削除

DROP SCHEMAステートメントを使用して、既存のスキーマを削除できます。

構文

以下は、DROPSSCHEMAステートメントの構文です。

DROP SCHEMA my_schema RESTRICT;

スキーマを削除できるのは、オブジェクトが含まれていない場合のみです。スキーマを削除するには、スキーマ内のすべてのテーブルを削除し、スキーマを削除します。

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

次の例では、上記で作成したスキーマを削除します。

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

JDBCの例

次のJDBCの例では、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");
   }
}

出力

上記のプログラムを実行すると、次の例が生成されます。

Table created in schema
Schema dropped

ApacheDerby-トリガー

データベースでは、トリガーはイベントが発生するたびに実行されるステートメント/コードです。テーブル上の特定のイベントへのトリガーを作成すると、トリガーで指定されたコードは、イベントが発生するたびに実行されます。1つのテーブルに複数のトリガーを作成できます。

この章では、ApacheDerbyを使用してトリガーを作成およびドロップする方法について説明します。

トリガーの作成

CREATE TRIGGERステートメントを使用して、Derbyでトリガーを作成できます。

構文

以下は、CREATETRIGGERクエリの構文です。

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

以下に示すように、ダービーにEmpという名前のテーブルを作成したとします。

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

そしてそれに5行を挿入しました。

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

BackUpという名前の別のテーブルがあり、Empテーブルから削除された行をこれに格納することを意図している場合。

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

次のクエリは、次の名前のDELETEクエリテーブルにトリガーを作成します。 Emp。の削除された行を格納しますEmp テーブルバックアップに。

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

ここで、Empテーブルから行を-として削除します。

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

バックアップテーブルを確認すると、その中の削除された行を確認できます。

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

2 rows selected

トリガーの削除

DROP TRIGGERステートメントを使用して、Derbyのトリガーを削除できます。

構文

以下は、DROPTRIGGERクエリの構文です。

ij> Drop trigger tigger_name;

次の例では、上記で作成したトリガーmy_triggerを削除します-

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

JDBCの例

次のJDBCプログラムは、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(" ");
      }
   }
}

出力

上記のプログラムを実行すると、次の出力が生成されます-

Trigger created
2
Kalyan
40000
Vishakhapatnam
1
Amit
30000
Hyderabad