LoginSignup
1
2

More than 1 year has passed since last update.

SQL 一覧シート2(INSERT, DELETE, UPDATE)

Last updated at Posted at 2021-07-06

関連記事

INSERT

  • 基本の形
INSERT INTO テーブル名 (1, 2, ..) VALUES (1, 2, ..);

-- 文字型、日付型はシングルクォーテーションで囲むことを忘れない
-- '2021-01-01'

列リスト、値リストの個数に過不足があるとエラーになる。
INSERT文は、基本的に1回で1行を挿入

  • 複数行INSERT
INSERT INTO テーブル名 
VALUES (1, ..), (1, ..), (1, ..);

-- 不正なデータが含まれてエラーになった際、エラー箇所が分かりにくい
-- 全てのRDBMSで利用できない(Oracleが✖️)
  • 列リスト省略
INSERT INTO テーブル名 VALUES (1, ..);

-- 全列に対して、順番に割り当てる
  • デフォルト値を設定(テーブル作成時にDEFAULT制約を追加している前提で)
INSERT INTO テーブル名 (1, 2(DEFAULT制約あり), ..) VALUES (1, DEFAULT, ..);

他のテーブルからデータをコピー

-- テーブル1のデータをコピーテーブルへ
INSERT INTO コピーテーブル (1, ..) 
SELECT (1, ..)
  FROM テーブル1;
  • データのバックアップを取るときに使える
  • WHERE, GROUP BYを使用して、見やすいテーブルを別で用意する際に使える。(INSERT文内のSELECT文で、WHERE, GROUP BYなど使用可能)

DELETE

  • DROP TABLE : テーブルそのものを削除
  • DELETE : テーブルは残して、中のデータを全て削除

基本の形

DELETE FROM テーブル名;

-- 削除対象がレコード(行)のため、FROMを省略しないように
-- 反対に、一部の列のみ削除もできないため、列名を記述しないように(* もエラーになる)
  • 探索型DELETE

全行ではなく、一部の行だけ削除

DELETE FROM テーブル名
 WHERE 条件;

-- SELECT文と違い、GROUP BY, HAVING, ORDER BY の3つは指定できず、使えるのはWHEREのみ
-- そもそもデータ削除時に使用する状況がない

UPDATE

  • 基本の形
UPDATE テーブル名 SET 列名 =  ;
  • 探索型UPDATE
UPDATE テーブル名
   SET 列名 = 
 WHERE 条件;
  • NULLクリア

列をNULLで更新することをNULLクリアという
式にNULLを記述する

  • 複数行UPDATE
UPDATE テーブル名
   SET 1 = 1,
       2 = 2
 WHERE 条件;

トランザクション

  • 更新処理のひとまとまりのこと
  • DBでのデータ更新処理の確定(COMMIT) / 取り消し(ROLLBACK)の管理が可能
  • ACID特性を持つ

    • 原子性:Atomicity
      • 全て実行されるか、全て実行されない状態で終わることを保証する
      • 中途半端な更新で終わると、辻褄が合わなくなる。
    • 一貫性(整合性):Consistency
      • トランザクション内の処理も、DBの設定、制約を守る性質
    • 独立性:Isolation
      • トランザクション同士が互いに干渉しない、入れ子にならないこと
    • 永続性(耐久性):Durability
      • トランザクションが終了時点でのデータの状態が保存されることの保証
      • トランザクションの実行記録をログとして残しておき、障害が起きた際は、ログを使って復旧する
  • 基本の形

BEGIN TRANSACTION; -- PostgreSQL, SQL Server
-- START TRANSACTION; : MySQL

  UPDATE ...
     SET ...
  .
  .
  .

COMMIT; -- or ROLLBACK;

ワンセットで行われるべき更新をは、トランザクションしてひとまとめにする
ROLLBACKすると、DBの状態はトランザクションを開始する前の状態に戻る

大抵の場合、DBへ接続した時点で、暗黙的にトランザクションが開始されている。

参考

「SQL ゼロから始めるデータベース操作」

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2