ホームページ >データベース >mysql チュートリアル >MySQL の別の列に基づいて列を自動的に計算するにはどうすればよいですか?

MySQL の別の列に基づいて列を自動的に計算するにはどうすればよいですか?

DDD
DDDオリジナル
2025-01-17 07:51:18737ブラウズ

How Can I Automatically Calculate a Column Based on Another Column in MySQL?

MySQL の別の列に基づいて列を自動的に計算します

データベース プログラミングの世界では、テーブルはデータ ストレージの基礎ですが、場合によっては既存の列から追加情報を取得する必要があります。ここで計算列が登場し、別の列に基づいて値が自動的に更新される新しい列を作成する方法を提供します。

データベース設定

次の形式を考えてみましょう:

<code>id | value
--------------
1     6
2     70</code>

問題の説明

タスクは、「value」列の半分である「calculated」という列を追加することです。この計算列は、「値」列が変更されると自動的に更新されます。

解決策: 列を生成

MySQL 5.7.6 以降では、「生成されたカラム」と呼ばれる機能が導入されています。これらの列を使用すると、ビューと同様に、テーブルの不可欠な部分として、既存の列に基づいた動的な計算が可能になります。

生成される列には 2 つのタイプがあります:

  • 仮想 (デフォルト): テーブルからレコードを読み取るときにその場で計算されます。
  • ストレージ: 新しいレコードがテーブルに挿入または更新されたときに計算されます。

実績

この例では、保存された生成列を使用します。これを追加する SQL ステートメントは次のとおりです:

<code>ALTER TABLE table_name ADD COLUMN calculated AS (value / 2) STORED;</code>

これにより、各行の「value」列の値の半分を含む「calculated」という名前の新しい列が作成されます。

メリットと注意点

列の生成には次の利点があります:

  • 自動更新: ソース列が変更されると計算列が自動的に更新され、値が常に正確になります。
  • インデックス可能: 保存された生成列をインデックスの一部として使用できるため、クエリのパフォーマンスが向上します。
  • NOT NULL 制限: 仮想生成列と格納された生成列の両方に NOT NULL 制限を設定でき、データの整合性を確保できます。

計算列を追加すると、テーブルは次のようになります:

<code>id | value | calculated
-----------------------
1     6       3
2     70      35</code>

結論

生成列は、計算列をテーブルに追加する強力な方法を提供します。 「stored」オプションを利用すると、計算列が自動的に更新され、インデックスを作成できるようになり、データ管理の柔軟性と効率が向上します。

以上がMySQL の別の列に基づいて列を自動的に計算するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。