この記事では、例を使用して、MySQL 5.7 で生成された列の使用方法を説明します。ご参考までに、詳細は以下の通りです。 生成された列の値は、列定義の式から計算されます。 MySQL 5.7 は、2 種類の生成列をサポートしています。 1. 仮想生成列: 列の値は、テーブルからレコードが読み取られるときに計算されます。データはハードディスク上に保存されません。 2. 保存された生成列: レコードがテーブルに書き込まれると、列の値が計算され、通常の列としてハードディスク上に保存されます。 したがって、仮想では、保存されているよりもストレージ スペースが少なくて済みます。生成された列の型が指定されていない場合、MySQL 5.7 のデフォルトの生成された列の型は仮想です。 生成された列を定義するための構文は次のとおりです。 col_name data_type [GENERATED ALWAYS] AS (式) [仮想 | 保存済み] [NULL ではない | NULL] [一意の [キー]] [[主] キー] [コメント '文字列'] テーブルを作成し、フィールドの 1 つを生成された列として指定します。 CREATE TABLEテスト( id INT (11) UNSIGNED NOT NULL AUTO_INCREMENT, 中国語 DOUBLE NOT NULL デフォルト '0', 数学 DOUBLE NOT NULL デフォルト '0', 英語 DOUBLE NOT NULL デフォルト '0', total_score DOUBLE AS (中国語 + 数学 + 英語)、 主キー (id) )ENGINE=INNODB デフォルト文字セット=utf8mb4; テーブルにデータを挿入します テスト(中国語、数学、英語)に値(66、72、54)を挿入します。 テストから*を選択します。 生成された列では値を手動で指定することができず、ERROR 3105 が発生することに注意してください。 total_scoreフィールド名をINSERT文に含める場合は、その値をDEFAULTにのみ設定できます。 テスト(中国語、数学、英語、合計スコア)に値(33、44、55、DEFAULT)を挿入します。 テーブルがすでに存在する場合は、alter table ステートメントを使用して、生成された列を作成、変更、または削除できます。 テーブルテストを変更し、times_score列を追加し、常にdoubleを生成します (中国語 * 数学 * 英語) として保存されます。 生成された列のデータ型と式を変更する テーブルを変更してテストし、times_score列を変更して常に生成されるfloat型変数を生成する (中国語 * 数学 * 英語 * 10) として保存されます。 生成された列の名前を変更する テーブルを変更するテストtimes_scoreを変更するtimes_score_new floatは常に生成される (中国語 * 数学 * 英語 * 10) として保存されます。 生成された列を削除する テーブルテストを変更して、times_score_new 列を削除します。 仮想列を保存済みの生成列に変更することはできません。また、その逆も同様です。最初に削除してから再度追加することしかできません テーブルテストを変更して列 total_score を削除します。 テーブルテストを変更して列total_scoreを追加し、常にdoubleを生成します (中国語+数学+英語)として保存されます。 テーブル内の通常のフィールドは、生成された列を格納するように変更できますが、仮想生成された列を格納するように変更することはできません。 テーブルの変更テスト列の変更中国語のダブルが常に生成される (math + 1) として保存されます。 保存された生成列は、生成された値を持つ通常のフィールドに変更できます。 テーブルテストを変更し、列 total_score を double に変更します。 MySQL 関連のコンテンツに興味のある読者は、このサイトの次のトピックをチェックしてください: 「MySQL クエリ スキル」、「MySQL 共通関数の概要」、「MySQL ログ操作スキル」、「MySQL トランザクション操作スキルの概要」、「MySQL ストアド プロシージャ スキル」、および「MySQL データベース ロック関連スキルの概要」 この記事が皆様のMySQLデータベース設計に役立つことを願っています。 以下もご興味があるかもしれません:
|
<<: Ubuntu 20.04でAliソースを変更する方法
序文:金額の保存など、小数点数を保存し、精度要件がある場合、通常は DECIMAL フィールド タイ...
CSS は、スタイル、レイアウト、プレゼンテーションの領域です。色彩、サイズ、アニメーションが溢れて...
序文先ほどのプロジェクトを参考にすると、環境は整いました。プロジェクトの準備と検証の段階で、問題が発...
XHTML には似た機能を持つタグがいくつかあります。もちろん、ここでの類似性とは意味の類似性を指...
目次動作原理:ブラウザは何をするのですか?ホストファイル index.htmlメイン.jsその他のベ...
改訂版のプレビューこの記事は 3 日前に書かれたものです。先輩の同僚から改訂の提案をいくつかいただき...
目次CSS3 ボックスモデルa. CSS3 フィルターb. CSS3 calc関数c. CSS3 ト...
目次レンダリングAPIの変更レンダリング関数のパラメータレンダリング関数のシグネチャの変更VNode...
目次DMLステートメント1. レコードを挿入する2. 記録を更新する3. シンプルなクエリレコード4...
目次MySQLの大文字と小文字の区別はパラメータによって制御されますMySQLの大文字と小文字の区別...
jdk をインストールします: Oracle 公式ダウンロード https://www.oracl...
これまでの数年間、私はいわゆる「設計仕様」についてかなりの数の執筆やコンサルティングを行ってきました...
最近、VMware 仮想マシンで CentOS を試していたのですが、インストール後にインターネット...
Web デザインの理解に関しては、多くの人がまだ Web ページ制作のレベルにとどまっているようで...
1. 単一列インデックスどの列にインデックスを作成するかを選択することは、パフォーマンス最適化プロ...