論文一覧に戻る 📚 用語集トップ 🗺 概念マップ
📚 用語解説
📚 用語解説
DML(データ操作言語)
Data Manipulation Language
データエンジニアリング

🔖 キーワード索引

DML(データ操作言語)Data Manipulation Languageデータエンジニアリング

本ページは DML(データ操作言語)(Data Manipulation Language)を多角的に解説します。 上のチップは、 検索・関連語の手がかりです。

💡 30秒で分かる結論

📍 文脈 — どこで使う概念か

DML(Data Manipulation Language)は、 リレーショナルデータベース(RDB)でデータの追加・更新・削除・検索を行う SQL の中核です。 業務アプリケーションのバックエンド、 データウェアハウス、 BI ツールでも基盤として使われます。 SQL を知らずしてデータエンジニアリングは語れないと言える基本技術です。

🎨 直感で掴む — 具体例で理解する

SQL の命令は大きく 3 つに分類されます:

分類用途命令例
DML(操作)データの中身を扱うSELECT, INSERT, UPDATE, DELETE
DDL(定義)テーブル構造を作る・変えるCREATE, ALTER, DROP
DCL(制御)権限・トランザクションGRANT, REVOKE, COMMIT

本ページで扱う DML は 「データの読み書き」そのもの。 業務アプリで一番使う命令群です。

📐 定義

SELECT/INSERT/UPDATE/DELETE 等の操作言語

英語名 Data Manipulation Language、 カテゴリ:データエンジニアリング。

🔬 記号・要素の読み解き

SELECT
データの取得(読み取り)。 「どの列を、 どの行から、 どんな条件で」を指定
INSERT
新しい行を追加
UPDATE
既存の行の値を変更。 WHERE を忘れると全行更新の事故
DELETE
行を削除。 同じく WHERE 必須
JOIN
複数テーブルを連結。 INNER, LEFT, RIGHT, FULL の 4 種
WHERE
絞り込み条件。 DML の安全装置

🧮 数値例・実値計算

具体的な DML 操作の例(都道府県データ):

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
-- 1. SELECT読み取り
SELECT 都道府県名, 高齢化率, 死亡率
  FROM 統計表
 WHERE 高齢化率 > 30
 ORDER BY 高齢化率 DESC
 LIMIT 10;

-- 2. INSERT追加
INSERT INTO 統計表 (都道府県名, 高齢化率, 死亡率)
VALUES ('東京都', 23.4, 9.8);

-- 3. UPDATE更新)— WHERE 必須
UPDATE 統計表
   SET 死亡率 = 10.5
 WHERE 都道府県名 = '東京都';

-- 4. DELETE削除)— WHERE 必須
DELETE FROM 統計表
 WHERE  < 2010;

赤線:UPDATE と DELETE で WHERE を忘れると全行が一発で書き換えられる。 必ず先に SELECT で確認すること。

🐍 Python 実装例

最小コードで動かしてみる例:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
import pandas as pd
import sqlite3

# SQLite で DML を実行
conn = sqlite3.connect('mydata.db')
df = pd.read_csv('data/raw/SSDSE-B-2026.csv', encoding='utf-8', skiprows=1)
df.to_sql('stat_table', conn, if_exists='replace', index=False)

# SELECT を pandas で
result = pd.read_sql('SELECT * FROM stat_table WHERE 高齢化率 > 30', conn)
print(result.head())

⚠️ よくある落とし穴

❌ WHERE 句忘れ
UPDATE 表 SET 列 = 値 だけだと全行が書き換わる。 本番では BEGIN; UPDATE …; -- 確認 ROLLBACK; or COMMIT; の儀式を。
❌ LIKE のワイルドカード
LIKE '%abc%' は両端ワイルドカードで遅い。 インデックスが効かない。
❌ NULL の扱い
= NULL は常に偽。 必ず IS NULL を使う。
❌ 暗黙の型変換
WHERE 文字列カラム = 123 のような比較は予期せぬ結果を生む。
❌ SQL インジェクション
ユーザー入力を文字列連結で SQL に埋め込むと、 任意 SQL を実行されかねない。 必ず プレースホルダを使う。