SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine(コードジン) DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

WTPではじめるサーバサイドJava入門

サーバサイドJava入門 Java DBによるデータベースアクセス

第8回 JSP/サーブレットからのデータベースアクセスの基本

SQLファイルの作成とSQLの実行

 続いて、データベースへSQL送信を行うための「SQLファイル」を作成します。[ファイル]-[新規]-[SQLファイル]メニューを選び(見当たらなければ[その他]を選び[SQLファイル]を選択)、次のように設定してSQLファイルを作成してください。

SQLファイル作成の設定
項目
親フォルダー使用するプロジェクトを選択
ファイル名derby_sql
Database server typeDerby_10.x
接続プロファイルderby_mydata
データベース名mydatabase
図10 SQLファイルを新規作成する。
図10 SQLファイルを新規作成する。

 このSQLファイルは、文字通りSQLによるコマンドを記述し、データベースに送信して結果を表示する働きをするものです。ここで、データベースを作成するためのSQLコマンドを書いて送信することで、データベースを操作できます。エディタ画面の上部には、「タイプ」「名前」「データベース」といった項目が表示され、ここで操作するデータベースが指定できます。

 では、SQLコマンドを実行して、データベースにサンプルデータを格納してみることにしましょう。次のようなSQL文をSQLファイルの入力欄に記述してください。

create table userdata (number int primary key,name varchar(255));

insert into userdata values (1,'Taro');
insert into userdata values (2,'Hanako');
insert into userdata values (3,'Jiro');
insert into userdata values (4,'Pochi');
図11 SQLコマンドを選択し、[選択したテキストを実行]メニューで実行する。
図11 SQLコマンドを選択し、[選択したテキストを実行]メニューで実行する。

 記述したらそれを選択し、右クリックして[選択したテキストを実行]メニューを選ぶと、記述したSQLコマンドが実行されます。正常に終了したら、SQLコマンドをクリアし、新たに以下の文を書いて同様に実行してみてください。

select * from userdata;

 これで作成したデータが「SQLの結果」ビューの「結果1」というタブに表示されるはずです。

図12 SQLコマンドを選択し、[選択したテキストを実行]メニューで実行する。
図12 SQLコマンドを選択し、[選択したテキストを実行]メニューで実行する。

SQLによるデータベースの構築

 では、ここで実行したSQL文について簡単に説明しておきましょう。まず、一般的なSQLデータベースというのがどういう構造になっているのか理解しておく必要があります。SQLデータベースでは、データは次のような構造になっています。

  • データベース
  • 各種のデータを保存するには、まず「データベース」を作成します。データベースプログラムには複数のデータベースを作成し配置できます。
  • テーブル
  • データベースには、直接データは書き込めません。データを保存するためには、データベースの中に「テーブル」と呼ばれるものを作成します。このテーブルの中にデータを保存していきます。データベースの中には、複数のテーブルを作成できます。
  • フィールドとレコード
  • テーブルには、「フィールド」と呼ばれるものが用意されます。これは、保存するデータの項目のことだと思ってください。例えば住所録のデータベースを作ろうと思ったなら、「名前」「電話番号」「住所」「メールアドレス」といった項目を用意して、それぞれの値を保存することになりますね。この個々の項目が「フィールド」です。
    テーブルに保管される1つ1つのデータは「レコード」と呼ばれます。住所録のテーブルに3人分のデータを保管したなら、3件のレコードがある、というわけです。

 データベースを作成するためには、これらのものを順に作成していく必要があります。まずデータベースを作成し、その中にテーブルを準備し、そこにフィールドを定義し(実際にはテーブルの作成時にコラムの定義も行いますが)、できあがったテーブルにレコードを追加していってようやくデータベースとして使えるようになるわけです。

 ここでは、その大半をSQLコマンドで作成しています。まずはデータベース」からです……が、実をいえば、これは作る必要はありません。データベースは、先に接続プロファイルを作成した際に、指定した名前のデータベースを自動生成しているため、改めて作成しなくてもよいのです。

 SQLの最初にある文は、用意したデータベースにテーブルを作成するためのものです。

create table userdata (number int primary key,name varchar(255));

 テーブルの作成は、「create table」というコマンドで行います。これは、整理するなら次のような形で実行します。

create table テーブル名 (フィールド1 , フィールド2 , …… );

 テーブル名の後に、()でテーブルに用意するフィールドの定義を記述します。テーブルは、テーブルだけあってもフィールドがなければ役に立ちませんから、このようにテーブル作成時にフィールドを定義しておくのが一般的です。

 各テーブルの定義は、フィールド名と値の種類、それに必要に応じてフィールドの性質に関する記述を追記する、といった形で記述します。例えば「number int primary key」は「numberという名前のフィールド、値の種類はint値、primary keyという性質を設定する」という意味になりますし、「name varchar(255)」ならば「nameという名前のフィールド、値の種類は可変charを最大255文字まで」という意味になります。

 primary keyは、テーブルでレコードを検索する際の基準となるものです。これを指定すると、同じ値が複数存在しないことが保障されます。つまり、このprimary keyのフィールドの値を指定してレコードを検索すれば、必ず目的のレコードが取り出せる(もしくは見つからない)わけです。「検索したら同じ値のレコードが2つ出てきた」ということはありえないのですから。

 intは整数値、varcharは可変テキストを保存するために用いられるものです。まぁ、これらについては「こういうものがある」程度にしておきましょう。SQLは非常に奥深いものですので、興味ある方はぜひ別途勉強してください。

insert into userdata values (1,'Taro');
insert into userdata values (2,'Hanako');
insert into userdata values (3,'Jiro');
insert into userdata values (4,'Pochi');

 これらは、作成したテーブルに、ダミーのレコードを追加するものです。データの挿入は「insert into」というコマンドが使われます。これは、次のような形で実行されます。

insert into テーブル values ( 値1, 値2, …… );

 ここでは、整数とテキストの値を保管するフィールドを用意してありますので、それらの値を順に()内に記述すればいいわけです。

select * from userdata;

 これは、テーブルから必要なレコードを検索し表示するものです。すべてのレコードを表示するのであれば、このように、

select フィールド from テーブル;

 と実行します。全フィールドを得るのであれば、フィールドの指定に「*」を使います。このselectは、検索条件を設定したり全体の一部分だけを取り出したりとさまざまな拡張ができるのですが、とりあえずこの基本形だけは頭に入れておきましょう。

次のページ
データベースアクセスBeanの作成

この記事は参考になりましたか?

WTPではじめるサーバサイドJava入門連載記事一覧

もっと読む

この記事の著者

掌田 津耶乃(ショウダ ツヤノ)

三文ライター&三流プログラマ。主にビギナーに向けたプログラミング関連の執筆を中心に活動している。※現在、入門ドキュメントサイト「libro」、カード型学習サイト「CARD.tuyano.com」を公開...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/1556 2007/08/14 14:00

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー