Previous: values を使った新しい行の追加
Up: insert での行の挿入
Previous Page: values を使った新しい行の追加
valuesを使った行の挿入は、全く新しいテーブルをつくる時には必要だが、もしも、 既にあるテーブルを加工して新しいテーブルをつくる場合には、selectを使った挿入が 便利である。次の例は、元からあるテーブル「利用者台帳」利用して、新しいテーブル 「利用者台帳稚内編」をつくる例である。
insert into 利用者台帳稚内編 select * from 利用者台帳 where 住所 like '%稚内%'
valuesを使った挿入では、一つのinsert文で一行の挿入しか出来なかったが、selectを 使ったこの形式では、selectが返す複数の行が、ただちに新しいテーブルに取り込まれ ることになる。 この例では、二つのテーブルは、順序を含めて対応する項目のデータのタイプが同じで なければならない。もしも、項目の数や順序が一致しないのなら、insert into のテー ブル名( 項目名リスト ... )の項目名リストの部分と、selectのうしろの項目名リスト の部分とで調整すれば良い。
insert into 貸出図書一覧 select 書籍台帳.書籍番号,書籍台帳.書名 from 貸出台帳,蔵書台帳,書籍台帳 where 貸出台帳.登録番号 = 蔵書台帳.登録番号 and 蔵書台帳.書籍番号 = 書籍台帳.書籍番号
この例では、テーブル「貸出図書一覧」は、項目「書籍番号」と項目「書名」と
同じデータ・タイプを持った項目から、出来ていなければならない。
もっとも、この例のような場合なら、実際には、こうした形で新しくテーブルをつくる
のではなく、viewをつくるのが普通である。viewについては、後でふれるだろう。
実は、これらの処理は、次のような構文で、select文単独でも可能である。
select * into 利用者台帳稚内編 from 利用者台帳 where 住所 like '%稚内%'select 書籍台帳.書籍番号,書籍台帳.書名 into 貸出図書一覧 from 貸出台帳,蔵書台帳,書籍台帳 where 貸出台帳.登録番号 = 蔵書台帳.登録番号 and 蔵書台帳.書籍番号 = 書籍台帳.書籍番号
selectの計算式を扱う能力を利用すると、古いテーブルの数値を操作して、新しいテー ブルを作成することが出来る。
insert into 新定価表(書籍番号,書名,定価(消費税込み)) select 書籍番号 , 書名 , 定価 * 1.03 from 書籍台帳
ここでは、新しい項目「定価(消費税込み)」は、select文で計算されている。
maruyama@wakhok.ac.jp