【Oracle SQL】データ操作言語(DML)
Oracle SQLに触り始めた初心者です。復習としてメモしていきます。
DMLとは
DML(Data Manipulation Language)は、データ操作言語のことで、データベースに記録されたデータの参照や操作を行うためのものです。具体的には、データベースへのデータの新規登録や、既存のデータの上書きや削除、条件に合致するデータの検索や抽出などを行うために用いられます。
主要なコマンド
INSERT文
データベースのテーブルに新しいレコードを追加するための命令です。
INSERT INTO テーブル名 (列1, 列2, ...)
VALUES (値1, 値2, ...);
上記使用例では、テーブル名はデータを挿入したいテーブルの名前、列1, 列2, ...はデータを挿入したい列の名前、値1, 値2, ...はそれぞれの列に挿入する値を指定します。
INSERT文の応用
-
複数レコードを一度に追加
一つのSQL文で、複数のレコードをテーブルに追加することもできます。 -
SELECT句を用いたINSERT文
SELECT句を組み合わせることで、あるテーブルの情報をもとに、新しいテーブルにデータをコピーすることができます。 -
DEFAULT値を使ったINSERT文
データベーステーブルの設計時に、各列に予め設定できるデフォルトの値を使用してデータを挿入することができます。
UPDATE文
データベースのテーブルの既存のレコードを更新するための命令です。
UPDATE テーブル名
SET 列名1 = 値1, 列名2 = 値2, ...
WHERE 条件式;
上記使用例では、テーブル名はデータを更新したいテーブルの名前、列名1, 列名2, ...は更新する列の名前、値1, 値2, ...は新しい値、条件式はどの行を更新するかを指定する条件です。
UPDATE文の使用例
1.全レコード更新
テーブル内の全てのレコードを一度に更新します。例えば、price列を0にする場合、下記のようなクエリになります。
UPDATE customer SET price = 0;
2.指定レコード更新
WHERE句を用いて、条件に合う行のみを更新します。例えば、nameが’須藤’のレコードのpriceを5000に更新する場合、下記のようなクエリになります。
UPDATE customer SET price = 5000 WHERE name = '須藤';
3.複数列更新
一度のクエリで複数の列を同時に更新することもできます。例えば、route列を’ad3’に、同時にprice列を2000に更新する場合、下記のようなクエリになります。
UPDATE customer SET route = 'ad3', price = 2000 WHERE name = '須藤';
DELETE文
データベースのテーブルから特定のレコードを削除するための命令です。
DELETE FROM テーブル名 WHERE 条件式;
ここで、テーブル名はデータを削除したいテーブルの名前、条件式は削除する行を指定する条件です。
DELETE文の使用例
-
特定のレコードの削除
WHERE句を用いて、条件に合う行のみを削除します。例えば、member_idが1のレコードを削除する場合、下記のようなクエリになります。
DELETE FROM Employee WHERE member_id = 1;
-
全レコードの削除
WHERE句を指定しない場合は、テーブル内のレコードをすべて削除します。ただし、大量のレコードが存在するテーブルでは、DELETE文の処理は重くなるため、TRUNCATE TABLE
を使用した方が処理は早いとされています。
TRUNCATE TABLE
指定したテーブルのすべての行を一度に削除するための命令です。
TRUNCATE TABLE テーブル名;
ここで、テーブル名はデータを削除したいテーブルの名前を指定します。
TRUNCATE TABLEは、テーブル内のすべてのレコードを一度に高速に削除します。また、テーブルの構造自体は維持されます。ただし、削除したデータはトランザクションを利用してロールバックすることができません。そのため、削除したデータを元に戻すことが必要な場合は、TRUNCATE TABLEではなくDELETEを使用する必要があります。
参考
Discussion