データベース初心者必見!入門編その3〜算術演算と関数を用いたSQL〜
2015/07/06
はじめに
引き続きデータの問い合わせに関するSQLを紹介いたします。その中でも算術演算と関数を用いた問い合わせ方法について紹介したいと思います。
データの検索(SELECT文)
関数を使用する問い合わせ
SQLでは関数を使用することができます。関数は引数と戻り値を持ち、適切に使用することで、それに応じた戻り値を得ることができる便利なものです。
例として、現在の日付と時刻を取得する関数を使用してみます。現在の日付と時刻を取得するには、CURRENT_TIMESTAMP()関数を用います。
[text]SELECT CURRENT_TIMESTAMP() FROM dual[/text]
実行結果
実行結果に現在の日付と時刻が表示されています。
CURRENT_TIMESTAMP()関数は引数を持ちませんので、()の中には何も記述していません。
引数を持つ関数を使用する場合には()内に引数を記述します。引数の区切りには「,」を記述します。
また今回の例でFROM句で指定したdualテーブルは、MYSQLの備えられている仮想的なテーブルです。関数の機能を確認するなど、簡易的にSQLを発行したい場合に使用すると便利です。
引数を持つ関数をひとつ使ってみましょう。
文字列の文字数を取得するにはCHAR_LENGTH()関数を使用します。
[text]SELECT gds_name,CHAR_LENGTH(gds_name) gds_nameの文字数 FROM goods[/text]
実行結果
CHAR_LENGTH関数は文字列を引数に取ります。
今回はgoodsテーブルのgoods_name列の値(文字列)を引数として記述しました。
実行結果を見ると、各行に対して文字数が計算されて表示されています。
関数はRDBMSによって、使用できるものが大きく異なります。
すべてのRDBMSで同じ関数が使用できるわけではないので注意してください。以下にMySQLで使用することができる主な関数を掲載します。
関数 | 説明 |
CURRENT_TIMESTAMP() |
現在の日付と時刻を返す 例)CURRENT_TIMESTAMP() → “2015-07-06 16:30:30” |
CURRENT_TIME() |
現在の時刻を返す 例)CURRENT_TIME() → “16:30:30” |
CURRENT_DATE() |
現在の日付を返す 例)CURRENT_DATE() → “2015-07-06” |
YEAR(n) |
nに指定された日付の年を返す 例)YEAR(“2015-07-06”) → “2015” |
MONTH(n) |
nに指定された日付の月を返す 例)MONTH(“2015-07-06”) → “07” |
ADDDATE(n,INTERVAL a time) |
nに指定された日付にaを足した日付を求める aの単位はtimeで指定する 例)ADDDATE(“2015-07-06”,INTERVAL 1DAY) → “2015-07-07” |
SUBDATE(n,INTERVAL a time) |
nに指定された日付にaを引いた日付を求める aの単位はtimeで指定する 例)SUBDATE(“2015-07-06”,INTERVAL 1DAY) → “2015-07-05” |
LENGTH(n) | nに指定された文字列のバイト数を返す |
CHAR_LENGTH(n) | nに指定された文字列の文字数を返す |
PASSWORD(n) | nに指定された文字列を暗号化して返す |
CEIL(n) | nに指定された数値以下で最大の整数を返す |
FLOOR() | nに指定された数値以上で最小の整数を返す |
SELECT文による算術演算子と別列名
SELECT文では、算術演算子を行って結果を表示することができます。次のSQL文を入力し、実行して下さい。
[text]SELECT gds_name,gds_price,gds_price*1.05 FROM goods[/text]
実行結果
今回の演算子では、一番右の列でgds_priceに1.05を掛け合わせた結果が表示されています。演算子「*」を使って実現しました。算術演算子には次のようなものがあります。
先ほどのSQLでは、SELECT文では掛け算をした結果を表示しましたが、その場合の結果セットの列見出しは「gds_price*1.05」と少し長くなってしましました。
このような場合には別列名を付けることができます。別列名とは、結果セットの各列に与ええることのできる列の別名です。
使い方は、別列名をつけたい列名の後ろにスペースを開けて「AS 列別名」とします。実際に入力してみましょう。
[text]SELECT gds_name,gds_price,gds_price*1.05 AS 税込価格 FROM goods [/text]
実行結果
別列名を指定することによって、結果セットの列見出しの表示を変えることが出来ました。また、別列名がSQLキーワード(SELECT, FROM等)を含む場合には、別列名の文字列をシングルクォーテーション「’」か、ダブルクオーテーション「”」のどちらかで囲みます。
さいごに
今回は、算術演算と別列名、そして関数を用いたSQLでの問い合わせを紹介いたしました。 次回は、条件に一致するデータだけを問い合わせる方法について紹介したいと思います!