Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 11.0.1 (日本語) » SQL Anywhere サーバ - SQL の使用法 » データのクエリと変更 » データの追加、変更、削除 » INSERT によるデータの追加

 

SELECT を使用した新しいローの追加

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';