SELECTはテーブルからレコードを抽出するための命令文で、SQL命令文の中で最も使用頻度が高く、数多くのキーワードが用意されています。今回は、その中でも特に重要なGROUP BY、ORDER BY、WHEREについて説明します。
SELECT-WHERE
XAMPPの起動
ApacheとMySQLの起動
MySQLを使うためには、Apacheも必要となりますので、両方起動します。
MySQLのAdminの起動
Adminをクリックすると、phpMyAdminというツールが開きます。このphpMyAdminを通してMySQL(MariaDB)にアクセスすることとなります。
特定レコードの選択
データベース(jinji)の選択
テーブル(staff_list)の選択
SQL構文の入力
「表示」タブでSQLが表示されていますので、これを変更します。
注意:
「SQL」タブをクリックして、テキストエリアで入力しますが、「インラインを編集する」をクリックして直接編集もできます。
①id=2のレコードのみを取り出します。
※検索の対象となっているカラムにはオレンジ色の枠が付きます。
②年齢≧36の方のみを取り出してみます。
③「看護師」の方のみを抜き出してみます。
④前方一致検索
前から゛介護゛という文字列が一致したレコードを抜き出してみます。
⑤後方一致検索
後ろから゛福祉士゛という文字列が一致したレコードを抜き出してみます。
⑥複数条件の指定
年齢≦36で、゛ヘルパー゛という文字列と一致した方を抜き出してみます。
SELECT-GROUP BY
業務で良く利用する「集計」について説明します。例えば、一日の売上合計や商品別の売上実績等いろいろな集計が行われています。ここでは、介護施設として、どのスタッフが、何人利用者を集めたかの集客履歴をとっていくとします。そのため、「syukyaku」というテーブルを作成して、「syukyaku」テーブルを使って、「GROUP BY」を説明します。現在のスタッフは、以下の4名とします。
XAMPPの起動
ApacheとMySQLの起動
MySQLを使うためには、Apacheも必要となりますので、両方起動します。
MySQLのAdminの起動
Adminをクリックすると、phpMyAdminというツールが開きます。このphpMyAdminを通してMySQL(MariaDB)にアクセスすることとなります。
テーブルの作成
データベース「jinji」をクリックして、syukyakuという名前のテーブルを作成します。
テーブル名、カラム数の入力
カラム数=3の「syukaku」という名前のテーブルを作成します。
カラム名、データ型の選択
「保存する」をクリックします。
このsyukyakuというテーブルでは、どのスタッフが何人集客したかを記録していくものとなります。
データの挿入
それでは、データを入れていきますが、折角なのでSQLを使ってデータを入れていきます。次のように入力します。
SQL構文の入力
「表示」タブのクリック
リレーションを貼る
データの集計
SUM(count)
それでは、syukyakuの中の数字、全体でどのくらい集客できたのか?を見ると
全体では、集客は、7名でした。
GROUP BY
全体の合計ではなく、スタッフ毎の合計を出したい時は、GROUP BY句を使います。
※GROUP BY句を使う場合は、GROUP BY句で指定したカラムがSELECTの中にも入っていないと正しく動作しませんので注意が必要です。
item_idではわかりにくい場合は、リレーションを貼ると
LEFTJOIN、RIGHTJOIN
GROUP BY句で、スタッフ毎の集客数を集計することができました。が、この集計では’紀貫之さんの実績は、どこにも表示されていません。実績がなくても紀貫之さんの実績は0として表示したいという場合があります。
内部結合
カンマ(,)で区切ってテーブルを並べる方法を「内部結合」と言い、2つのテーブルを比較して、結合条件に一致したレコードだけを返します。従ってどちらかのテーブルにデータがなければ返しません。
注意:JOIN、カンマ( , )、INNER JOINはどれも意味は同じです。
外部結合
外部結合には、LEFT JOINとRIGHT JOINがあります。JOINの前に記述したテーブルを左、JOINの後に記述したテーブルを右として、LEFT JOINは左側のテーブルが結合条件に一致しなくてもレコードを返し、RIGHTJOINは右側のテーブルが結合条件に一致しなくてもレコードを返します。全部のデータを見たいテーブル(staff_list)を先に書き、LEFT JOIN ONと書き、その後にリレーションを記述します。
SQL構文の入力
これで、紀貫之さんが表示されました。
SELECT-ORDER BY
XAMPPの起動
ApacheとMySQLの起動
MySQLを使うためには、Apacheも必要となりますので、両方起動します。
MySQLのAdminの起動
Adminをクリックすると、phpMyAdminというツールが開きます。このphpMyAdminを通してMySQL(MariaDB)にアクセスすることとなります。
レコードの並び替え
データベース(jinji)の選択
テーブル(staff_list)の選択
SQL構文の入力
「インラインを編集する。」をクリックして、SQLを発行します。
idの若い順に並んでいるように見えますが、実際は登録の順ですので、これをidの昇順に並び替えます。
①idの昇順に並び替え
見た目はかわりませんが、今回は確実にid順に並んでいます。ORDER BYは並び順を指定するという意味で、ASCはAscending(アセンディング)の略で、英語で上昇という意味がありますが、ここでは「昇順」という意味となります。Ascendingの反対がDescendingといい「降順」となります。(DESC)ORDER BYはデフォルトはASCですので、実際はASCを省略することができます。
例:SELECT * FROM staff_list ORDER BY id
②idの降順に並び替え
③WHERE句と組み合わせる
年齢≧36の者を年齢の若い順に並べます。
注意:WHERE句が先で、ORDER BY句が後となりますので注意が必要です。
留意:
並び替えで、textの場合、ひらがな→カタカナ→漢字となるため、ふりがな順にならない場合があります。例えば、コンピーターは漢字は漢字コード順に並ぶだけで、ふりがなは読めません。そこで、フリガナというカラムを1つ追加して、フリガナを入力しておくと、そのフリカナで並び替えることができます。