学生向けプログラミング入門

学生向けにプログラミングを解説。Java、C++、Ruby、PHP、データベース

HSQLDBを使用したデータベース入門その8 新しい行の追加

<<前  [TOP]  次>>


insert文で、データベースに行を挿入するには、values句を使う方法と、select句を使う方法の二つがあります。
1.insert into テーブル名 [( 項目名リスト )] values ( 値1,値2, .... )
2.insert into テーブル名 [( 項目名リスト )] select 項目名リスト from テーブルリスト where 検索条件


以下、それぞれの用法を見てみましょう。


values を使った新しい行の追加は、次のようにして行います。


【例1:values を使った新しい行の追加】

insert into books values(2001,'数学の本その1','数学一郎','数学出版');




ここでvalues句で与えられている4つの定数は、テーブル「books」を構成している4つの項目に順序通り対応しています。


4つの項目すべてを与えなくても、次のように項目名リストをテーブル名につけ加えれば、指定した項目だけに値を与えることが出来ます。


【例2:特定の項目に値を与える insert】

insert into books(id, title, author) values(2002,'数学の本その2','数学二郎');
insert into books(id, title, author) values(2003,'数学の本その3','数学三郎');
insert into books(id, title, publisher) values(2004,'数学の本その4','数学出版');

こうした時、selectで、このテーブルの内容を表示させれば次のような出力が得られます。



values句で指定されなかった項目では、デフォルト値(この例ではnull)が置かれていることがわかります。


valuesを使った行の挿入は、全く新しいテーブルをつくる時には必要ですが、もしも既にあるテーブルを加工して新しいテーブルをつくる場合にはselectを使った挿入が便利です。
次の例は、元からあるテーブル「books」利用して、新しいテーブル「books3」をつくる例です。


先に「books3」テーブルを作成しておきましょう。


books3.sql 直

create table books3 (
    id            int,
    title         varchar(50),
    author        varchar(50),
    publisher     varchar(30),
    constraint pk_books3 primary key(id)
);



【例3:古いテーブルを利用して新しいテーブルをつくる】

insert into books3 select * from books where title like '%数学%';




valuesを使った挿入では、一つのinsert文で一行の挿入しか出来ませんでしたが、selectを使ったこの形式では、selectが返す複数の行が新しいテーブルに取り込まれることになります。
この例での二つのテーブルは、順序を含めて対応する項目のデータのタイプが同じでなければなりません。


insertは、新しい行をテーブルに挿入するのですが、既にある行の内容を書き換えたい時には、「update」を使わなければなりません。


updateの一般的な形は、次のようなものです

update テーブル名 set 項目名 = 式 [ , 項目名 = 式 , .... ] [ where 更新条件 ];



「books3」テーブルをupdateを用いて更新してみます。


【例4:where句無しのupdate】

update books3 set publisher = '日本数学出版';



where句無しでupdateを行った時、指定された項目はテーブル中のすべての行で更新されます。
この例では、テーブルの内容は、次の様に更新されます。
項目「publisher」すべてが「日本数学出版」に更新されていることに注目して下さい。





【例5:where 句で更新する行を指定】

update books3 set publisher = '(株)日本数学出版' where id=2001;



テーブルの内容は、where句で指定された行の指定された項目だけが更新されます。





set句には、次のように複数の項目を指定することができます。


【例6:set句に複数の項目を指定】

update books3 set title='数学の本その2 改訂版',publisher = '(株)日本数学出版' where id=2002;




where句に、さまざまな更新条件を置くことが出来ます。
基本的には、既に見たselectのwhere句の使い方と同じであるので、内部にselect文を含むような、複雑な更新条件を考えることが出来ます。
すこし単純な更新条件を持つupdateの例を見てみましょう。


【例7:where 句の例】

update books3 set author='数学の大先生' where publisher like '%(株)%';



ここでは2つの「author」が更新されています。
更新条件に合致する複数行が更新されることに注意してください。
もしこの条件に合致する行が存在しなければ、行の更新は行われません。





<<前  [TOP]  次>>