この記事は「データベーススペシャリスト資格に興味はあるが、どのようなものか?どう学ぶのか?」という方向けに、具体的な内容と私自身の挑戦ログをお伝えする。学び中の方や、これから学ぼうとされる方の参考になれば幸いだ。
今回はSQLによる仮想テーブルの作成(with句の基本)について書く。
※注意点として、SQLはDBMSによって作法が異なる。この記事はGoogle Big Queryに準拠するものであることをお含みおき願いたい。
仮想テーブルとは
前回振り返り
- 前回までで「単一テーブルの操作(列、行、グループ化)」、「複数テーブルの操作(結合、集合演算)」を学んだ。
- 今までは「実態のあるテーブル」を想定してきたが、今回から「仮想テーブル」を扱う操作を学ぶ。
- とくに仮想テーブルは複数テーブルの操作(結合、集合演算)とあわせて使うことが多い。
基本的な考え方
- たとえば、ある魚屋の売上表(日付、商品名、個数)について、1月分(small_jan)と2月分(small_feb)があるとする。
- 以上の2つのテーブルについて、対象列を「product_name」に限定して和集合を取った結果は以下のとおり。
- 結果として1月と2月に販売された、ユニークな、つまり重複を取り除いた商品リストか完成している。
- しかし、今はユニークな商品リストが欲しいわけではなく、ユニークな商品の数をcount(*)で取得したいとする。
- その結果を得るには、「①まずunion distinctのSQLを実行」し、「②その結果テーブルに対してcount(*)のSQLを実行」すればよいことになる。
- ただ、①によるunion distinctの結果テーブルは「実体のあるテーブル」である必要はなく、「仮想のテーブルで良い」。
- つまり、「テーブルの結合・集合処理と、それについての何らかの処理」という2回分のSQLを、1回分のSQLで済ませるため結合・集合したテーブルを仮に置いておくこと。これが仮想テーブルの基本。
仮想テーブルの構文
仮想テーブルの構文
- 仮想テーブルを作成する方法には、「with」句と、「ビュー」そして「サブクエリ」の3つがある。
- 今回は「with」句について学ぶ。
- with句の構文はシンプルで「with 仮想テーブルの名前 as(仮想テーブルを作成するSQL文」のあとに「select フィールド名 from 仮想テーブルの名前」とつなげる。
- 具体例は以下。先ほど例示のある魚屋の1月と2月の販売テーブルについて。
- まず、union distinctを実行し、それを仮想テーブルとして作成する。
- そして、その結果テーブルに対してcount(*)を実行する。
ポイントのまとめ
- with句ではasに続いてSQL文を記述できる
- そのSQL文の実行結果(=仮想テーブル)に名前を付けられる
- from句で仮想テーブルを指定し、別のSQL文を実行できる。
考察
- SQLについて。今まで「単一テーブルの操作(列、行、グループ化)」、「複数テーブルの操作(結合、集合演算)」を学んだ。今までは「実態のあるテーブル」を想定してきたが、今回から「仮想テーブル」を扱う操作を学ぶ。
- SQLについて続き。仮想テーブルを作成する方法には、「with句」「ビュー」「サブクエリ」の3つがある。今回は「with句」の基本を学んだ。これで「SQL文の実行結果(=仮想テーブル)に名前を付け、それに対し別のSQL文を実行する」ことが一つのクエリ(命令)でできるようになる。
- 考察。「IT・AIが生活に浸透するなか、それらを使いこなし、一方で人間特有の能力を磨く」ことについて。数年前はAIに意味や常識の理解は困難とされていたが、2022年4月にGoogleが発表したPaLMの自然言語処理能力はかなり高いようだ。
- 個人的には転移学習という概念に衝撃を受けた。それはかみ砕いて言えば、2~3のプログラミング言語の学びから本質をつかみ、他の言語にも応用するというものだ。つまり知識の汎化だ。実際に触ってぜひ確かめてみたい。
参考書籍
- 集中演習 SQL入門/木田和廣/株式会社インプレス
- データベーススペシャリスト2022年版/三好康之/翔泳社
- おうちで学べるデータベースのきほん/ミック,木村明治/翔泳社
- AI vs 教科書が読めない子どもたち/新井紀子/東洋経済
コメント