データベース操作をマスターしよう! INSERTとINSERT INTOを使いこなすためのチュートリアル

2024-04-07

SQLにおけるINSERTとINSERT INTOの違い

INSERT

INSERTは、データベースに新しいレコードを挿入するための基本的なステートメントです。このステートメントは、レコードを挿入するテーブルを指定せず、単に値のリストを提供します。

例:

INSERT INTO customers (name, email) VALUES ('John Doe', '[email protected]');

この例では、customersテーブルに新しいレコードが挿入されます。レコードには、name列にJohn Doeemail列に[email protected]という値が設定されます。

INSERT INTO

INSERT INTOは、INSERTステートメントの拡張版です。このステートメントでは、レコードを挿入するテーブルを明示的に指定することができます。さらに、挿入する列を指定することもできます。

INSERT INTO customers (name, email) VALUES ('Jane Doe', '[email protected]');

INSERTとINSERT INTOの比較

機能INSERTINSERT INTO
テーブル名省略可能必須
列名省略可能必須
必須必須



INSERT INTO customers (name, email) VALUES ('John Doe', '[email protected]');

INSERT INTO customers (name, email) VALUES ('Jane Doe', '[email protected]');

INSERT INTO customers (name, email) VALUES ('Peter Smith', '[email protected]');

このコードは、customersテーブルに3つの新しいレコードを挿入します。

INSERT INTO customers (name, email)
VALUES
  ('John Doe', '[email protected]'),
  ('Jane Doe', '[email protected]'),
  ('Peter Smith', '[email protected]');

このコードは、customersテーブルに3つの新しいレコードを挿入します。INSERTステートメントとは異なり、このコードは複数の値リストを使用しています。

列名の指定

INSERT INTO customers (name, email)
VALUES ('John Doe', '[email protected]');

INSERT INTO customers (email, name)
VALUES ('[email protected]', 'Jane Doe');

このコードは、customersテーブルに2つの新しいレコードを挿入します。最初のレコードでは、name列とemail列に値が設定されます。2番目のレコードでは、email列とname列に値が設定されます。

DEFAULT値の使用

INSERT INTO customers (name)
VALUES ('John Doe');

このコードは、customersテーブルに新しいレコードを挿入します。email列には値が設定されていないため、DEFAULT値が使用されます。

NULL値の使用

INSERT INTO customers (name, email)
VALUES ('John Doe', NULL);



SQLでデータを挿入する他の方法

LOAD DATA INFILE

LOAD DATA INFILEステートメントは、ファイルからデータをデータベースに読み込むために使用されます。このステートメントは、CSVファイル、テキストファイル、XMLファイルなど、さまざまな種類のファイルを読み込むことができます。

LOAD DATA INFILE '/path/to/file.csv'
INTO TABLE customers
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n'
(name, email);

このコードは、/path/to/file.csvファイルからデータをcustomersテーブルに読み込みます。

BULK INSERT

BULK INSERTステートメントは、大量のデータをデータベースに高速に挿入するために使用されます。このステートメントは、LOAD DATA INFILEステートメントよりも効率的な場合が多いです。

BULK INSERT customers
FROM '/path/to/file.csv'
WITH (FIELDTERMINATOR = ',', ROWTERMINATOR = '\n');

OPENROWSET

OPENROWSET関数を使用して、別のデータベースからデータを挿入することもできます。

INSERT INTO customers (name, email)
SELECT name, email
FROM OPENROWSET('SQLOLEDB', 'Server=localhost;Database=Test', 'SELECT name, email FROM customers');

このコードは、Testデータベースのcustomersテーブルからデータをcustomersテーブルに挿入します。

INSERT EXECステートメントを使用して、ストアドプロシージャを使用してデータを挿入することもできます。

EXEC sp_insert_customer 'John Doe', '[email protected]';

このコードは、sp_insert_customerストアドプロシージャを使用して、customersテーブルに新しいレコードを挿入します。


sql sql-server database


SQL DISTINCT を使ってデータベースの2つのフィールドを区別する方法

SQL DISTINCT は、データベースから重複するレコードを除去するクエリで使用されるキーワードです。2つのフィールドを区別したい場合は、DISTINCT と共に ON 句を使用できます。例以下の例では、customers テーブルから重複する名前とメールアドレスの組み合わせを除去しています。...


SQL Serverにおけるテーブル変数とインデックス:パフォーマンスを向上させるためのベストプラクティス

SQL Server 2014以降では、テーブル変数に対してインデックスを作成することが可能になりました。しかし、従来のテーブルとは異なり、いくつかの制限事項が存在します。テーブル変数とインデックステーブル変数は、一時的なデータセットを格納するために使用される特殊な変数です。通常のテーブルと同様に、列とデータ型を定義することができます。...


インメモリデータベースのデータをディスクに書き込む:C++/C のアプローチ

C++/C でインメモリデータベースをディスクに保存するには、主に以下の2つの方法があります。シリアライゼーションは、オブジェクトの状態をバイナリ形式に変換して保存するプロセスです。C++/C では、標準ライブラリやサードパーティ製のライブラリを使用して、シリアライゼーションを行うことができます。...


MariaDB on Windows で Web ブラウザを使用する

インストールダウンロードしたインストーラーを実行します。インストールウィザードに従って、インストールオプションを選択します。rootユーザーのパスワードを設定します。インストールを完了します。基本操作MariaDBのインストールが完了したら、コマンドラインツールmysqlを使用して、データベースを操作できます。...


delete_allとdestroy_allの違い

delete_allとdestroy_allは、どちらもRailsでデータベースからレコードを削除するために使用されるメソッドです。しかし、いくつかの重要な違いがあります。処理速度delete_all: 1つのSQLクエリでレコードを削除するため、高速です。...


SQL SQL SQL SQL Amazon で見る



INSERT INTOとSELECT INTOを超えた!SQL Serverでデータを操作する高度なテクニック

SQL Server における INSERT INTO と SELECT INTO は、どちらもデータをテーブルに挿入するための SQL ステートメントですが、それぞれ異なる目的と動作を持っています。INSERT INTO既存のテーブルに新しいレコードを挿入するために使用されます。