0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Java基礎知識 研修備忘録 10日目

Last updated at Posted at 2025-07-19

INSERT文

データを1件新規追加する構文

列を指定する場合の構文

INSERT INTO テーブル名(
    列名1,
    列名2,
    ……
)VALUES(
    値1,
    値2,
    ……
)

・指定していない列にはNULLが挿入される
・ただしデフォルト値が定義されている場合はその値が挿入される
・実務では列名を指定する書き方が多い

列を省略する(全ての列に値を設定する)場合の構文

INSERT INTO テーブル名 VALUES(
    値1,
    値2,
    ……
)

・列名を省略した場合は全ての列に値を指定する
(指定しないとエラー)

注意点

・NOT NULL制約に気を付ける
・列と値の順序、個数、型および桁数に気を付ける
 型がマッチしない値は挿入できない
(DBMSによってはエラーにならず、意図しないデータが登録される)
・PKの重複はNG

INSERT SELECT文

データ(行)を複数件新規追加する構文
SELECT文の結果表のデータ(行)を挿入する

列名を指定する場合の構文

INSERT INTO テーブル1(
    テーブル1の列名1,
    テーブル1の列名2,
    ……
)SELECT 
    テーブル2の列名1,
    テーブル2の列名2,
    ……
FROM テーブル2

・WHERE句、GROUP BY句、HAVING句や結合も使える
・ORDER BY句はシーケンスという機能を使う場合以外は意味なし

列名を省略する(全ての列に値を設定する)場合の構文

INSERT INTO テーブル1 SELECT
    テーブル2の列名1,
    テーブル2の列名2,
    ……
FROM テーブル2

UPDATE文

既存データ(行)を更新する構文

UPDATE テーブル名
SET
    列名1=値1,
    列名2=値2,
    ……
WHERE
    対象レコードの絞り込み条件

注意点

・WHERE句なしだと全件更新されてしまう
→UPDATEでの失敗は大事件
 ⇒事前にSELECT文を実行し対象を確認する
 (DB開発ツールの場合のみ)
・PKは基本的に更新しない

DELETE文

既存データを削除する構文

DELETE FROM テーブル名
WHERE
    対象レコードの絞り込み条件    

注意点

・WHERE句なしだと全件削除されてしまう
→UPDATEと同様に大事件になる
⇒対策:事前にSELECT文を実行し対象を確認する
 (DB開発ツールの場合のみ)

DCL

トランザクションとは:関連する複数の処理を1つでまとめたもの

・DML(SELECT,INSERT,UPDATE,DELETE)の各処理がトランザクションを構成する1つの処理となる
・トランザクションの一連の処理は
全ての処理が正しく実行される/全く実行されない
のいずれかになる

COMMIT; //処理の確定
ROLLBACK; //処理の取り消し(データを前回のコミット直後まで巻き戻す)

・SQLは本来COMMIT文を実行しないと反映されない
A5-MK2などのツールはオートコミットの設定になるため自動的に裏でコミットされる
(ツールによってオートコミットか否かは変わる)

注意点

SQL側
①OK
②OK
③エラー:例外発生
④OK

Java側

List li = (INSERT文を実行する処理)
for(拡張for文){
(INSERT実行);
[1]コミット処理
}
[2]コミット処理

[1]で実行した場合:2件登録
[2]で実行した場合:0件登録

UNION/UNION ALL

複数のSELECT文の結果表を統合する

キーワード 意味
UNION 重複行を除外する(自動的にソートされる)
UNION ALL 全て表示する(重複行も含める)
SELECT
    テーブル1の列名1,
    テーブル1の列名2,
    ……
FROM テーブル1
UNION [ALL]
SELECT
    テーブル2の列名1,
    テーブル2の列名2,
    ……
FROM テーブル2

EXISTS

データ(行)が存在するか(1行でもあるか)確認する

SELECT
    列名1,
    列名2,
    ……
FROM
    テーブル名
WHERE
    [NOT] EXISTS (副問い合わせ)

副問い合わせの結果が1行でもあればTRUEと評価される

特徴
・IN条件の代わりに使用するとパフォーマンスが改善される可能性がある
・構文が特殊(ネットで調べながら書ければよい)
・昔はOracle SQLのみ、今はMySQLでも使用可能
・慣習として副問い合わせ部分のSELECT句には定数('X')を使用することが多い
例)(SELECT 'X' FROM ~)

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?