Servlet/JSP 応用編03 データベース
データベースとは
データの集まりのことである。また、ただの集まりではなく、検索、更新が行いやすい形式に整理されている。このデータベースを構築、操作するソフトウェアがデータベース管理システム(DBMS)と呼ぶ。
データベースの表をテーブルという。テーブルの横方向に並んだ格子群を行、縦方向に並んだ格子群を列という。図で表すと次のようになる。
番号 | 品名 | 価格 |
1 | あああ | 100 |
2 | いいい | 200 |
3 | ううう | 300 |
SQL
SQLとは、データベースを操作するためのプログラミング言語である。SQLを使えば、テーブルの作成、行の追加、検索などが可能となる。また、SQLで記述したひとまとまりの処理のことをSQL文と呼ぶ。このSQL文をデータベースに対し、実行し、結果を利用者に返す。
テーブルの作成、データの操作
データベースの中にテーブルを作成する。テーブル名は「product」とする。
テーブルを作成するには、create table文が必要となる。書き方は下記の通りである。
create table テーブル名(
列名1 データ型 制約,
列名2 データ型 制約,
・
・
・
);
列の定義はカンマで区切り、最後にはセミコロンをつける。データ型は格納するデータの種類を指定する。次に、制約とは、列やテーブルに格納するデータに対して、制限を設定するための機能。
データの追加には、insert文を使用する。使用例は以下である。
insert into テーブル名 values(列1の値, 列2の値,...);
テーブルの削除には、drop table文を使う。使用例は以下である。
drop table テーブル名;
では、実際にテーブルを作成し、データを追加していく。プログラムは以下である。
1行目はdrop table文を使用している。意味は「productというテーブルがあるなら、削除する」であるが、存在していないので、意味はない。
次に、create table文を使用。列名は「id」「name」「price」で、型は「int」、「varchar(100)」、「int」である。「varchar(100)」は可変長100桁の文字列である。制約は、「auto_increment , primary key」、「not null」、「not null」である。
「auto_increment」は行を追加したときに、自動的に番号を付けてくれるというものである。「primary key」は主キー制約である。idが主キーになるということである。「not null」はこの列をnullにできないことを示している。
次に、insert文を使い、データ追加していく。idにはnullを、nameには、適当な品を入れる。priceは価格を入れていく。
では、テーブルが作成され、データも追加できたので、このテーブルから検索を行う。検索には、select文を使う。使い方は以下である。
select 列名 from テーブル名 [where 条件]
今回は簡単にテーブル全てを検索してみる。
select * from product;
「*」は全てという意味である。「product」というテーブルから全て検索することである。結果は以下のとおりである。
追加したデータがすべて表示されているのが分かる。
次は、条件をつけて検索をする。
select * from product where id >= 15;
これは、idが15以上の全てを検索するというもの。結果は以下となる。
「ID」を見ると、しっかりと15以上のものが表示されている。
次は、データを更新する。
update テーブル名 set 列名=値 [where 条件];
では、nameが「いくら」のpriceを120にする。
update product set price=120 where name='いくら';
と、書けば、いくらの値段が120となる。
実際に動かしてみる。
ちゃんと更新している。
最後に削除してみる。delete文を使う。
delete from テーブル名 [where 条件];
select文などと同じように使うことができる。idが10より小さいものと、idが14より大きいものを消す。
delete from product where id<10 or id>14;
これで、先ほどの条件に当てはまるデータを消すことができる。結果を見てみる。
ちゃんと消されていることが分かる。
おわりに
今回は、データベースのテーブル作成とデータの操作を紹介した。基本的なものばかりだが、これでほとんどの操作が可能となる。次回からは、このデータベースとjavaを連携されていく。