データベース操作をマスターしよう! INSERTとINSERT INTOを使いこなすためのチュートリアル
SQLにおけるINSERTとINSERT INTOの違い
INSERT
INSERTは、データベースに新しいレコードを挿入するための基本的なステートメントです。このステートメントは、レコードを挿入するテーブルを指定せず、単に値のリストを提供します。
例:
INSERT INTO customers (name, email) VALUES ('John Doe', '[email protected]');
この例では、customers
テーブルに新しいレコードが挿入されます。レコードには、name
列にJohn Doe
、email
列に[email protected]
という値が設定されます。
INSERT INTO
INSERT INTOは、INSERTステートメントの拡張版です。このステートメントでは、レコードを挿入するテーブルを明示的に指定することができます。さらに、挿入する列を指定することもできます。
INSERT INTO customers (name, email) VALUES ('Jane Doe', '[email protected]');
INSERTとINSERT INTOの比較
機能 | INSERT | INSERT 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