本ページは DML(データ操作言語)(Data Manipulation Language)を多角的に解説します。 上のチップは、 検索・関連語の手がかりです。
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、 カテゴリ:データエンジニアリング。
具体的な 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 で確認すること。
最小コードで動かしてみる例:
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()) |
UPDATE 表 SET 列 = 値 だけだと全行が書き換わる。 本番では BEGIN; UPDATE …; -- 確認 ROLLBACK; or COMMIT; の儀式を。LIKE '%abc%' は両端ワイルドカードで遅い。 インデックスが効かない。= NULL は常に偽。 必ず IS NULL を使う。WHERE 文字列カラム = 123 のような比較は予期せぬ結果を生む。