TOP

SQL レッスン 13. データの追加 (INSERT INTO)

前のセクションでは、以前に作成したテーブルからデータを取得する作業について検討しました。ここで、テーブルの作成/削除、新しいレコードの追加、古いレコードの削除を行う方法を考えてみましょう。

これらの目的のために、SQL には次のような演算子があります。

  • CREATE - テーブルを作成します。
  • ALTER - テーブルの構造を変更します。
  • DROP - テーブルまたはフィールドを削除します。
  • INSERT - テーブルにデータを追加します。
  • INSERT 演算子を使用して、この演算子のグループについて学び始めましょう。


    1. 行全体を追加する

    名前が示すように、INSERT INTO 演算子は、データベース テーブルに行を挿入 (追加) するために使用されます。

    追加はいくつかの方法で行うことができます。

  • 完全な行を 1 行追加します。
  • 新しい行の一部を追加します。
  • クエリ結果を追加します。
  • したがって、テーブルに新しい行を追加するには、テーブル名を指定し、列名をリストし、INSERT INTO table_name(field1, field2 ...) VALUES (value1, value2 ...) 構造体。例を考えてみましょう。

    INSERT INTO Sellers (ID, Address, City, Seller_name, Country) 
    VALUES ('6', '1st Street', 'Los Angeles', 'Harry Monroe', 'USA')
    

    列名の順序を変更することもできますが、同時に VALUES パラメーターの値の順序も変更する必要があります。

    2. 一部の行を追加する

    前の例では、INSERT 演算子を使用するときに、テーブル列の名前を明示的に指定しました。この構文を使用すると、いくつかの列をスキップできます。これは、一部の列に値を入力し、他の列には値を入力しないことを意味します。例:

    INSERT INTO Sellers (ID, City, Seller_name) 
    VALUES ('6', 'Los Angeles', 'Harry Monroe')
    

    この例では、2 つの列 Address と country の値を指定していません。テーブルを定義できる場合は、aaa ステートメントから一部の列を除外できます。この場合、次の条件のいずれかを満たす必要があります: この列が NULL 値 (値が存在しない) を許可するように定義されているか、テーブル定義でデフォルト値が指定されています。これは、値が指定されていない場合、デフォルト値が使用されることを意味します。 NULL 値を行に含めることができず、デフォルトで使用する値が定義されていないテーブルから列を省略すると、DBMS はエラー メッセージを発行し、行は追加されません。

    3. 選択したデータを追加する

    前の例では、クエリに手動でデータを入力してテーブルにデータを挿入しました。ただし、別のテーブルからデータを挿入する場合は、INSERT INTO 演算子を使用してこのプロセスを自動化できます。このため、SQL には INSERT INTO ... SELECT ... などの構造があります。この設計により、あるテーブルからデータを選択し、同時に別のテーブルにデータを挿入できます。ヨーロッパにおける製品の販売者のリストを含む別のテーブル Sellers_EU があり、それらを一般テーブル Sellers に追加する必要があるとします。これらのテーブルの構造は同じです (同じ数の列と同じ名前) が、データが異なります。これを行うには、次のクエリを作成できます。

    INSERT INTO Sellers (ID, Address, City, Seller_name, Country) 
                 SELECT ID, Address, City, Seller_name, Country 
                 FROM Sellers_EU
    

    内部キー(IDフィールド)の値が重複しないように注意する必要があります。重複しないとエラーが発生します。 SELECT ステートメントには、データをフィルターするための WHERE 句を含めることもできます。 DBMS は、SELECT 演算子に含まれる列の名前には注意を払わず、列の位置の順序のみを考慮することにも注意してください。したがって、SELECT によって選択された最初に指定された列のデータは、フィールド名に関係なく、INSERT INTO 演算子の後に指定された Sellers テーブルの最初の列に埋め込まれます。

    4. あるテーブルから別のテーブルへのデータのコピー

    データベースを操作する場合、バックアップや変更のためにテーブルのコピーを作成する必要があることがよくあります。 SQL でテーブルの完全なコピーを作成するには、別の演算子 SELECT INTO が提供されます。たとえば、テーブル Sellers のコピーを作成する必要がある場合は、次のようにクエリを記述する必要があります。

    SELECT * INTO Sellers_new 
    FROM Sellers
    

    前の構造 INSERT INTO ... SELECT ... とは異なり、データが既存のテーブルに追加される場合、構造 SELECT ... INTO ... FROM ... はデータを新しいテーブルにコピーします。最初の構築はデータをインポートし、2 番目の構築はデータをエクスポートするとも言えます。

    SELECT ... INTO ... FROM ... 構造を使用する場合は、次の点を考慮する必要があります。

  • SELECT ステートメントでは、GROUP、BY、HAVING などの任意の句を使用できます。
  • ユニオンを使用して、複数のテーブルからデータを追加できます。
  • データが取得されたテーブルの数に関係なく、データは 1 つのテーブルにのみ追加できます。