プログラミング

SQLデータ操作関数完全ガイド

SQL(Structured Query Language)は、データベース管理における標準的な言語であり、データの操作や管理に関する多くの機能を提供しています。データベースの操作は、主にデータの取得、更新、削除、挿入などを含んでいます。これらの操作を効率的に行うために、SQLにはさまざまな「関数(関数群)」が組み込まれています。この記事では、SQLにおけるデータ操作のための関数を完全かつ包括的に解説します。

1. SQLの基本的なデータ操作関数

SQLでは、データベース内のデータを操作するためにさまざまな関数を使用します。これらの関数は、主に「集約関数」、「文字列操作関数」、「日付操作関数」、「数値関数」などに分かれます。それぞれの関数について詳しく見ていきましょう。

1.1 集約関数

集約関数は、複数の行を1つの値にまとめるために使用されます。最も一般的な集約関数には以下のものがあります。

  • COUNT(): 行数をカウントします。NULL値を無視してカウントします。

    sql
    SELECT COUNT(*) FROM employees;
  • SUM(): 数値の合計を求めます。

    sql
    SELECT SUM(salary) FROM employees;
  • AVG(): 数値の平均値を計算します。

    sql
    SELECT AVG(salary) FROM employees;
  • MIN(): 最小値を取得します。

    sql
    SELECT MIN(salary) FROM employees;
  • MAX(): 最大値を取得します。

    sql
    SELECT MAX(salary) FROM employees;

これらの集約関数は、データの要約や集計に非常に便利です。

1.2 文字列操作関数

文字列操作関数は、文字列を操作するために使用されます。文字列の抽出や結合、検索などを行います。

  • CONCAT(): 複数の文字列を結合します。

    sql
    SELECT CONCAT(first_name, ' ', last_name) FROM employees;
  • SUBSTRING(): 文字列の一部を抽出します。

    sql
    SELECT SUBSTRING(name, 1, 5) FROM employees;
  • LENGTH(): 文字列の長さを取得します。

    sql
    SELECT LENGTH(name) FROM employees;
  • UPPER(): 文字列を大文字に変換します。

    sql
    SELECT UPPER(name) FROM employees;
  • LOWER(): 文字列を小文字に変換します。

    sql
    SELECT LOWER(name) FROM employees;
  • TRIM(): 文字列の前後から不要な空白を削除します。

    sql
    SELECT TRIM(name) FROM employees;

これらの関数は、文字列を効率的に操作する際に有用です。

1.3 日付操作関数

SQLでは、日付や時刻を操作するための関数も多く提供されています。これにより、データベース内の日付に基づいた計算や抽出が可能です。

  • CURDATE(): 現在の日付を取得します。

    sql
    SELECT CURDATE();
  • NOW(): 現在の日付と時刻を取得します。

    sql
    SELECT NOW();
  • DATE_ADD(): 指定した日付に指定した期間を加算します。

    sql
    SELECT DATE_ADD('2023-01-01', INTERVAL 10 DAY);
  • DATE_SUB(): 指定した日付から指定した期間を減算します。

    sql
    SELECT DATE_SUB('2023-01-01', INTERVAL 10 DAY);
  • DATEDIFF(): 2つの日付の差を日数で取得します。

    sql
    SELECT DATEDIFF('2023-12-31', '2023-01-01');

これらの日付操作関数を活用することで、期間計算や日付に基づく分析が容易に行えます。

1.4 数値関数

数値関数は、数値データに対する操作を行います。これにより、数値の丸め、絶対値計算、数学的な計算を行うことができます。

  • ABS(): 数値の絶対値を取得します。

    sql
    SELECT ABS(-100);
  • ROUND(): 数値を指定した桁数に丸めます。

    sql
    SELECT ROUND(123.456, 2);
  • FLOOR(): 数値の小数点以下を切り捨てます。

    sql
    SELECT FLOOR(123.456);
  • CEIL(): 数値の小数点以下を切り上げます。

    sql
    SELECT CEIL(123.456);
  • POW(): 指定した数値のべき乗を計算します。

    sql
    SELECT POW(2, 3);

これらの関数を使用することで、数値計算を簡単に実行できます。

2. SQLの高度なデータ操作関数

SQLには、さらに高度なデータ操作関数もあります。これらは、複雑なクエリを作成する際に非常に役立ちます。

2.1 ウィンドウ関数

ウィンドウ関数は、集計を行う際に、集約関数を複数の行に適用することなく、データの「ウィンドウ」を設定して、集計を行う方法です。

  • ROW_NUMBER(): 行に番号を付けます。

    sql
    SELECT ROW_NUMBER() OVER (ORDER BY salary DESC) FROM employees;
  • RANK(): 順位を付けます。順位が同じ場合には次の順位が飛びます。

    sql
    SELECT RANK() OVER (ORDER BY salary DESC) FROM employees;
  • DENSE_RANK(): 順位が同じ場合でも、次の順位は飛ばしません。

    sql
    SELECT DENSE_RANK() OVER (ORDER BY salary DESC) FROM employees;

2.2 正規表現関数

SQLでは、正規表現を用いたパターンマッチングを行う関数も提供されています。

  • REGEXP_LIKE(): 正規表現に一致するかどうかを確認します。

    sql
    SELECT * FROM employees WHERE REGEXP_LIKE(email, '^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$');
  • REGEXP_REPLACE(): 正規表現に一致する部分を置換します。

    sql
    SELECT REGEXP_REPLACE(phone_number, '[^0-9]', '') FROM employees;

3. 結論

SQLのデータ操作関数は、データベースの管理や分析を効率的に行うために欠かせないツールです。集約関数、文字列操作関数、日付操作関数、数値関数などの基本的な関数から、ウィンドウ関数や正規表現関数といった高度な関数まで、さまざまな場面で活用できます。これらの関数を使いこなすことで、データベースの操作や分析が一層簡単かつ効果的に行えるようになります。

Back to top button