📘

【Oracle SQL】データ操作言語(DML)

2024/03/24に公開

Oracle SQLに触り始めた初心者です。復習としてメモしていきます。

DMLとは

DML(Data Manipulation Language)は、データ操作言語のことで、データベースに記録されたデータの参照や操作を行うためのものです。具体的には、データベースへのデータの新規登録や、既存のデータの上書きや削除、条件に合致するデータの検索や抽出などを行うために用いられます。

主要なコマンド

INSERT文

データベースのテーブルに新しいレコードを追加するための命令です。

INSERT文の使用例
INSERT INTO テーブル名 (1,2, ...)
VALUES (1,2, ...);

上記使用例では、テーブル名はデータを挿入したいテーブルの名前、列1, 列2, ...はデータを挿入したい列の名前、値1, 値2, ...はそれぞれの列に挿入する値を指定します。

INSERT文の応用

  • 複数レコードを一度に追加
    一つのSQL文で、複数のレコードをテーブルに追加することもできます。
  • SELECT句を用いたINSERT文
    SELECT句を組み合わせることで、あるテーブルの情報をもとに、新しいテーブルにデータをコピーすることができます。
  • DEFAULT値を使ったINSERT文
    データベーステーブルの設計時に、各列に予め設定できるデフォルトの値を使用してデータを挿入することができます。

UPDATE文

データベースのテーブルの既存のレコードを更新するための命令です。

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文基本構文
DELETE FROM テーブル名 WHERE 条件式;

ここで、テーブル名はデータを削除したいテーブルの名前、条件式は削除する行を指定する条件です。

DELETE文の使用例

  1. 特定のレコードの削除
    WHERE句を用いて、条件に合う行のみを削除します。例えば、member_idが1のレコードを削除する場合、下記のようなクエリになります。
DELETE FROM Employee WHERE member_id = 1;
  1. 全レコードの削除
    WHERE句を指定しない場合は、テーブル内のレコードをすべて削除します。ただし、大量のレコードが存在するテーブルでは、DELETE文の処理は重くなるため、TRUNCATE TABLEを使用した方が処理は早いとされています。
TRUNCATE TABLE

指定したテーブルのすべての行を一度に削除するための命令です。

基本的な構文
TRUNCATE TABLE テーブル名;

ここで、テーブル名はデータを削除したいテーブルの名前を指定します。

TRUNCATE TABLEは、テーブル内のすべてのレコードを一度に高速に削除します。また、テーブルの構造自体は維持されます。ただし、削除したデータはトランザクションを利用してロールバックすることができません。そのため、削除したデータを元に戻すことが必要な場合は、TRUNCATE TABLEではなくDELETEを使用する必要があります。

参考

https://techmania.jp/blog/sql-insert/
https://techmania.jp/blog/sql-update/
https://medium-company.com/dml/
https://itc.tokyo/sql/sql-truncate/
https://qiita.com/hinako_n/items/e25c971b156e4abf122b

Discussion