2009/04/03

表示の工夫【関数の処理など】

エイリアス(alias)・・・本物を参照するためにユーザーが自由につけた名前。偽名。別名。ニックネーム。

■カラム名をエイリアスにする
SELECT カラム名 AS エイリアス FROM テーブル名;
※複数のカラム名を指定するときは、「,」で区切って「カラム名 AS エイリアス」を付け加えていく

■関数を使って計算する
平均 AVG()
合計 SUM()
個数 COUNT()

結合 CONCAT() ※文字列を直接指定することもできる

など他にもたくさんの関数がある

たとえば
円周率 PI()
のように、テーブルと全く無縁の関数もある
引数は不要の場合も必ず付ける!

・MySQLサーバーのバージョン
SELECT VERSION();

・現在使っているデータベースを表示
SELECT DATABASE();

・現在のユーザーを表示
SELECT USER();

・引数で指定した文字の文字コード(文字セット)を表示
SELECT CHARSET('この文字');

■文字列操作で活躍する関数
・右から取り出す:RIGHT関数
・左から取り出す:LIGHT関数
例) SELECT RIGHT(bang,2) FROM tb;
「bangの右から2文字を表示する」

・X番目から△個取り出す:SUBSTRING関数
例) SELECT SUBSTRING(bang,2,3) FROM tb;
「bangの2文字目から3文字分を表示する」

・繰り返して表示:REPEAT関数
例) SELECT REPEAT(' .' , tosi) FROM tb;
「「.」の文字をtosiの回数だけ繰り返して表示する」

・逆さから表示:REVERSE関数
例) SELECT REVERSE(nama) FROM tb;
「nama(氏名)のデータの文字列を逆さに表示する」

■日付・時刻の関数
NOW関数 現在の日付と時刻の値を返す
DATETIME型に設定してカラムを入力する

■条件を指定した選択
・レコードを決めて表示する
LIMIT関数
SELECT カラム名 FROM テーブル名 LIMIT 表示するレコード数;

・WHEREを使った抽出(条件に一致したレコードだけを取り出す)
SELECT カラム名 FROM テーブル名 WHERE 条件;
※条件には、比較演算子などを使う
[比較演算子]
=  等しい
>  より大きい
>= 以上
<  より小さい
<=  以下
<>  とは異なる
○ IN ×  ×のリスト中に○がある
○ NOT IN ×  ×のリスト中に○がない
○ BETWEEN × AND ××  ×から××の間に○がある
○ NOT BETWEEN × AND ××  ×から××の間に○がない

・文字列を使った条件
WHERE カラム名='文字列'

LIKE:あいまい検索
WHERE LIKE '~'
     「~の文字列を含む」
     NOT LIKE '~'
     「~の文字列を含まない」
[ワイルドカード]
  任意の文字列
_  任意の一文字

・NULLを使った条件
WHERE カラム名 IS NULL
           「カラムがNULLのレコードを抽出」
           IS NOT NULL
           「カラムがNULLでないレコードを抽出」

・重複したデータを省いて抽出
SELECT DISTINCT カラム名 FROM テーブル名;

・複数の条件を指定
AND かつ
OR  または
※ANDが優先して処理される
優先したい処理は()で囲むとよい

CASE WHEN:条件によって入力する値を変化させる
CASE
  WHEN 条件1 THEN 表示する値
  WHEN 条件2 THEN 表示する値
  WHEN 条件3 THEN 表示する値
・・・・・
ELSE すべての条件に当てはまらないときの値
END

・並べ替え
昇順
SELECT カラム名 FROM テーブル名 ORDER BY キーとなるカラム ASC;
降順
SELECT カラム名 FROM テーブル名 ORDER BY キーとなるカラム DESC ;
降順に下から5件だけ表示するとき
SELECT カラム名 FROM テーブル名 ORDER BY キーとなるカラム DESC LIMIT 5;

・表示するレコードの範囲を決める
SELECT カラム名 FROM テーブル名 LIMIT 表示するレコード OFFSET 表示開始レコードのシフト数;
表示開始のレコード数とは、「何個移動したところから表示させるか」を指定する数
(「指定した数の次」個目から表示)

・グループごとに表示
グループとして扱うことで、グループ単位での処理が可能になる
GROUP BY:グループ化
SELECT カラム名 FROM テーブル名 GROUP BY グループ化するカラム名;
指定したカラムの偶然選ばれたレコードが表示される
ただし、処理の対象は同じグループに属するすべてのレコードが対象

・グループごとの数を数える
例) SELECT bang,COUNT(*) AS 件数 FROM tb GROUP BY bang;
・グループごとの合計・平均を表示する
例) SELECT bang,SUM(uria) AS 合計 FROM tb GROUP BY bang;
   SELECT bang,AVG(uria) AS 平均 FROM tb GROUP BY bang;

・グループに分けて条件をつけて取り出す
「グループ化した後で抽出」
SELECT 集計したカラム FROM テーブル名 GROUP BY グループ化するカラム HAVING 条件;
「抽出してからグループ化」
SELECT 集計したカラム FROM テーブル名 WHERE 条件 GROUP BY グループ化するカラム;
「グループ化してから並べ替える」
SELECT 集計したカラム FROM テーブル名 GROUP BY グループ化するカラム ORDER BY キーとなるカラム;
+------------------------------+
 ◆記述順のポイント◆
  ①WHERE条件
      ↓
  ②GROUP BY
      ↓
  ③ORDER BY ○○ (DESC)
+------------------------------+

0 件のコメント:

コメントを投稿