MySQL 関数: 文字列、数値、ユーザー定義、ストアド
関数とは何ですか?
MySQL データを保存したり取得したりするだけではありません。 私たちもできます データの操作を実行する 取得または保存する前に。そこです MySQL 関数が登場します。関数は、いくつかの操作を実行して結果を返す単なるコードです。一部の関数はパラメータを受け入れますが、他の関数はパラメータを受け入れません。
例を簡単に見てみましょう MySQL 関数。デフォルトでは、 MySQL 日付データ型は「YYYY-MM-DD」形式で保存されます。アプリケーションを構築し、ユーザーが日付を「DD-MM-YYYY」形式で返したいと仮定すると、次のようになります。 MySQL これを実現するために、組み込み関数 DATE_FORMAT を使用します。 DATE_FORMAT は、最もよく使用される関数の 1 つです。 MySQLレッスンを進めていく中で、さらに詳しく見ていきます。
なぜ関数を使用するのでしょうか?
冒頭で挙げた例に基づいて、コンピューター プログラミングの経験がある人は、「なぜわざわざそんなことをするのか」と思うかもしれません。 MySQL 機能?スクリプト/プログラミング言語でも同じ効果が得られますか?」確かに、アプリケーション プログラムにいくつかのプロシージャ/関数を記述することでそれを実現できます。
冒頭の DATE の例に戻ると、ユーザーが目的の形式でデータを取得するには、ビジネス層が必要な処理を行う必要があります。
これは、アプリケーションを他のシステムと統合する必要がある場合に問題になります。使用するとき MySQL DATE_FORMAT などの関数を使用すると、その機能をデータベースに埋め込むことができ、データを必要とするアプリケーションはデータを必要な形式で取得できます。これ ビジネスロジックの手戻りを減らし、データの不整合を減らします。
使用を検討すべきもう XNUMX つの理由 MySQL この機能は、クライアント/サーバー アプリケーションのネットワーク トラフィックを軽減するのに役立つという事実です。。 ビジネス層は、データを操作する必要がなく、ストアド関数を呼び出すだけで済みます。平均して、関数の使用はシステム全体のパフォーマンスを大幅に向上させるのに役立ちます。
機能の種類
組み込み関数
MySQL 多くの組み込み関数がバンドルされています。組み込み関数は、単にシステムにすでに実装されている関数です。 MySQL サーバー。これらの関数を使用すると、データに対してさまざまな種類の操作を実行できます。組み込み関数は、基本的に、最もよく使用される次のカテゴリに分類できます。
- 文字列関数 – 文字列データ型を操作する
- 数値関数 – 数値データ型を操作する
- 日付関数 – 日付データ型を操作する
- 集計関数 – 上記のすべてのデータ型を操作し、要約された結果セットを生成します。
- その他の機能 – MySQL 他のタイプの組み込み関数もサポートしていますが、レッスンを上記の名前の関数のみに限定します。
ここで、上記の各機能を詳しく見てみましょう。 「Myflixdb」を使ってよく使われる機能を解説していきます。
文字列関数
文字列関数が何を行うかについてはすでに説明しました。 これらを使用した実際の例を見ていきます。 映画テーブルでは、映画のタイトルは小文字と大文字の組み合わせを使用して保存されます。 映画のタイトルを大文字で返すクエリ リストを取得するとします。 それを実現するのが「UCASE」機能です。 文字列をパラメータとして受け取り、すべての文字を大文字に変換します。 以下に示すスクリプトは、「UCASE」機能の使用方法を示しています。
SELECT `movie_id`,`title`, UCASE(`title`) FROM `movies`;
こちら
- UCASE(`title`) は、タイトルをパラメータとして受け取り、それを別名 `upper_case_title` を持つ大文字で返す組み込み関数です。
上記のスクリプトを実行すると、 MySQL Myflixdb に対するワークベンチの結果は、以下に示すとおりです。
movie_id | title | UCASE('title') |
---|---|---|
16 | 67% Guilty | 67% GUILTY |
6 | Angels and Demons | ANGELS AND DEMONS |
4 | Code Name Black | CODE NAME BLACK |
5 | Daddy's Little Girls | DADDY'S LITTLE GIRLS |
7 | Davinci Code | DAVINCI CODE |
2 | Forgetting Sarah Marshal | FORGETTING SARAH MARSHAL |
9 | Honey mooners | HONEY MOONERS |
19 | movie 3 | MOVIE 3 |
1 | Pirates of the Caribean 4 | PIRATES OF THE CARIBEAN 4 |
18 | sample movie | SAMPLE MOVIE |
17 | The Great Dictator | THE GREAT DICTATOR |
3 | X-Men | X-MEN |
MySQL 多くの文字列関数をサポートしています。すべての組み込み文字列関数の完全なリストについては、このリンクを参照してください。 http://dev.mysql.com/doc/refman/5.0/en/string-functions.html on MySQL ウェブサイトをご覧ください。
数値関数
前述のように、これらの関数は数値データ型に対して動作します。SQL ステートメントで数値データに対して数学的計算を実行できます。
算術演算子
MySQL SQL ステートメントで計算を実行するために使用できる次の算術演算子をサポートします。
お名前 | 説明 |
---|---|
DIV | 整数除算 |
/ | ディビジョン |
– | 引き算 |
+ | 追加 |
* | 乗算 |
% または MOD | モジュラス |
それでは、上記の各演算子の例を見てみましょう。
整数除算 (DIV)
SELECT 23 DIV 6 ;
上記のスクリプトを実行すると、次の結果が得られます。
3
除算演算子 (/)
次に、除算演算子の例を見てみましょう。DIV の例を変更します。
SELECT 23 / 6 ;
上記のスクリプトを実行すると、次の結果が得られます。
3.8333
減算演算子 (-)
減算演算子の例を見てみましょう。前の2つの例と同じ値を使用します。
SELECT 23 - 6 ;
上記のスクリプトを実行すると、17 が得られます。
加算演算子 (+)
次に、加算演算子の例を見てみましょう。前の例を変更します。
SELECT 23 + 6 ;
上記のスクリプトを実行すると、29 が得られます。
乗算演算子 (*)
次に、乗算演算子の例を見てみましょう。前の例と同じ値を使用します。
SELECT 23 * 6 AS `multiplication_result`;
上記のスクリプトを実行すると、次の結果が得られます。
乗算の結果 |
---|
138 |
モジュロ演算子 (-)
モジュロ演算子は N を M で割って余りを算出します。では、モジュロ演算子の例を見てみましょう。前の例と同じ値を使用します。
SELECT 23 % 6 ;
OR
SELECT 23 MOD 6 ;
上記のスクリプトを実行すると、5 が得られます。
次に、一般的な数値関数のいくつかを見てみましょう。 MySQL.
床 – この関数は、数値から小数点以下の桁を削除し、最も近い最小の数値に丸めます。以下に示すスクリプトは、その使用方法を示しています。
SELECT FLOOR(23 / 6) AS `floor_result`;
上記のスクリプトを実行すると、次の結果が得られます。
フロア_結果 |
---|
3 |
ラウンド – この関数は、小数点以下の数値を最も近い整数に丸めます。以下に示すスクリプトは、その使用方法を示しています。
SELECT ROUND(23 / 6) AS `round_result`;
上記のスクリプトを実行すると、次の結果が得られます。
ラウンド結果 |
---|
4 |
ボーダー – この関数は乱数を生成するために使用され、その値は関数が呼び出されるたびに変化します。 以下に示すスクリプトは、その使用法を示しています。
SELECT RAND() AS `random_result`;
格納された関数
ストアド関数は、自分で定義する必要があることを除けば、組み込み関数と同じです。 ストアド関数を作成したら、他の関数と同様に SQL ステートメントで使用できます。 ストアド関数を作成するための基本的な構文は次のとおりです。
CREATE FUNCTION sf_name ([parameter(s)]) RETURNS data type DETERMINISTIC STATEMENTS
こちら
- 「CREATE FUNCTION sf_name ([パラメータ])」 は必須であり、伝えます MySQL サーバーにアクセスして、括弧内にオプションのパラメータを定義した `sf_name' という名前の関数を作成します。
- 「RETURNSデータ型」 は必須であり、関数が返すデータ型を指定します。
- 「決定論的」 同じ引数が指定された場合、関数は同じ値を返すことを意味します。
- 「声明」 関数が実行する手続き型コードです。
それでは、組み込み関数を実装する実際の例を見てみましょう。レンタルした映画の返却日を知りたいとします。返却日をパラメータとして受け取り、現在の日付と比較するストアド関数を作成できます。 MySQL サーバ。現在の日付が映画の返却日より前の場合は「No」を返し、それ以外の場合は「Yes」を返します。以下に示すスクリプトは、これを実現するのに役立ちます。
DELIMITER | CREATE FUNCTION sf_past_movie_return_date (return_date DATE) RETURNS VARCHAR(3) DETERMINISTIC BEGIN DECLARE sf_value VARCHAR(3); IF curdate() > return_date THEN SET sf_value = 'Yes'; ELSEIF curdate() <= return_date THEN SET sf_value = 'No'; END IF; RETURN sf_value; END|
上記のスクリプトを実行すると、ストアド関数 `sf_past_movie_return_date` が作成されました。
次に、ストアド関数をテストしてみましょう。
SELECT `movie_id`,`membership_number`,`return_date`,CURDATE() ,sf_past_movie_return_date(`return_date`) FROM `movierentals`;
上記のスクリプトを実行すると、 MySQL myflixdb に対する workbench の結果は次のようになります。
movie_id | membership_number | return_date | CURDATE() | sf_past_movie_return_date('return_date') |
---|---|---|---|---|
1 | 1 | NULL | 04-08-2012 | NULL |
2 | 1 | 25-06-2012 | 04-08-2012 | yes |
2 | 3 | 25-06-2012 | 04-08-2012 | yes |
2 | 2 | 25-06-2012 | 04-08-2012 | yes |
3 | 3 | NULL | 04-08-2012 | NULL |
ユーザー定義関数
MySQL 拡張するユーザー定義関数もサポートしています。 MySQL。ユーザー定義関数は、次のようなプログラミング言語を使用して作成できる関数です。 C, C++ などを追加して MySQL サーバ。追加すると、他の関数と同様に使用できます。
まとめ
- 関数により、次の機能を強化できます。 MySQL.
- 関数は常に値を返し、オプションでパラメータを受け入れることができます。
- 組み込み関数とは、同梱されている関数です。 MySQLこれらは、文字列、日付、数値などの組み込み関数など、操作するデータ型に応じて分類できます。
- ストアド関数はユーザーによって作成されます。 MySQL サーバーに保存され、SQL ステートメントで使用できます。
- ユーザー定義関数は外部で作成されます MySQL に組み込むことができます MySQL サーバー。