SQL(Structured Query Language)は、データベース管理における標準的な言語であり、データの操作や管理に関する多くの機能を提供しています。データベースの操作は、主にデータの取得、更新、削除、挿入などを含んでいます。これらの操作を効率的に行うために、SQLにはさまざまな「関数(関数群)」が組み込まれています。この記事では、SQLにおけるデータ操作のための関数を完全かつ包括的に解説します。
1. SQLの基本的なデータ操作関数
SQLでは、データベース内のデータを操作するためにさまざまな関数を使用します。これらの関数は、主に「集約関数」、「文字列操作関数」、「日付操作関数」、「数値関数」などに分かれます。それぞれの関数について詳しく見ていきましょう。

1.1 集約関数
集約関数は、複数の行を1つの値にまとめるために使用されます。最も一般的な集約関数には以下のものがあります。
-
COUNT(): 行数をカウントします。NULL値を無視してカウントします。
sqlSELECT COUNT(*) FROM employees;
-
SUM(): 数値の合計を求めます。
sqlSELECT SUM(salary) FROM employees;
-
AVG(): 数値の平均値を計算します。
sqlSELECT AVG(salary) FROM employees;
-
MIN(): 最小値を取得します。
sqlSELECT MIN(salary) FROM employees;
-
MAX(): 最大値を取得します。
sqlSELECT MAX(salary) FROM employees;
これらの集約関数は、データの要約や集計に非常に便利です。
1.2 文字列操作関数
文字列操作関数は、文字列を操作するために使用されます。文字列の抽出や結合、検索などを行います。
-
CONCAT(): 複数の文字列を結合します。
sqlSELECT CONCAT(first_name, ' ', last_name) FROM employees;
-
SUBSTRING(): 文字列の一部を抽出します。
sqlSELECT SUBSTRING(name, 1, 5) FROM employees;
-
LENGTH(): 文字列の長さを取得します。
sqlSELECT LENGTH(name) FROM employees;
-
UPPER(): 文字列を大文字に変換します。
sqlSELECT UPPER(name) FROM employees;
-
LOWER(): 文字列を小文字に変換します。
sqlSELECT LOWER(name) FROM employees;
-
TRIM(): 文字列の前後から不要な空白を削除します。
sqlSELECT TRIM(name) FROM employees;
これらの関数は、文字列を効率的に操作する際に有用です。
1.3 日付操作関数
SQLでは、日付や時刻を操作するための関数も多く提供されています。これにより、データベース内の日付に基づいた計算や抽出が可能です。
-
CURDATE(): 現在の日付を取得します。
sqlSELECT CURDATE();
-
NOW(): 現在の日付と時刻を取得します。
sqlSELECT NOW();
-
DATE_ADD(): 指定した日付に指定した期間を加算します。
sqlSELECT DATE_ADD('2023-01-01', INTERVAL 10 DAY);
-
DATE_SUB(): 指定した日付から指定した期間を減算します。
sqlSELECT DATE_SUB('2023-01-01', INTERVAL 10 DAY);
-
DATEDIFF(): 2つの日付の差を日数で取得します。
sqlSELECT DATEDIFF('2023-12-31', '2023-01-01');
これらの日付操作関数を活用することで、期間計算や日付に基づく分析が容易に行えます。
1.4 数値関数
数値関数は、数値データに対する操作を行います。これにより、数値の丸め、絶対値計算、数学的な計算を行うことができます。
-
ABS(): 数値の絶対値を取得します。
sqlSELECT ABS(-100);
-
ROUND(): 数値を指定した桁数に丸めます。
sqlSELECT ROUND(123.456, 2);
-
FLOOR(): 数値の小数点以下を切り捨てます。
sqlSELECT FLOOR(123.456);
-
CEIL(): 数値の小数点以下を切り上げます。
sqlSELECT CEIL(123.456);
-
POW(): 指定した数値のべき乗を計算します。
sqlSELECT POW(2, 3);
これらの関数を使用することで、数値計算を簡単に実行できます。
2. SQLの高度なデータ操作関数
SQLには、さらに高度なデータ操作関数もあります。これらは、複雑なクエリを作成する際に非常に役立ちます。
2.1 ウィンドウ関数
ウィンドウ関数は、集計を行う際に、集約関数を複数の行に適用することなく、データの「ウィンドウ」を設定して、集計を行う方法です。
-
ROW_NUMBER(): 行に番号を付けます。
sqlSELECT ROW_NUMBER() OVER (ORDER BY salary DESC) FROM employees;
-
RANK(): 順位を付けます。順位が同じ場合には次の順位が飛びます。
sqlSELECT RANK() OVER (ORDER BY salary DESC) FROM employees;
-
DENSE_RANK(): 順位が同じ場合でも、次の順位は飛ばしません。
sqlSELECT DENSE_RANK() OVER (ORDER BY salary DESC) FROM employees;
2.2 正規表現関数
SQLでは、正規表現を用いたパターンマッチングを行う関数も提供されています。
-
REGEXP_LIKE(): 正規表現に一致するかどうかを確認します。
sqlSELECT * FROM employees WHERE REGEXP_LIKE(email, '^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$');
-
REGEXP_REPLACE(): 正規表現に一致する部分を置換します。
sqlSELECT REGEXP_REPLACE(phone_number, '[^0-9]', '') FROM employees;
3. 結論
SQLのデータ操作関数は、データベースの管理や分析を効率的に行うために欠かせないツールです。集約関数、文字列操作関数、日付操作関数、数値関数などの基本的な関数から、ウィンドウ関数や正規表現関数といった高度な関数まで、さまざまな場面で活用できます。これらの関数を使いこなすことで、データベースの操作や分析が一層簡単かつ効果的に行えるようになります。