SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

EnterpriseZine(エンタープライズジン)編集部では、情報システム担当、セキュリティ担当の方々向けに、EnterpriseZine Day、Security Online Day、DataTechという、3つのイベントを開催しております。それぞれ編集部独自の切り口で、業界トレンドや最新事例を網羅。最新の動向を知ることができる場として、好評を得ています。

直近開催のイベントはこちら!

EnterpriseZine Day 2022

2022年6月28日(火)13:10

EnterpriseZine(エンタープライズジン)編集部では、情報システム担当、セキュリティ担当の方々向けの講座「EnterpriseZine Academy」や、すべてのITパーソンに向けた「新エバンジェリスト養成講座」などの講座を企画しています。EnterpriseZine編集部ならではの切り口・企画・講師セレクトで、明日を担うIT人材の育成をミッションに展開しております。

お申し込み受付中!

MySQL事始

MySQL事始 SQL文(3) 代表的なSQL関数


今回はMySQLの代表的なSQL関数を6つのカテゴリに分けて解説します。

代表的なSQL関数

SQL文内で関数を利用する書式は以下の通りです。関数によっては引数が無いものや複数あるものなど様々です。

関数名([引数, [引数, ... ]])
数値関数

整数や小数などの数値を演算するための関数です。MySQLには一般的な数値演算に必要となる関数は用意されています。

四則演算関連 +, -, *, /, DIV,  %, MOD, POW, POWER, SQRT
ビット演算 &, <<, >>, BIT_COUNT, ^, |, ~
四捨五入関連 CEIL, CEILING, FLOOR, TRUNCATE
絶対値関連 ABS, SIGN
三角関数関連 SIN, COS, COT, TAN, ACOS, ASIN, ATAN, ATAN2, DEGREES, RADIANS, PI
その他        CRC32, EXP, LN, LOG, LOG10, LOG2, OCT

11.4.1.算術演算子
11.4.2.数学関数

文字関数

MySQLには様々な文字列を操作する関数が用意されています。例えばCASTは文字列を数値型など他のデータ型に、LCASEUCASEはそれぞれアルファベットを全て小文字と大文字に変換する関数です。他にも指定した文字数を左側と右側から取得するLEFTRIGHT、文字列の長さを取得するLENGTH、文字列を連結するCONCATなども使用頻度が高い関数です。

11.3.文字列関数

日時関数

日付や時刻に関する関数です。NOWなど現在の日時を取得する関数や、日時の値から年YEAR、月MONTH、日DAY、時TIME、分MINUTE、秒SECOND、ミリ秒MICROSECONDを取得する各関数などが利用できます。他にもその年の何日目にあたるかを調べるDAYOFYEARもあります。また、日付や時刻の表示形式を変換するDATE_FORMATTIME_FORMATも便利な関数です。

11.5. 日付時刻関数

フロー制御関数

プログラム言語におけるIFCASEと同様に、IFCASEの各関数を使用することで条件によって返す値を変えることができます。特殊なパターンはNULLが関連する場合で、値がNULLかそうでないかで返す値を変更するIFNULLと、与えられた条件式が真の場合にNULLを返すNULLIFがあります。

11.2. 制御フロー関数

暗号化関数

MySQLはデータを暗号化して格納できますが、アプリケーションが明示的にMySQLの暗号化関数を使用してデータを暗号化する必要があります。
AESまたはDESでデータを暗号化するAES_ENCRYPTDES_ENCRYPTが利用可能で、それぞれに対応した復号化関数AES_DECRYPTDES_DECRYPTが用意されています。 MySQLサーバがユーザのパスワードを管理する際の暗号化の処理はPASSWORD関数で利用できますが。ただしPASSWORDで暗号化した値は復号化する関数がありません。

暗号化とは直接関連しませんが、データのハッシュ値を求める関数は以下の3種類用意されています。

関数 アルゴリズム
MD5 MD5 128-bit
SHA1 SHA-1 160-bit
SHA2 SHA-2 (ビット数は明示的に指定)

また、データを圧縮および展開するCOMPRESSおよびUNCOMPRESSも利用可能です。

11.10.2. 暗号化関数と圧縮関数

その他の関数

上記の各カテゴリに当てはまらない関数も多数あります。

関数 詳細
UUID 実行するたびに一意なUUID(汎用一意識別子)を生成する
SLEEP 指定した秒数処理を停止する
BENCHMARK 指定した処理を指定した回数繰り返す

他に、現在接続しているユーザがログイン時に指定したアカウント名を表示するUSER(SESSION_USERとSYSTEM_USERUSERと同じ)と、接続しているユーザの認証時にサーバが使用したアカウント名を表示するCURRENT_USERもあります。これらの関数についてはMySQLのセキュリティに関する回で解説予定です。

次のページ
コラム:ネットにつながずにマニュアルを見る

この記事は参考になりましたか?

  • Facebook
  • Twitter
  • Pocket
  • note
MySQL事始連載記事一覧

もっと読む

この記事の著者

梶山隆輔(カジヤマリュウスケ)

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

EnterpriseZine(エンタープライズジン)
https://enterprisezine.jp/article/detail/3398 2012/07/09 16:44

Job Board

PR

おすすめ

アクセスランキング

アクセスランキング

イベント

EnterpriseZine(エンタープライズジン)編集部では、情報システム担当、セキュリティ担当の方々向けに、EnterpriseZine Day、Security Online Day、DataTechという、3つのイベントを開催しております。それぞれ編集部独自の切り口で、業界トレンドや最新事例を網羅。最新の動向を知ることができる場として、好評を得ています。

2022年6月28日(火)13:10

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング