世の中ではIoT(Internet of Things)と言うバズワードが飛び交っていますが、要はモノがインターネットに繋がる事によって、膨大なデータがインターネットに吸い込まれ、それをAIなどが活用する事により益々便利な世の中になっていく事が期待されている訳です。
その膨大なデータ = ビッグデータを扱う為の言語の一つが今回のテーマであるSQLなのです。
それではそのSQLに関して学んだ事を初心者の方にもわかり易くまとめていきたいと思います。
SQLとは何の略称?
最初このSQL(エスキューエル)は何かの略かと思っていたのですが、何と略称では無くSQLと言う名前なのですね、単純に。
元々はIBMが開発したSEQUEL(Structured English Query Language)と言う言語が、今のSQLと呼ばれるものに進化し続けているのです。
響きを継承させた訳ですね。
SQLとは何?
SQLはデータベースを操る言語の一つですが、ISO(International Organization for Standardization:国際標準化機構)により標準化されている事も手伝い、世界中で最も使われている業界標準のデータベース言語となっています。
だからSQLを使いこなせれば、その他のデータベースも簡単に理解出来る様になるのです。
SQLで何が出来るのか?
データベースとはデータの集合体ですが、それらに対してSQLは下記の3つが出来ます。
- データベース内の操作 データベース内を検索したり、データを更新・追加・削除する
- データベース内の定義
- データベース内の制御 権限を与えたり、トランザクションを実行したりする
具体的にSQLでデータを抽出するクエリはどう書くのか?
実はここからが今回の本題、学んだ事の備忘録です。
基本中の基本からデータを抽出するにはどの様に入力するかの初歩まで、下記にまとめてみました。
- 一つのデータベースをテーブルと呼ぶ
- テーブルの縦の列をカラムと呼ぶ
- テーブルの一行目にはカラム名が並び、二行目以降の横の行がデータとなる
- データベースに送る命令をクエリと呼び、最後は;(セミコロン)で締めくくる
- データの種類となるデータ型にはテキスト、日付、数値などが有る カラム毎にデータ型が決められる
- SELECT:情報が欲しいテーブル内のカラム名を指定する カラムを全て指定する場合は*(アスタリスク)
- FROM:情報が欲しいテーブル名を指定する
- WHERE:情報が欲しいデータの条件を指定する 条件がテキストや日付の場合はクォーテーション(シングルでもダブルでも可)で囲む
- ORDER BY:データを並び替える 並び替えの基準としたいカラム名、そして昇順であればASC、降順であればDESCとする
- LIMIT:欲しいデータの件数を指定する
カラムを複数指定する場合は,(カンマ)で区切る
等しい条件であればカラム名と条件を=(イコール)で結び、数値や日付などで以上の場合は>=、以下の場合は<=で結ぶ
◯◯を含むなどの場合はカラム名と条件をLIKEで結ぶ、前方一致の場合はワイルドカードである%を後ろに付け〇〇%、後方一致は%◯◯、含まれれば良い場合は%◯◯%とする
否定の場合はWHEREに続けてNOT、カラム名..と言う順番となる
NULLを指定する場合は、WHERE、カラム名IS NULLとして=で結ばない, 否定の場合はWHERE、カラム名IS NOT NULLとする
複数の条件が有る場合、複数を満たす場合は条件をANDで結び、どれらも満たす場合はORで結ぶ
例題とSQLでのデータ抽出初歩のまとめ
2018年までのサンプルを除いた売れ筋トップ100を抽出したいと考えています。
具体的には下記の条件を満たすデータを抽出して下さい
- ◯◯◯と言うテーブル内のデータ
- カラム名がdateとなっている日付データが2019年よりも前のデータ(2019年を含まず)
- カラム名がITEMと言うカラムにサンプルと言うテキストが含まれない
- カラム名がsalesと言うカラムが基準で降順になる様に
- データ数は100
解答例!
SELECT * FROM ◯◯◯ WHERE date <= "2018-12-31" AND ITEM like "%サンプル%" ORDER BY sales DESC LIMIT 100;
どうでしょうか?
既にデータベースを扱っている方は気付かれたかもしれませんが、未だこのままでは同じ商品名のデータが別カウントされてしまうので、売れ筋商品ベスト100と言う感じにはなりません。
SQLには未だ未だデータを加工する為に、重複を除く、グループでまとめる、合計するなどが出来るのです。
また後日にまとめていきたいと思います。