SQLファイルの作成とSQLの実行
続いて、データベースへSQL送信を行うための「SQLファイル」を作成します。[ファイル]-[新規]-[SQLファイル]メニューを選び(見当たらなければ[その他]を選び[SQLファイル]を選択)、次のように設定してSQLファイルを作成してください。
| 項目 | 値 |
| 親フォルダー | 使用するプロジェクトを選択 |
| ファイル名 | derby_sql |
| Database server type | Derby_10.x |
| 接続プロファイル | derby_mydata |
| データベース名 | mydatabase |
この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');
記述したらそれを選択し、右クリックして[選択したテキストを実行]メニューを選ぶと、記述したSQLコマンドが実行されます。正常に終了したら、SQLコマンドをクリアし、新たに以下の文を書いて同様に実行してみてください。
select * from userdata;
これで作成したデータが「SQLの結果」ビューの「結果1」というタブに表示されるはずです。
SQLによるデータベースの構築
では、ここで実行したSQL文について簡単に説明しておきましょう。まず、一般的なSQLデータベースというのがどういう構造になっているのか理解しておく必要があります。SQLデータベースでは、データは次のような構造になっています。
- データベース
- テーブル
- フィールドとレコード
データベースを作成するためには、これらのものを順に作成していく必要があります。まずデータベースを作成し、その中にテーブルを準備し、そこにフィールドを定義し(実際にはテーブルの作成時にコラムの定義も行いますが)、できあがったテーブルにレコードを追加していってようやくデータベースとして使えるようになるわけです。
ここでは、その大半を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は、検索条件を設定したり全体の一部分だけを取り出したりとさまざまな拡張ができるのですが、とりあえずこの基本形だけは頭に入れておきましょう。


![図11 SQLコマンドを選択し、[選択したテキストを実行]メニューで実行する。 図11 SQLコマンドを選択し、[選択したテキストを実行]メニューで実行する。](http://cz-cdn.shoeisha.jp/static/images/article/1556/fig11_s.gif)
![図12 SQLコマンドを選択し、[選択したテキストを実行]メニューで実行する。 図12 SQLコマンドを選択し、[選択したテキストを実行]メニューで実行する。](http://cz-cdn.shoeisha.jp/static/images/article/1556/fig12_s.gif)