今回は、SQL文の基本「SELECT」について説明します。
データベースはデータを格納する基地のようなものですが、格納したデータは放置して眠らせておく訳ではありません。
そもそもデータを格納するのは、参照したり、活用したりすることが目的であり、データベースの存在価値でもあります。必然的に、データを抽出・参照するSELECT文は、基本かつ使用頻度が最も高いSQL文となります。
この記事では、SQLのSELECT文を使ってテーブルのデータを抽出する方法と併せて、MySQLやPostgreSQLの実画像を用いてSELECT文の基本的な使い方を説明します。
SQL_データの抽出(SELECT文)
この章では、すでにRDBMSに登録されているテーブルのデータを、SELECT文で抽出する方法を説明します。
テーブルのデータは下記の通りです(ここでは、便宜上、csv形式にしています)。
基本のSELECT文
テーブルからデータを抽出するときには、[SELECT]というSQL文を実行します。
SELECT文の基本文法には、データを抽出する対象の「列名」と「テーブル名」の指定が必要です。
基本文法
–1列のみを抽出する
SELECT 列名 FROM テーブル名;
–複数列を抽出する
SELECT 列名1,列名2,列名3 FROM テーブル名;
–すべての列を抽出する
SELECT * FROM テーブル名;
実際のSELECT文
下記のテーブルから、[name]列の情報を抽出してみます。
SQL[SELECT文]
SELECT name FROM Worker;
実行結果
name
青柳 森勝
田代 春実
菅野 兼一
関根 和茂
三上 智治
福永 梨絵
複数列を抽出するSELECT文
次に、[id][name][gender]の3列の情報を抽出してみます。
SQL[SELECT文]
SELECT id,name,gender FROM Worker;
実行結果
id name gender
10040 青柳 森勝 1
10041 田代 春実 2
10042 菅野 兼一 1
10043 関根 和茂 1
10044 三上 智治 1
10045 福永 梨絵 2
実行結果の列の並びは、SELECT文で指定した順番に基づきます(id,name,gender)。データベースに登録されているテーブルの列の並びは影響しません。
すべての列を抽出するSELECT文
最後に、テーブルに登録されているすべての列の情報を抽出してみます。すべての列を抽出する場合には、ひとつひとつの列名の記述は不要で、「*」(アスタリスク)で代用します。
この場合、実行結果の列の並びは、テーブルの列の並びに基づきます。
SQL[SELECT文]
SELECT * FROM Worker;
実行結果
以上が、テーブルからデータを抽出するSQL文「SELECT」の基本的な使い方です。
抽出結果の列に名前をつける(AS)
前節で説明した方法でテーブルからデータを抽出した場合、抽出結果の列名が分かり辛いという問題が発生します。
これは、SQLの命名規則上、テーブルや列名に日本語(全角文字)が使えないことに起因するのですが、SQLの「AS」というキーワードをSELECT文に組み合わせることによって、解決することができます。
ASキーワード
ASキーワードは、SELECT文によって抽出した結果に対してのみ、列名を変更することができます。
ASを使ってもデータベースの列名には影響しません。
ASの基本文法
SELECT 列名 AS “変更後の列名“ FROM テーブル名;
通常、テーブル名や列名に日本語を使うことはできませんが、ASは抽出結果の列名を変更するキーワードのため、日本語を使うことも可能です。列名を日本語にする場合は、上記のように「”」(ダブルクォーテーション)を使います。
ASの実例文
下記のテーブルから、[name]列の列名を「名前」に変更して抽出してみます。
SQL[SELECT文]
SELECT name AS "名前" FROM Worker;
実行結果
名前
青柳 森勝
田代 春実
菅野 兼一
関根 和茂
三上 智治
福永 梨絵
ASは、複数列の抽出をする場合でも、それぞれの列名に対して使うことができます。
SELECT id AS "社員番号",
name AS "名前",
gender AS "性別"
FROM Worker;
実例_MySQLのSELECT
実際のRDBMS、MySQLでSELECT文を実行してテーブルからデータを抽出した実画像を紹介します。
すべての列を抽出
指定の列を抽出
ASを使った例
実例_PostgreSQLのSELECT
実際のRDBMS、PostgreSQLでSELECT文を実行してテーブルからデータを抽出した実画像を紹介します。
すべての列を抽出
指定の列を抽出
ASを使った例
あとがき~SELECTの応用について
今回は、SQL文の基本、データを抽出するための「SELECT」について記事にしました。
範囲は、SELECT文の基本的な文法と使い方に限定しましたが、実際にデータベースからデータを抽出するときには、条件指定をせずに抽出する機会は多くありません。
たとえば、Excelの表をイメージしてもご理解いただけると思うのですが、データ量が多い場合、オートフィルタ等を活用して条件に合致したデータのみを参照したりします。
SQLでも同様で、SELECT文に条件を加えてデータ抽出を行う場合がほとんどです。
それらについては、後日、別記事で説明します。