株式会社pipon代表取締役。キャリアはADK(広告代理店)でテレビ広告運用をして残業120時間するが、ネット広告では自分の業務がAIで自動化されていることに驚愕する。EC業界、様々な業界でAI受託開発事業を運営。文字数:8100(読み終わるまでおよそ13分)この記事でわかることSQLにおけるデータの取得方法SQLにおけるデータ取得の基本的な文法はじめにSQL(エスキューエル)とは、データベースに存在するデータを好きなように条件を指定して抽出したりするためのプログラム言語です。SQLは国際標準化されていますので、「MySQL」や「PostgreSQL」など、扱うデータベースの種類が変わったとしても、一度文法を覚えてしまえば、同じように操作することが可能です。SQLはどのシステム開発、アプリ開発においても必須となる言語ですので、データをうまく扱いたい方は、ぜひこの機会にマスターしてみてください。データベース(DB)とは?「データベース」とは、『様々な情報が属性ごとに整理されているデータの集合体』です。「住所録データベース」から任意の名前を指定して検索すると、その人の住んでるところを始め、様々な個人情報を取得することができます。これは、名前という情報に様々な他情報が紐づいているからです。このようなデータベースを構築するにはデータベース製品と呼ばれるミドルウェアを利用するのが一般的です。オープンソースの「MySQL」や「PostgreSQL」から、商用の「Oracle」、「SQLserver」などがあります。SQLでできることとは?大きく分けて4つです。任意の条件を指定し、望んだデータのみを取得する抽出(検索)は、SQLのキモとなる部分です。更新、削除を行うさいにも抽出を利用し、「ある特定のデータに対し更新、削除をする」という場合が多いです。最初に覚えるべきは『データの取得』の方法であります。このページでは、データ取得の基本的な文法を網羅していますので、ぜひ覚えてみてください。1.基本的なデータの取得方法(SELECT、FROMについて)kamachiさんによる写真ACからの写真ここではデータベースからデータを取得し、欲しい情報を表示する方法を説明します。SQLの文法として、「SELECT」、「FROM」の2つはすごく基本的な構成句となります。これらを組み合わせるだけで、最低限のSQL文は書けますのでぜひ覚えていきましょう。30上記の「社員情報テーブル」があらかじめデータベースに登録されているとします。このテーブルから、必要なデータを取得していきましょう。SELECT、FROMを使ってデータを取得するSQLの文法には当然ですが記述ルールがあり、SELECTの後ろには対象となるカラム名(列名)を書かなくてはいけなく、そして、FROM句の後ろには対象とするテーブル名を書かなくてはいけない、などがあります。社員情報テーブル;と記述します。このSQLを実行した場合、返却されるデータは下記の通りです。返却されるデータ社員番号000100020003000400051複数のカラムからデータを取得する方法もちろん、複数のカラムからデータを取得することもできます。社員番号と所属部署のカラムからデータを取得したい場合、下記のように記述します。社員情報テーブル;複数のカラムは「,」(カンマ)で区切ります。下記のデータが返却されます。全てのカラムを取得したい場合、いちいち全てのカラムを「,」で区切るのは面倒ですよね。その場合、下記のように記述すれば一括で全カラムを取得できます。社員情報テーブル;SELECT句のうしろに「*」(アスタリスク)を書けば、全てのカラムを取得できます。302.特定のデータを指定してデータを抽出する方法(WHERE、演算子について)シルバーブレットさんによる写真ACからの写真ここでは、ある特定の条件を付与してそれに該当するデータのみを抽出する方法を説明していきます。「WHERE」という構成句と、バリエーション豊かな演算子を用いれば任意のデータを取得できますので、覚えていきましょう。18「社員情報テーブル」があらかじめデータベースに登録されているとします。補足事項として、このテーブルには「NULL」という値が登録されています。これは、SQLにおいて「データが存在しない」という意味になります。空文字や空白とは別の解釈となりますので、ご注意ください。比較演算子について比較演算子とはWHERE句とセットで使うことの多い演算子です。「企画部門の社員だけを抽出したい」、「年齢が30以上の社員だけを抽出したい」というように、任意の条件を付与することができます。等しくないWHERE句以降の文法は下記のような構成になります。条件値;では、実際に比較演算子を使ってデータを取得していきます。ワイルドカード検索(LIKE演算子について)SQLではワイルドカード検索も行えます。ワイルドカード検索とは、「文字列の始めが〇〇と一致する」、「文字列に△△が含まれている」などの部分的な一致を目的とした検索のことです。「LIKE」演算子と、「%」(パーセント)を検索する文字列に付与することにより、実現できます。NOT演算子についてここまでいくつか演算子について説明してきましたが、それらの前に「NOT」を付与することにより、「~~ではない」という否定の意味を持つことができます。NOT演算子とよばれ、指定した条件式を否定するときに使用します。ついて)前述しましたが、テーブルのデータには「NULL」という「データが存在しない」といった意味をもつものが存在します。そのNULLデータを取得したい、または抽出から省きたい場合の方法をここでは説明していきます。AND演算子について複数の検索条件を「AND」でつなげることにより、「〇〇〇かつ、△△△」という条件で抽出した結果を得ることができます。OR演算子について複数の検索条件を「OR」でつなげることにより、「〇〇〇または、△△△」という条件で抽出した結果を得ることができます。BY」という構成句を使います。「ASC」を付与することにより昇順、「DESC」を付与することにより降順となります。年齢;※昇順降順の条件を付与しない場合、昇順と同じ動きをします。100行のデータが取得できたとして、「先頭の50行だけを表示してほしい」という場合には、「LIMIT」という構成句を使用します。LIMIT句は最大取得行数を制御する役割を持ちます。取得したデータのなかに同じ文字列の、重複したデータが存在する場合があります。それらの重複データを1つにまとめたいときは「DISTINCT」という構成句を使います。ヒロシ山田誠3人いた「鈴木一郎」、2人いた「佐藤太郎」が1つにまとまった形で返却されます。6.集計関数の扱い方(SUM、AVG、COUNT、MAX、MINについて)photoBさんによる写真ACからの写真ここではSQLにおける集計関数の説明をしていきます。取得したデータの合計を表示する「SUM関数」や平均値を算出する「AVG関数」などがあります。1つ1つ説明していきます。SUM関数についてSUM関数を使用することで、列の値の合計値を求めることができます。AVG関数についてAVG関数を使用することで、列の値の平均値を求めることができます。COUNT関数についてCOUNT関数を使用することで、NULL以外の値の行数を調べることができます。MAX関数についてMAX関数を使用することで、列の値の最大値を調べることができます。MIN関数についてMIN関数を使用することで、列の値の最小値を調べることができます。BY、HAVINGについて)toraemonさんによる写真ACからの写真ここで説明するグループ化という方法は、主に前述した集計関数とともに使用されます。指定したカラムの同じデータをグループ化し、別のカラムの合計値、平均値などを表示するのが主な使い方です。下記に詳しい書き方を説明していきますので、見ていきましょう。BYのうしろに記述したカラムを、同じデータごとにグループ化することができます。BYとAVG関数を組み合わせると取得することができます。HAVINGについてHAVINGとは、グループ化されたデータを絞り込むための構成句です。前述したWHERE句と似ていますが、WHERE句はグループ化される前のテーブル全体を検索対象としますが、HAVING句はグループ化した後のデータを検索対象とします。「各所属部署に配属されている社員それぞれの平均年齢を算出し、さらに平均年齢が29以上を絞り込みたい」というときに使用します。297.おわりにいかがだったでしょうか。これまでに説明してきたSQLの文法は基本的なものです。これらの知識を組み合わせることにより、ある程度複雑な式も構成できますので、ぜひ色々と試してみてください。