1 つ以上のテーブルから他のテーブルへ値を引き出すには、INSERT 文に SELECT 句を使用します。SELECT 句により、ローにあるカラムの一部またはすべてに値を挿入できます。
一部のカラムだけに対する値の挿入は、既存のテーブルから値を取得する場合に便利です。その場合、更新を使用して他のカラムの値を追加できます。
値が挿入されていないカラムにデフォルトがあるか、または NULL が指定されているかどうかを確認してから、テーブルにある一部のカラム (すべてのカラムではない) に値を挿入します。こうしないと、エラーが表示されます。
あるテーブルから他のテーブルにローを挿入する場合、2 つのテーブルは互換性のある構造にします。すなわち、一致するカラムを、同じデータ型または SQL Anywhere が自動的に変換できるデータ型にします。
2 つのテーブルでカラムの順序が同じである場合、どちらのテーブルのカラム名も指定する必要はありません。たとえば、NewProducts というテーブルのスキーマが Products テーブルのスキーマと同じであり、NewProducts テーブルには Products テーブルに追加する製品情報の一部のローが含まれているとします。この場合、次の文を実行できます。
INSERT Products SELECT * FROM NewProducts; |
SELECT 文を使用して、VALUES 句を使用する場合と同様、ローにある一部のカラム (すべてのカラムではない) にデータを追加できます。INSERT 句でデータを追加するカラムを指定するだけです。
同じテーブルにある他のデータに基づいたテーブルへ、データを挿入できます。本質的には、これはローの全部または一部をコピーすることを意味します。
たとえば、Products テーブルに既存の製品に基づく新しい製品を挿入できます。次の文は Products テーブルに新しい項目の Extra Large Tee Shirt (Tank Top、V-neck、Crew Neck の各種) を追加します。ID 番号は既存サイズのシャツ番号に 30 を加えます。
INSERT INTO Products SELECT ID + 30, Name, Description, 'Extra large', Color, 50, UnitPrice, NULL FROM Products WHERE Name = 'Tee Shirt'; |
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |